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), a 911 call system, 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
Installation Summary
- Extract the resource to your server's
resourcesfolder - Configure
config/config.lua— setserverAddress,serverPort,authToken,adminPassword,dispatchNacId - Open the port in your firewall or hosting panel
- Add
ensure tRadiotoserver.cfg(belowensure tLib) - 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, arm announcement groups that broadcast to many channels at once, trigger custom alerts with tone picks, answer 911 calls, and assign callsigns. Same vocoder as the in-game radios — audio is consistent either direction.
A working 911 line
Players dial /911 (or call 911 from their LB Phone) and land in a queue on the dispatch panel — phone number, unit ID, location, and message included. Dispatchers accept, talk, and hang up like a real call; callers speak hands-free over voice activation with a phone-to-ear animation. No dispatcher online? A configurable fallback broadcasts the call to on-duty units instead.
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, with a live-rendering dashboard radio screen and status LEDs.
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, man-down timers, 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.
Plays well with your stack
Auto-detects ESX, QBCore, Qbox, ND_Core, ox_core, and nat2k15 — job-to-codeplug mapping is one table in an open config file. Optional integrations mirror 911 calls into ImperialCAD, hook 911 dialing into LB Phone, and surface radio status in LB Radio. Running more than one FiveM server? Satellite mode federates every server onto one shared radio network and dispatch panel.
