Strona 2 z 2 PierwszyPierwszy 1 2
Pokaż wyniki od 21 do 33 z 33
Like Tree5Likes

Wątek: VDL2 - odbiór, oprogramowanie

  1. #21
    Awatar layoverlover

    Dołączył
    May 2009
    Wpisów
    76

    Domyślnie


    Polecamy

    To transmisje CPDLC można sobie ściągać? Myślałem, że to jakoś sprytnie zakodowane...

  2. #22

    Dołączył
    Oct 2013
    Mieszka w
    EPWA

    Domyślnie

    Miałeś na myśli "zaszyfrowane" - w skrócie: nie. A specyfikacje wszystkich protokołów są opisane w standardach ICAO oraz ITU.

  3. #23
    Awatar layoverlover

    Dołączył
    May 2009
    Wpisów
    76

    Domyślnie

    Thx, człowiek się uczy całe życie. Myślałem, że to jakoś bardziej zaszyfrowane, czy coś - ale w sumie jakich mega-tajemnych informacji tam nie ma...

  4. #24

    Dołączył
    May 2008
    Mieszka w
    EPBC

    Domyślnie

    Cytat Zamieszczone przez layoverlover Zobacz posta
    Thx, człowiek się uczy całe życie. Myślałem, że to jakoś bardziej zaszyfrowane, czy coś - ale w sumie jakich mega-tajemnych informacji tam nie ma...
    Pewnie skoro leci to otwartym tekstem, to pewnie można też "podszyć" się pod stację, a to byłoby już słabe?
    Pytam, bo przyznaję szczerze, specyfikacji na razie żadnej nie czytałem.

  5. #25

    Dołączył
    Oct 2013
    Mieszka w
    EPWA

    Domyślnie

    Tak, aczkolwiek trzeba by jeszcze namówić samoloty, żeby zechciały nawiązać z taką stacją link VDL2. Radio VDL2 nasłuchuje wszystkich transmisji we wszystkich znanych sobie kanałach, aby ustalić adresy stacji naziemnych będących w zasięgu, oszacować jakość sygnału z każdej z nich i podłączyć się do tej, którą w danej chwili słyszy najlepiej. A gdy się już uda, to... trzeba jeszcze odpowiedzieć sensownie na Call Request X.25, potem wymienić się pakietami ES-IS hello, nawiązać sesję routingową IDRP i liczyć na to, że załoga zechce się zalogować do naszej prywatnej lewej usługi CPDLC :-) Brzmi skomplikowanie, ale Niebezpiecznikowi i Z3S zdarzało się pisać o bardziej nieprawdopodobnych atakach z życia wziętych ;-)

  6. #26

    Dołączył
    Oct 2013
    Mieszka w
    EPWA

    Domyślnie

    dumpvdl2, wersja 1.2.0, edycja noworoczna

    https://github.com/szpajder/dumpvdl2...ses/tag/v1.2.0


    • lepsze filtrowanie sygnału wejściowego - znacząco obniża stopę błędów, co przekłada się na większą liczbę poprawnie zdekodowanych ramek (u mnie kilkanaście procent więcej, ale niektóre wróbelki ćwierkają, że u nich nawet 50%).
    • francuski driver do SDRPlay miał okropne błędy i dlatego tak kiepsko działał. Teraz powinien działać już porządnie - co najmniej tak samo dobrze jak RTLSDR, a pewnie nawet lepiej. Uwaga, zmieniły się gałki konfiguracyjne - przy korzystaniu z SDRplay nie ustawia się już gainu opcją --gain, tylko redukcję gainu od maksimum przy użyciu opcji --gr. Minimalna wartość redukcji to 20, a maksymalna zależy od typu sprzętu. Można też nie podawać --gr w ogóle - wówczas program włączy auto gain, który, wg moich obserwacji, ustawia gain poprawnie. W razie potrzeby można wyregulować ręcznie redukcję (opcją --gr) oraz AGC set point (opcją --agc). Bardziej szczegółowy opis działania tych gałek jest w dokumentacji dostępnej na stronie producenta.
    • jeśli korzystamy z programu na Raspberry Pi, to przy kompilacji warto dodać do make opcję PLATFORM=rpiv3 (lub rpiv2 lub rpiv1), żeby zoptymalizować kod na daną platformę. Pozwala to trochę obniżyć użycie CPU (które w tym releasie niestety wzrosło - no cóż, im lepsze filtry cyfrowe, tym większe nakłady obliczeniowe). Plan akcji jest taki, żeby dekoder dekodował każdy kanał VDL2 w osobnym wątku, wtedy load się rozłoży na różne rdzenie CPU. Ale to już w kolejnej wersji.

  7. #27

    Dołączył
    May 2012
    Mieszka w
    Warszawa

    Domyślnie

    PAŻP właśnie ogłosił, że od lutego 2018 zaczynają testy CPDLC (frequency and skuawk change), na razie na dwóch drimkach (SP-LRG, SP-LRH), więc Szpajedr robi wyśmienitą robotę z update-em swojego dumpvdl2. Obecnie korzystam z oprogramowania Multipsk z VDL-em 2 i powiem szczerze że, na 136.975MHz zaczyna się zatykać i gubić ramki np. z ciekawymi depeszami ACARS, więc cała nadzieja w Szpajderze.

  8. #28

    Dołączył
    Oct 2013
    Mieszka w
    EPWA

    Domyślnie

    Hm, to nie odpaliłeś dumpa w końcu? Zróbże go wreszcie, bo mi potrzeba więcej testerów :-) Jeśli masz kłopot z Linuxem, to mogę coś pomóc zdalnie, skrobnij na priv, jeśli chcesz.

    A te dwa typy komunikatów, które wymieniłeś, są dekodowane przez program. Tak wygląda "set squawk 1234":

    Kod:
    [2017-11-21 15:57:49 CET] [136.975] [-27.4/-48.0 dBFS] [20.6 dB]
    10920A (Ground station, On ground) -> 48AE06 (Aircraft): Command
    AVLC type: I sseq: 7 rseq: 4 poll: 0
    X.25 Data: grp: 11 chan: 255 sseq: 1 rseq: 6 more: 0
    CLNP PDU, compressed header:
    COTP Data:
       00 a7 a3 28 68 65 6a 8e e7 00 1e ca 70 81 57 a8 58 88
    ATCUplinkMessage ::= {
        header: ATCMessageHeader ::= {
            messageIdNumber: 3
            dateTime: DateTimeGroup ::= {
                date: Date ::= {
                    year: 2017
                    month: 11
                    day: 21
                }
                timehhmmss: Timehhmmss ::= {
                    hoursminutes: Time ::= {
                        hours: 14
                        minutes: 57
                    }
                    seconds: 48
                }
            }
            logicalAck: 0
        }
        messageData: ATCUplinkMessageData ::= {
            elementIds: elementIds ::= {
                uM123Code: Code ::= {
                    1
                    2
                    3
                    4
                }
            }
        }
    }
    A tak set frequency:

    Kod:
    [2017-11-21 16:08:14 CET] [136.975] [-27.1/-47.7 dBFS] [20.6 dB]
    10920A (Ground station, On ground) -> 48AE06 (Aircraft): Command
    AVLC type: I sseq: 0 rseq: 5 poll: 0
    X.25 Data: grp: 11 chan: 255 sseq: 2 rseq: 7 more: 0
    CLNP PDU, compressed header:
    COTP Data:
       00 a7 c3 28 ab c5 6a 8f 20 e0 27 57 26 20 3b f4 ce e8
    ATCUplinkMessage ::= {
        header: ATCMessageHeader ::= {
            messageIdNumber: 30
            dateTime: DateTimeGroup ::= {
                date: Date ::= {
                    year: 2017
                    month: 11
                    day: 21
                }
                timehhmmss: Timehhmmss ::= {
                    hoursminutes: Time ::= {
                        hours: 15
                        minutes: 8
                    }
                    seconds: 14
                }
            }
            logicalAck: 0
        }
        messageData: ATCUplinkMessageData ::= {
            elementIds: elementIds ::= {
                uM157Frequency: frequencyvhf: 25430
            }
        }
    }
    Ten format jest może trochę brzydki, bo to po prostu zrzut całej zdekodowanej struktury ASN.1. Kompilator ASN.1, który wykorzystałem, dostarcza gotową funkcję do robienia tych zrzutów i ta funkcja umie wypisać w tym formacie każdy typ komunikatu, jeśli tylko jest on poprawny. To był najszybszy sposób implementacji wyświetlarki CPDLC, bo nie wymagał definiowania formatu dla każdego typu komunikatu osobno (a tych komunikatów jest zdefiniowanych kilkaset sztuk). Kiedyś to zrobię, ale na razie są pilniejsze sprawy na TODOliście. W FAQ jest krótka instrukcja, jak ręcznie zamienić identyfikator elementu na odpowiadające mu zezwolenie ATC lub żądanie załogi.

  9. #29

    Dołączył
    Oct 2013
    Mieszka w
    EPWA

    Domyślnie

    Hosanna.

    Kod:
    C0971/18 -   TRIGGER NOTAM - PERM AIP AIRAC AMDT 200 (...)
    CPDLC SERVICE INTRODUCED IN WARSZAWA FIR
    29 MAR 00:00 2018 (...) CREATED: 15 FEB 07:36 2018

  10. #30

    Dołączył
    Oct 2013
    Mieszka w
    EPWA

    Domyślnie

    dumpvdl2 1.3.0 (https://github.com/szpajder/dumpvdl2...ses/tag/v1.3.0) robi parę nowych rzeczy:

    - Dekoduje komunikaty ADS-C. Znacie to - to takie sprytne ACARSy, które wyglądają tak:

    Kod:
    [2018-04-03 04:45:11 CEST] [136.975] [-25.0/-48.8 dBFS] [23.9 dB]
    4B191E (Aircraft, Airborne) -> 10920A (Ground station): Command
    AVLC type: I sseq: 0 rseq: 1 poll: 0
    ACARS:
    Reg: .HB-JNI Flight: LX0139
    Mode: 2 Label: B6 Blk id: 0 Ack: ! Msg no.: F94A
    Message:
    /CTUE1YA.ADS.HB-JNI0724BCD86D4448CA2A561F0D24B5106BC608CA0057249638661608CA000E5AD0D1C0001424BCD86D4448CA2A561F0D24B5106BC608CA0057249638661608CA009196
    Teraz są prezentowane tak:

    Kod:
    ADS-C message:
     Basic report:
      Lat: 51.6623497
      Lon: 19.2070198
      Alt: 36000 ft
      Time: 2709.500 sec past hour (:45:09.500)
      Position accuracy: <0.05 nm
      NAV unit redundancy: OK
      TCAS: OK
     Predicted route:
      Next waypoint:
       Lat: 51.6196060
       Lon: 18.9445496
       Alt: 36000 ft
       ETA: 87 sec
      Next+1 waypoint:
       Lat: 51.4501762
       Lon: 17.9447937
       Alt: 36000 ft
     Earth reference data:
      True track: 255.4 deg
      Ground speed: 419.5 kt
      Vertical speed: 0 ft/min
     Waypoint change event:
      Lat: 51.6623497
      Lon: 19.2070198
      Alt: 36000 ft
      Time: 2709.500 sec past hour (:45:09.500)
      Position accuracy: <0.05 nm
      NAV unit redundancy: OK
      TCAS: OK
     Predicted route:
      Next waypoint:
       Lat: 51.6196060
       Lon: 18.9445496
       Alt: 36000 ft
       ETA: 87 sec
      Next+1 waypoint:
       Lat: 51.4501762
       Lon: 17.9447937
       Alt: 36000 ft
    - Formatuje komunikaty CPDLC w czytelny sposób (wreszcie):

    Kod:
    [2018-04-11 08:30:33 CEST] [136.975] [-18.4/-48.9 dBFS] [30.5 dB]
    2B86F7 (Ground station, On ground) -> 424336 (Aircraft): Command
    AVLC type: I sseq: 3 rseq: 0 poll: 0
    X.25 Data: grp: 11 chan: 255 sseq: 4 rseq: 5 more: 0
    CLNP PDU, compressed header:
    COTP Data:
       00 a8 09 83 2c 28 a5 8d 46 7a 10 12 82 54 ab 4e 4c e2 00 59 58 39 00
    CPDLC Uplink Message:
     Header:
      Msg ID: 5
      Timestamp: 2018-04-11 06:30:33
      Logical ACK: required
     Message data:
      PROCEED DIRECT TO [position]
       Fix: TUSIN
    
    [2018-04-11 09:51:34 CEST] [136.975] [-28.7/-49.1 dBFS] [20.3 dB]
    10920A (Ground station, On ground) -> 4248EF (Aircraft): Command
    AVLC type: I sseq: 0 rseq: 7 poll: 0
    X.25 Data: grp: 11 chan: 255 sseq: 5 rseq: 4 more: 0
    CLNP PDU, compressed header:
    COTP Data:
       00 a8 0f a3 30 17 68 65 8d 47 ce 20 1d 62 2d 0a f5 e2 bc 1a 54 ed 41 af 06 0c 38 60 74 bc 82 6e f6 e7 20
    CPDLC Uplink Message:
     Header:
      Msg ID: 3
      Timestamp: 2018-04-11 07:51:34
      Logical ACK: required
     Message data:
      CONTACT [unitname] [frequency]
       Unit name: EPWW, WARSZAWAACC, center
       VHF: 134.875 MHz
    
    [2018-04-01 17:53:58 CEST] [136.975] [-26.2/-48.9 dBFS] [22.7 dB]
    424368 (Aircraft, Airborne) -> 2A6198 (Ground station): Command
    AVLC type: I sseq: 2 rseq: 4 poll: 0
    X.25 Data: grp: 11 chan: 255 sseq: 6 rseq: 1 more: 0
    CLNP PDU, compressed header:
    COTP Data:
       00 a8 08 16 52 d0 cb 18 1f af 21 06 4a a2 11 02 c7 2c 5d 98
    CPDLC Downlink Message:
     Header:
      Msg ID: 3
      Timestamp: 2018-04-01 15:53:57
      Logical ACK: required
     Message data:
      REQUEST [level]
       Flight level: 370
      DUE TO AIRCRAFT PERFORMANCE
    - Dekoduje CPDLC w standardzie FANS-1/A, tj. enkapsulowane w takich ACARSach:

    Kod:
    [2017-03-04 20:47:12] [136.975] [-18.8/-47.0 dBFS] [28.1 dB]
    10A41A (Ground station, On ground) -> 78100B (Aircraft): Command
    AVLC type: I sseq: 6 rseq: 6 poll: 0
    ACARS:
    Reg: .B-7898 Flight:
    Mode: 2 Label: AA Blk id: G Ack: ! Msg no.:
    Message:
    /AKLCDYA.AT1.B-7898A11EF285326CC0E4DAA48E1D2AB269C5410E6499B0904E9F5104199327D78B110499C8275AB53D04693480958A
    
    FANS-1/A CPDLC Message:
    CPDLC Uplink Message:
     Header:
      Msg ID: 2
      Timestamp: 07:47:10
     Message data:
      CLIMB TO AND MAINTAIN [altitude]
       Flight level: 340
      REPORT LEVEL [altitude]
       Flight level: 340
      [freetext]
       CRUISE CLIMB NOT ALLOWED IN NZZO FIR
    Z tej ostatniej funkcji w Polsce raczej nie ma pożytku, ale w FIRach bliżej oceanów (Maastricht, Londyn) jest to stosowane. Ponadto ten sam format jest wykorzystywany do przekazywania CPDLC po HFDLu oraz Inmarsacie.
    vierundvierzig likes this.

  11. #31

    Dołączył
    Oct 2013
    Mieszka w
    EPWA

    Domyślnie

    dumpvdl2 1.4.0 edycja wakacyjna.

    https://github.com/szpajder/dumpvdl2...ses/tag/v1.4.0

    • Dużo zmian na lepsze w algorytmach demodulacji i dekodowania - czyli znacznie więcej poprawnie zdekodowanych ramek, zwłaszcza słabych, z odległych samolotów. Teraz da się cokolwiek odebrać nawet na patykowej antence, która przychodzi w zestawie z donglem, wcześniej raczej nie było to możliwe.
    • Program jest teraz znacznie mniej wrażliwy na niedokładnie skorygowany offset częstotliwości dongla. Wartość odchylenia częstotliwości transmisji od środka kanału jest teraz wypisywana w nagłówku każdego komunikatu (w ppm) i można użyć tej wartości, aby podregulować korekcję, ale zwykle nie ma takiej potrzeby - radzi sobie spokojnie do ok. 9-10 ppm offsetu.
    • Dodana opcja linii poleceń --extended-header - jej włączenie powoduje wypisywanie kilku dodatkowych pól diagnostycznych w nagłówkach wiadomości: liczba skorygowanych błędów bitowych w nagłówku, liczba oktetów skorygowanych przez Reeda-Solomona, długość bursta w bitach, numer kolejny ramki w burście.
    • Poprawione okropne błędy.


    Przy okazji wersji poprzedniej (1.3.1) dodałem jeszcze nowe narządko, które zwie się decpdlc. Służy ono do ręcznego dekodowania wiadomości CPDLC w standardzie FANS-1/A (przykłady w poście powyżej). Kto się bawi w dekodowanie HFDL lub Inmarsatu w paśmie L, ten na pewno widział takie komunikaty w swoich logach. Korzystając z decpdlc, można je zdekodować do postaci czytelnej. Krótka instrukcja:

    Kompilujemy program - w katalogu ze źródłami dumpvdl2 wykonujemy:

    Kod:
    make decpdlc
    Po chwili w bieżącym katalogu powinna pojawić się binarka o nazwie decpdlc. Możemy ją uruchamiać na dwa sposoby:


    • dekodowanie jednej wiadomości z linii poleceń - jako pierwszy parametr trzeba podać samotną literkę "u" lub "d", która oznacza kierunek, w którym wiadomość była nadana, odpowiednio "uplink" (= wiadomość z ziemi do samolotu) lub "downlink" (w drugą stronę). Kolejny parametr to tekst wiadomości typu AT1 lub CR1 lub CC1 lub DR1 (w praktyce ciekawe są tylko te pierwsze). Przykład dekodowania uplinku:

    Kod:
    $ ./decpdlc u /BNECAYA.AT1.9M-MTE215C2C1E44A7069D29F583561CB990674401781024B1
    Wynik:
    Kod:
    /BNECAYA.AT1.9M-MTE215C2C1E44A7069D29F583561CB990674401781024B1
    FANS-1/A CPDLC Message:
    CPDLC Uplink Message:
     Header:
      Msg ID: 2
      Timestamp: 23:02:48
     Message data:
      AT [position] MONITOR [icaounitname] [frequency]
       Fix: SASRO
       Facility Name: AUCKLAND
       Facility function: center
       HF: 8867 kHz
    • dekodowanie wielu wiadomości z pliku. Trzeba przyrządzić plik zawierający teksty komunikatów poprzedzone literą u lub d i jedną spacją, po jednym komunikacie w wierszu, np. tak:

    Kod:
    u /AKLCDYA.AT1.A6-EDC215E715D84AD1664D9F583561CB9906744E9AF409415
    u /MELCAYA.AT1.VH-EBO20807DDD6D362CC853EAD29D14259D80453D
    d /BNECAYA.AT1.B-5917A0867A0C3D9F3BA143B965B019F0F22429F669D90D024D934E4D45648D330E0C3A279DE746A5261865C2B03B8E60676A
    Tak przygotowany plik można wpuścić na standardowe wejście programu, uruchamiając go bez parametrów. Zakładając, że plik nazywa się cpdlc.txt, robimy tak:

    Kod:
    cat cpdlc.txt | ./decpdlc
    Wynik:

    Kod:
    No command line options found - reading messages from standard input.
    Use '-h' option for help.
    u /AKLCDYA.AT1.A6-EDC215E715D84AD1664D9F583561CB9906744E9AF409415
    FANS-1/A CPDLC Message:
    CPDLC Uplink Message:
     Header:
      Msg ID: 2
      Timestamp: 23:39:05
     Message data:
      AT [position] CONTACT [icaounitname] [frequency]
       Fix: VELMO
       Facility Name: AUCKLAND
       Facility function: control
       VHF: 123.900 MHz
    
    u /MELCAYA.AT1.VH-EBO20807DDD6D362CC853EAD29D14259D80453D
    FANS-1/A CPDLC Message:
    CPDLC Uplink Message:
     Header:
      Msg ID: 1
      Timestamp: 00:07:55
     Message data:
      CONTACT [icaounitname] [frequency]
       Facility Name: MELBOURNE
       Facility function: center
       VHF: 122.750 MHz
    
    d /BNECAYA.AT1.B-5917A0867A0C3D9F3BA143B965B019F0F22429F669D90D024D934E4D45648D330E0C3A279DE746A5261865C2B03B8E60676A
    FANS-1/A CPDLC Message:
    CPDLC Downlink Message:
     Header:
      Msg ID: 1
      Timestamp: 01:39:40
     Message data:
      POSITION REPORT [positionreport]
       Latitude:   33 27.0' south
       Longitude: 150 36.4' east
       Time at current position: 01:39
       Flight level: 151
       Next fix:
        Fix: BOYSY
       ETA at next fix: 01:40
       Next+1 fix:
        Fix: MISIT
       ETA at destination: 10:50
       Temperature: -10 C
       Wind direction: 308 deg
       Wind speed: 28 kts
       Indicated airspeed: 310 kts
       Ground speed: 360 kts
       Vertical direction: up
       Vertical rate: 1900 ft/min
       Track angle:
        Degrees (true): 316 deg
       True heading:
        Degrees (true): 315 deg
       Reported waypoint position:
        Navaid: RIC
       Reported waypoint time: 01:37
       Reported waypoint altitude:
        Flight level: 116
      CLIMBING TO [altitude]
       Flight level: 260
    Jeśli zamiast wyniku pojawi się komunikat "Unparseable FANS-1/A message", to zapewne dlatego, że źle wskazaliśmy kierunek - np. downlink zamiast uplinku albo odwrotnie. Treść komunikatu nie zawiera tej informacji, a jest ona potrzebna, bo komunikaty uplinkowe dekoduje się wg innego szablonu niż downlinkowe. Zawsze można spróbować na chybił trafił - jeśli nie zadziała "u", to trzeba spróbować z "d". Oczywiście może się zdarzyć, że tekst wiadomości jest przekłamany albo ucięty - wtedy jego zdekodowanie nie będzie możliwe.

  12. #32

    Dołączył
    Oct 2013
    Mieszka w
    EPWA

    Domyślnie

    Powstała właśnie lista dyskusyjna dla miłośników tematu - https://groups.io/g/acars-vdl2

    Na razie jeszcze hula na niej wiatr, ale zobaczymy Może się rozkręci.

  13. #33
    Awatar alexcage

    Dołączył
    Jan 2015
    Mieszka w
    Ostrowiec Św.

    Domyślnie


    Polecamy

    Ostatnio na githubie znalazłem projekt kolegi Thierry Leconte, też fajny dekoder VDL2, dostępny tutaj : https://github.com/TLeconte/vdlm2dec
    Fajnie by było dorobić do tego jakiś interfejs graficzny, Szpajder pomyśl o tym :>

Strona 2 z 2 PierwszyPierwszy 1 2

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •