RTLSDR-Airband
Ce logiciel est normalement destine a l’écoute des bandes Aviation. Mais il offre un certain nombre d'options inintéressante pour la Radio Amateur.
L’écoute simultané de plusieurs fréquences
la démodulation narrow FM.
L'enregistrement lors d'une émission.
Plusieurs mode de sorties: Pulse Audio, UDP, IQ Brut
Par exemple avec une simple cle RTL-SDR qui a une capaticite de reception de 3 Msps, il est possible plusieurs d'avoir les 2 Mhz de la bande 2 metres (144Mhz-146Mhz)
Installation
RTLSDR-Airband
Pre-requis
| — | Lib & packages | — |
| RTLSDR-Airband | build-essential cmake pkg-config libmp3lame-dev libshout3-dev 'libconfig++-dev' libfftw3-dev | Librairies necessaire |
| RTLSDR-Airband | libpulse-dev | Pulse Audio |
| RTLSDR-Airband | librtlsdr-dev | Cle RTL-SDR |
| RTLSDR-Airband | libsoapysdr-dev | Soapy SDR |
| RTLSDR-Airband | google-perftools libgoogle-perftools-dev | DSP GPU |
| — | Lib & packages | — |
| pipewire | pipewire pipewire-pulse wireplumber | Audio |
| wiremix | libpipewire-0.3-dev clang cargo | Pirewire TUI Controller |
Compilation
cmake -DPLATFORM=native -DNFM=ON -DMIRISDR=OFF -DPROFILING=ON ../
-- Build type not specified: defaulting to Release
-- Found lame includes: /usr/include/lame/lame.h
-- Found lame library: /usr/lib/aarch64-linux-gnu/libmp3lame.so
-- Checking for SoapySDR
-- SoapySDR found, /usr/include, SoapySDR
-- RTLSDR-Airband configuration summary:
-- - Version string: v5.2.0
-- - Build type: Release
-- - Operating system: Linux
-- - SDR drivers:
-- - librtlsdr: requested: ON, enabled: TRUE
-- - mirisdr: requested: OFF, enabled: FALSE
-- - soapysdr: requested: ON, enabled: TRUE
-- - Other options:
-- - Platform: native
-- - Build Unit Tests: FALSE
-- - Broadcom VideoCore GPU: FALSE
-- - NFM support: ON
-- - PulseAudio: requested: ON, enabled: TRUE
-- - Profiling: requested: ON, enabled: TRUE
-- - Icecast TLS support: TRUE
-- Configuring done (0.3s)
-- Generating done (0.1s)
-- Build files have been written to: /opt/build/RTLSDR-Airband/build
$ make
[ 5%] Generating version.cpp, _version.cpp
[ 10%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/config.cpp.o
[ 15%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/input-common.cpp.o
[ 20%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/input-file.cpp.o
[ 25%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/input-helpers.cpp.o
[ 30%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/mixer.cpp.o
[ 35%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/output.cpp.o
[ 40%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/rtl_airband.cpp.o
[ 45%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/squelch.cpp.o
[ 50%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/ctcss.cpp.o
[ 55%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/util.cpp.o
[ 60%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/udp_stream.cpp.o
[ 65%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/logging.cpp.o
[ 70%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/filters.cpp.o
[ 75%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/helper_functions.cpp.o
[ 75%] Generating version.cpp, _version.cpp
[ 80%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/version.cpp.o
[ 85%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/input-rtlsdr.cpp.o
[ 90%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/input-soapysdr.cpp.o
[ 95%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/pulse.cpp.o
[ 95%] Built target rtl_airband_base
[100%] Linking CXX executable rtl_airband
[100%] Built target rtl_airband
$ sudo make install
[ 5%] Generating version.cpp, _version.cpp
[ 10%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/version.cpp.o
[ 95%] Built target rtl_airband_base
[100%] Linking CXX executable rtl_airband
[100%] Built target rtl_airband
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/bin/rtl_airband
Pipewire
Installation
$ systemctl --user restart pipewire pipewire-pulse wireplumber
wiremix
$ cargo install wiremix --locked
Configuration
2m-band.config
| QRG Mhz | Description | Mode / BW / Demode |
| 144,350 | Pager Ham | nFM 22050 POCSAG1200 |
| 144,800 | APRS | nFM 22050 AFSK1200 |
| 144,500 | Images, SSTV, FAX… | nFM |
| 144,600 | Modes numériques, RTTY… | nFM |
| 145,075 | Relais R3 FKIO ARA35 | nFM 12000 |
| 145,3875 | Relais local ARA35 | nFM 12000 |
| 145,500 | FM fréquence d'appel | nFM 12000 |
| 145,450 | Communications d'urgences FRANCE (FM dégagement 1) | nFM 12000 |
| 145,4625 | Communications d'urgences FRANCE (FM dégagement 2) | nFM 12000 |
| 145,475 | Communications d'urgences FRANCE (FM fréquence principale) | nFM 12000 |
| 145,800 | ISS Contact | nFM 12000 |
General
multiple_demod_threads = true;
multiple_output_threads = true;
device
devices:
({
type = "rtlsdr";
index = 1;
serial = "10000001";
gain = 25;
centerfreq = 145.0;
correction = 12;
sample_rate = "2.048M"
channels:
( ../.. )
}
)
{
freq = 145.35;
label = "pager";
modulation = "nfm";
lowpass = 0;
highpass = 0;
bandwidth = 12500;
outputs: (
{
type = "udp_stream";
dest_address = "127.0.0.1";
dest_port = 1234;
},
);
},
Phonie
{
freq = 145.075;
squelch_threshold = -30;
label = "R3 Broc";
modulation = "nfm";
bandwidth = 12500;
outputs: (
{
type = "pulse";
stream_name = "R3_Broc";
},
{
type = "file";
directory = "/home/djo/transmission";
filename_template = "R3_Broc";
continuous = false;
split_on_transmission = false;
include_freq = false;
append = true;
}
);
},
multimon-ng sox
nc -lun 127.0.0.1 1235 | sox -t raw -efloating-point -b32 -r 16000 - -esigned-integer -b16 -r 22050 -t raw - | multimon-ng -v 3 -t raw -A -a AFSK1200 --timestamp - | tee -a APRS.log
nc -lun 127.0.0.1 1234 | sox -t raw -efloating-point -b32 -r 16000 - -esigned-integer -b16 -r 22050 -t raw - | multimon-ng -t raw -f auto -a POCSAG1200 -v 3 --timestamp - | tee -a POCSAG1200.log
Troubleshooting
GPU support
???
$ cmake -DPLATFORM=rpiv2 -DNFM=ON -DMIRISDR=OFF -DPROFILING=ON ../
-- Build type not specified: defaulting to Release
-- Found lame includes: /usr/include/lame/lame.h
-- Found lame library: /usr/lib/aarch64-linux-gnu/libmp3lame.so
-- Checking for SoapySDR
-- SoapySDR found, /usr/include, SoapySDR
-- RTLSDR-Airband configuration summary:
-- - Version string: v5.2.0
-- - Build type: Release
-- - Operating system: Linux
-- - SDR drivers:
-- - librtlsdr: requested: ON, enabled: TRUE
-- - mirisdr: requested: OFF, enabled: FALSE
-- - soapysdr: requested: ON, enabled: TRUE
-- - Other options:
-- - Platform: rpiv2
-- - Build Unit Tests: FALSE
-- - Broadcom VideoCore GPU: TRUE
-- - NFM support: ON
-- - PulseAudio: requested: ON, enabled: TRUE
-- - Profiling: requested: ON, enabled: TRUE
-- - Icecast TLS support: TRUE
-- Configuring done (0.3s)
-- Generating done (0.1s)
-- Build files have been written to: /opt/build/RTLSDR-Airband/build
$ make
[ 3%] Generating version.cpp, _version.cpp
[ 7%] Building CXX object src/CMakeFiles/rtl_airband_base.dir/config.cpp.o
c++: error: unrecognized command-line option ‘-mfpu=neon-vfpv4’
c++: error: unrecognized command-line option ‘-mfloat-abi=hard’
make[2]: *** [src/CMakeFiles/rtl_airband_base.dir/build.make:86: src/CMakeFiles/rtl_airband_base.dir/config.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:131: src/CMakeFiles/rtl_airband_base.dir/all] Error 2
make: *** [Makefile:136: all] Error 2