Nie wiem, czy są na forum jacyś miłośnicy HFDLa - jeśli tak, to pora się ujawnić, np. w tym wątku :-)
Albo może ktoś nowy się zainteresuje tematem? Dla niewtajemniczonych - HFDL (High Frequency Data Link) to datalink lotniczy działający na falach krótkich (3-22 MHz). Można tym przesylać depesze ACARS. Dzięki szczególnym własnościom propagacyjnym fal krótkich HFDL przydaje się w rejonach, gdzie nic innego nie ma (oceany, obszary okołobiegunowe). a do zapewnienia globalnej łączności wystarcza 16 stacji naziemnych (a w praktyce 14, bo dwie nie działają). Mimo iż większość samolotów komunikacyjnych nad oceanami korzysta z transmisji satelitarnej, to HFDL nadal jest w użyciu i jest tam trochę ruchu (więcej niż na VHFowym ACARSie, ale mniej niż na Inmarsacie czy VDL2).
Jeśli chodzi o dekodowanie HFDLa metodami hobbystycznymi, to dostępne programy generalnie bazują na sygnale audio, który trzeba do nich dostarczyć kablem fizycznym z zewnętrznego odbiornika krótkofalowego albo kablem wirtualnym z SDRa. To sprawia, że działają one w zasadzie jednokanałowo. Aby dekodować naraz wiele kanałów, trzeba uruchomić wiele kopii dekodera, wiele wirtualnych kabli i wiele demodulatorów w konsoli SDR, a potem jeszcze jakoś tym wszystkim zarządzać, uruchamiać, gasić, spinać, rozpinać, itd. Wielokanałowość w HFDLu jest kluczowa, bo w praktyce używanych jest kilkanaście kanałów naraz, a wykorzystywane częstotliwości zmieniają się w zależności od pory dnia i roku. Ponadto wszystkie dostępne dekodery działają pod Windows, gdzie uruchamianie software'u w trybie nienadzorowanym, zdalnie i bez interfejsu graficznego to ból tylnej części ciała.
Aby rozwiązać przynajmniej część tych problemów, pojawił się na rynku nowy software z rodziny dumpów - dumphfdl . Działa pod Linuxem (testowane na pececie, Raspberry Pi i Odroidzie XU4), jako demon (w tle) i bezpośrednio komunikuje się z SDRem, więc odpadają zabawy z virtual audio kablami. Można dekodować dowolną liczbę kanałów HFDL naraz, oczywiście w miarę możliwości obliczeniowych komputera i szerokości pasma odbiornika. Komunikacja z radiami jest realizowana z użyciem biblioteki SoapySDR - można więc używać dowolnego radia SDR, które obsługuje zakres HF i istnieje dla niego moduł do SoapySDR (lista obsługiwanych SDRów jest na wiki SoapySDR po prawej stronie, w sekcji "Modules"). Podczas developmentu program był testowany na SDRPlay RSP1A i Airspy HF+ Discovery. Moc obliczeniowa Odroida XU4 czy Raspberry Pi 4 wystarcza do dekodowania kilkunastu kanałów HFDL jednocześnie przy prędkości próbkowania 2 Msps (na RSP1A).
Co tym można robić?
- Można odbierać komunikaty i zapisywać je do pliku (z opcjonalną rotacją co 1h lub 24h).
- Można wysyłać zdekodowane komunikaty do innej maszyny (po TCP, UDP lub ZeroMQ) i tam je archiwizować.
- Można podpiąć bazę basestation.sqb z danymi samolotów - logi będą wówczas uzupełniane szczegółowymi danymi nadawców i odbiorców (nr rejestracyjny, model, operator)
- Można generować feed pozycyjny w formacie Basestation i rzucić go po TCP na jakiś program do wizualizacji, np. Virtual Radar Server. To dobry sposób na poprawienie zasięgu domowego radaru :-)

dumphfdl korzysta z biblioteki libacars, więc automatycznie reasembluje wieloczęściowe ACARSy i dekoduje wszystkie aplikacje wspierane przez libacars, czyli CPDLC, ADS-C oraz MIAM. Kilka przykładów:
Kod:
[2021-10-11 02:10:40 CEST] [8912.0 kHz] [7.0 Hz] [600 bps] [D]
Uplink LPDU:
Src GS: Riverhead, New York
Dst AC: 125
Type: Unnumbered data
Enveloped data:
ACARS:
Reassembly: skipped
Reg: .N27908
Mode: 2 Label: AA Blk id: V More: 0 Ack: !
Message:
/YULE2YA.AT1.N2790820808EEA526A48934D049A6820CE4106AD49F360D48B1104D8B4E9C18F150549E821CF9D1A4D29A821D089321A0873E754830EA
20AF26A4841367CEA94A2C198821C59D522D2B9E5
FANS-1/A CPDLC Message:
CPDLC Uplink Message:
Header:
Msg ID: 1
Timestamp: 00:08:59
Message data:
[freetext]
THIS IS AN AUTOMATED MESSAGE TO CONFIRM CPDLC CONTACT WITH MONTREAL CENTER
[2021-10-15 19:30:55 CEST] [10081.0 kHz] [19.4 Hz] [300 bps] [D]
Uplink LPDU:
Src GS: Shannon, Ireland
Dst AC: 192 (71BE16)
AC info: HL7616, Boeing, 747 446FSCD, Asiana Airlines
Type: Unnumbered data
Enveloped data:
ACARS:
Reassembly: skipped
Reg: .HL7616
Mode: 2 Label: H1 Blk id: Y More: 0 Ack: !
Sublabel: MD MFI: AA
Message:
GDXE1XA.AT1.HL761621C5DA5D84834E141A949B063C18906775FA40BDCC
FANS-1/A CPDLC Message:
CPDLC Uplink Message:
Header:
Msg ID: 3
Timestamp: 17:29:41
Message data:
AT [position] CONTACT [icaounitname] [frequency]
Fix: ASBAT
Facility Name: MAGADAN
Facility function: control
VHF: 133.200 MHz
[2021-09-24 19:11:43 CEST] [10081.0 kHz] [20.7 Hz] [300 bps] [D]
Uplink LPDU:
Src GS: Shannon, Ireland
Dst AC: 15 (76CDA6)
AC info: 9V-SMF, Airbus, A350 941, Singapore Airlines
Type: Unnumbered data
Enveloped data:
ACARS:
Reassembly: skipped
Reg: .9V-SMF
Mode: 2 Label: AA Blk id: B More: 0 Ack: !
Message:
/CGKCAYA.AT1.9V-SMF61031159521300C175
FANS-1/A CPDLC Message:
CPDLC Uplink Message:
Header:
Msg ID: 2
Msg Ref: 1
Timestamp: 17:05:25
Message data:
CLEARED TO DEVIATE UP TO [distanceoffset] [direction] OF ROUTE
Offset: 20 nm
Direction: left
[2021-10-10 07:51:52 CEST] [8912.0 kHz] [4.9 Hz] [600 bps] [S]
Downlink LPDU:
Src AC: 214
Dst GS: Riverhead, New York
Type: Unnumbered ack'ed data
Enveloped data:
ACARS:
Reassembly: skipped
Reg: .N280AV Flight: AV0189
Mode: 2 Label: B6 Blk id: 1 More: 0 Ack: ! Msg num: J82A
Message:
/NYCODYA.ADS.N280AV140DC026A09809472DA81D0D0D19569885494703400CA8E69285894700D806
ADS-C message:
Waypoint change event:
Lat: 19.3366241
Lon: -61.7706299
Alt: 38000 ft
Time: 2922.000 sec past hour (:48:42.000)
Position accuracy: <0.25 nm
NAV unit redundancy: OK
TCAS: OK
Predicted route:
Next waypoint:
Lat: 18.4202957
Lon: -63.1897545
Alt: 38000 ft
ETA: 832 sec
Next+1 waypoint:
Lat: 17.8026581
Lon: -64.2442703
Alt: 38000 ft
[2021-10-11 12:54:07 CEST] [10081.0 kHz] [-7.6 Hz] [300 bps] [D]
Downlink LPDU:
Src AC: 228 (461F4C)
AC info: OH-LWE, Airbus, A350 941, Finnair
Dst GS: Shannon, Ireland
Type: Unnumbered ack'ed data
Enveloped data:
ACARS:
Reassembly: complete
Reg: .OH-LWE Flight: AY0074
Mode: 2 Label: MA Blk id: 2 More: 0 Ack: ! Msg num: U45C
Message:
T22!<<.J/l,"i9NOXk!'s.16Um5<5pH@0|APq>\_CuQ#=.2>;_ecpo:i^>LelAS`,Mbb916YF7Jj>EbnDAR5k_jl!htPs_=0RsT0MRdtOQneUaaP1+2)0YY6^,
PHc?Vt&GC0+BBR%EDPG"35\M'?.9F)j;3#mo<#DR4pYpNVA8!J'ZT]B4!RtqhYDt]]oGM9M3*XoQ&a*Xa7eM?:c'*0fM!]t>\AA=Y>74.DS;S[SlW^8%EqM=5:B(Lk
E-I#%(E=Zhii!e&CV\Og&'8c*)+ZDHEOMrs\"b4AKJ>!(5QFU1D8uK,ik!j^+D2?lp/$`h!a)5$u8@`Zn#-6R;(R0l[RkCE_8j7EC(aZfU189C"%LC<-\c3W,^n3ah
8sm/=I0TO<AM>)7DD+siWlG,%/26[p`/IW&igCKoUOp$N$b>\+CLFg^-!"O(.4AOrZE6?Rp!ii&]Q_EiX_[DR.J`6I%/]H/=GEo_Sg`_\qZ-Zs
MIAM:
Single Transfer:
MIAM CORE Data, version 1:
PDU Length: 380
Aircraft ID: .OH-LWE
Msg num: 6
ACK: not required
Compression: deflate
Encoding: ISO #5
ACARS:
Label: H1 Sublabel: CF
Message (reformatted):
<RTR>
<HEAD>
<IDCMS pn="ABF31A6FNCL0004" vers="4.0"/>
<DA>2021/10/11 10:47:00</DA>
<ACD MSN="0023" tail="OH-LWE" type="A350-900"/>
<TID>C00000013</TID>
</HEAD>
<HEADRTR>
<FROM>RJAA</FROM>
<TO>EFHK</TO>
<FNBR>FIN74 </FNBR>
</HEADRTR>
<ITD>
<CB>A</CB>
<NFDE>
<MC>3410X004</MC>
<MD>NAV-ADIRS-PFD-Red Flag Vertical Speed</MD>
</NFDE>
<MM hdi="y" fo="A" occ="1">
<MC>3414F7EG</MC>
<MD>ADIRU-2(1FP2)</MD>
<DA>2021/10/11 10:36:58</DA>
<ATA>3414</ATA>
<FPH>8</FPH>
<FCL>1</FCL>
<PRIO>high</PRIO>
<STA>1</STA>
<SYS name="IR2" bite_id="4" side="2"/>
</MM>
</ITD>
</RTR>
Program jest w trakcie rozwijania, więc w kolejnych wersjach można się spodziewać dalszych ulepszeń i nowych funkcji. Nie można mieć wszystkiego w wersji 1.0 :-)
Zakładki