Installation - jcfitzpatrick12/spectre GitHub Wiki
Contents
Supported Receivers
Spectre is powered by GNU Radio, and can support any receiver with a source block. If you have a receiver that isn't currently supported, raise an issue.
Receiver | Vendor | Supported |
---|---|---|
RSP1A | SDRplay | ✅ |
RSPduo | SDRplay | ✅ |
RSPdx | SDRplay | ✅ |
USRP B200mini | Ettus Research | ✅ |
RTL-SDR | RTL-SDR | ❌ |
RSP1B | SDRplay | ❌ |
RSPdx-R2 | SDRplay | ❌ |
USRP B200 | Ettus Research | ❌ |
USRP B210 | Ettus Research | ❌ |
USRP B205mini-i | Ettus Research | ❌ |
USRP X310 | Ettus Research | ❌ |
AirspyHF | Airspy | ❌ |
BladeRF | Nuand | ❌ |
HackRF | Great Scott Gadgets | ❌ |
LimeSDR | Lime Microsystems | ❌ |
PLUTO | Analog Devices | ❌ |
If you're new to Spectre and don't have a supported receiver yet, don't worry. You can explore the program using the built-in signal_generator
receiver, which works without any extra hardware.
Note: SDRplay clones (i.e., unofficially produced copies of SDRplay receivers) will likely not work with Spectre as they are not compatible with the official SDRplay API.
Supported Platforms
Spectre is expected to be compatible with most Linux distributions and offers multi-arch support. The following platforms have been verified:
Architecture | OS |
---|---|
x86_64 | Ubuntu Desktop (22.04) |
arm64 | Ubuntu Desktop (22.04) |
arm64 | Raspberry Pi OS (Desktop) |
arm64 | Raspberry Pi OS (Lite) |
If you're having trouble on your platform or device, raise an issue.
Note: macOS compatibility will be explored in the future.
Quick Start
Prerequisites
To get going, you'll need the following installed on your machine:
Prerequisite | Do I Already Have It? |
---|---|
Docker Engine | Run docker --version |
Docker Compose | Run docker compose --help |
Git | Run git --version |
Getting started
-
Clone the repository
Clone the GitHub repository and navigate to its root directory:git clone https://github.com/jcfitzpatrick12/spectre.git && cd spectre
-
Configure your host
Set up targeted USB permissions for Spectre, and initialise environment variables, with sensible defaults:chmod +x setup.sh && sudo ./setup.sh
This is required to run the
spectre-server
as a non-root user, which is the default behaviour. -
Start the containers
Ensure any receivers are connected, then create and run the containers in the background:docker compose up --detach
Optional: Omit the
--detach
flag, if you'd like to run them in the foreground. Everything works the same, but you'll have to open a new terminal tab for the next steps. -
Create an alias for the CLI
In a new terminal tab, set up the following alias:alias spectre='docker exec spectre-cli spectre'
This lets you run
spectre-cli
commands as if they were executed directly on the host. -
Good to go!
Verify everything is up and running with:spectre --help
Check your receiver is detected
If you have a physical receiver connected, it's a good idea to verify that the spectre-server
can detect it.
-
For SDRplay receivers, run:
docker exec spectre-server sdrplay_find_devices
-
For USRP receivers, run:
docker exec spectre-server uhd_find_devices
If this is the first time you're running the containers since plugging in the device, it may not be detected. Ensure the receiver is still connected, then restart the spectre-server
with:
docker restart spectre-server
Run the CLI without Docker
You can also run the CLI locally, without the spectre-cli
container.
-
Create and activate a Python virtual environment
Create and activate a Python virtual environment dedicated for thespectre-cli
:python3 -m venv ./.venv && . ./.venv/bin/activate
-
Install the dependencies
Install the dependencies into the newly activated virtual environment.:pip install ./cli
-
Remove the existing alias:
Remove any existing alias to prevent shadowing:unalias spectre
-
Good to go!
Verify everything is up and running with:spectre --help