> For the complete documentation index, see [llms.txt](https://docs.sonoransoftware.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sonoransoftware.com/radio/game-integrations/fivem/in-game-radio/customizing-radio-frames.md).

# FiveM Radio Frames

Create FiveM radio overlays, choose a frame in game, and control who can use it.

Create and edit your FiveM radio frames in **Customize > Overlay** in the Radio panel. This is the same editor used for the desktop overlay.

## Create or edit a frame

Select **FiveM** in **Customize > Game Integration**, then follow [Create a custom overlay](/radio/tutorials/usage/desktop-overlay.md#create-a-custom-overlay). Upload your artwork, position the screen and buttons, and select **Save changes**. Uploading custom artwork requires **Pro**.

<figure><img src="https://1542307009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfCk5zoeun5gx3ujYW6eg%2Fuploads%2Fgit-blob-59389e1456096b521275f15d4cd35733846af48d%2Foverlay-editor.jpg?alt=media" alt="Shared Radio Overlay editor with a County Patrol frame"><figcaption><p>Edit FiveM frames from the Radio panel.</p></figcaption></figure>

Use an updated FiveM resource. With your server's push URL configured, saving sends the updated frames to connected players. The resource also checks for changes on startup and every five minutes.

## Change your frame in game

1. Open the radio's **Settings**.
2. Select the **FiveM** tab.
3. Choose a frame from **Radio Frame**.

Only frames available to your player appear in the list.

<figure><img src="https://1542307009-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfCk5zoeun5gx3ujYW6eg%2Fuploads%2Fgit-blob-4fc8da408db1a6b53da7d339c9ef47521013e30a%2Ffivem-frame-selector.jpg?alt=media" alt="FiveM settings with the Radio Frame dropdown showing Default, County Patrol, and Signal Pro"><figcaption><p>Choose a frame in Settings > FiveM.</p></figcaption></figure>

## Restrict frame access

Frame permissions are still configured in the resource's **config.lua**, under `Config.frames`.

* `permissionMode = 'none'` lets everyone use all available frames.
* Use `ace`, `qbcore`, `qbox`, or `esx` to restrict frames by department permissions or job grades.
* Copy the ID shown below a frame's name in the Overlay editor, such as `frame:2`, into that department's `allowedFrames` list.

For example, allow players with the `sonoranradio.patrol` ACE to use two community frames:

```lua
Config.frames = {
    permissionMode = 'ace',
    adminPermission = 'sonoranradio.admin',
    departments = {
        patrol = {
            label = 'County Patrol',
            permissions = {
                ace = { 'sonoranradio.patrol' }
            },
            allowedFrames = { 'frame:1', 'frame:2' }
        }
    }
}
```

Replace those IDs with your own. For framework permissions, use `permissions.jobs` and the allowed `grades` from the resource's example configuration. [Sonoran CMS can manage ACE permissions from community roles](https://docs.sonoransoftware.com/cms/integration-capabilities/sonoran-radio-sync).

Existing local skins can remain installed; their folder names still work in `allowedFrames`. To bring an existing portable frame into the editor, upload its image and use **Import from FiveM (skin.json)** when creating the frame.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.sonoransoftware.com/radio/game-integrations/fivem/in-game-radio/customizing-radio-frames.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
