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

  1. Clone the repository
    Clone the GitHub repository and navigate to its root directory:

    git clone https://github.com/jcfitzpatrick12/spectre.git && cd spectre
    
  2. 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.

  3. 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.

  4. 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.

  5. 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.

  1. Create and activate a Python virtual environment
    Create and activate a Python virtual environment dedicated for the spectre-cli:

    python3 -m venv ./.venv && . ./.venv/bin/activate
    
  2. Install the dependencies
    Install the dependencies into the newly activated virtual environment.:

    pip install ./cli
    
  3. Remove the existing alias:
    Remove any existing alias to prevent shadowing:

    unalias spectre
    
  4. Good to go!
    Verify everything is up and running with:

    spectre --help