Also for other related SDR programs running under Linux.
- https://github.com/szechyjs/dsd
- github.com/Evrytania/LTE-Cell-Scanner
- www.evrytania.com/lte-tools
- github.com/szechyjs/mbelib
This is using an "up-to-date" Kali Linux system (Dec. 2025).
$ sudo apt-get update $ sudo apt-get install libpulse-dev libsndfile1-dev libfftw3-dev liblapack-dev socat libusb-1.0-0-dev libncurses5 libncurses5-dev rtl-sdr librtlsdr-dev libusb-1.0-0-dev cmake git wget make build-essential libitpp-dev libncursesw5-dev libcodec2-dev or if you get a 'libcurses5' error: $ sudo apt-get install libpulse-dev libsndfile1-dev libfftw3-dev liblapack-dev socat libusb-1.0-0-dev rtl-sdr librtlsdr-dev libusb-1.0-0-dev cmake git wget make build-essential libitpp-dev libcodec2-devInstall MBELIB:
$ git clone https://github.com/lwvmobile/mbelib $ cd mbelib $ git checkout ambe_tones $ mkdir build $ cd build/ $ cmake .. $ make $ sudo make install $ sudo ldconfig
Install and compile DSD-FME:
$ mkdir dsd $ cd dsd $ git clone https://github.com/lwvmobile/dsd-fme $ cd dsd-fme/ $ mkdir build $ cd build/ $ cmake .. -- The C compiler identification is GNU 15.2.0 -- The CXX compiler identification is GNU 15.2.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found LibSndFile: /usr/lib/x86_64-linux-gnu/libsndfile.so -- Found MBE: /usr/local/lib/libmbe.so -- Found ITPP: /usr/local/lib/libitpp.so -- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.1") -- Checking for module 'librtlsdr' -- Found librtlsdr, version 2.0.1 -- Found RTLSDR: /usr/lib/x86_64-linux-gnu/librtlsdr.so -- Looking for wsyncup in /usr/lib/x86_64-linux-gnu/libcurses.so -- Looking for wsyncup in /usr/lib/x86_64-linux-gnu/libcurses.so - found -- Looking for cbreak in /usr/lib/x86_64-linux-gnu/libncursesw.so -- Looking for cbreak in /usr/lib/x86_64-linux-gnu/libncursesw.so - found -- Looking for nodelay in /usr/lib/x86_64-linux-gnu/libncursesw.so -- Looking for nodelay in /usr/lib/x86_64-linux-gnu/libncursesw.so - found -- Found Curses: /usr/lib/x86_64-linux-gnu/libncursesw.so -- Found PulseAudio: /usr/lib/x86_64-linux-gnu/libpulse.so (found version "17.0") -- Checking for module 'codec2' -- Found codec2, version 1.2.0 -- Found CODEC2: /usr/lib/x86_64-linux-gnu/libcodec2.so -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success -- Found Threads: TRUE -- Configuring done (1.7s) -- Generating done (0.0s) -- Build files have been written to: /complete/path/to/dsd-fme/build $ make [ 1%] Building CXX object CMakeFiles/dsd-fme.dir/src/Hamming.cpp.o [ 2%] Building C object CMakeFiles/dsd-fme.dir/src/bptc.c.o [ 3%] Building C object CMakeFiles/dsd-fme.dir/src/crypt-aes.c.o [ 4%] Building C object CMakeFiles/dsd-fme.dir/src/crypt-des.c.o [ 5%] Building C object CMakeFiles/dsd-fme.dir/src/crypt-etc.c.o [ 6%] Building C object CMakeFiles/dsd-fme.dir/src/crypt-kir.c.o [ 7%] Building C object CMakeFiles/dsd-fme.dir/src/crypt-pc4.c.o [ 8%] Building C object CMakeFiles/dsd-fme.dir/src/crypt-pc5.c.o [ 9%] Building C object CMakeFiles/dsd-fme.dir/src/crypt-rc2.c.o [ 10%] Building C object CMakeFiles/dsd-fme.dir/src/crypt-rc4.c.o [ 11%] Building C object CMakeFiles/dsd-fme.dir/src/crypt-tyt.c.o [ 12%] Building C object CMakeFiles/dsd-fme.dir/src/dmr_34.c.o [ 13%] Building C object CMakeFiles/dsd-fme.dir/src/dmr_block.c.o [ 14%] Building C object CMakeFiles/dsd-fme.dir/src/dmr_bs.c.o [ 15%] Building C object CMakeFiles/dsd-fme.dir/src/dmr_csbk.c.o [ 17%] Building C object CMakeFiles/dsd-fme.dir/src/dmr_data.c.o [ 18%] Building C object CMakeFiles/dsd-fme.dir/src/dmr_dburst.c.o [ 19%] Building C object CMakeFiles/dsd-fme.dir/src/dmr_flco.c.o [ 20%] Building C object CMakeFiles/dsd-fme.dir/src/dmr_le.c.o [ 21%] Building C object CMakeFiles/dsd-fme.dir/src/dmr_ms.c.o [ 22%] Building C object CMakeFiles/dsd-fme.dir/src/dmr_pdu.c.o [ 23%] Building C object CMakeFiles/dsd-fme.dir/src/dmr_pi.c.o [ 24%] Building C object CMakeFiles/dsd-fme.dir/src/dmr_utils.c.o [ 25%] Building C object CMakeFiles/dsd-fme.dir/src/dpmr_data.c.o [ 26%] Building C object CMakeFiles/dsd-fme.dir/src/dpmr_voice.c.o [ 27%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_alias.c.o [ 28%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_audio.c.o [ 29%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_audio2.c.o [ 30%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_dibit.c.o [ 31%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_events.c.o [ 32%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_file.c.o [ 34%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_filters.c.o [ 35%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_frame.c.o [ 36%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_frame_sync.c.o [ 37%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_gps.c.o [ 38%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_import.c.o [ 39%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_ks.c.o [ 40%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_main.c.o [ 41%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_mbe.c.o [ 42%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_mbe2.c.o [ 43%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_misc.c.o [ 44%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_ncurses_handler.c.o [ 45%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_ncurses_menu.c.o [ 46%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_ncurses_printer.c.o [ 47%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_reset.c.o [ 48%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_rigctl.c.o [ 50%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_serial.c.o [ 51%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_symbol.c.o [ 52%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_time.c.o [ 53%] Building C object CMakeFiles/dsd-fme.dir/src/dsd_upsample.c.o [ 54%] Building C object CMakeFiles/dsd-fme.dir/src/dstar.c.o [ 55%] Building C object CMakeFiles/dsd-fme.dir/src/dstar_header.c.o [ 56%] Building C object CMakeFiles/dsd-fme.dir/src/edacs-bch3.c.o [ 57%] Building C object CMakeFiles/dsd-fme.dir/src/edacs-fme.c.o [ 58%] Building CXX object CMakeFiles/dsd-fme.dir/src/ez.cpp.o [ 59%] Building C object CMakeFiles/dsd-fme.dir/src/fec.c.o [ 60%] Building C object CMakeFiles/dsd-fme.dir/src/m17.c.o [ 61%] Building C object CMakeFiles/dsd-fme.dir/src/nxdn_convolution.c.o [ 62%] Building C object CMakeFiles/dsd-fme.dir/src/nxdn_deperm.c.o [ 63%] Building C object CMakeFiles/dsd-fme.dir/src/nxdn_element.c.o [ 64%] Building C object CMakeFiles/dsd-fme.dir/src/nxdn_frame.c.o [ 65%] Building C object CMakeFiles/dsd-fme.dir/src/nxdn_voice.c.o [ 67%] Building C object CMakeFiles/dsd-fme.dir/src/p25_12.c.o [ 68%] Building C object CMakeFiles/dsd-fme.dir/src/p25_crc.c.o [ 69%] Building C object CMakeFiles/dsd-fme.dir/src/p25_frequency.c.o [ 70%] Building C object CMakeFiles/dsd-fme.dir/src/p25_lcw.c.o [ 71%] Building CXX object CMakeFiles/dsd-fme.dir/src/p25p1_check_hdu.cpp.o [ 72%] Building CXX object CMakeFiles/dsd-fme.dir/src/p25p1_check_ldu.cpp.o [ 73%] Building CXX object CMakeFiles/dsd-fme.dir/src/p25p1_check_nid.cpp.o [ 74%] Building C object CMakeFiles/dsd-fme.dir/src/p25p1_hdu.c.o [ 75%] Building C object CMakeFiles/dsd-fme.dir/src/p25p1_heuristics.c.o [ 76%] Building C object CMakeFiles/dsd-fme.dir/src/p25p1_ldu.c.o [ 77%] Building C object CMakeFiles/dsd-fme.dir/src/p25p1_ldu1.c.o [ 78%] Building C object CMakeFiles/dsd-fme.dir/src/p25p1_ldu2.c.o [ 79%] Building C object CMakeFiles/dsd-fme.dir/src/p25p1_mdpu.c.o [ 80%] Building C object CMakeFiles/dsd-fme.dir/src/p25p1_pdu_data.c.o [ 81%] Building C object CMakeFiles/dsd-fme.dir/src/p25p1_pdu_trunking.c.o [ 82%] Building C object CMakeFiles/dsd-fme.dir/src/p25p1_tdu.c.o [ 84%] Building C object CMakeFiles/dsd-fme.dir/src/p25p1_tdulc.c.o [ 85%] Building C object CMakeFiles/dsd-fme.dir/src/p25p1_tsbk.c.o [ 86%] Building C object CMakeFiles/dsd-fme.dir/src/p25p2_frame.c.o [ 87%] Building C object CMakeFiles/dsd-fme.dir/src/p25p2_vpdu.c.o [ 88%] Building C object CMakeFiles/dsd-fme.dir/src/p25p2_xcch.c.o [ 89%] Building C object CMakeFiles/dsd-fme.dir/src/pa_devs.c.o [ 90%] Building C object CMakeFiles/dsd-fme.dir/src/provoice.c.o [ 91%] Building C object CMakeFiles/dsd-fme.dir/src/pulse_devices.c.o [ 92%] Building C object CMakeFiles/dsd-fme.dir/src/rs-12-9.c.o [ 93%] Building CXX object CMakeFiles/dsd-fme.dir/src/rtl_sdr_fm.cpp.o [ 94%] Building C object CMakeFiles/dsd-fme.dir/src/sjis_unicode.c.o [ 95%] Building C object CMakeFiles/dsd-fme.dir/src/x2tdma_data.c.o [ 96%] Building C object CMakeFiles/dsd-fme.dir/src/x2tdma_voice.c.o [ 97%] Building C object CMakeFiles/dsd-fme.dir/src/ysf.c.o [ 98%] Building C object CMakeFiles/dsd-fme.dir/git_ver.c.o [100%] Linking CXX executable dsd-fme [100%] Built target dsd-fme $ sudo make install [100%] Built target dsd-fme Install the project... -- Install configuration: "" -- Installing: /usr/local/bin/dsd-fme -- Set non-toolchain portion of runtime path of "/usr/local/bin/dsd-fme" to "" $ sudo ldconfigIf you get an 'ITPP Not Found' error:
$ sudo apt-get install libitpp-dev or # Download itpp-4.3.1.tar.gz $ tar xvzf itpp-4.3.1.tar.gz $ cd itpp-4.3.1/ $ mkdir build $ cd build $ cmake .. $ make $ sudo make install $ sudo ldconfigIf you get a "RTL Support not enabled/compiled, falling back to Pulse Audio Audio Input." error:
$ sudo apt-get install librtlsdr-devand recompile.
Plug in RTL SDR.
$ dmesg [1570482.655252] rc rc0: Realtek RTL2832U reference design as /devices/pci0000:00/0000:00:1c.6/0000:08:00.0/usb3/3-4/3-4.2/rc/rc0 [1570482.655316] rc rc0: lirc_dev: driver dvb_usb_rtl28xxu registered at minor = 0, raw IR receiver, no transmitter [1570482.655360] input: Realtek RTL2832U reference design as /devices/pci0000:00/0000:00:1c.6/0000:08:00.0/usb3/3-4/3-4.2/rc/rc0/input226 [1570482.655527] usb 3-4.2: dvb_usb_v2: schedule remote query interval to 200 msecs [1570482.664935] usb 3-4.2: dvb_usb_v2: 'Realtek RTL2832U reference design' successfully initialized and connectedTo test if it's working:
$ dsd-fme -i rtl [ Cool ANSI Graphics] Build Version: AW 2025-216-gabf2859 MBElib Version: 1.3.0 CODEC2 Support Enabled RTL Input: Found 1 device(s): 0: Realtek, RTL2838UHIDIR, SN: 00000001 Selected Device #0 with Serial Number: 00000001 Dev 0 Freq 850000000 Gain 0 PPM 0 BW 12 SQ 100 VOL 2 Audio In Device: rtl Setting RTL Bandwidth to 12000 Hz Setting RTL RMS Squelch Level to 100 Detached kernel driver Found Rafael Micro R820T tuner Using RTLSDR Device Index: 0. Tuner gain set to automatic. Setting RTL Autogain. WARNING: Failed to set ppm error. (Center Frequency: 850252000 Hz.) Oversampling input by: 84x. Oversampling output by: 1x. Buffer size: 8.13ms Exact sample rate is: 1008000.009613 Hz Allocating 15 zero-copy buffers Sampling at 1008000 S/s. Output at 12000 Hz.Run using the -N for the Curses menu.
$ sudo apt-get install /complete/path/to/sdrpp_debian_sid_amd64.deb Reading package lists... Done Building dependency tree... Done Reading state information... Done Note, selecting 'sdrpp' instead of '/tmp/sdrpp_debian_sid_amd64.deb' Solving dependencies... Done The following NEW packages will be installed: sdrpp 0 upgraded, 1 newly installed, 0 to remove and 991 not upgraded. Need to get 0 B/2,240 kB of archives. After this operation, 0 B of additional disk space will be used. Get:1 /complete/path/to/sdrpp_debian_sid_amd64.deb sdrpp all 1.2.1-1487 [2,240 kB] Selecting previously unselected package sdrpp. (Reading database ... 905970 files and directories currently installed.) Preparing to unpack .../complete/path/to/sdrpp_debian_sid_amd64.deb ... Unpacking sdrpp (1.2.1-1487) ... Setting up sdrpp (1.2.1-1487) ... Processing triggers for kali-menu (2025.4.3) ... Processing triggers for desktop-file-utils (0.28-1) ... Processing triggers for gnome-menus (3.38.1-1) ... Processing triggers for mailcap (3.75) ... $ ls -l /usr/bin/sdrpp -rwxr-xr-x 1 root root 16024 Dec 12 00:58 /usr/bin/sdrppdsd-fme -i tcp -N -T -U 4532 -f2 -m2 2> log.ans