Skip to main content

PlutoSiege

ISM-Band RF Capture & Replay Tool for PlutoSDR

PyPI Python License Hardware SigMF

PlutoSiege Screenshot

REGULATORY DISCLAIMER
RF transmission is regulated by local authorities. Replay only signals you own or are permitted to transmit, into a dummy load or at the lowest power required.

About

PlutoSiege is a terminal application (TUI) for recording and replaying short ISM-band RF bursts (e.g. 433 MHz, 868 MHz) from car remotes, garage doors, doorbells, and wireless sensors.

Built for the ADALM-Pluto (AD9363/AD9361) SDR architecture, it saves recordings in standard SigMF (Signal Metadata Format) so they can be opened in other SDR tools like URH, IQEngine, GNU Radio, or Inspectrum.

Hardware Compatibility

Fully supports both official Analog Devices ADALM-Pluto hardware (Rev. B / Rev. C) and third-party clones/analogues based on the same AD9363/AD9361 transceivers (such as Pluto Nano, Pluto Plus, and other custom PlutoSDR boards).

Features

  • Level Metering: Real-time dBFS level meter with saturation (SAT!) warning.
  • Threshold Detection: Automated noise floor estimation or manual threshold setting.
  • Pre-Trigger Buffer: Keeps a ring buffer of history before trigger so preambles are not missed.
  • SigMF Format: Saves .sigmf-meta and .sigmf-data pairs.
  • GPS Geotagging: Records precise coordinates in SigMF metadata via gpsd and displays geotags during replay.
  • Digital Loopback Test: Built-in test screen to check hardware loopback and SNR.
  • Linux Native: Built and optimized specifically for Linux environments (supports all major distribution families: Debian-based, RPM-based, Arch-based, etc.).

Installation

1. System Drivers (libiio)

Install the required IIO system drivers for your distribution family:

Debian-based (Ubuntu, Debian, Kali, Mint, etc.):

sudo apt update && sudo apt install -y libiio0 libiio-dev libiio-utils

RPM-based (Fedora, RHEL, CentOS, Rocky, etc.):

sudo dnf install -y libiio python3-iio libiio-utils

Arch-based (Arch Linux, Manjaro, etc.):

sudo pacman -S libiio

2. Optional: GPS Support (gpsd)

If you plan to use GPS geotagging for SigMF recordings, install the gpsd daemon and tools:

Debian-based:

sudo apt install -y gpsd gpsd-clients

RPM-based:

sudo dnf install -y gpsd gpsd-clients

Arch-based:

sudo pacman -S gpsd

Note: Configure and start the gpsd service according to your specific GPS receiver hardware (USB dongle, UART module, Bluetooth, or virtual source) so that it listens on 127.0.0.1:2947. Once running, enable GPS in PlutoSiege Settings (Enable GPS (gpsd): yes).

3. Install & Run PlutoSiege

Install directly from PyPI:

pipx install pluto_siege
# or: pip install pluto_siege

Launch from any terminal:

pluto_siege

Option B: From Source (Clone Repository)

Clone the repository and install dependencies:

git clone https://github.com/SketchTurnerDev/pluto_siege.git
cd pluto_siege
pip install -r requirements.txt

Launch via the main script:

python pluto_siege.py
# or: python -m pluto_siege

Demo

PlutoSiege Demo

Application Menu

The main menu provides access to all core operations:

1. Capture

Listens for incoming RF bursts on the configured receiver frequency (rx_freq).

  • Real-time dBFS level meter with saturation (SAT!) warnings.
  • Automated noise floor estimation or manual threshold detection.
  • Pre-trigger history ring buffer to preserve signal preambles.
  • Saves captures as standard SigMF (.sigmf-meta and .sigmf-data) pairs with optional GPS geolocation tags.

2. Transmit

Browse and replay saved SigMF recordings.

  • Displays recorded timestamp, center frequency, sample rate, sample count, and GPS coordinates.
  • Replays signals via the PlutoSDR transmitter on the configured frequency (tx_freq).
  • In-place deletion of unwanted recordings (D or Delete).

3. Loopback Test

Internal hardware diagnostic to verify the SDR transceiver and USB/DMA pipeline.

  • Transmits an internal digital test tone through the AD936x loopback path.
  • Calculates received Signal-to-Noise Ratio (SNR) to confirm hardware health.

4. Settings

Configures radio parameters, trigger behavior, GPS integration, and interface preferences. Settings can be edited directly in the TUI and are saved to settings.json.

Parameter Type Default Description
pluto_uri str usb: Pluto connection URI (usb: or ip:).
pluto_ip str 192.168.2.1 Remembered Pluto IP address when toggling between USB and IP modes.
rx_freq int 433920000 Receiver center frequency in Hz.
tx_freq int 433920000 Transmitter center frequency in Hz.
permit_out_of_spec_frequency bool false Allows tuning outside 325 MHz – 3.8 GHz range (up to 70 MHz – 6.0 GHz).
sample_rate int 2100000 Sample rate in Hz (521 kSPS – 61.44 MSPS).
rx_gain float 15.0 Manual RX hardware gain in dB (0.0 to 74.5 dB).
tx_gain float 0.0 Manual TX attenuation gain in dB (-89.75 to 0.0 dB).
auto_threshold bool true Automated noise floor calculation.
auto_trigger_margin float 8.0 Margin in dB above noise floor required to trigger capture (1.0 to 30.0 dB).
manual_threshold float -30.0 Fixed trigger threshold in dBFS when auto is off.
pre_trigger_buffers int 2 Number of pre-trigger buffers kept in memory.
silence_seconds float 0.80 Silence required to stop recording.
max_post_trigger_seconds float 4.00 Maximum recording length after trigger.
rx_buffer_size int 32768 DMA buffer size in samples (1024 to 32768).
enable_gps bool false Hardware GPS geolocation in SigMF recordings via gpsd daemon.
gpsd_host str 127.0.0.1 Local or remote gpsd daemon host address.
gpsd_port int 2947 gpsd daemon TCP port (default 2947).
enable_sound bool true Acoustic cue feedback for trigger, TX, and status events.
enable_mouse bool true Terminal mouse interaction support.

License

Distributed under the GNU General Public License v3.0 (GPL-3.0). See LICENSE for details.

Metadata

Release files for pluto-siege 2.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pluto-siege 2.0.1
File Size Uploaded Provenance Actions
pluto_siege-2.0.1.tar.gz 63.5 kB With provenance Details for pluto_siege-2.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pluto-siege 2.0.1
File Interpreter ABI Platform Actions
pluto_siege-2.0.1-py3-none-any.whl Python 3 none any Details for pluto_siege-2.0.1-py3-none-any.whl

Total release size: 134.8 kB

Release files / pluto_siege-2.0.1.tar.gz

Download URL pluto_siege-2.0.1.tar.gz
Size 63.5 kB
Tags Source
SHA-256 checksum
How to use checksums
94dd713f1a9d1c712114cd454627982da6a8a9e8b16c0d44b0f3a1b41b15aacc
BLAKE2b-256 checksum
How to use checksums
c0519160bf85b19f0fa9ecbbeff8c8f2ffbe649dc3d18acbd3cd2f2b2f98cb32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / pluto_siege-2.0.1-py3-none-any.whl

Download URL pluto_siege-2.0.1-py3-none-any.whl
Size 71.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
756c97785bfea9eb9561d2d5fc34e3fd18b7cf282ea8ba0eb6fa3e97c7fd04a8
BLAKE2b-256 checksum
How to use checksums
92378d843c63838d50173421592cf0b6937fadc5feaa25a4893ccc20c5ea4211
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Security for pluto-siege 2.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pluto_siege-2.0.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page