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
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.