TETRA on Windows — 3 Ways Without Ubuntu
Use cropinghigh sdrpp-tetra-demodulator on Windows — completely without Ubuntu or WSL2. Three ways, from 10 to 60 minutes of effort, for every experience level.
⚠ Legal notice
Emergency-services digital radio (police, fire brigade, 380–400 MHz) is encrypted with TEA2. Listening in is, under TKG §148, a criminal offence. This guide is for technical education and legal uses: FM radio, aviation, weather data, your own systems, unencrypted commercial TETRA networks where legally permitted.
Which way should I take?
| Situation | Recommendation |
|---|---|
| I want to try it quickly without much effort | → Way 3: GopherTrunk (10 minutes) |
| I want the cropinghigh plugin in SDR++ without Linux | → Way 1: GitHub binary (20 minutes) |
| I want to build and understand everything myself | → Way 2: MSYS2 (45–60 minutes) |
| The plugin doesn't run / the binary doesn't work | → Way 2: MSYS2 as a fallback |
| I'm completely new and don't want to see any code | → Way 3: GopherTrunk |
Preparation — Zadig driver (once, for all 3 ways)
Way 3 (GopherTrunk) already has Zadig built in! Start-menu shortcut "Install RTL-SDR driver". If you start with GopherTrunk, you can do this step there.
Z1
Download Zadig: zadig.akeo.ie
Z2
Plug in the RTL-SDR dongle, then run Zadig as Administrator start
Z3
Options → List All Devices →
Bulk-In, Interface (Interface 0) selectZ4
On the right:
WinUSB select → click "Install Driver" → wait
Way 1
GitHub Actions binary
📺 TETRA plugin for SDR# on Windows — installation & Setup (demonstration)
Important: GitHub only keeps these build files (artifacts) for 90 days. If the link has expired: use way 2 (MSYS2). For permanent use: do way 2 once and back up the DLL.
1
Download SDR++: github.com/AlexandreRouma/SDRPlusPlus/releases
→
→
sdrpp_windows_x64.zip download → extract to C:\SDRpp (no space in the path!)
2
GitHub Actions artifact: github.com/cropinghigh/sdrpp-tetra-demodulator
→ "Actions" tab → first green tick → "Artifacts" section →
No artifacts section? → GitHub login required (free account)
→ "Actions" tab → first green tick → "Artifacts" section →
tetra_demodulator-windows downloadNo artifacts section? → GitHub login required (free account)
3
Copy the DLL into SDR++:
C:\SDRpp\
sdrpp.exe
modules\
tetra_demodulator.dll ← in here
If modules\ does not exist: create the folder.
4
Install the Visual C++ Redistributable (if SDR++ crashes):
vc_redist.x64.exe AND vc_redist.x86.exe — install both, even on 64-bit Windows.
vc_redist.x64.exe AND vc_redist.x86.exe — install both, even on 64-bit Windows.
5
Enable the plugin: Start SDR++ → puzzle icon (Module Manager) →
tetra_demodulator find → enter a name ("TETRA") → click + → set the frequency → drag the VFO onto the signal → watch the constellation diagram
Way 2
MSYS2 build — compile natively on Windows
MSYS2 is the technically cleanest Windows route. The resulting DLL runs natively on Windows — no expiry date like GitHub artifacts.
1
Install MSYS2: msys2.org → download the installer →
C:\msys64 (default) → leave "Run MSYS2 now" ticked
2
In the MSYS2 terminal (purple):
pacman -Syu
pacman -Su
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake \
mingw-w64-x86_64-pkg-config mingw-w64-x86_64-volk \
mingw-w64-x86_64-fftw mingw-w64-x86_64-talloc \
git curl patch make
3
Switch to MinGW64: Close the terminal → Start menu →
MSYS2 MinGW x64 open (NOT "MSYS2 MSYS"!) → the prompt must show MINGW64 show
4
SDR++ headers:
cd ~
git clone https://github.com/AlexandreRouma/SDRPlusPlus.git
cd SDRPlusPlus && mkdir build_headers && cd build_headers
cmake .. -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DOPT_BUILD_RTLSDR_SOURCE=ON
make sdrpp_core -j$(nproc)
cmake --install . --component sdrpp_core
cd ~
5
Clone the plugin + patch the codec:
git clone https://github.com/cropinghigh/sdrpp-tetra-demodulator.git
cd sdrpp-tetra-demodulator
cd src/decoder/etsi_codec-patches
chmod +x download_and_patch.sh && ./download_and_patch.sh
cd ../../..
6
Compile:
mkdir build && cd build
cmake .. -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
# success: [100%] Built target tetra_demodulator
7
Copy the DLL and enable it:
cp ~/sdrpp-tetra-demodulator/build/tetra_demodulator.dll /c/SDRpp/modules/
ls /c/SDRpp/modules/
If SDR++ says "DLL not found": C:\msys64\mingw64\bin\libgcc*.dll, libstdc++*.dll, libwinpthread*.dll copy into the SDR++ folder.
Way 3
GopherTrunk — one EXE, get started right away ⭐
GopherTrunk runs as a single ~10 MB EXE file without any dependencies. No librtlsdr, no libusb, no Linux. Operated through the browser.
TETRA in GopherTrunk as of July 2026: TMO control-channel decoding implemented (network info, GSSI). Voice decoding for TETRA: still in development (ACELP in progress). For spectrum + metadata: complete. For voice: way 1/2 (cropinghigh) is better.
1
Download GopherTrunk: github.com/MattCheramie/GopherTrunk/releases
→
→
GopherTrunk-Setup-windows-amd64.exe download (~10–15 MB)
2
Run the installer: Default path, tick "Add to PATH"; an "Install RTL-SDR driver (Zadig)" shortcut is created.
✓ Start menu → run "Install RTL-SDR driver (Zadig)" — no separate Zadig download needed!
✓ Start menu → run "Install RTL-SDR driver (Zadig)" — no separate Zadig download needed!
3
Create config.yaml (text editor):
C:\Users\BENUTZERNAME\Documents\GopherTrunk\config\config.yaml
# GopherTrunk minimal configuration for TETRA
sdr:
device: rtlsdr
serial: "" # empty = first device found
sample_rate: 2048000
gain: 40
systems:
- name: "TETRA Scan"
protocol: tetra
control_channel: 385012500 # 385.0125 MHz (example)
storage:
path: C:/Users/USERNAME/Documents/GopherTrunk
web:
enabled: true
port: 8080
Adjust USERNAME in the path!
4
Start: Start menu → "GopherTrunk" → a black terminal appears → "Listening on :8080" = running
5
Open the browser:
http://localhost:8080 → tabs "Systems", "Calls", "Signal Lab" (spectrum + constellation)
6
Frequency hunt mode (frequency unknown):
systems:
- name: "TETRA Hunt"
protocol: tetra
hunt:
enabled: true
start_hz: 380000000 # 380 MHz
stop_hz: 430000000 # 430 MHz
step_hz: 25000 # 25 kHz steps
Comparison of the 3 ways
| Criterion | Way 1: GitHub binary | Way 2: MSYS2 | Way 3: GopherTrunk |
|---|---|---|---|
| Time required | 20 min | 45–60 min | 10 min ⭐ |
| Difficulty | Easy | Fair | Very easy |
| Compiling required | No | Yes | No |
| Usable permanently | Only 90 days | Yes | Yes |
| SDR++ integration | Yes (plugin) | Yes (plugin) | Its own GUI |
| TETRA metadata | Yes | Yes | Yes |
| TETRA voice | Yes (unencrypted) | Yes (unencrypted) | In development |
| Other protocols | TETRA only | TETRA only | P25, DMR, NXDN +10 |
| Recommendation | Quick start | Technically interested | Absolute beginner ⭐ |
Troubleshooting for all 3 ways
| Problem | Way | Solution |
|---|---|---|
| RTL-SDR not detected | 1+2+3 | Zadig: reinstall the WinUSB driver, re-plug the dongle |
| tetra_demodulator not in the module list | 1 | DLL in the wrong folder — must be in the modulessubfolder of SDR++ |
| SDR++ won't start after copying the DLL | 1 | Install the Visual C++ Redistributable (x64 AND x86) |
| 'DLL not found' in SDR++ | 2 | MinGW DLLs from C:\msys64\mingw64\bin\ copy into the SDR++ folder |
| cmake error 'sdrpp_module.cmake not found' | 2 | Repeat the SDR++ headers step (step 4) |
| ETSI codec download fails | 1+2 | Check the network, disable VPN, install curl manually |
| GopherTrunk starts but finds no RTL-SDR | 3 | Check the Zadig driver, run GopherTrunk as administrator |
| Browser shows nothing at localhost:8080 | 3 | Allow GopherTrunk through the Windows firewall |
| config.yaml error on startup | 3 | Check YAML indentation (spaces only, no tabs!) |
| Constellation diagram stays empty | 1+2+3 | Wrong frequency or signal too weak — try another range |
| Artifact link expired (90 days) | 1 | Create a GitHub account OR use way 2 |