Installation
Install Tommy's Radio and get a player keying up — requirements, version compatibility, optional browser access, what ships preconfigured, and the update procedure.
Four steps to a player on a working channel. tRadio ships a starter configuration, so there is nothing to set up first — no SQL import, no database, no port for the radio, no account.
Requirements
| Requirement | Detail |
|---|---|
| FiveM artifact | 4752 or newer. Check with version |
| tLib | v1.0+. The release zip — the source zip has no built files |
| OneSync | Required. onesync on in server.cfg |
| Public web port | tLib's port, default 7777. Only for browser panels or federation hosting |
| Framework | Optional. ESX, QBCore, QBX, ND_Core, ox_core and nat2k15 auto-detect |
| Job | A character with police, sheriff, ambulance or fire to test with |
Version compatibility
Always pair a tRadio release with the newest tLib. Starting with a tLib below the minimum fails loudly.
| tRadio | Minimum tLib |
|---|---|
| 7.0 | v1.0 |
| 6.0 – 6.3 | v0.6 |
| 5.8 | v0.5 |
| 5.7 | v0.4 |
| 5.6 | v0.3 |
| 5.5 | v0.2 |
| 5.4 | v0.1 |
| 5.3 and earlier | not required |
Every version needs artifact 4752 or newer. A framework not on the list runs through the hooks in config/sv_functions.lua — see Framework integration.
Install
Extract the files
Transfer the release zip and unzip it on the server. Place the extracted folder in resources/.
Name the folder anything — exports['tRadio']:… still finds it. Use your real folder name in server.cfg.
Add both to server.cfg
ensure tLib
ensure tRadiotLib must load before tRadio. Use your real folder name, for example ensure [tScripts]/tRadio.
Restart the server
With the defaults, the tRadio banner reports the panel URL on tLib's port. With exposeWeb = false you get this line instead:
[Radio-Server] Radio ready over FiveM net events; web exposure disabled (no HTTP listener or tLib registration)Either line means the radio is up.
Key up
- Join as a
police,sheriff,ambulanceorfireplayer - Press F6. If the screen is dark, click the power knob — the radio remembers being on
- The shipped
leocodeplug covers all four jobs, so a zone and channel are already selected. To pick another, pressZoneorChan, move with the arrows, pressSel - Hold B and speak
It works if the display shows TX: with your name while you hold B. Hover any button or softkey to see what it does.
If the radio does not open at all, the server has not granted radio access. See Who gets a radio.
What ships preconfigured
On first start tRadio writes a data.json holding a working starter configuration:
| Item | Shipped content |
|---|---|
| Zones | Statewide, Los Santos, Blaine County |
| Channels | DISP, C2C (trunked), 10-1, OPS-1 (encrypted) in each zone |
| Codeplugs | leo (NAC 141) and Scanner, granted to nobody |
| Job mapping | police, sheriff, ambulance, fire → leo |
| Alerts | SIGNAL 100, SIGNAL 3, Ping, Bonk |
| Announcement groups | * DISP and * C2C, each spanning all three zones |
All of it is editable live in the admin panel — /tradio → Quick opens both panels in game. Only config/config.lua and the two function-hook files need a restart tRadio.
The admin panel opens on Overview, which tracks what a new server still needs. Two items you tick by hand: job mappings and the dispatch login.
data.json is written only when none exists, so an update never overwrites it.
Optional browser access
The panels already work without this. /tradio → Quick opens both in game.
The shipped defaults in config/config.lua:
exposeWeb = true,
useLegacySocketTransport = false,With exposeWeb = true the dispatch panel is mounted at /dispatch on tLib's port (tlib_http_port, default 7777), so it answers at http://<your server>:7777/dispatch and the admin panel at /dispatch/admin. Open and forward that port — tLib's guide has the step, at opening tLib's port. Set tlib_http_public_url if tLib's auto-detected address is wrong. Both exposeWeb and useLegacySocketTransport need a resource restart, and useLegacySocketTransport stays false.
Never open tRadio's own loopback port.
showDispatchInHub and showAdminInHub control listing on tLib's hub, not access: hiding an entry does not make it private, and the mount still answers. To stop serving the panels at all, set exposeWeb = false.
A federation host must expose an endpoint its satellites can reach. Satellites connect outbound and need no inbound port of their own.
Secrets
Set strong authToken, adminPassword and dispatchNacId values before exposing web access or using federation. A blank admin password disables password login; configure Discord admin authentication instead if you want that.
Updating tRadio
Six items hold your configuration. Five still ship in the release zip, so delete them from the new copy before anything is copied anywhere.
| Item | In the zip? | Holds your configuration |
|---|---|---|
config/config.lua | Yes | Yes |
config/cl_functions.lua | Yes | Yes |
config/sv_functions.lua | Yes | Yes |
config/locales.json | Yes | No — see below |
layouts/ | Yes | Yes |
data.json | No | Yes |
stop tRadio- Extract the new release zip somewhere temporary
- In the extracted folder, delete
config/config.lua,config/cl_functions.lua,config/sv_functions.luaandlayouts/ - In your tRadio folder, delete everything except those four and
data.json. This clears out files an older version left behind - Copy everything remaining in the extracted folder into your tRadio folder
start tRadio
Step 3 is the one that matters: after it, nothing in the extracted folder can replace your configuration.
config/locales.json is the one config file an update replaces
It is not in step 3, so the new copy lands and replaces yours. If you have translated or reworded it, keep a copy before updating and re-apply your changes.
Factory reset: stop the resource, delete data.json, start it again. You lose everything you changed. The Load Defaults buttons on the Zones, Alerts and Codeplugs pages restore the same starter content one page at a time.
Next steps
- Rename the starter zones and channels, then split the
leocodeplug: Zones and channels - Give your players radios: Framework integration
- Learn the radio and the panel: Usage
- Something not working: Troubleshooting
Tommy's Radio
Still stuck? Support can answer it directly.
Was this page helpful?
TIMMYG Studios