Signal Catalog¶
The supported emitter families with the parameter ranges, source backends, and example configs the framework provides out of the box.
Family |
Coverage |
Backend |
|---|---|---|
PSK, QAM, FSK, OFDM, AM, FM, chirp, CW tone |
TorchSig v2.1.x · MIT |
|
Pulsed (single |
Custom + radarsimpy + scipy |
|
Single |
gr-lora_sdr (default) or LoRaPHY |
|
GNU Radio OOT-backed Pass-1 stubs |
gr-bluetooth, gr-ieee802-11, gr-ieee802-15-4 |
|
Mode-S extended squitter ( |
pyModeS-backed Pass-1 stub |
|
LTE PUSCH/PDSCH ( |
srsRAN over ZMQ Pass-1 stub |
|
NR PUSCH ( |
sionna.phy.nr Pass-1 stub |
Deferred for future emitter expansion lists families and waveforms planned but not yet implemented in Layer 3 (drone family, GSM, captured playback, NR downlink, extended radar waveforms).
Comms modulations¶
Backend. TorchSig v2.1.x signals.builders.*, wired up as one rfgen emitter per modulation family rather than a single super-emitter. Each rfgen class lazy-imports its TorchSig submodule on construction. See Emitter Algorithms for the full builder-to-emitter mapping.
License. MIT.
Bandwidth. 1 kHz – 20 MHz.
Classes.
Family |
rfgen emitter |
Modulations |
|---|---|---|
Constellation |
BPSK, QPSK, 8PSK, 16PSK, 16/32/64/256-QAM, OOK, 4/8-ASK |
|
FSK |
2/4/8/16 {FSK, GFSK, MSK, GMSK} |
|
OFDM |
ofdm-{64, 72, 128, 180, 256, 300, 512, 600, 900, 1024, 1200, 2048} |
|
AM |
DSB-FC, DSB-SC, SSB-USB, SSB-LSB |
|
FM |
NB-FM, WB-FM |
|
Chirp |
ChirpSS (LoRa-like), LFM data chirp |
|
CW |
CW tone |
Reference datasets. RadioML 2018.01a, Sig53, HisarMod 2019.1.
Example.
# configs/emitter_zoo/comms_only.yaml
families:
- family: comms
classes: [bpsk, qpsk, 16qam, 64qam, ofdm-256]
weight: 1.0
params:
symbol_rate: [50e3, 5e6]
pulse_shape: rrc
rrc_alpha: [0.2, 0.5]
Radar¶
The shipped radar surface is two classes with one waveform label each. Earlier drafts described a longer catalog of intrapulse codes (Barker B5/B7/B11/B13, polyphase Frank/P1/P2/P3/P4, PMCW Costas/Frank, FH Costas-array) and FMCW variants; those waveforms are planned for a future radar.py expansion (see Deferred for future emitter expansion) and not yet implemented.
Classes shipped.
rfgen emitter |
|
Backend |
|---|---|---|
|
|
|
|
|
Knobs. PRI (typically 100 us - 10 ms), pulse width, num pulses per scene (see PulsedRadarParams and ChirpRadarParams). The intrapulse modulation choice is fixed per-class in this release.
Reference datasets. AIMC-Spec (arXiv:2601.08265), NIST CBRS Radar.
Example.
# Single LFM chirp pulse at X-band default parameters
families:
- family: radar
classes: [lfm_chirp]
weight: 1.0
params:
bandwidth_hz: 10e6
pulse_duration_s: 10e-6
direction: up
LoRa¶
Backend. LoRaSdrEmitter (default) wraps the gr-lora_sdr GNU Radio OOT module via the rfgen[lora-sdr] extra. LoRaPHYEmitter (pure-Python fallback) wraps loraphy via the rfgen[lora-phy] extra. Both ship as Pass-1 stubs; generate() raises until the Pass-N backend wiring lands.
License. Implementation MIT; underlying GNU Radio OOT module GPL-3.0 (lazy-imported, not bundled).
Classes. A single "lora" class label. The SF / BW / CR knobs live on LoRaParams as per-emission fields (spreading_factor, bandwidth_hz, coding_rate, payload_bytes); they are not separate supported_classes entries. Backend selection happens at scene-config time via the LoRaBackend enum ("gr-lora-sdr" or "lora-phy").
Reference datasets. OSU LoRa, Pycom LoRa.
Example.
families:
- family: lora
classes: [lora]
weight: 1.0
backend: gr-lora-sdr
params:
spreading_factor: 7
bandwidth_hz: 125e3
coding_rate: 1
fingerprint:
enabled: true
num_devices: 25 # for SEI research
BLE / Wi-Fi / Zigbee¶
GNU Radio OOT-backed Pass-1 stubs. Each pins a single supported_classes label; backend wiring is deferred to a future pass.
rfgen emitter |
|
Backend |
|---|---|---|
|
GNU Radio OOT; |
|
|
GNU Radio OOT; |
|
|
GNU Radio OOT; |
ADS-B¶
Backend. AdsBEmitter wraps pyModeS for Mode-S message encoding via the rfgen[adsb] extra. Ships as a Pass-1 stub; generate() raises until the pyModeS wiring lands.
Classes. A single ("adsb_extended_squitter",) label. Sub-message selection (DF11 all-call, DF17 extended squitter sub-types, DF18 TIS-B) is planned for a future cadence-and-message-mix expansion; the current Pass-1 stub does not yet distinguish them at the class-label level.
Reference datasets. Daytona ADS-B.
Cellular LTE¶
Backend. LTEEmitter delegates to srsRAN over ZMQ via the rfgen[lte] extra. Ships as a Pass-1 stub.
Classes. ("lte_pusch", "lte_pdsch"). The class labels name the protocol/channel; bandwidth and modulation/coding-scheme knobs live on LTEParams as runtime parameters (n_prb, mcs).
Reference datasets. NIST CBRS Radar (LTE component).
Cellular 5G NR¶
Backend. NRPuschEmitter wraps sionna.phy.nr via the rfgen[sionna] extra. Ships as a Pass-1 stub.
Classes. ("nr_pusch",). Bandwidth and subcarrier-spacing knobs live on NRPuschParams (n_rb, mcs, subcarrier_spacing_hz).
PDSCH, SSB, PRACH, CSI-RS, and NR test-model emitters are planned for a future cellular expansion; see Deferred for future emitter expansion.
Deferred for future emitter expansion¶
The items listed below are planned for a future release but are NOT shipped today. A reader who needs any of these for current work should NOT expect the listed class labels to work in this Layer 3 release; the class names are reserved for the planned expansion and not yet bound to a concrete emitter.
Each deferred item below has a planned home (a new module or an expansion of an existing module) noted alongside.
Drone family¶
Planned new emitter module covering DJI OcuSync (multiple model variants), DJI Lightbridge, FPV analog video (NTSC/PAL VSB), MAVLink telemetry (433/915 MHz FSK), and Crossfire/ELRS (LoRa-like FHSS). The EmitterFamily.DRONE enum value already exists for these classes but no concrete emitter binds to it yet. Planned for a future release.
GSM / 2G GMSK¶
GSM/2G GMSK 200 kHz is a planned cellular-emitter expansion alongside LTE and NR PUSCH. No GSM emitter ships today. Planned for a future release.
CapturedPlaybackEmitter (replay-from-IQ-files)¶
First-class emitter that replays IQ from SigMF + HDF5 captures, implementing the BaseEmitter contract so synthetic and captured signals compose interchangeably in scenes. This was the basis for the planned hybrid synth+capture path for the higher-fidelity drone shells. Planned for a future utility-emitter release.
NRDownlinkEmitter (5G downlink)¶
5G NR downlink emitter covering PDSCH, SSB, and test-model signals. Today only NRPuschEmitter (uplink PUSCH) ships. Planned for a future cellular-emitter expansion.
Extended radar waveforms¶
The shipped radar surface is ("pulsed",) and ("lfm_chirp",). The following intrapulse codes and waveform families are planned for a future radar.py expansion: FMCW (up/down/triangle/sawtooth), frequency-hopping radar (Costas-array dwell sequences), Barker codes (B5, B7, B11, B13), polyphase codes (Frank, P1, P2, P3, P4), and PMCW phase-coded chirps (Costas, Frank polyphase). None of these are accepted as class_label arguments today.
Adding a new emitter family¶
See How-to / Add a custom emitter for the step-by-step. The contract is BaseEmitter.
Coverage roadmap
v1 (shipped): the families listed above (comms, radar, LoRa, BLE/Wi-Fi/Zigbee, ADS-B, cellular LTE, cellular 5G NR PUSCH).
Planned future expansions (in addition to the Deferred for future emitter expansion list above):
802.11n/ac/ax with MIMO
DVB-S/S2 satellite
GPS L1/L2/L5
Iridium / Globalstar (LEO)
TETRA / DMR (LMR)
AIS
Reach out if your downstream task needs a family not listed; the framework’s plugin model makes additions cheap.