BACN - Nodos de comunicaciones en aviones de combate

Leí el comentario de  Peter Vogel en @petervogel.bsky.social sobre  los vuelos sobre Iraq de un avión de la USAF, en concreto un Bombardier Global 6000 24-9049 modificado como "Wi-Fi in the sky"  E-11A BACN (Battlefield Airborne Communications Node) con base en Israel. Así que me puse a leer sobre el tema de los aviones tripulados o no como nodos de comunicación (relays - repetidores  y Gateways- puntos de acceso).

Los E-11A pueden alcanzar una velocidad de Mach 0,88 (aprox. 1.087 km/h), y tienen un alcance de 6.900 millas (11.000 km) y un techo de 51.000 pies (aprox. 15.545 metros).Entraron en combate en Afganistán en 2008, y un E-11 se estrelló cerca del aeródromo de Kandahar el 27 de enero de 2020.

Observese el vuelo en circulos de la aeronave para dar cobertura de comunicaciones

Bombardier Global 6000 24-9049 modificado como "Wi-Fi in the sky"

Los BACN antes también volaban embarcados en Northrop Grumman RQ-4 Global Hawk modificado (EQ-4B).


Northrop Grumman RQ-4 Global Hawk





Ver también


Advertencia importante

Las modificaciones, configuraciones y procedimientos descritos en este sitio pueden implicar riesgos técnicos, legales o de seguridad. El autor no se responsabiliza del mal funcionamiento de los equipos, daños permanentes, pérdida de garantía ni de posibles infracciones legales derivadas del uso de esta información.
El lector asume plena responsabilidad por cualquier acción que decida realizar basándose en el contenido de este blog.

© 2026 EA5JTT. Queda prohibida la reproducción total o parcial sin autorización expresa del autor.


Instalando VDL en una Raspberry Pi con dumpvdl2

VDL2 (VHF Data Link Mode 2) trabaja en la frecuencia de 136,975 MHz usa modulación D8PSK con la que consigue una velocidad de transmisión de datos de 31.500 bps por lo que es el sustituto natual de ACARS, dado que además los mensajes ACARS pueen encapsularse en VLD2



Instalación

sudo apt install build-essential cmake git libglib2.0-dev pkg-config
cd
git clone https://github.com/szpajder/libacars
cd libacars
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig

cd
git clone https://github.com/szpajder/dumpvdl2.git
cd dumpvdl2
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig


Funcionamiento

dumpvdl2 --help

dumpvdl2 2.6.0 (libacars 2.2.1)                                                 
Usage:                                                                
RTL-SDR receiver:                                                               
dumpvdl2 [output_options] --rtlsdr <device_id> [rtlsdr_options] [<freq_1> [<
freq_2> [...]]]                                                                 
Read I/Q samples from a file (use "-" to read from standard input):             
    dumpvdl2 [output_options] --iq-file <input_file> [file_options] [<freq_1> [<
freq_2> [...]]]                                                                 
                                                                                
General options:                                                                
--help                Displays this text              
--version             Displays program version number  
common options:                
--max-ppm <max_ppm>  Set maximum allowable absolute PPM deviation for valid messages (default: 0 == unlimited)  <freq_1> [<freq_2> [...]]                   VDL2 channel frequencies If channel frequencies are omitted, VDL2 Common Signalling Channel (136975000 Hz) will be used as default.                                                                                                                            
rtlsdr_options:                                                                 
--rtlsdr <device_id> Use RTL device with specified ID or serial number (default: ID=0) 
--gain <gain>    Set gain (decibels)             
--correction <correction>         Set freq correction (ppm)       
--centerfreq <center_frequency>   Set center frequency (default: auto)
--oversample <oversample_rate>  Oversampling factor (sampling rate will be set to 105000 * oversample)                                          
--bias <bias>    Enable(1) or Disable(0) bias tee (default: 0)                          
file_options:                                                                   
--iq-file <input_file> Read I/Q samples from a file (use "-" to read from standard input)                                              
--centerfreq <center_frequency>   Center frequency of the input data, (default: 0)     
--oversample <oversample_rate>     Oversampling factor (sampling rate will be set to 105000 * oversample)   (sampling rate will be set to 10
5000 * oversample_rate)  Default: 10                     
--sample-format <sample_format> Input sample format. Supported f
ormats:     U8     8-bit unsigned (eg. recorded with rtl_sdr) (default)    S16LE        16-bit signed, little-endian (eg. recorded with miri_sdr)                       
Output options:                                                                 
--output <output_specifier>    Output specification (default: decoded:text:file:path=-)    (See "--output help" for details)       
--output-queue-hwm <integer>   High water mark value for output
 queues (0 = no limit)  (default: 1000 messages, not applicable when using --iq-file or --raw-frames-file)                              
--decode-fragments     Decode higher level protocols in fragmented packets             
--gs-file <file>   Read ground station info from <file> (MultiPSK format) 
--addrinfo terse|normal|verbose  Aircraft/ground station info verbosity level (default: normal)                                                  
--station-id <name>    Receiver site identifier Maximum length: 255 characters  
--msg-filter <filter_spec>   Output only a specified subset of messages (default: all) (See "--msg-filter help" for details)                                                                                                                                              
Text output formatting options:                                                 
--utc                Use UTC timestamps in output and file names    
--milliseconds       Print milliseconds in timestamps
--raw-frames         Print raw AVLC frame as hex     
--dump-asn1          Print full ASN.1 structure of CM and CPDLC messages     
--extended-header    Print additional fields in message header     
--prettify-xml       Pretty-print XML payloads in ACARS and MIAM CORE PDUs  
--prettify-json      Pretty-print JSON payloads in OHMA messages                                                                                                      
Frequencies might be specified in Hz (as integer numbers) or in kHz, MHz, GHz (as integer or floating-point numbers followed by any of the following suffixes: k, K, m, M, g, G).                                                                         
Examples: 136975000, 136975k, 136.975M, 0.136975G   
 
dumpvdl2 --output help                                   

dumpvdl2 2.6.0 (libacars 2.2.1)                                                
<output_specifier> is a parameter of the --output option. It has the following syntax:  

<what_to_output>:<output_format>:<output_type>:<output_parameters>          
                                                                                
where:                                                
   <what_to_output> specifies what data should be sent to the output:          
   decoded        Output decoded frames           
   raw            Output undecoded AVLC frame as raw bytes                       
   <output_format> specifies how the output should be formatted:  
   text          Human readable text             
   pp_acars      One-line ACARS format accepted by Planeplotter via UDP 
   json       Javascript object notation
   <output_type> specifies the type of the output:    
   file          Output to a file                
   udp           Output to a remote host via UDP                              
   <output_parameters> - specifies detailed output options with a syntax of: pa
ram1=value1,param2=value2,...                                                   
                                                                                
Parameters for output type 'file': 
        path    Path to the output file (required)   
        rotate  How often to start a new file: Accepted values: daily, hourly  
Parameters for output type 'udp':                                              
        address   Destination host name or IP address (required)   
        port      Destination UDP port (required)

dumpvdl2 --rtlsdr 0 --gain 40 --centerfreq 136975000 
136975000 

Las frecuencias para europa que se recomiendan son: 136725000 136775000 136825000 136875000 136975000                                                                      
dumpvdl2 2.6.0 (libacars 2.2.1)                                                 
Sampling rate set to 1050000 sps                                                
Found 1 device(s):                                                              
  0:  Realtek, RTL2838UHIDIR, SN: 00000001                                       
Using device 0: Generic RTL2832U OEM                                            
Found Rafael Micro R820T tuner                                                  
Exact sample rate is: 1050000.026077 Hz                                         
[R82XX] PLL not locked!                                                         
Center frequency set to 136975000 Hz                                            
Bandwidth set to 21000 Hz                                                       
Device #0: gain set to 40.20 dB                                                 
Device 0 bias tee set to 0                                                      
Device 0 started                                                                
Allocating 15 zero-copy buffers                                                 
[2026-05-10 12:13:30 CEST] [136.975] [-33.5/-12.2 dBFS] [-21.3 dB] [-2.1 ppm]   
347247 (Aircraft, Airborne) -> 1096DA (Ground station): Command                 
AVLC type: I sseq: 3 rseq: 4 poll: 0                                            
 X.25 Data: grp: 11 chan: 255 sseq: 1 rseq: 2 more: 0                           
  X.25 reasm status: skipped                                                    
  X.233 CLNP Data (compressed header):                                          
   LRef: 0x42 Prio: 11 Flags: 0xf6                                              
   Lifetime: 20.0 sec                                                           
   PDU Id: 0x102                                                                
   X.224 COTP Data:                                                             
    dst_ref: 0xda8a                                                             
    sseq: 2 req_of_ack: 0 EoT: 1                                                
    COTP reasm status: skipped                                                  
    ATN checksum: 51 79 63 d5                                                   
    CPDLC Downlink Message:                                                     
     Header:                                                                    
      Msg ID: 2                                                                 
      Msg Ref: 3                                                                
      Timestamp: 2026-05-10 10:13:28                                            
      Logical ACK: required                                                     
     Message data:                                                              
      WILCO                  


Analisis de los mensajes


[2026-05-10 12:29:34 CEST] [136.975] [-26.8/-47.0 dBFS] [20.2 dB] [-0.4 ppm] [S:
0] [L:13] [F:0] [#0]                                                            
348204 (Aircraft, Airborne) -> 10927A (Ground station): Response AVLC type: S (Receive Ready) P/F: 1 rseq: 4 

CABECERA
  • [2026-05-10 12:29:34 CEST]: Fecha y hira
  • [136.975]:  Frecuencia
  • [-26.8/-47.0 dBFS] : señal / ruido
  • [20.2 dB] : relación S/N
  • [-0.4 ppm]: offset
  • [S:0]: number of bit errors corrected in the VDL2 burst header (up to 2).
  • [L:13]: burst length in octets.
  • [F:0] number of octets corrected by Reed-Solomon FEC.[#0]number of frame in this particular transmission. Multiple AVLC frames (messages) may be concatenated and sent as a single transmission burst. When a multiframe burst is received, frames will be numbered incrementally.
MENSAJE
  • 348204: Avión de Vueling
  • Airbone: En vuelo
  • 10927A: estación de tierra
  • Response AVLC type: S (Receive Ready): estoy listo


[2026-05-10 12:29:35 CEST] [136.975] [-26.5/-47.2 dBFS] [20.7 dB] [-0.5 ppm] [S:
0] [L:34] [F:0] [#0]   
                                                         
348204 (Aircraft, Airborne) -> 10927A (Ground station): Command AVLC type: I sseq: 2 rseq: 4 poll: 0   
                                         
X.25 Data: grp: 11 chan: 255 sseq: 0 rseq: 2 more: 0  
X.25 reasm status: skipped  
X.233 CLNP Data (compressed header): LRef: 0x41 Prio: 11 Flags: 0xf6 Lifetime: 20.0 sec PDU Id: 0x7a  
X.224 COTP Data Ack: dst_ref: 0xdaf8  rseq: 8 credit: 3   ATN checksum: b4 fd 4b 7c 
 
AVLC type: I Lleva información


[2026-05-10 12:41:07 CEST] [136.975] [-25.6/-47.5 dBFS] [21.9 dB] [-0.1 ppm] [S:
0] [L:96] [F:0] [#0] 
                                                           
44CE79 (Aircraft, Airborne) -> 283538 (Ground station): Command AVLC type: I sseq: 4 rseq: 5 poll: 0  
                                          
ACARS:                                                                         
Reassembly: skipped                                                           
Reg: .OO-SSY Flight: SN026H                                                   
Mode: 2 Label: 27 Blk id: 2 More: 0 Ack: ! Msg num: M36A                      
Message: EBBR,LEBL,LFBO,LFRS,N 39.333,E .234,29860,SN3776 

Este es un mensaje ACARS sobre VDL2
  • Aeronave (44CE79): Corresponde a un Airbus A319 de la compañía Brussels Airlines.
  • Matrícula (.OO-SSY): Confirmado, es el registro belga del avión.
  • Vuelo (SN026H / SN3776): El código de radio es SN026H, pero el número comercial de vuelo que aparece en el mensaje es el SN3776. Es un vuelo que suele cubrir la ruta entre Bruselas y algún destino del sur.
  • EBBR, LEBL, LFBO, LFRS. Es la ruta con los aeropuertos alternativos o puntos de ruta:
    • EBBR: Bruselas (Origen).
    • LEBL: Barcelona - El Prat.
    • LFBO: Toulouse.
    • LFRS: Nantes.
  • Posición exacta: N 39.333, E .234.
  • Altitud: 29860 pies (9.000m)


[2026-05-10 16:01:15 CEST] [136.975] [-32.8/-47.3 dBFS] [14.5 dB] [0.6 ppm]     
4CA565 (Aircraft, On ground) -> 10926A (Ground station): Command                
AVLC type: I sseq: 7 rseq: 7 poll: 0                                            
 ACARS:                                                                         
  Reassembly: skipped                                                           
  Reg: .EI-DPZ Flight: FR7202                                                   
  Mode: 2 Label: QQ Blk id: 9 More: 0 Ack: ! Msg num: M08A                      
  Message:  LEVCGCLP14011350 

4CA565 (Aircraft, On ground): en tierra
LEVCGCLP14011350: vuelo de LEVC (Valencia) a GCLP(Gran canaria)
Label: QQ


Colorear log

Instalar

sudo apt install multitail
sudo cp /home/pi-star/dumpvdl2/extras/multitail-dumpvdl2.conf /etc/
echo "include:/etc/multitail-dumpvdl2.conf" | sudo tee -a /etc/multitail.conf

Probar

multitail -cS dumpvdl2 -l "dumpvdl2 --rtlsdr 0 --gain 35 
136.975M"     
        
Mensajes VDL2

Mensaje ACARS encapsulado en VDL2


Conclusiones

El software funciona r sin problemas en la Raspberry Pi con RTL-SDR y decodifica los mensajes VDL2  extrayendo los ACARS encapsulados. 

Lo que no se ha conseguido es actuar como feeder del agregador  airframes.io


Ver también 

Referencias


Advertencia importante

Las modificaciones, configuraciones y procedimientos descritos en este sitio pueden implicar riesgos técnicos, legales o de seguridad. El autor no se responsabiliza del mal funcionamiento de los equipos, daños permanentes, pérdida de garantía ni de posibles infracciones legales derivadas del uso de esta información.
El lector asume plena responsabilidad por cualquier acción que decida realizar basándose en el contenido de este blog.


© 2026 EA5JTT. Queda prohibida la reproducción total o parcial sin autorización expresa del autor.

Instalando ACARS en una Raspberry Pi

ACARS (Aircraft Communications Addressing and Reporting System) es un sistema de enlace de datos digital que permite a las aeronaves transmitir mensajes cortos y relativamente simples a las estaciones terrestres (compañías aéreas, centros de control, etc.) y viceversa.

Trabajan en la frecuencia de  131,725MHz y utiliza MSK (Minimum Shift Keying) a una velocidad de 2400 bps. 

En vuelos transoceanicos usan por HF o satélite (Inmarsat). 

En la actualidad ACARS en VHF se encapsula en VDL por lo que puede ser prefesible optar por instalr VDL2, aunu así vamos a probar acarsdec


Instalación

Seguimos el procedimiento habitual

Permisos
rpi-rw

Actualizacion y dependencias
sudo apt-get update
sudo apt-get install librtlsdr-dev libasound2-dev libpcre3-dev cmake

Clonamos la libreria
cd ~
git clone https://github.com/f00b4r0/acarsdec.git
cd acarsdec

Compilamos
mkdir build
cd build
cmake .. -Drtl=ON
make
sudo make install


Funcionamiento

Ayuda con los formatos y destinos de salida

acarsdec --output help
--output FORMAT:DESTINATION:PARAMS                                     
Supported FORMAT:       
 "oneline": Single line summary  
 "full": Full text decoding    
 "monitor": Live monitoring 
 "pp": PlanePlotter format  
 "native": Acarsdec native format                                               
Supported DESTINATION:  
 "file": File (including stdout) output. PARAMS: path,rotate 
 "udp": UDP network output. PARAMS: host,port                                   
Parámetros para RTL-SDR

 --rtlsdr <device> decode from rtl dongle number <device> or S/N <device>
 -B <bias> enable (1) or disable (0) the bias tee (default is 0)
 -c <freq> set center frequency to tune to in MHz, e.g. 131.800 (default: automatic)
 -g <gain> set rtl gain in db (0 to 49.6; >52 and -10 will result in AGC; default is AGC)
 -m <rateMult> set rtl sample rate multiplier: sample rate is <rateMult> * 12000 S/s (default: automatic)
 -p <ppm> set rtl ppm frequency correction (default: 0)


Salida por pantalla usando dos terminales

1er terminal
                                              
acarsdec --output full:udp:host=127.0.0.1,port=5555 -
v --rtlsdr 0 131.725 131.825 131.525                                            
Found 1 device(s):                                                              
  0:  Realtek, RTL2838UHIDIR, SN: 00000001                                      
                                                                                
Using device 0: Generic RTL2832U OEM                                            
Found Rafael Micro R820T tuner                                                  
Tuner gain: AGC                                                                 
#1: Fc = 131675000Hz, Fr = 131725000Hz, phase =  0.327249 (+50000Hz)            
#2: Fc = 131675000Hz, Fr = 131825000Hz, phase =  0.981748 (+150000Hz)           
#3: Fc = 131675000Hz, Fr = 131525000Hz, phase = -0.981748 (-150000Hz)           
Setting center freq: 131.6750 MHz                                               
Setting sample rate: 0.9600 MS/s                                                
Setting bandwidth to: 324.00 kHz                                                
Setting bias tee to 0                                                           
UDP: Attempting to resolve '127.0.0.1:5555'.                                    
Starting, decoding 3 channels                                                   
blk_starting                                                                    
Allocating 4 zero-copy buffers   

Otro formato con IP de la RAspberry Pi

acarsdec -v -g 35 --rtlsdr 0 --output oneline:udp:host=19
2.168.1.97,port=5555 131.725                                                    
Found 1 device(s):                                                              
  0:  Realtek, RTL2838UHIDIR, SN: 00000001                                      
                                                                                
Using device 0: Generic RTL2832U OEM                                            
Found Rafael Micro R820T tuner                                                  
Tuner gain: 33.8                                                                
#1: Fc = 131725000Hz, Fr = 131725000Hz, phase =  0.000000 (+0Hz)                
Setting center freq: 131.7250 MHz                                               
Setting sample rate: 0.9600 MS/s                                                
Setting bandwidth to: 24.00 kHz                                                 
Setting bias tee to 0                                                           
UDP: Attempting to resolve '192.168.1.97:5555'.                                 
Starting, decoding 1 channels                                                   
blk_starting                                                                    
Allocating 4 zero-copy buffers 

2º terminal

nc -u -l -p 5555

se quedará esperando a recibir un mensaje ACARS ... 

Salida por pantalla usando un unido trminaly con ganancia (-g 40)

acarsdec -g 40 --output full:udp:host=127.0.0.1,port=
5555 --rtlsdr 0 131.725 131.825 131.525 2>&1 | nc -u -l -p 5555 

Solo aviones

acarsdec --output full:udp:host=127.0.0.1,port=5555 --rtlsdr 0 131.725 131.825 131.525 > /dev/null & nc -u -l -p 5555

Solo un canal (Menos stress apra el SDR)

acarsdec -g 40 --output full:udp:host=127.0.0.1,port=5555
 --rtlsdr 0 131.725 2>&1 | nc -u -l -p 5555 

Mensaje de pruebas desde otro terminal

echo "TEST RADIO UPV" | nc -u -w1 127.0.0.1 5555

echo "TEST RADIO UPV" | nc -u -w1 192.168.1.97 5555

acarsdec -g 40 --output full:udp:host=127.0.0.1,port=
5555 --rtlsdr 0 131.725 131.825 131.525 2>&1 | nc -u -l -p 5555    
TEST RADIO UPV  

Ver mensajes del proceso desdde otro terminal
tail -f acars.log   

Limpia procesos colgados
sudo killall -9 acarsdec         

Conclusiones

Por el momento no se ha captado ningun mensaje ACARS del tráfico aéreo del aeropuerto de Manises (El receptor está a unos 15km y no está en las sendas de despegue y aterrizaje del aeropuerto). 

Por otra parte hay que tener en cuenta que el sistema VDL es un sistema mas moderno que tiene el mismo uso, por lo que pasamos a probar VDL2


Advertencia importante

Las modificaciones, configuraciones y procedimientos descritos en este sitio pueden implicar riesgos técnicos, legales o de seguridad. El autor no se responsabiliza del mal funcionamiento de los equipos, daños permanentes, pérdida de garantía ni de posibles infracciones legales derivadas del uso de esta información.
El lector asume plena responsabilidad por cualquier acción que decida realizar basándose en el contenido de este blog.


© 2026 EA5JTT. Queda prohibida la reproducción total o parcial sin autorización expresa del autor.

Agregador de información de aeronaves y navios: airframes

Airframe es un agregador de información sobre aeronaves y navios de las siguientes fuentes:

  • ACARS ( Aircraft Communications Addressing and Reporting System ): aeronaves en VHF (131,550 MHz) usando ACARSDEC
  • VDL2: aeronaves en VHF (136,5-136,975 MHz)
  • HFDL HF: usando DUMPHFDL
  • Iridium banda L 1616,0-1626,5MHz
  • Inmarsat
  • Inmarsat ADS-C
  • SatDump
  • AIS (Automatic Identification System): Navios en VHF(161,975 MHz - Channel 87B y  162,025 MHz - Channel 88B) usando AIScatcher




Puede convertir su estación de VDL2 en un feeder o alimentardor de airframes ejecutando un comando probado como

Saca dos salidas una en formato texto a la pantalla y otra en formato json a airframes

dumpvdl2 --rtlsdr 0 --gain 30 --output decoded:text:file:
path=- --output decoded:json:udp:address=feed.airframes.io,port=XXXX 136.975M

se puede sustituir la URL feed.airframes.io por la IP 142.132.239.244

dumpvdl2 --rtlsdr 0 --gain 30 --output decoded:text:file:
path=- --output decoded:json:udp:address=142.132.239.244,port=XXXX 136.975M 

se pueden incluir todas las frecuencias recomendadas para la zona (p.e. Europa 136725000 136775000 136825000 136875000 136975000)

dumpvdl2 --rtlsdr 0 --gain 30 --output decoded:text:file:
path=- --output decoded:json:udp:address=142.132.239.244,port=5555 136725000 136775000 136825000 136875000 136975000

Se incluye el identificador y el puerto 5552

dumpvdl2 --rtlsdr 0 --gain 35 --station-id XXXXXXXXX --ou
tput decoded:text:file:path=- --output decoded:json:udp:address=feed.airframes.i
o,port=5552 136725000 136775000 136825000 136875000 136975000 


La que propone airframe da error por el parametro address en lugar de udp

dumpvdl2 --rtlsdr 0 --output decoded:json:address:feed.airframes.io:5555 136650000 136800000 136900000 


Comprobaciones

Si los mensajes no llegan a airframes

Se puede comprobar que se llega

host feed.airframes.io
feed.airframes.io has address 142.132.239.244 

Puede ser necesario abrir puertos en la raspberry

sudo iptables -I OUTPUT -p udp --dport XXXX -j ACCEPT 
sudo iptables -I OUTPUT -p tcp --dport XXXX -j ACCEPT

Desde otra ventana (Instalar tcpdump si no lo está ya)

sudo apt-get update
sudo apt-get install tcpdump

ejecutar

sudo tcpdump -n host 142.132.239.244                     
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode       
listening on wlan0, link-type EN10MB (Ethernet), snapshot length 262144 bytes   
16:40:14.808395 IP 192.168.1.97.42140 > 142.132.239.244.xxxx: UDP, length 845   
16:40:16.339237 IP 192.168.1.97.42140 > 142.132.239.244.xxxx: UDP, length 843

SI no llega a airframe probar con

dumpvdl2 --rtlsdr 0 --gain 35 --output decoded:json:file:
path=- 136.975M | tee /dev/tty | nc -v 142.132.239.244 xxxx                    

dumpvdl2 2.6.0 (libacars 2.2.1)                                                 
Sampling rate set to 1050000 sps                                                
Found 1 device(s):                                                              
  0:  Realtek, RTL2838UHIDIR, SN: 00000001                                      
                                                                                
Using device 0: Generic RTL2832U OEM                                            
Found Rafael Micro R820T tuner                                                  
Exact sample rate is: 1050000.026077 Hz                                         
[R82XX] PLL not locked!                                                         
Center frequency set to 136975000 Hz                                            
Bandwidth set to 21000 Hz                                                       
Device #0: gain set to 33.80 dB                                                 
Device 0 bias tee set to 0                                                      
Device 0 started                                                                
Allocating 15 zero-copy buffers                                                 
{"vdl2":{"app":{"name":"dumpvdl2","ver":"2.6.0"},"t":{"sec":1778424716,"usec":35
927},"freq":136975000,"burst_len_octets":44,"hdr_bits_fixed":0,"octets_corrected
_by_fec":1,"idx":0,"sig_level":-32.879055,"noise_level":-47.864647,"freq_skew":0
.318651,"avlc":{"src":{"addr":"4400DC","type":"Aircraft","status":"Airborne"},"d
st":{"addr":"10926A","type":"Ground station"},"cr":"Command","frame_type":"I","r
seq":0,"sseq":1,"poll":false,"acars":{"err":false,"crc_ok":true,"more":false,"re
g":".OE-IDT","mode":"2","label":"_d","blk_id":"9","ack":"T","flight":"EC37HE","m
sg_num":"S32","msg_num_seq":"A","msg_text":""}}}} 

PLAN B

Pese a todos los intentos no se consiguió que llegaran los mensajes a airframe por lo que se decidió usar airframes-client https://github.com/airframesio/airframes-client

rpi-rw
cd /home/pi-star
git clone https://github.com/airframesio/airframes-client.git
sudo mkdir -p /usr/local/airframes
sudo cp -rf airframes-client/scripts/adc /usr/local/airframes/
sudo cp airframes-client/json/airframes.json /boot/airfra
mes.json  
sudo apt update
sudo apt install python3-pip python3-setuptools
cd /usr/local/airframes/adc
sudo pip3 install -r requirements.txt
find / -name airframes.json 2>/dev/null
/boot/airframes.json   
sudo nano /boot/airframes.json  

{
      "name": "dumpvdl2",
      "input": {
        "type": "decoder",
        "name": "dumpvdl2",
        "path": "/usr/local/bin/dumpvdl2",
        "config": {
          "receiver": "o",
          "gain": 40,
          "frequencies": ["136650000", "136800000", "136975000"]
        }
      },

outputs": [
        {
          "type": "logfile",
          "format": "af.json.v1",
          "path": "/var/log/airframes/airframes.data.json"
        },
        {
          "type": "logfile",
          "format": "af.json.v1",
          "path": "/var/log/airframes/dumpvdl2.data.json"
        },
        {
          "type": "net:tcp",
          "format": "af.json.v1",
          "feed": { "id": "xxxxxxxxx" },
          "hostname": "feed.acars.io",
          "port": 5555
        },

sudo mkdir -p /var/log/airframes
sudo chmod 777 /var/log/airframes  
cd /usr/local/airframes/adc    
sudo ./adc

Tampoco de esta forma se consiguio avanzar pues no soporta TCP que espera airframe


Referencias

Advertencia importante

Las modificaciones, configuraciones y procedimientos descritos en este sitio pueden implicar riesgos técnicos, legales o de seguridad. El autor no se responsabiliza del mal funcionamiento de los equipos, daños permanentes, pérdida de garantía ni de posibles infracciones legales derivadas del uso de esta información.
El lector asume plena responsabilidad por cualquier acción que decida realizar basándose en el contenido de este blog.


© 2026 EA5JTT. Queda prohibida la reproducción total o parcial sin autorización expresa del autor.

BACN - Nodos de comunicaciones en aviones de combate

Leí el comentario de  Peter Vogel en @petervogel.bsky.social sobre  los vuelos sobre Iraq de un avión de la USAF, en concreto un  Bombardier...