๐ก TetraEar - Professional TETRA Decoder
February 12, 2026 ยท View on GitHub

๐ฏ A modern, professional TETRA (Terrestrial Trunked Radio) decoder and analyzer for RTL-SDR with real-time voice decoding, encryption support, and an intuitive GUI.
โจ Features
๐ฅ๏ธ Modern GUI
- Professional Dark Theme: shadcn/ui inspired interface
- Real-time Waterfall: High-performance spectrum display (~60 FPS)
- Intuitive Controls: Click-to-tune, zoom, and frequency tracking (AFC)
- Live Status: Real-time signal strength, sync rate, and CRC validation
๐ Voice Decoding
- ACELP Codec: Uses ETSI reference codec (
cdecoder.exe+sdecoder.exe) for voice decoding - Real-time Audio: Monitor decoded voice in real-time
- Quality Validation: Automatic amplitude check (configurable)
- Recording: Save decoded audio to WAV files
๐ Encryption Support
- Auto-Detection: Identifies TEA1/TEA2/TEA3/TEA4 encryption
- Smart Decryption: Automatic bruteforce with common/weak keys
- Key Management: Load custom keys from file
- Validation: CRC checking and plaintext verification
๐ Data Analysis
- SDS Decoding: Short Data Service text message extraction
- Multi-frame Assembly: Automatic reassembly of fragmented messages
- Call Metadata: Talkgroup ID, SSI (subscriber), call type tracking
- Advanced Filtering: Dropdown-based filters for Calls, Groups, Users, and Message Types
- Real-time Statistics: Frame counts, sync rate, encryption stats
๐๏ธ Spectrum Analyzer
- Waterfall Display: Real-time frequency visualization
- AFC (Auto Frequency Control): Automatically centers on signal peak
- Click-to-Tune: Ctrl+Click to tune to peak frequency
- Zoom Controls: Top, bottom, and threshold adjustments
- Auto Sliders: Dynamic zoom/threshold calibration for optimal visibility
- Denoising: Built-in noise reduction (configurable)
๐ ๏ธ Developer-Friendly
- CLI Mode: Run without GUI using
--no-guiflag - Rich Logging: Color-coded console output
- Debugging: Logs/recordings live in the user data directory (override with
TETRAEAR_DATA_DIR) - API: Modular design for easy integration
๐ Requirements
- Python: 3.8 or higher
- RTL-SDR: Compatible USB dongle with drivers installed
- Operating System: Windows or Linux
- Optional: TETRA speech codec binaries (
cdecoder.exe+sdecoder.exe) for voice decoding
๐ Installation
1๏ธโฃ Clone the Repository
git clone https://github.com/syrex1013/TetraEar.git
cd TetraEar
2๏ธโฃ Install Dependencies
pip install -r requirements.txt
3๏ธโฃ (Optional) Install TETRA Codec
Place cdecoder.exe and sdecoder.exe in tetraear/tetra_codec/bin/ directory, or run:
python -m tetraear.tools.install_tetra_codec
4๏ธโฃ Verify Installation
python -m tetraear.tools.verify_codec
๐ฎ Usage
GUI Mode (Recommended)
python -m tetraear
CLI Mode
python -m tetraear --no-gui -f 392.225 --auto-start
Command-Line Options
-h, --help Show help message
-f, --frequency Frequency in MHz (default: 390.865)
-g, --gain RF gain in dB (default: 50.0)
-s, --sample-rate Sample rate in MHz (default: 2.4)
--auto-start Automatically start capture on launch
-m, --monitor-audio Enable audio monitoring
--scan START STOP Scan frequency range first
--auto-decrypt Enable auto-decryption (default: enabled)
-v, --verbose Enable verbose logging
--no-gui Run in CLI mode without GUI
Examples
# Launch GUI with specific frequency
python -m tetraear -f 392.225
# Auto-start capture with audio monitoring
python -m tetraear -f 392.225 --auto-start -m
# Run in CLI mode
python -m tetraear --no-gui -f 392.225 -g 35
# Scan frequency range then launch GUI
python -m tetraear --scan 390 392
โ๏ธ Configuration
Settings Menu (GUI)
Click the โ๏ธ Settings button to access:
- Audio Device: Select output device for monitoring
- Delete Silent Files: Auto-remove recordings with zero amplitude
- Max Recordings: Limit number of saved audio files
- Log Level: Adjust logging verbosity
Frequency Presets
- Save Frequencies: Click ๐ Save Freq to save current frequency with label
- Load Presets: Select from saved frequencies in dropdown
- Export/Import: Manage presets in
settings.json
Key Management
- Click ๐ Load Keys button
- Create
keys.txtwith format:# TEA1 Keys (80-bit, 10 bytes) 00:11:22:33:44:55:66:77:88:99 # TEA2 Keys (128-bit, 16 bytes) 00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF
๐ Tabs Overview
๐ Decoded Frames
- View all decoded TETRA frames
- Filter by type (MAC-RESOURCE, MAC-FRAG, MAC-BROADCAST, etc.)
- Decrypted/Text Only: Show only successfully decrypted or clear text messages
- Real-time frame updates with encryption status
๐ Calls
- Active and historical call list
- Filter by group or client SSI
- Call duration and status tracking
๐ฅ Groups
- Talkgroup activity monitoring
- Filter groups by name
- Member count and call statistics
๐ค Users
- Subscriber (SSI) tracking
- Filter by group membership
- Activity history per user
๐ Log
- Real-time application logs
- Color-coded by severity
- Filter by log level
- Exports to the user data directory (override with
TETRAEAR_DATA_DIR)
๐ Statistics
- Total frames decoded
- Sync rate and CRC success rate
- Encryption statistics (per algorithm)
- Voice frame count
- SDS message count
๐ Tips & Tricks
๐ฏ Finding TETRA Signals
- Use SCAN mode to sweep frequency range
- Look for strong, consistent spikes in waterfall (~25 kHz wide)
- TETRA signals typically appear as 4 carriers (4x6.25 kHz slots)
- Enable Auto-Follow Spike (AFC) to auto-track signal
๐ Voice Decoding
- Ensure
cdecoder.exeandsdecoder.exeare intetraear/tetra_codec/bin/ - Check Monitor Audio to hear decoded voice
- Adjust gain (45-50 dB recommended)
- Voice frames appear with ๐ icon in Decoded Frames tab
๐ Decryption
- Auto-Decrypt tries common keys automatically
- Load custom keys using Load Keys button
- Successfully decrypted frames show โ in Status column
- Use Decrypted/Text Only filter to view plaintext only
๐ก Optimal Settings
- Frequency: 390-395 MHz (varies by region)
- Gain: 45-50 dB (adjust based on signal strength)
- Sample Rate: 2.0-2.4 MHz (higher for better quality)
- Bandwidth: 25000 Hz (standard TETRA channel)
๐ ๏ธ Troubleshooting
โ No Signal Detected
- Check Frequency: Verify TETRA frequency for your region
- Adjust Gain: Try 45-50 dB
- Check Antenna: Ensure proper connection and positioning
- Sample Rate: Use 2.0-2.4 MHz
โ Low Sync Rate (< 80%)
- Increase Gain: Weak signal requires higher gain
- Adjust Threshold: Lower threshold in Spectrum Display
- Check Antenna: Improve signal reception
- Frequency Drift: Enable AFC (Follow Frequency)
โ CRC Failures (0%)
- Wrong Frequency: Not a valid TETRA signal
- Low Signal: Increase gain or improve antenna
- Interference: Try different location or frequency
โ No Voice Audio (Amplitude 0.0)
- Codec Missing: Verify
cdecoder.exeandsdecoder.exeexist - Encrypted Voice: Load decryption keys
- Wrong Frame Type: Verify it's a Traffic/Voice frame
โ Encrypted Frames Not Decrypting
- No Keys Loaded: Load keys using Load Keys button
- Wrong Algorithm: Check detected encryption type (TEA1/2/3/4)
- Unknown Key: Signal uses unique/proprietary key
๐ Project Structure
Tetra/
โโโ tetraear/ # Application package root
โ โโโ assets/ # Icons, banner, UI resources
โ โโโ bin/ # Runtime DLLs
โ โโโ tetra_codec/ # TETRA ACELP codec binaries
โ โ โโโ bin/
โ โโโ tools/ # Build + packaging tools
โ โโโ core/
โ โโโ signal/
โ โโโ audio/
โ โโโ ui/
โโโ tests/ # Unit + integration tests
โโโ requirements.txt
โโโ README.md
๐ค Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
๐ License
This project is licensed under the MIT License. See LICENSE file for details.
โ ๏ธ Legal Disclaimer
IMPORTANT: This software is intended for educational and research purposes only.
- โ ๏ธ Know Your Laws: Intercepting radio communications may be illegal in your jurisdiction
- ๐ Respect Privacy: Do not decode or disseminate private communications
- ๐ Compliance: Ensure you have proper authorization before monitoring any radio system
- โ๏ธ Responsibility: Users are solely responsible for compliance with local laws and regulations
The authors and contributors assume no liability for misuse of this software.
๐ Acknowledgments
- TETRA Standard: ETSI EN 300 392 series
- RTL-SDR Project: For making SDR accessible
- OpenEar Project: Inspiration for encryption handling
- telive: Reference TETRA decoder implementation
- Community: Thanks to all contributors and testers
- @Mrscanner2008: Special thanks for providing real TETRA signals and recordings to better understand the protocol and fix a lot of bugs!
๐ Contact & Support
- GitHub Issues: https://github.com/syrex1013/TetraEar/issues
- Author: syrex1013
๐ Resources
- ETSI TETRA Standards
- TETRA Air Interface Specifications
- telive Documentation
- DSP Blog: TETRA Demodulation
Made with โค๏ธ by the TETRA community