Tommy's Radio
A realistic P25 radio system for FiveM with a custom voice server, dispatch panel, and GPS tracking.
A real radio system, not a voice-chat filter.
Other FiveM radio scripts layer channel routing and a static filter on top of pma-voice. Tommy's Radio runs its own voice server and encodes speech with the same P25 IMBE vocoder used in real Motorola APX and Harris XL-185 handhelds — the characteristic digital-radio sound is the codec, not an effect.
Everything a comms stack needs ships in one resource: conventional and trunked channels, a dispatch panel (web and native desktop), 3D proximity audio, GPS tracking, and a live admin panel that retunes every client without a restart. One port, one config file, no external services.
Quick Start
Try the Demo Server
Connect to fivem.timmygstudios.com to try it out. Dispatch panel: https://dispatch.timmygstudios.com/ (code: 141)
Installation Summary
- Extract the resource to your server's
resourcesfolder - Configure
config/config.lua— setserverPort,authToken,adminPassword,dispatchNacId - Open the port in your firewall or hosting panel
- Add
ensure tRadiotoserver.cfg - Restart — look for the System Ready banner in the console
Features
The codec real radios use — on its own voice server
WebAssembly build of op25's IMBE encoder — the same codec inside Motorola APX and Harris XL-185 handhelds. The sender encodes once; every listener (in-game, dispatch, 3D bystander) decodes locally. The characteristic digital-radio sound is the codec, not a post-processing effect. Bitrate is ~3.7× smaller than Opus.
Runs on a port you pick, completely separate from FiveM and your existing voice stack. Not layered on pma-voice, not piggybacking on a third-party service. One auth token, one config file, no external dependencies.
A dispatch panel that dispatches
Web interface plus a native Windows desktop app with global PTT and auto-updates. Dispatchers transmit to any channel, patch frequencies together, trigger custom alerts with tone picks, and assign callsigns. Same vocoder as the in-game radios — audio is consistent either direction.
Conventional and trunked channels
Conventional is a shared frequency — everyone connected hears everyone else. Trunked auto-assigns units to sub-frequencies by location: four units on the same channel spread across the map don't stomp each other's transmissions, and dispatch still reaches all of them on the control frequency. Patching bridges any two or more channels on the fly — a floating channel list HUD shows who's on with you, callsigns, TX state, dispatcher badges, patch- and trunked-aware.
Radio in 3D space
Players near a talker hear their radio at their position — voice, tones, siren loop, helicopter rotor, and gunshots fired during a transmission. The earbuds toggle gates your outgoing broadcast. Walk away from your car and the vehicle takes over as the audio source at extended range.
Tune every knob, live
Admin panel for the analog FX chain (highpass, lowpass, compression, drive, distortion mode, mid-boost), the P25 toggle, signal degradation, bonking behaviour, 3D audio ranges, GPS rate, and default radio layouts per vehicle type. Changes broadcast to every connected client instantly — no restart.
Built to be customised
Radio models are HTML/CSS folders in layouts/ — install them through the marketplace or drop one in manually and it appears in the Style picker on next open. Per-vehicle-model dashboard prop placement with a Three.js gizmo editor. Custom tones and per-channel-type tone variants configured live in the admin panel. A complete Lua export surface and HTTP API for anything the UI doesn't cover.
Pages
Installation
Step-by-step setup, port configuration, and getting your server running.
Configuration
config.lua reference, zones, channels, codeplugs, access control, and framework integration.
Usage & Customization
Controls, admin panel, dispatch panel, animations, layouts, sounds, and dispatch theming.
API Reference
Lua exports, REST endpoints, Socket.IO events, and the dispatch theme JavaScript API.
Troubleshooting
Common problems and fixes for connection, audio, codeplug access, and P25 quality.
