Install the radio
About 10 minutes, in four parts. Do them in order: each part ends with a check, so you know it worked before you move on.
| Part | Where | You get |
|---|---|---|
| 1. Check HTTPS | your browser | microphones and FiveM can connect |
| 2. Turn the radio on in the CAD | CAD admin area | channels, and the radio for dispatch |
| 3. Install the FiveM resource | your FiveM server | the radio in game for units |
| 4. Test it | CAD + game | dispatch and units hear each other |
The radio is built into the CAD. Dispatchers and admins use it straight from the CAD in their browser. Only your FiveM server needs the extra resource (part 3), so units can use it in game.
1. Check that your CAD uses HTTPS
Open your CAD. The address must start with https://, and so must your API address.
- ✅
https://cad.example.com: good, go to part 2. - ❌
http://…: the radio can listen but nobody can talk. Browsers only give the microphone to secure pages, and FiveM only connects to secure radio servers. Set up a domain with HTTPS first: NGINX reverse proxy guide (it includes the WebSocket lines the radio needs).
It's NEXT_PUBLIC_PROD_ORIGIN in your CAD's .env file, for example
https://cad-api.example.com/v1. On a one-line install the file is /opt/snailycad/app/.env.
You need this address in part 3.
2. Turn the radio on
Sign in to the CAD as the owner or an admin.
-
Go to Admin → CAD Settings → Features, turn on Radio, and save.
-
Go to Admin → CAD Settings → Radio and click Add channel. Make at least one, for example:
Name Frequency Allow FiveM and other radios Dispatch 1 154.430 on Fire / EMS 155.100 on Tactical 156.200 on Leave Departments empty to let every unit use the channel. Keep Allow FiveM and other radios on, or players in game won't get the channel.
-
Go to Admin → CAD Settings → API Token, turn it on, and copy the token. You need it in part 3. Keep it secret: it gives full access to your CAD's API.
Check: a Radio box appears in the bottom-left corner of every CAD page and says Connected. Click Talk next to a channel and hold the blue button (or the ` key) to talk.
Only the owner and users with the Dispatch or Manage CAD Settings permission. Units (LEO, EMS-FD) use the radio in FiveM, not in the browser. Don't see the box? Check your permissions in Admin → Manage Users.
3. Install the FiveM resource
3.1 Copy the resource
The resource is the folder integrations/fivem/snailycad-radio in the CAD's code. It's ready to
use: no build needed.
- CAD installed with the one-line installer
- Download from GitHub
The folder is already on your CAD server:
/opt/snailycad/app/integrations/fivem/snailycad-radio
Copy it into your FiveM server's resources folder. If FiveM runs on the same machine:
cp -r /opt/snailycad/app/integrations/fivem/snailycad-radio /path/to/fivem/resources/
If FiveM runs on another machine, download it from GitHub (other tab) or copy it over with
WinSCP / FileZilla / scp.
- Download the code as a zip: snailycad-mysql main.zip
- In the zip, open
integrations/fivem/and copy thesnailycad-radiofolder into your FiveM server'sresourcesfolder.
You should now have resources/snailycad-radio/fxmanifest.lua on your FiveM server. (Putting it
in a sub-folder like resources/[snailycad]/snailycad-radio works too.)
3.2 Start it
Add this line to your server.cfg, after your framework (ESX / QBCore) and voice script:
ensure snailycad-radio
Then restart the FiveM server (or type refresh and ensure snailycad-radio in the server
console).
3.3 Connect it to your CAD
You need the API address (part 1) and the API token (part 2). Pick one way:
- In game (easiest)
- Server console / txAdmin
- server.cfg
- Join your server as a server admin.
- A setup window opens by itself (later: type
/radiosetupor press F4). - Paste the API address and the API token, press Test, then Save.
Radios connect right away, no restart needed.
Type this in the server console (or txAdmin → Live Console), with your own address and token:
snailyradio_setup https://cad-api.example.com/v1 YOUR_CAD_API_TOKEN
It's saved on the server; no restart needed. (snailyradio_setup clear removes it.)
Add these lines to server.cfg, above ensure snailycad-radio:
set snailycad_radio_api_url "https://cad-api.example.com/v1"
set snailycad_radio_api_token "YOUR_CAD_API_TOKEN"
Then restart the server. Use set, never setr: setr would send your token to every
player.
Check: type snailyradio_check in the server console. It prints OK and lists your
channels. Not OK? See problems below.
3.4 Who gets a radio in game
Open resources/snailycad-radio/config.lua. By default the jobs police, sheriff,
ambulance and fire (ESX, QBCore and Qbox) get a radio while on duty:
Config.Jobs = {
police = { departments = { "LSPD", "BCSO", "SASP" } },
sheriff = { departments = { "BCSO" } },
ambulance = { departments = { "EMS", "LSFD" } },
fire = { departments = { "LSFD" } },
}
Add or rename jobs to match your server. departments are department names from your CAD
(Admin → Values → Departments), used for channels limited to departments. Anyone with the ACE permission snailycad.radio also gets a radio:
add_ace group.admin snailycad.radio allow
Restart the resource after changing config.lua: restart snailycad-radio.
4. Test it
- In the CAD (as a dispatcher or admin): in the Radio box, click Talk next to Dispatch 1.
- In game (as a police, sheriff, ambulance or fire player): type
/radioto open the handheld and pick Dispatch 1 (or type/radiochannel Dispatch 1). - Hold Caps Lock in game and talk: the CAD shows your name and plays your voice.
- Hold the talk button (or `) in the CAD: the player hears dispatch.
That's it, the radio is installed. 🎉
| In game | Key / command |
|---|---|
| Talk | hold Caps Lock |
| Open the handheld | /radio |
| Change channel | /radiochannel <name or frequency> |
| Earpiece in / out | /earpiece (people nearby can't hear) |
| Setup (admins) | /radiosetup or F4 |
Players can change the keys in Settings → Key Bindings → FiveM.
If something doesn't work
| Problem | Fix |
|---|---|
| No Radio box in the CAD | Turn on Features → Radio, and check you are the owner or have the Dispatch / Manage CAD Settings permission. |
| The Radio box can't talk / microphone error | The CAD isn't on https:// (part 1), or the browser blocked the microphone: click the lock icon next to the address and allow it. |
snailyradio_check says 401 | Wrong token, or the API token is turned off (CAD Settings → API Token). |
snailyradio_check says 400 | The Radio feature is off (CAD Settings → Features). |
snailyradio_check can't connect | Wrong API address. It must end in /v1, and the FiveM server must be able to reach it. |
| OK, but no channels | Add channels, and keep Allow FiveM and other radios on (or give the job's department access). |
| "You don't have a radio" in game | The player's job isn't in Config.Jobs (or they're off duty), and they don't have snailycad.radio. |
| Players connect but can't talk or hear | The API must be https://. Press F8 in game and look for [snailycad-radio] messages. |
| Players hear two radios | Another radio script is running (pma-voice radio, sd-phone radio, …). The resource turns off pma-voice's radio; remove other radio scripts. |
More: FiveM radio reference (voice scripts, earpieces, exports for developers) · How the radio works · LiveKit for big servers