-
Notifications
You must be signed in to change notification settings - Fork 18
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:
- Raspberry Pi4/5 4GB RAM or Raspberry Pi 400 with 32GB microSD card
- Raspberry Pi3 with 32GB microSD card (Server-build Only)
- 4GB RAM and 32GB storage minimum
- Ubuntu 22.04 LTS on amd64 or arm64
- Login as pi or sudo user on supported platform
- From your home directory, create a directory called SIG and switch into it
- Clone the SIGpi repo
- Change directory into SIGpi
sudo apt update && sudo apt upgrade
sudo apt-get install -y build-essential cmake git
cd ~
mkdir ~/SIG && cd ~/SIG
git clone https://github.com/joecupano/SIGpi.git
cd SIGpi
Run the following command from $HOME/SIG/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 as 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 SIGpiand notifications sent to those watching the repo. To add applcations available for install into your SIGpi instance simple run run the following from within your /home/pi/SIG/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 22.04 LTS server install 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 ~/SIG/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 ~/SIG/source, builds the Debian package in the build directory within that cloned directory and then moves the created Debian package to ~/SIG/SIGpi/debs.
SIGpi package [PACKAGE]
From ~/SIG/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 it for use on some other Ubuntu 22.04 LTS platform.
SIGpi heritage is a SIGINT platform for the Raspberry Pi. Best efforts were made to support the Raspberry Pi OS up through SIGpi 7.0. But to efficiently build for arm64 and amd64 platforms it becamse necessary to stanadardize on a consistent operating system experience Ubuntu 22.04 LTS was chosen. DragonOS went down this route as well though is released as images. For whose who like to tinker with code, we kept 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 ~/SIG/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 ~/SIG/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 SIG/SIGpi/debs It not only speeds installation but also easier to manage. Using the command line options for managing applications is throroughl tested. A Gtk based application manager is under development abd 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 22.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 this build 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
Device Drivers
- bladeRF
- HackRF One
- Kerberos SDR
- LimeSuite
- PlutoSDR
- RTL-SDR - RTL2832U & R820T2-Based
- RigExpert Fobos
- SDRPlay
- SoapySDR
- SoapyRemote
- SoapyBladeRF
- SoapyFobosSDR
- SoapyHackRF
- SoapyPlutoSDR
- SoapyRTLSDR
- SoapySDRPlay
- Ubertooth - Ubertooth support
Libraries and Decoders
- aptdec - NOAA satellite imagery decoder
- cm256cc
- dab-cmdline - DABD/DAB+
- dsdcc - Encode/Decode Digital Voice modes (DMR, YSF, D*Star, etc)
- hamlib - API for controlling a myriad of radios
- libax25 - AFSK baseband audio library for AX.25 packet as used by APRS
- libbtbb - Bluetooth Baseband Library
- libsigmf - Used for Signal Metadata Format - sharing of signal data
- liquid-dsp - Digital Signal Processing (DSP) library
- mbelib - P25 Phase 1
- RadioSonde - Various tools for Weather balloon telemetry
- serialDV - Encode/Decode audio with AMBE3000 based devices (DMR, YSF, D-Star, etc)
- sgp4 - Used for satellite tracking given TLE data
SDR Applications
- Audacity - Audio Editor
- GNURadio
- SDRangel
- SDR++
- rtl_433- Generic data receiver for UHF ISM Bands decoding popular sensors
Amateur Radio Applications
- ax25-apps - Command line AX.25 apps
- ax25-tools - AX.25 for daemon interfaces
- direwolf - Software “soundcard” AX.25 packet modem/TNC and APRS encoder/decoder
- Fldigi - GUI app for CW, PSK, MFSK, RTTY, Hell, DominoEX, Olivia, etc
- js8call - JS8 mode
- QSSTV - GUI app for SSTV
- WSJT-X - FT4, FT8, JT4, JT9, JT65, Q65, MSK144
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
- Kismet - wireless reconnaissance and intrusion detection
- Multimon-NG - decodes POCSAG, etc
- NRSC5 - HD Radio decoder
- srsRAN-4G
- Wireshark - Network Traffic Analyzer
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.
Fast Light Automatic Repeat reQuest is a file transfer application that is based on the ARQ specification capable capable of transmitting and receiving frames of ARQ data via FLDIGI. Program data exchange between FLARQ and FLDIGI is accomplished using a localhost socket interface. The socket interface requires that one program act as the server and the other the client. FLARQ is a client program and FLDIGI is a server program. FLARQ will not execute unless FLDIGI is already running. See the online documentation for more info.
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.
For amd64, GNUradio 3.10.5 is installed from the GNUradio repo. For arm64, GNUradio 3.9.8 is compiled from source during installation. Have yet to identify issues in building GNUradio 3.10.X for arm64. 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. Note that WSJT-X conflicts with JS8CALL given both use wsjtx-data package. It's installation will conflict with the WSJT-X application.
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. 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.
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.
Yes, I know there are more apps installed. There is no short-cut and must defer you to the documentation on their respective sites