Skip to main content
Use this page to quickly find answers to common questions and fixes. If something is missing, reach out on our Discord server.
Please post a detailed bug report in our Discord channel #errors. Include steps to reproduce, screenshots, and logs if possible. We’ll try to fix it as soon as we can.
Songs that players submit through the Music app have to be approved before they land in the library. The approval permission is handed out in-game with /music-verify:
  • The command toggles: no permission → grants it, already has it → revokes it
  • PLAYERID is the server ID of the player (visible in the player list / txAdmin)
  • Only administrators can run the command

All Commands

Full command reference including verification commands
A fresh library only fills up once songs have been submitted and approved. Work through this checklist:
1

Add songs through the Music app

Players submit songs directly in the app. They land in the pending queue first, not in the library.
2

Approve the pending songs

Someone with the music approval permission (see above) has to approve them. Once approved, they show up in the library for everyone.
Make sure you’re using our xSound version and start xSound before RoadPhone.
Checklist
  • Clear your client cache.
  • Check that GTA music is turned on.
  • Verify your Windows volume mixer isn’t at 0% (this is independent of FiveM).
If your loading screen uses YouTube and you muted it there, the sound is muted everywhere. Unmute the loading screen.
Music troubleshooting screenshot
Open /public/static/config/config.json, search for AppStore, and remove the block for the app(s) you want to disable.Remove apps from AppStore config
Open /public/static/config/config.json, search for Service, then copy an example job and change: number, name, img, jobname, and the coords.Service app jobs config
Follow the instructions in config.lua (ESX init).ESX nil fix
In ClientAPI.lua, find sendNotification(text) and replace ESX.ShowNotification(text) with your notification trigger.
If you use SaltyChat, set EnableHardCoreMode to false in your SaltyChat config.
Go to Settings → Keyboard/Mouse → Mouse Input Method → Raw Input.Raw input setting
This example refers to esx-ambulancejob. If you use a different script, adapt accordingly.
In esx_ambulancejob/client/main.lua, find SendDistressSignal() and replace:
SendDistressSignal()
If you’re using an old ESX Ambulancejob or a custom one, change Config.ESXplayerSpawnEvent to playerSpawned.Spawn event setting
In config.lua, set Config.Crypto = false.
In config.lua, configure Config.lockedRadioChannels with the channel list.Locked radio channels config
App names are excluded from translation. To localize app names, change them in config.json.
In config.lua, set the locale to your preferred language.
If you have SaltyRadio on the server, remove it.
If not, try our SaltyChat version.
Edit the GiveCarKeys function in clientAPI.lua.
GiveCarKeys (ESX)
Open /public/static/config/config.json and set DeliverCar to false.
Add this to es_extended/server/functions.lua:
GetExtendedPlayers helper
  • Clear your client cache.
  • On the first video call after clearing the cache, accept the F8 prompt to allow recording.
  • Accept the Windows Defender warning when it appears.
Edit server/serverAPI.lua function getPhoneRandomNumber. If you change the prefix to more than two digits, also update the string.format.
Phone number prefix
Clear your cache once — this will remove the PIN lock.Clear cache to reset PIN
Open /public/static/config/config.json, search for JobsApp, then copy an example and change the name, coords, and icon.Jobs App config example
Finding IconsVisit Iconify, search for an icon, choose Vue + Components, and copy the icon name from the shown code.
Iconify example
The following example items block will block/unblock the phone based on inventory.
OxInventory items