Skip to main content

Radio

New here? Start with the install guide

Install the radio, step by step →: turn it on in the CAD, add channels, and put it on your FiveM server in about 10 minutes.

A push-to-talk radio built into SnailyCAD. Everyone on a channel hears each other, wherever they are:

  • Dispatchers and admins in the CAD: a radio dock on every page of the CAD, a pop-out window, and a full-screen radio console (Dispatch → Radio console, /radio). Nothing to install: no FiveM, TeamSpeak or Discord.
  • Units in FiveM with the snailycad-radio resource: push-to-talk on Caps Lock, a handheld in hand, positional audio for people nearby, earpieces. Admins set it up in game with /radiosetup or F4.
  • Anything else through the open protocol: bots, loggers, hardware radio gateways, other games. See Integrations.
Units use the radio in game

The radio in the CAD's web pages is only for the owner and users with the Dispatch or Manage CAD Settings permission. LEO and EMS-FD units talk in FiveM.

Guide
Install the radiostep by step, CAD and FiveM
Set up the radioturn it on, add channels
FiveM resourceinstall, voice scripts, keys, exports
Supported scripts and phonesvoice scripts, add-ons, phones, planned
Integrationsconnect other radios and scripts
LiveKitoptional media server for large communities
Protocolthe wire format, for developers

How it works​

 dispatcher / admin (CAD) ──┐                              ┌── unit in FiveM (snailycad-radio)
pop-out / Radio console ──┼── wss://<api>/v1/radio/ws ───┼── unit in FiveM
bot / gateway ──┘ (SnailyCAD API) └── ...
│
└─ optional: audio through a LiveKit server
  • Control (who is on which channel, push-to-talk, who is talking, dispatch moving units, tones) always goes through the CAD's API.
  • Audio goes through the same API connection (built in, default), or through a LiveKit server you pick in CAD Settings → Radio.
  • Channels are half duplex: one person talks at a time; others get a "busy" tone. Dispatchers always get through: they take over the channel.
  • Radio audio is band-limited and lightly saturated so it sounds like a real radio, with a chirp when you get the channel and when you let go.

Set up the radio​

  1. Turn it on: Admin → CAD Settings → Features → Radio.
  2. Add channels: Admin → CAD Settings → Radio. For each channel:
    • Name and Frequency (shown on the radios).
    • Departments: leave empty for everyone with radio access, or pick departments. Only units of those departments (and dispatchers) can use the channel.
    • Allow FiveM and other radios: when on, game servers and integrations can put people on the channel even without a CAD account, and nearby players can overhear it. Turn it off for channels only CAD users may hear.
    • Receive only: units listen, only dispatchers talk (e.g. an announcements channel).
  3. HTTPS: browsers only allow microphone access on secure pages, and FiveM only connects to secure radio servers. Serve the CAD and its API over HTTPS (see the reverse proxy docs); listening works without it, talking doesn't.
  4. Use it in the CAD (dispatchers and admins):
    • The radio dock sits in a corner of every CAD page and stays connected while you move between pages. Open it in its own small window with the pop-out button, or use the full-screen Dispatch → Radio console.
    • Listen: click the headphones next to a channel to listen to it, or click All / None. Listening doesn't put you in the channel's member list.
    • Talk: click Talk next to a channel to join it and talk on it. The channel you talked on before goes back to listening.
    • Hold the talk button or the push-to-talk key (default `, change it in the radio's settings). The key works on any CAD page.
    • With several CAD tabs open, only one plays the audio; the others work as remote controls.
  5. FiveM: install the resource.

Who can use which channel​

WhoChannels
Dispatchers (Dispatch permission) and admins (Manage CAD Settings)every channel, and they take over a busy channel
Game players and integrationschannels with "Allow FiveM and other radios" on, without departments or of the departments the game server gives them (in FiveM: from the player's job)
Game players linked to a CAD account (Discord / Steam)what that CAD user can use (for a LEO / EMS-FD user: channels without departments, and channels of their units' departments)

Access changes (channels edited, the feature turned off) apply to connected radios right away.

Dispatch​

  • Move a unit: in the Active Officers / EMS-FD list, set the unit's radio channel. With the radio on, you pick one of the radio channels and the unit's radios in game switch to it.
  • Tones: the Alert and Panic buttons on a channel play a tone on every radio on it.

Configuration​

Everything is set in the CAD, except LiveKit and an optional address override in the API's .env:

Variable
RADIO_WS_URLthe radio address clients connect to, when it isn't NEXT_PUBLIC_PROD_ORIGIN + /radio/ws
RADIO_LIVEKIT_URL, RADIO_LIVEKIT_API_KEY, RADIO_LIVEKIT_API_SECRETa LiveKit server

Reverse proxies must pass WebSocket upgrades on /v1/radio/ws (nginx: proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";, which the SnailyCAD nginx guide already sets for socket.io).

Source

The radio docs also live in the repository, in docs/radio.

Was this page helpful?