DMR Craftbox: Craft, Sequence, and Stream Custom DMR Bursts to SDR#, SDR++, and DSD-FME
TL;DR: DMR Craftbox by Mastodon987 is an open source desktop graphical workbench for constructing, inspecting, sequencing, and streaming ETSI TS 102 361 Digital Mobile Radio (DMR) layer-2 bursts. Supporting 15 distinct burst types across multiple TDMA framing modes, DMR Craftbox allows radio amateurs, developers, and researchers to build complex transmission sequences with live parameter editing. It streams calibrated 4FSK baseband signals directly to SDR software via a built-in
rtl_tcpserver, exports complex baseband IQ files (WAV + JSON sidecar), or routes audio through local sound cards into digital decoders like DSD-FME and dsd-neo without transmitting RF over the air.
What Is DMR Craftbox?
DMR Craftbox is a desktop graphical protocol utility designed for testing, learning, and experimenting with the European Telecommunications Standards Institute (ETSI) Digital Mobile Radio standard by crafting individual layer-2 bursts, arranging multi-slot TDMA sequences, and generating modulated baseband signals.
+-----------------------------------------------------------------------------------------+
| DMR CRAFTBOX ARCHITECTURE |
+-----------------------------------------------------------------------------------------+
[ Protocol Parameter Editor ] [ Sequencer Engine ] [ Output Pipelines ]
┌──────────────────────────┐ ┌────────────────────┐ ┌───────────────────────┐
│ 15 ETSI Burst Types: │ │ Multi-Burst List: │ │ rtl_tcp Server │
│ - VoiceLCHeader │ │ - Slot 1 / Slot 2 │ ──TCP──► │ - CU8 I/Q for SDR# │
│ - DataHeader & UDT │ ──Add──► │ - Auto-Order │ │ - Mono PCM for DSD-FME│
│ - CSBK Signalling │ │ - Live Parameter │ └───────────────────────┘
│ - Voice Bursts (A-F) │ │ Double-Click Edit│ ┌───────────────────────┐
│ - TerminatorWithLC │ │ - Gapless Looping │ ──WAV──► │ Complex IQ Export │
└──────────────────────────┘ │ - .dmrseq Storage │ │ - RIFF WAV + JSON │
┌──────────────────────────┐ └────────────────────┘ │ - sdrTrunk Compatible │
│ Framing & Physical Mode: │ │ └───────────────────────┘
│ - BS-Sourced (CACH + SLC)│ │ ┌───────────────────────┐
│ - MS-Sourced (Simplex) │ └──────────Audio───► │ Local Sound Card / ALSA│
│ - TDMA1 / TDMA2 Windows │ │ - PulseAudio / waveOut│
│ - Inbound Reverse Channel│ │ - 4FSK Baseband Audio │
└──────────────────────────┘ └───────────────────────┘
Exploring Digital Mobile Radio (DMR) protocol internals has traditionally presented a high barrier to entry. While amateur radio operators readily use DMR handhelds, MMDVM hotspots, and BrandMeister reflectors, understanding how raw bits traverse the air interface requires digging through hundreds of pages of ETSI documentation.
When an engineer or curious ham needs to test how a decoder or receiver handles edge cases, such as custom Talker Alias headers, GPS NMEA positioning payloads, Emergency Call Signalling Blocks (CSBK), or Privacy Indicator headers, practical testing methods fall short:
– Transmitting experimental or malformed frames over RF with a physical radio can disrupt local repeaters and violate spectrum regulations.
– Replaying static off-the-air IQ recordings lacks parameter flexibility and carries noise, fading, and receiver artifacts.
– Assembling custom transmission scripts in GNU Radio or Python requires extensive DSP and bit-packing code.
DMR Craftbox solves this problem by acting as an interactive packet crafter for DMR Layer 2 air interface bursts. It pairs parameter-level protocol construction with a multi-burst sequencer and a DSP modulation engine capable of driving popular software-defined radio (SDR) decoders over standard network sockets.
DMR Craftbox vs Alternative DMR Analysis and Generation Tools
To see where DMR Craftbox fits into the amateur radio and digital voice ecosystem, consider how it compares with common testing tools:
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ DMR GENERATION & PROTOCOL ANALYSIS TOOLS │
├──────────────────────┬────────────────┬────────────────┬────────────────┬────────────────┬────────────────┤
│ Feature │ DMR Craftbox │ GNU Radio Flow │ MMDVM / Host │ DSD-FME / Neo │ Physical Radio │
│ │ (Mastodon987) │ Scripts │ (G4KLX) │ Decoders │ (AnyTone/Moto) │
├──────────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│ Primary Role │ GUI burst & │ General DSP │ Multi-mode RF │ Digital voice │ End-user RF │
│ │ stream crafter │ framework │ hotspot modem │ decoder / snif │ transceiver │
├──────────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│ Protocol Layer Focus │ ETSI Layer 2 │ Physical Layer │ Network gateway│ Decoding / │ User voice & │
│ │ bursts & TDMA │ (Layer 1) │ to RF frames │ audio playback │ codeplug ops │
├──────────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│ GUI Parameter Tuning │ Yes (15 burst │ Manual block │ Text config │ Terminal CLI │ None (fixed │
│ │ page editors) │ wiring │ files only │ arguments │ firmware) │
├──────────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│ Multi-Burst Sequencer│ Built-in list │ Custom state │ Network stream │ None (passive │ Transmit PTT │
│ │ with loop/edit │ machines │ driven │ receiver) │ sequence only │
├──────────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│ rtl_tcp Live Stream │ Built-in (CU8 │ Possible via │ No │ No (input │ No │
│ │ & Mono PCM) │ sink blocks │ │ client only) │ │
├──────────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│ RF Hardware Needed │ None │ Optional SDR TX│ Hotspot board │ Audio cable or │ DMR HT / Base │
│ │ │ (HackRF/Pluto) │ + RF radio │ SDR receiver │ station radio │
├──────────────────────┼────────────────┼────────────────┼────────────────┼────────────────┼────────────────┤
│ Licensing │ Free Non-Comm │ Open source │ Open source │ Open source │ Commercial │
│ │ (Qt LGPLv3) │ (GPLv3) │ (GPLv2) │ (GPLv2) │ proprietary │
└──────────────────────┴────────────────┴────────────────┴────────────────┴────────────────┴────────────────┘
While tools like DSD-FME excel at decoding and listening to incoming digital streams, DMR Craftbox serves as the generator. It gives researchers and developers full control over every single header bit, synchronization pattern, and link control field.
The DMR Air Interface: ETSI TS 102 361 Protocol Foundations
DMR Craftbox implements specifications defined by the European Telecommunications Standards Institute (ETSI) across three core standards:
1. ETSI TS 102 361-1: DMR Air Interface (AI) protocol. Defines burst formats, TDMA framing, physical layer 4FSK modulation, FEC codes, and layer-2 message structures.
2. ETSI TS 102 361-2: DMR voice and generic services. Governs Full Link Control (FLC), service options, call routing, and reverse-channel signaling.
3. ETSI TS 102 361-4: DMR trunking protocol. Governs short link control opcodes, trunked control channels, and Unified Data Transport (UDT) formats.
TDMA Frame Structure and Burst Anatomy
DMR operates within a 12.5 kHz channel spacing divided into two 2-slot Time Division Multiple Access (TDMA) channels. Each frame lasts exactly 60 milliseconds, partitioned into two 30-millisecond slots (Timeslot 1 and Timeslot 2):
+-----------------------------------------------------------------------------------------+
| ETSI DMR 30 ms BURST STRUCTURE |
+-----------------------------------------------------------------------------------------+
|<-- 2.5 ms -->|<----------------------- 27.5 ms (264 bits) ----------------------->|
+--------------+------------------+--------------------+------------------+---------+
| CACH / Guard| Payload 1 | SYNC / Embedded | Payload 2 | Guard |
| (24 bits) | (108 bits) | Signalling (48 b) | (108 bits) | (Sub-ms)|
+--------------+------------------+--------------------+------------------+---------+
Inside each 30 ms slot:
– In Base Station (BS-Sourced) mode, a 2.5 ms (24-bit) Common Announcement Channel (CACH) precedes the burst. The CACH informs mobile radios of timeslot activity and carries Short Link Control (SLC) broadcast information.
– The active burst spans 27.5 ms, containing 264 bits (132 dibit symbols modulated at 4800 symbols per second using 4-level FSK).
– The burst is split symmetrically: two 108-bit payload blocks bracket a 48-bit center field.
– The center 48-bit field carries either a 48-bit synchronization word (identifying voice, data, or repeater sync) or an Embedded Signalling link-control fragment (EMB).
DMR Craftbox handles all physical framing calculations, CRC generation, and Forward Error Correction (FEC) interleaving behind the scenes, allowing you to focus on high-level parameter values.
Deep Dive: The 15 Supported Burst Types
DMR Craftbox includes 15 distinct burst editors accessible from the Burst type dropdown. Each burst type provides an editor tailored to its ETSI protocol fields.
+─────────────────────────────────────────────────────────────────────────────────────────+
| DMR CRAFTBOX 15 BURST EDITORS |
+───────────────────────────┬─────────────────────────────────────────────────────────────+
| Burst Type Selector | Protocol Role & ETSI Specification Reference |
+───────────────────────────┼─────────────────────────────────────────────────────────────+
| VoiceLCHeader | Full Link Control header opening voice calls (TS 102 361-1) │
| DataHeader | Defines packet format (UDT, IP, Confirmed) (TS 102 361-1 §8)│
| Rate12Data | Half-rate FEC data block (1/2 rate trellis/convolutional) │
| Rate34Data | Three-quarter rate FEC data block for higher throughput │
| Rate1Data | Rate 1 uncoded raw data block │
| CSBK | Control Signalling BlocK (Paging, Radio Check, Emergency) │
| MBCHeader | Multi-Block Control header for trunked signaling │
| MBCContinuation | Follow-on block extending an MBC transmission sequence │
| Idle | Standard DMR repeater fill burst during inactivity │
| TerminatorWithLC | Teardown burst gracefully closing voice or data calls │
| PIHeader | Privacy Indicator header (Encryption Algorithm & Key ID) │
| USBD | Unified Single Block Data transport │
| AppendedData | UDT Appended Data blocks (GPS NMEA, Radio IDs, Text, IP) │
| VoiceBurst | Voice superframe frames A through F with embedded signalling│
| RcSync | Inbound 10 ms standalone Reverse Channel burst (§6.4.1) │
+───────────────────────────┴─────────────────────────────────────────────────────────────+
1. VoiceLCHeader (Voice Link Control Header)
Precedes voice transmissions to notify listening stations of call parameters. You can configure:
– Link Control Opcode (FLCO): Group Voice Call, Unit-to-Unit Voice Call, Talker Alias, GPS Information, or proprietary manufacturer formats.
– Service Options: Emergency priority flag, Broadcast call, and Privacy/Encryption indicator.
– Addressing: Source Radio ID (24-bit) and Destination Talkgroup/Radio ID (24-bit).
2. DataHeader & Data Bursts (Rate 1/2, Rate 3/4, Rate 1)
Precedes packet transmissions. The Data Header configures Data Packet Formats (DPF), Service Access Points (SAP for IP packet or Short Data), response flags, and block counts. The corresponding data bursts let you test forward error correction pipelines:
– Rate12Data: Encodes 96 information bits into 196 coded bits using convolutional FEC.
– Rate34Data: Uses punctured convolutional coding for higher data rates in clean RF conditions.
– Rate1Data: Carries uncoded raw user payload.
3. CSBK (Control Signalling Block)
CSBK messages handle essential control functions across conventional and trunked systems. DMR Craftbox exposes the full CSBK Opcode (CSBKO) table:
– Unit-to-Unit Voice Service Request / Acknowledge.
– Call Alert (paging a user with an audible chime).
– Radio Check (verifying whether a radio is powered on within coverage).
– Radio Inhibit (remote stun/kill) and Radio Uninhibit (revive).
– Emergency Alarm and Channel Grant announcements.
4. VoiceBurst (Frames A through F)
In DMR, voice is transmitted in superframes spanning six 30 ms bursts (frames A, B, C, D, E, and F):
– Frame A: Carries the 48-bit voice synchronization pattern.
– Frames B through E: Carry voice payloads alongside slices of the Full Link Control (FLC) word.
– Frame F: Contains embedded signalling, such as Late Entry Link Control (allowing late-joining receivers to discover call metadata mid-transmission) or Reverse Channel control.
– DMR Craftbox lets you edit the raw 96-bit vocoder hex payload, select the frame letter (A-F), and configure embedded Late Entry parameters.
5. AppendedData (UDT Appended Data / UAB)
Appended-data blocks carry Unified Data Transport (UDT) short data payloads following a Data Header. DMR Craftbox supports eleven distinct UDT payload formats:
– NMEA Location: Latitude, longitude, position error, speed over ground, and course over ground.
– Text: ISO 7-bit, ISO 8-bit, and 16-bit Unicode strings.
– Radio IDs: Lists up to 15 destination radio IDs.
– IP Address: IPv4 destination headers.
– BCD Number, Binary Payloads, and LIP: Location Information Protocol data.
Framing Modes and TDMA Timeslot Handling
DMR transmissions vary depending on whether the signal originates from a repeater or a subscriber radio. DMR Craftbox replicates these conditions through its Mode selector:
+─────────────────────────────────────────────────────────────────────────────────────────+
| DMR CRAFTBOX FRAMING MODES |
+──────────────────────┬──────────────────────────────────────────────────────────────────+
| Framing Mode | Protocol Characteristics & TDMA Behavior |
+──────────────────────┼──────────────────────────────────────────────────────────────────+
| MS-Sourced | Mobile Station direct mode (simplex). No CACH; standalone burst. │
| BS-Sourced | Base Station / repeater mode. Alternating slots with CACH. |
| TDMA1 MS-Sourced | Direct mode burst aligned strictly to Timeslot 1 (30 ms window). │
| TDMA2 MS-Sourced | Direct mode burst aligned strictly to Timeslot 2 (30 ms window). │
| Inbound Reverse Chan | 10 ms (96-bit) reverse-channel burst centered inside a 30 ms slot│
+──────────────────────┴──────────────────────────────────────────────────────────────────+
Base Station Mode and CACH Management
In BS-Sourced mode, DMR Craftbox generates an ETSI-compliant continuous carrier stream. It automatically inserts the 24-bit CACH channel between bursts and allows you to configure the Short Link Control Opcode (SLCO):
– Null: Standard filler CACH.
– Activity Update: Announces timeslot status to listening radios.
– CC System Params & PC System Params: Control channel system parameters used in trunking systems.
The Sequencer: Composing Real-World Transmissions
Individual bursts are useful for testing static decoders, but real radio communication consists of ordered burst sequences. DMR Craftbox features a dockable Sequence panel that turns isolated bursts into full conversations.
+-----------------------------------------------------------------------------------------+
| DMR CRAFTBOX SEQUENCER WORKFLOW |
+-----------------------------------------------------------------------------------------+
1. Craft Burst in Editor (e.g. VoiceLCHeader TG 91, Color Code 1)
│
▼
2. Press "Add to Sequence" (or hold Space to auto-repeat bursts)
│
▼
3. Craft Voice Bursts A through F -> Add to Sequence
│
▼
4. Craft TerminatorWithLC -> Add to Sequence
│
▼
5. Use "Auto Order" (Alt+O) to automatically interleave TS1 and TS2 slots
│
▼
6. Double-click any row in the sequence list to edit parameters LIVE
│
▼
7. Loop Sequence gaplessly or export as .dmrseq binary file
Key Sequencer Features
- Live In-Place Editing: Double-clicking any item in the sequence panel reloads its exact parameters into the main editor. Every modification updates that specific sequence item in real time without needing to delete and re-insert rows.
- Auto-Order Interleaving (Alt+O): If you build bursts on Timeslot 1 and Timeslot 2, Auto-Order automatically interleaves them (TS1, TS2, TS1, TS2). You can specify which timeslot leads and how uneven slot counts are padded.
- Gapless Looping: The
Loop Sequencetoolbar button continuously plays the sequence. Any edits made in the parameter page are rendered into the audio stream on the next cycle without stopping playback. - Binary Sequence Storage: Sequences save to binary
.dmrseqfiles, preserving individual burst configurations, toolbar states, and CACH configurations for later testing sessions.
Three Versatile Output Pipelines
Once a burst or sequence is assembled, DMR Craftbox can generate baseband signals through three dedicated output pipelines:
+─────────────────────────────────────────────────────────────────────────────────────────+
| DMR CRAFTBOX OUTPUT PIPELINES |
+─────────────────────────────────────────────────────────────────────────────────────────+
Pipeline 1: rtl_tcp Server Listener
───────────────────────────────────
- Listens on 0.0.0.0:1234 (configurable IP and port).
- Mode A (CU8 IQ): Feeds SDR# and SDR++ as a virtual RTL-SDR hardware dongle.
- Mode B (Mono PCM): Streams raw 48 kHz 16-bit PCM for dsd-fme -i tcp:127.0.0.1:1234.
- Multi-client support: Multiple SDR receivers can connect to one stream.
Pipeline 2: Complex Baseband IQ File Generator
──────────────────────────────────────────────
- Writes calibrated RIFF/WAVE complex IQ files plus a JSON metadata sidecar.
- 16-bit signed PCM or 32-bit float PCM (customizable I/Q channel order).
- Filename template with %freq% placeholders compatible with sdrTrunk auto-tuning.
- Configurable sample rate (48 kHz to 8 MHz) and 6th-order Butterworth low-pass filter.
Pipeline 3: Local Sound Device & WAV Export
──────────────────────────────────────────
- Streams modulated 4FSK baseband audio directly to machine sound cards.
- Linux: Runtime dynamic loading of ALSA and PulseAudio/PipeWire (no build dependencies).
- Windows: Direct waveOut audio driver integration.
- Save WAV / Save Sequence WAV exports standard audio files for offline inspection.
1. Built-In rtl_tcp Server Listener
The rtl_tcp output transforms DMR Craftbox into a virtual SDR signal generator. It opens an rtl_tcp server on port 1234. When SDR software connects to this port:
– In standard IQ mode, it delivers 8-bit unsigned complex IQ (CU8 format) modulated with standard ETSI 4FSK deviation (1944 Hz outer symbol frequency). SDR# or SDR++ displays a live waterfall and spectrum display just as if receiving an over-the-air signal.
– In Mono PCM format, the listener switches to raw 16-bit signed 48 kHz PCM baseband audio. This allows tools like DSD-FME to connect directly via TCP (dsd-fme -i tcp:127.0.0.1:1234) without requiring virtual audio cables.
2. Complex Baseband IQ File Export
Clicking Generate IQ writes the entire sequence to disk as a complex IQ WAV file alongside a JSON sidecar containing frequency, sample rate, filter bandwidth, and timestamp metadata.
– With the default naming pattern dmr_%freq%_baseband_%date%_%time%.wav, programs like sdrTrunk automatically read the center frequency directly from the file name when added as a Recording Tuner.
3. Sound Card Audio Device Playback
For local audio loopback, DMR Craftbox streams 4FSK baseband audio directly into your operating system’s sound system. On Linux, ALSA (libasound.so.2) and PulseAudio (libpulse-simple.so.0) are loaded dynamically at runtime via dlopen(). This architecture ensures the pre-compiled binary runs out of the box across any modern Linux distribution without requiring audio development header packages.
Hands-On Walkthrough: Testing DSD-FME with DMR Craftbox via rtl_tcp
To demonstrate how DMR Craftbox simplifies testing, here is a practical guide to generating a DMR voice transmission and decoding it with DSD-FME without touching an RF transmitter.
+─────────────────────────────────────────────────────────────────────────────────────────+
| PRACTICAL TESTING WALKTHROUGH |
+─────────────────────────────────────────────────────────────────────────────────────────+
Step 1: Build the DMR Voice Sequence in DMR Craftbox
────────────────────────────────────────────────────
1. Open DMR Craftbox.
2. Set Burst type to "VoiceLCHeader", Mode to "BS-Sourced", TS to 1, and Color Code to 1.
3. Set FLCO to "Group Voice Call", Destination ID to 91 (Worldwide), Source ID to 5021234.
4. Click "Add to Sequence".
5. Switch Burst type to "VoiceBurst". Add Frame A (Sync burst). Click "Add to Sequence".
6. Add Frames B, C, D, E, and F to create a complete 6-frame voice superframe.
7. Switch Burst type to "TerminatorWithLC". Click "Add to Sequence".
Step 2: Configure the Output Stream
───────────────────────────────────
1. Navigate to Tools > Settings.
2. Under Output, set Output Type to "rtl_tcp".
3. Verify rtl_tcp Listener IP is set to 127.0.0.1 and Port is 1234.
4. Under IQ Options, set Format to "Mono PCM (dsd-fme, dsd-neo, ...)".
5. Confirm Sample Rate is 48000 Hz. Click OK.
Step 3: Start Sequence Looping
──────────────────────────────
1. On the main toolbar, click "Loop Sequence".
2. The status bar confirms the rtl_tcp listener is active and streaming.
Step 4: Launch DSD-FME in Terminal
──────────────────────────────────
1. Open a terminal and run:
dsd-fme -i tcp:127.0.0.1:1234 -fa -N
2. DSD-FME connects to the TCP stream and immediately decodes the transmission:
- Detects DMR BS (Base Station) framing.
- Identifies Color Code 1 and Timeslot 1.
- Decodes Group Call to TG 91 from Radio ID 5021234.
- Tracks Voice Superframe sequence (Frames A-F) and call terminator.
Using this setup, you can modify Link Control opcodes, insert emergency flags, or test Talker Alias variations, watching how the decoder reacts to each change in real time.
Installation, Platforms, and Language Localization
DMR Craftbox is available as standalone pre-built archives from GitHub Releases:
– Windows: Self-contained archives for 64-bit and 32-bit Windows. The packages bundle the MinGW runtime, Qt DLLs, and platform plugins, running immediately without an installer.
– Linux: Standalone x86-64 archive (dmr-craftbox-1.0.0-linux_amd64.tar.xz). Built on CentOS Stream 9, it runs on Ubuntu 22.04+, Debian 12+, Fedora 35+, or equivalent distributions. The only prerequisite is the standard Qt 5.15 runtime:
bash
sudo apt install libqt5widgets5 libqt5gui5 libqt5core5a libqt5network5 qt5-qpa-plugins
– Offline Documentation: The application includes a searchable HTML help manual with a JSON topic index, accessible directly via the F1 shortcut.
– Internationalization: The software is translation-ready using Qt Linguist (.ts and .csv translation sources), allowing community contributors to add local language packs.
Frequently Asked Questions (FAQ)
What is DMR Craftbox used for?
DMR Craftbox is a desktop graphical application for crafting, sequencing, and streaming ETSI TS 102 361 compliant DMR bursts, allowing radio amateurs and developers to test SDR software and digital decoders without RF transmissions.
Can DMR Craftbox transmit over physical radio frequencies?
No. DMR Craftbox doesn’t interface directly with RF power amplifiers. It outputs modulated baseband signals via rtl_tcp, complex baseband IQ files, or local sound card audio for laboratory testing.
How do I connect DMR Craftbox to DSD-FME?
Set the Output Type to rtl_tcp, select the Mono PCM (dsd-fme, dsd-neo, ...) format in Settings, start playback, and connect DSD-FME by running dsd-fme -i tcp:127.0.0.1:1234.
Does DMR Craftbox require external hardware like an RTL-SDR dongle?
No. When using the rtl_tcp output, DMR Craftbox emulates an RTL-SDR receiver over a network socket, allowing SDR# and SDR++ to connect as software clients without physical dongles.
Under what license is DMR Craftbox distributed?
DMR Craftbox is released under the Free Non-Commercial Software License v1.0 (free for personal and experimental use), dynamically linking against the Qt 5.15 framework under GNU LGPLv3.
Sources and Further Reading
- DMR Craftbox GitHub Repository: github.com/mastodon987/dmr-craftbox
- DMR Craftbox v1.0.0 Release Downloads: github.com/mastodon987/dmr-craftbox/releases
- ETSI TS 102 361-1 (DMR Air Interface Protocol): etsi.org
- ETSI TS 102 361-2 (DMR Voice and Generic Services): etsi.org
- ETSI TS 102 361-4 (DMR Trunking Protocol): etsi.org
- DSD-FME Digital Speech Decoder: github.com/lwvmobile/dsd-fme
- SDR++ Multiplatform SDR Receiver: github.com/AlexandreRouma/SDRPlusPlus
- sdrTrunk Cellular and Trunked Radio Decoder: github.com/DSheirer/sdrtrunk
73 de 9M2PJU



Post Comment