A Subscriber ID is the unique numeric identifier assigned to a single radio on an SCNP25 system. Almost every action a radio takes — registering, affiliating to a talkgroup, keying up, raising an emergency, sending a voice frame — carries the originating radio's Subscriber ID, and most API endpoints that target a specific radio do so by Subscriber ID.
You may also see it written as SUID, SuID, RID, or Radio ID. These are all the same value.
A Subscriber ID is a 64-bit unsigned integer.
A radio's Subscriber ID is normally constructed from two values stored in its codeplug:
SubscriberID = SubscriberPrefix + LocalID
subscriberPrefix — a fixed numeric prefix shared by all radios from the same agency or fleet. Set in the codeplug.This prefix-plus-local scheme keeps Subscriber IDs unique across agencies even when two users happen to have the same local ID.
A Subscriber ID can be assigned in two ways:
| Mode | Event | Behaviour |
|---|---|---|
| Partial ID | radioExternal:setID |
The supplied value is added to the codeplug's subscriberPrefix. Use this when the framework supplies a small per-user number (e.g. a character ID) and the agency prefix should be applied. |
| Full ID | radioExternal:setFullID |
The supplied value is used verbatim, ignoring the prefix. Use this when an external system is the authoritative source of complete radio IDs. |
Whenever the Subscriber ID changes, the radio re-registers with the control channel under its new ID.
| Action | Role of the Subscriber ID |
|---|---|
| Registration / deregistration | Identifies the radio joining or leaving the system. Duplicate registrations are rejected by the control channel. |
| Affiliation to a talkgroup | Identifies which radio is joining the group. Calls from a Subscriber ID that isn't affiliated are denied. |
| Channel grant request (PTT) | Identifies the talker. The grant announcement carries the Subscriber ID so other radios can show "last call from…". |
| Inhibit / Uninhibit | Targets one specific radio by Subscriber ID. |
| Emergency alarm | Identifies the radio that triggered the alarm and the radio cleared by an emergency-clear. |
| Location query | Asks one specific Subscriber ID to report its position. |
| Voice frame metadata | Every transmitted voice packet carries the originating Subscriber ID. |
A Subscriber ID must be unique on a given system at any one time:
From within a FiveM resource you can read the current radio's Subscriber ID via the exported function:
Lua
local suid = exports['SCNP25']:getSubscriberID()
C#
string suid = Exports["SCNP25"].getSubscriberID();
The radio also exposes it to the user via the getRadioID console command.