Volver al ranking

TrunkRecorder/trunk-recorder

C++

Records calls from a Trunked Radio System (P25 & SmartNet)

sdrradiognuradiop25smartnet
Crecimiento de estrellas
Estrellas
1.1k
Forks
252
Crecimiento semanal
Issues
48
5001k
feb 2015nov 2018sept 2022jul 2026
README

Trunk Recorder

Discord   

Sponsors

Do you find Trunk Recorder and OpenMHz useful? Become a Sponsor to help support continued development and operation! Thank you to everyone who has contributed!

🎉 V5.2 is now... Our Best Release Yet!!

Thanks to everyone who contributed, tested and helped collect core dumps!

Overview

Need help? Got something working? Share it!

screenshot

Trunk Recorder is able to record calls on trunked and conventional radio systems. It uses 1 or more Software Defined Radios (SDRs) to do this. The SDRs capture large swathes of RF and then use software to process what was received. GNU Radio is used to do this processing because it provides lots of convenient RF blocks that can be pieced together to allow for complex RF processing. The libraries from the amazing OP25 project are used for a lot of the P25 functionality. Multiple radio systems can be recorded at the same time.

Trunk Recorder currently supports the following:

  • Trunked P25 & SmartNet Systems
  • Conventional P25, DMR & analog systems, where each talkgroup has a dedicated RF channel
  • P25 Phase 1, P25 Phase 2 & Analog voice channels

Supported platforms

  • Ubuntu
  • Raspberry Pi (Raspberry OS/Raspbian & Ubuntu)
  • Arch Linux
  • Debian
  • macOS

GNU Radio 3.7 - 3.10

SDRs

RTL-SDR dongles; HackRF; Ettus USRP B200, B210, B205; BladeRF; Airspy; SDRplay

Install

Linux

Raspberry Pi

MacOS

Setup

Playback & Sharing

By default, Trunk Recorder just dumps a lot of recorded files into a directory. Here are a couple of options to make it easier to browse through recordings and share them on the Internet.

Plugins

  • MQTT Status: Publishes the current status of a Trunk Recorder instance over MQTT
  • MQTT Statistics: Publishes statistics about a Trunk Recorder instance over MQTT
  • Decode rates logger: Logs trunking control channel decode rates to a CSV file, and includes a PHP file that outputs an SVG graph
  • Daily call log and live Web page: Creates a daily log of calls (instead of just individual JSON files) and includes an updating PHP Web page w/audio player
  • Prometheus exporter: Publishes statistics to a metrics endpoint via HTTP

Troubleshooting

If you are having trouble, check out the FAQ and/or ask a question on the Discord Server

How Trunking Works

For those not familiar, trunking systems allow a large number of user groups to share a limited number of radio frequencies by temporarily, dynamically assigning radio frequencies to talkgroups (channels) on-demand. It is understood that most user groups actually use the radio very sporadically and don't need a dedicated frequency.

Most trunking system types (such as SmartNet and P25) set aside one of the radio frequencies as a "control channel" that manages and broadcasts radio frequency assignments. When someone presses the Push to Talk button on their radio, the radio sends a message to the system which then assigns a voice frequency and broadcasts a Channel Grant message about it on the control channel. This lets the radio know what frequency to transmit on and tells other radios set to the same talkgroup to listen.

In order to follow all of the transmissions, Trunk Recorder constantly listens to and decodes the control channel. When a frequency is granted to a talkgroup, Trunk Recorder creates a monitoring process which decodes the portion of the radio spectrum for that frequency from the SDR that is already pulling it in.

No message is transmitted on the control channel when a conversation on a talkgroup is over. The monitoring process keeps track of transmissions and if there has been no activity for a specified period, it ends the recording.

Repositorios relacionados
jopohl/urh

Universal Radio Hacker: Investigate Wireless Protocols Like A Boss

PythonPyPIGNU General Public License v3.0securitywireless
12.5k1k
BigBodyCobain/Shadowbroker

Open-source intelligence for the global theater. Track everything from the corporate/private jets of the wealthy, and spy satellites, to seismic events in one unified interface. Hook an AI agent up to have it parse through data and find previously unseen correlations. The knowledge is available to all but rarely aggregated in the open, until now.

PythonPyPIGNU Affero General Public License v3.0osintosint-resources
9.8k1.5k
greatscottgadgets/hackrf

low cost software radio platform

CGNU General Public License v2.0hardwareradio
greatscottgadgets.com/hackrf/
7.9k1.7k
merbanan/rtl_433

Program to decode radio transmissions from devices on the ISM bands (and other frequencies)

CGNU General Public License v2.0rtl-sdrsdr
7.6k1.5k
gnuradio/gnuradio

GNU Radio – the Free and Open Software Radio Ecosystem

C++GNU General Public License v3.0sdrdsp
gnuradio.org
6.2k2.1k
AlexandreRouma/SDRPlusPlus

Cross-Platform SDR Software

C++GNU General Public License v3.0sdrcross-platform
6.2k853
portapack-mayhem/mayhem-firmware

The firmware for the HackRF+PortaPack H1/H2/H4/H4M

CGNU General Public License v3.0hackrfhackrf-components
hackrf.app
5.3k894
open-sdr/openwifi

open-source IEEE 802.11 WiFi baseband FPGA (chip) design: driver, software

CGNU Affero General Public License v3.0fpgaofdm
4.7k798
sgoudelis/ground-station

Browser-based ground station suite for satellite tracking, SDR reception, hardware control, and telemetry decoding

JavaScriptnpmGNU General Public License v3.0antennafft
4.6k815
srsran/srsRAN_4G

Open source SDR 4G software suite from Software Radio Systems (SRS) https://docs.srsran.com/projects/4g

C++GNU Affero General Public License v3.0sdrlte
srsran.com
4k1.3k
W00t3k/Awesome-Cellular-Hacking

Awesome-Cellular-Hacking

sdrlte
3.9k667
f4exb/sdrangel

SDR Rx/Tx software for Airspy, Airspy HF+, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay and FunCube

C++GNU General Public License v3.0sdrreceiver
3.9k571