-
Notifications
You must be signed in to change notification settings - Fork 20
Home
SIGpi is a "go-kit" for Signal Intelligence (SIGINT) enthusiasts with capabilities in the HF, VHF, UHF, and SHF spectrum. It includes a framework for simple installation and management of popular SIGINT applications and devices building/installing SIGINT tools on the following platforms:
Full Install
- Ubuntu 24.04 LTS (amd64) on Intel/AMD, or Debian 13 "trixie" / Raspberry Pi OS "trixie" (arm64) on Raspberry Pi 4/5
- 4GB RAM, 32GB storage
Server Only
- Ubuntu 24.04 LTS (amd64) on Intel/AMD, or Debian 13 "trixie" / Raspberry Pi OS "trixie" (arm64) on Raspberry Pi 3/4/5
- Login as pi or sudo on supported platform
- From your home directory, clone the SIGpi repo directly into ~/SIGpi
- Change directory into ~/SIGpi
sudo apt update && sudo apt upgrade
sudo apt-get install -y build-essential cmake git
cd ~
git clone https://github.com/joecupano/SIGpi.git ~/SIGpi
cd ~/SIGpi
Run the following command from $HOME/SIGpi to install
./SIGpi setup standard
Once started you will be given a menu of devices you can choose to install with RTLSDR and HackRF selected for install by default. Select the additional devices you would like to install and then click OK. For the next 15 to 20 minutes you will see messages scroll by as the SIGpi platform components are installed
After setup the system will reboot.
Don't worry about missing a device. Post install you can add it using SIGpi device install
Once setup, you can list the inventory of packages SIGpi includes as well as those already installed with the following
SIGpi list library
Note that ./ is no longer required for the SIGpi command after setup. An asterisk in the INSTALLED column indicates that package is already installed while those without asterisks have not been installed. For example, you will see SDRangel has not been installed. You can do so with the following
SIGpi install sdrangel
Go back and list again to install other packages of interest
Packages can be installed, removed and purged using the following commands respectively
SIGpi install <package>
SIGpi remove <package>
SIGpi purge <package>
Periodically new applications will be added to SIGpi and notifications sent to those watching the repo. To add applications available for install into your SIGpi instance simply run the following from within your ~/SIGpi directory
git pull
You will see the new applications as available running the list library command
SIGpi list library
You can update packages in your existing SIGpi install. For example, if there is a SDRangel update you can run
SIGpi update sdrangel
Update 7.22.123 is available
SIGpi upgrade sdrangel
SIGpi includes a headless server option. From a fresh Ubuntu 24.04 LTS server (or Debian 13 "trixie" / Raspberry Pi OS "trixie") installation run the following
./SIGpi setup server
During setup you will have the option to run either RTL-TCP, SDRangel Server, or SoapySDR server on startup or choose not to start any of them. After setup system will reboot.
While SIGpi is focused on simplifying the installation and removal of applications, we've included the ability to build from source post install.
If the application has been previously installed be sure to purge it first
./SIGpi purge <PACKAGE>
then run the following
./SIGpi build <PACKAGE>
The build option clones the source code into ~/SIGpi/source, builds the application, and installs it. Know that you will not be able to use remove or purge for packages you have built using the SIGpi script.
Additionally, we've included the ability to build and create a Debian package without installing.
SIGpi package [PACKAGE]
The package option will clone the source code into ~/SIGpi/source, builds the Debian package in the build directory within that cloned directory and then moves the created Debian package to ~/SIGpi/debs.
SIGpi package [PACKAGE]
From ~/SIGpi/debs you can install the Debian package
sudo dpkg -i <PACKAGE>
Know if the application is already installed, you need to purge it first. You will not be able to remove or purge packages you have built or packaged using the SIGpi script. If you wish you could SCP the debian package to another Ubuntu 24.04 LTS platform for use there.
SIGpi heritage is a SIGINT platform for the Raspberry Pi. Through SIGpi 7.22, best efforts were made to support both Ubuntu and Raspberry Pi OS on aarch64, and for a time SIGpi standardized on a single operating system, Ubuntu 24.04 LTS, to simplify builds and testing across arm64 and amd64. With Release 9.0, SIGpi certifies a split-track platform instead: Ubuntu 24.04 LTS "noble" on amd64 (Intel/AMD), and Debian 13 "trixie" / Raspberry Pi OS "trixie" on arm64 (Raspberry Pi 3/4/5) — Raspberry Pi OS support is back. Ubuntu 22.04 / Debian 12 "bookworm" are no longer certified on either architecture. DragonOS went down a single-OS route as well, though it's released as images. For those who like to tinker with code, we keep SIGpi as a (hopefully) well-documented platform to support that end rather than go down an image installation route.
SIGpi is largely a set of bash scripts. When runnning ./SIGpi setup standard from ~/SIGpi you have the following flow
SIGpi
scripts/setup_core_standard
scripts/setup_devices
scripts/setup_core_packages
scripts/setup_core_desktop
When runnning ./SIGpi setup server from ~/SIGpi you have the following flow
SIGpi
scripts/setup_core_server
scripts/setup_devices
scripts/setup_core_packages
Setup only installs devices, tools, and utilities dependent by most SIGINT applications. Application installation is a personal choice and want avoid making any assumptions in what to install by default staying true for SIGpi being a platform. As for application choices for inclusion in SIGpi, we made best efforts in choosing the most useful tools available.
With very few exceptions, every application is installed using a debian package stored for each hardware platform in ~/SIGpi/debs It not only speeds installation but also easier to manage. Using the command line options for managing applications is thoroughly tested. A Gtk based application manager is under development and available as SIGpi menu but ill-advised in its use at this time.
In previous SIGpi releases we tried to curate the GUI and command line applications into menus and submenus. For Ubuntu 24.04 all installed applications are available via the Applications icon on the lower left. The SIGIwiki and SIGpi icons will show red circled X on them. This is Ubuntu being secure with the desktop. Just right-click each icon and set them for Allow Launching
Perhaps you want to remotely connect to your SIGpi box and listen from a more comfortable location. VNC (which we do not include) can be installed and will let you remotely see and touch but not hear audio. For audio we configure via Preferences > PulseAudio Preferences in the Network Access and Network Server tabs. In Network Access check the first box and in Network Server check the first four boxes.
SDRangel and other SDR applications have the capability to decode APRS and Packet Radio signals and transmit at given TX capable supported and attached devices. If you have an Amateur Radio license and aspire to operate serious distance including satellites then you will need VHF/UHF transceiver capable of 5 watts for the latter interfacing to the transceiver through audio and radio control via Hamlib.
In the past dedicated hardware known as TNCs (terminal node controllers) was used between a computer and transceiver. But the signals themselves are audio so TNCs were replaced with software and soundcards connected to the transceiver. For SIGpi, DireWolf is the software replacing the TNC and AX.25 software providing the data-link layer above it that provides sockets to it.
If you are planning to operate APRS and Packet Radio with a transceiver then configuring DireWolf and AX.25 is necessary. Otherwise you can skip the subsections.
If you intend to transmit, you will need to edit axports and change to your licensed Amateur Radio callsign
sudo nano /etc/ax25/axports
- Change N0CALL to your callsign followed by a hyphen and a number 1 to 15. (For Example N0CALL-3)
# /etc/ax25/axports
#
# The format of this file is:
#
# name callsign speed paclen window description
#
ax0 N0CALL-3 1200 255 4 APRS / Packet
#1 OH2BNS-1 1200 255 2 144.675 MHz (1200 bps)
#2 OH2BNS-9 38400 255 7 TNOS/Linux (38400 bps)
- Save and exit
Devices (installed via SIGpi device install or the setup menu; RTL-SDR and HackRF are selected by default)
- bladeRF
- Ettus Research UHD - USRP support
- HackRF One
- Kerberos SDR
- libmirisdr - legacy SDRplay RSP1 and clones
- LimeSuite
- PlutoSDR
- RTL-SDR - RTL2832U & R820T2-Based, v4 tuner
- RigExpert Fobos
- SDRPlay
- Ubertooth - Ubertooth support
SoapySDR and SoapyRemote are installed automatically as part of every setup (not separately selectable); the matching per-device Soapy module (SoapyBladeRF, SoapyHackRF, SoapyPlutoSDR, SoapyRTLSDR, SoapySDRPlay, SoapyFobosSDR, etc.) is installed alongside that device where applicable.
Libraries and Decoders
- aptdec - NOAA satellite imagery decoder
- ax25 - AX.25 packet protocol tools (ax25-apps/ax25-tools)
- cm256cc - Fast GF(256) Cauchy MDS block erasure codec
- codec2 - Open source speech codec for low bandwidth HF/VHF digital radio
- dsdcc - Encode/Decode Digital Voice modes (DMR, YSF, D*Star, etc)
- fftw - FFT library, plus a pre-generated wisdom file for common FFT sizes
- ggmorse - Morse code decoding library
- hamlib - API for controlling a myriad of radios
- inmarsatc - C++ library to receive Inmarsat-C signals
- libbtbb - Bluetooth Baseband Library
- libdab - DAB/DAB+ decoding library
- libsigmf - Used for Signal Metadata Format - sharing of signal data
- liquid-dsp - Digital Signal Processing (DSP) library
- mbelib - P25 Phase 1 and ProVoice vocoder
- RadioSonde - Various tools for Weather balloon telemetry
- rnnoise - Recurrent neural network for audio noise reduction
- serialDV - Encode/Decode audio with AMBE3000 based devices (DMR, YSF, D-Star, etc)
- sgp4 - Used for satellite tracking given TLE data
- VkFFT - GPU-accelerated multidimensional FFT library
- VOLK - Vector Optimized Library of Kernels
SDR Applications
- Audacity - Audio Editor
- GQRX - SDR receiver app powered by GNU Radio and Qt
- GNURadio
- OpenWebRX - Multi-user SDR receiver with a web interface
- SDRangel - GUI app, plus the headless sdrangelsrv server variant
- SDR++
- rtl_433 - Generic data receiver for ISM bands decoding popular sensors
- Universal Radio Hacker - investigate unknown wireless protocols
Amateur Radio Applications
- direwolf - Software “soundcard” AX.25 packet modem/TNC and APRS encoder/decoder
- Fldigi - GUI app for CW, PSK, MFSK, RTTY, Hell, DominoEX, Olivia, etc
- flrig - Rig control program that cooperates with Fldigi
- js8call - JS8 mode (amd64 only - no arm64 package yet)
- QSSTV - GUI app for SSTV and HAMDRM/DSSTV
- WSJT-X - FT4, FT8, JT4, JT9, JT65, Q65, MSK144, WSPR
Satellite and Geo
- gpredict - Satellite Tracking with Radio and Antenna Rotor Control
- xastir - APRS Station Tracking and Reporting
- linpac - Packet Radio Terminal with Mail Client
Other SIGINT tools
- bettercap - wireless signal reconnaissance
- Chrony - NTP sync
- gpsd - interface daemon for GPS receivers
- Kismet - wireless reconnaissance and intrusion detection
- Multimon-NG - decodes POCSAG, FLEX, EAS, FSK/AFSK, DTMF, and more
- NRSC5 - HD Radio decoder
- pavucontrol - simple PulseAudio volume/routing control
- srsRAN-4G - end-to-end 4G network implementation
- NVIDIA CUDA Toolkit - GPU driver/toolkit install support for CUDA-accelerated applications
- DOSBox - DOS emulator (for legacy DOS-era radio tools)
Removed since earlier releases: Wireshark is no longer part of the SIGpi catalog.
DireWolf needs to be running for APRS and Packet applications to have use the AX0 interface defined in the previou section. You will need to configure your callsign, the soundcard device to use, and whether using PTT or VOX in the /usr/local/etc/direwolf/direwolf.conf file. The conf file itself is well documented in how to configure else consult the DireWolf online docs.
Because a number of factors go into a successful DireWolf setup with your transceiver, configuration discussion is deferred to the official DireWolf documentation.
Fldigi is a modem program which supports many classic digital modes used by Amateur Radio operators today (CW, RTTY, MFSK, PSK31, and many others). It is used with a USB sound dongle as a simple two-way data modem connected to the microphone and headphone connections of an amateur radio SSB transceiver or an FM two way radio.
Ubuntu 24.04's stock apt repo only carries GNU Radio 3.10.9.2, so on Ubuntu SIGpi adds the upstream GNU Radio team's PPA to get 3.10.12 for both amd64 and arm64. Debian 13 "trixie" / Raspberry Pi OS "trixie" already ship 3.10.12 directly from their native repos, so no PPA is needed there. Either way, both architectures land on the same 3.10.12 release. Consult the online documentation for usage details.
JS8Call is a derivative of the WSJT-X application, restructured and redesigned for message passing using a custom FT8 modulation called JS8. It is not supported by nor endorsed by the WSJT-X development group.
Packet radio terminal used for AX.25 commuications.
When asked Should Kismet be installed with suid-root helpers? respond with default yes
While we have built packages from source to make the install quicker, the install script also generates the FFTW Wisdom file if one isn't already present (an existing wisdom file, e.g. from the fftw package, is reused). This file is invoked as a startup option in the desktop icon/file for SDRangel to make the start much quicker. The cost of this is the time it takes to generate this file during install. At least 20 minutes for RPi4 it under 2 minutes for amd64 systems.
SDRangel's GUI build is x86_64-only for now, pending an upstream libunwind/aarch64 linker fix (see f4exb/sdrangel#2741) — on arm64, install always installs the pre-built SDRangel Debian package rather than building from source (SDRangel's own docs consider an RPi4 underpowered for the GUI anyway). The headless sdrangelsrv server variant does build on arm64 and is the recommended headless/Pi path.
Xastir is an application that provides geospatial mappng of APRS signals. It needs to configured to use the RF interface provided by DireWolf. You must start Direwolf in a separately terminal window before you start Xastir. Be sure to consult Xastir online documentation for more info.
Since stable arm64 and amd64 packages are available from the WSJTX team, we opted to add WSJTX back in. Reminder, WSJT-X does not like being installed with JS8CALL given their common use of wsjtx-data package.
Since we are working with limited abstraction from local devices we are dependent on strict use of versions when it comes to libraries. While going with packages from the distro repository is always the safest bet, they are not always the most current release. Building and packaging newer application versions with the features you desire may require updating a library that is also used by other applications, which could break something else that depends on the older version.
Release 9.0 refreshed most arm64 Debian packages, but a few are still open:
- js8call has no arm64 package yet — not installable on Raspberry Pi.
-
Ettus UHD (the
ettusdevice) and both libmirisdr sub-components have no arm64 package yet. - volk, xastir, and libsigmf still ship stale arm64 versions behind their amd64/PACKAGES versions.
- libbtbb's arm64 package has a corrupted version string and needs a rebuild.
-
evilcrowrf is parked under
development/(not installable on any platform) until its Debian packages are built and staged.