Pulse Phone docs
Troubleshooting
11. Troubleshooting
Start here: read the start-up check in the server console. It starts with
PULSE PHONE v1.x.x and the build, then gives one line per area (Server, Database, Framework,
Connected scripts, Items...). Every FIX or NOTE line has the problem and its fix under it
(-> ...). Type phone:health for the full report, line by line, and phone:diag for the details.
The phone won't open
| What you see | Why | Fix |
|---|---|---|
F1 does nothing, /phone works |
Another script uses F1 | Rebind in Settings > Key Bindings > FiveM, or change Config.Keys.open. The new default only reaches players who never bound the key. |
| Nothing opens at all | The player has no phone item, the battery is empty, a script disabled the phone, or the player is dead, cuffed or in another blocked state | Check Config.Item.required, the battery, and Config.Block states. |
| Won't open over an inventory or menu | On purpose (Config.Open.blockWhenNuiFocused) |
Close the other menu first. |
| "No phone item": it opens for nobody | Config.Item.required = true but the phone item is missing from your inventory, or players don't carry it |
Add the phone item (section 4) and give it to players, or set Config.Item.required = false. |
| A new phone is black and says "Hold to turn on" | New handsets start switched off | Hold End for about two seconds, or hold the handset's side button. Swipe up on the welcome screen to begin setup. |
The box disappears but no phone item appears |
Config.Item.required = false and unique = false use a phone owned by the character, without an inventory item |
Open the phone normally. If your server should require a carried item, enable Config.Item.required before selling phones, then restart Pulse. |
| Screen blank or white | The server side isn't running. F8 shows the server never answered bootstrap - is the resource running server-side? |
Read the server console for a red [phone] line or an escrow error (below). |
Screen blank, console says ui/index.html missing |
The ui/ folder was removed or not uploaded |
Upload the full phone folder again. Don't remove ui/. |
The handset shows in the hand but the screen never appears; the start-up check shows [FAIL] Interface naming a file in ui/assets/ |
That file is missing from your copy: an incomplete upload, or an antivirus removed it | Download the phone again from Keymaster and upload the whole folder. If the file disappears again, add the server folder to your antivirus exclusions. |
| Cursor stuck in the middle of the screen | GTA's raw input is off | The player turns on raw input in GTA's settings. |
Framework, money and jobs
| What you see | Why | Fix |
|---|---|---|
FRAMEWORK NOT SELECTED: more than one framework is started |
Two cores are running, for example es_extended and qb-core | Set Config.Framework in config/config.lua to the one you use, or add setr phone_framework <name> to server.cfg (section 3). Until then, money features are off. |
framework not ready: ... in the console, and phones stay on their "not ready" screen |
The framework the phone found or was told to use is not running yet: still starting, restarting, stopped, or (custom) its bridge was never registered. Money is refused until it is up. | Start the phone after your framework. After restarting the core, give it a moment, or restart the phone too. Custom framework: register the bridge, and call exports.phone:FrameworkRestarted() after a core restart. A server with no framework at all: set Config.Framework = 'standalone' in config/config.lua, or add setr phone_framework standalone to server.cfg (it wins over the config). |
| Detected the wrong framework: the start-up line names one you don't use | ox_core is started next to ESX, QBCore or Qbox (the phone then uses the other one), or your core has a renamed resource | Stop the core you don't use, or force yours with setr phone_framework <name> in server.cfg (section 3). A renamed core: use its original name, or connect it as a custom framework. |
Config.Framework = "esx" but es_extended is not started |
The setting names a framework that isn't running | Fix the setting, or set it back to 'auto'. |
Start-up line says Framework: standalone on a framework server |
The core has a different resource name, or starts after the phone | Start the phone after the framework. A renamed core is not found: use its original name, or connect it as a custom framework (section 3). |
| Bank balance is 0 or wrong | The phone runs standalone (its own bank), or the framework was not found | Check the Framework: and Banking: parts of the start-up line. |
| No company account in Services | No company-account script is running, or the player is not a boss | Run one from section 7. Boss grades: boss (ESX), isboss (QBCore / Qbox), or bossGrade. On ox_core and vRP there is no company management. |
| Police or EMS don't get 911 calls | Their job names are not in the lists, or they are off duty | Add your job names to Config.Services and Config.Emergency in config/apps.lua. |
<script> found but not connected |
That script's version has different exports | The phone uses the next option. Update the script, or pick another with Config.Providers. |
ND Core server, but the start-up line names another framework or standalone |
ND_Core starts after the phone, or another core is started too |
Start the phone after ND_Core, stop the core you don't use, or add setr phone_framework nd to server.cfg. |
Database
| What you see | Why | Fix |
|---|---|---|
The phone never finishes loading; F8 shows request "bootstrap" timed out |
Another phone's tables are in the way and could not be moved aside | Read the start-up check (phone:health). A [FAIL] Database ... belong to another script line names the tables; see section 2, "Another phone's tables". |
db: could not create table ... check that the database user may CREATE TABLE |
The database user can't create tables | Give the user CREATE and ALTER rights, or import phone.sql by hand. |
db: could not add column ... |
The user can't ALTER tables | As above. |
is running but the database did not answer |
oxmysql runs but can't reach the database | Fix mysql_connection_string. The phone retries by itself. |
no SQL resource running - storing data in the resource key/value store |
oxmysql isn't started, or starts after the phone | Start oxmysql before the phone. |
auth_gssapi_client in the oxmysql log |
The database user is set to Windows sign-in | Switch that user to a password: ALTER USER 'fivem'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('your-password'); |
phone_db_fallback is "kvp", so the key/value store takes over |
The database doesn't answer and the fallback is on | Data is being written to the key/value store and will not reach the database. Fix the connection. |
db: no answer within 10 s, answered as failed: <query> |
That query never came back (a slow or locked database) | The app that asked was told it failed. Check the SQL resource's log. |
Calls, photos and the handset
| What you see | Why | Fix |
|---|---|---|
Calls connect with no sound, no voice resource |
No voice script is running | Start pma-voice (or another from section 5) before the phone. |
No sound, 2 voice resources running |
Two voice scripts fight over the same channels | Run exactly one. |
| Video call shows only the caller's picture | The two players can't connect directly | Configure a video relay using the advanced guide linked in section 5. |
| A merged call has sound but no picture | Group video is disabled, or the configured video seats are occupied. Voice participants can remain in the conference without a video seat. | In config/config.lua, check Config.Calls.groupVideo and Config.Calls.groupVideoMax. Group video is enabled by default with four video seats. Follow the video relay setup linked in section 5 for production connectivity. |
| Video clips from the camera have no sound, for one player | That player once refused the game's microphone request. FiveM remembers the answer in %AppData%\CitizenFX\media_access.json and never asks again. |
The player closes FiveM, deletes %AppData%\CitizenFX\media_access.json, starts the game again and allows the microphone when asked. |
Photos don't save, screenshot-basic not started |
screenshot-basic isn't running | Start it before the phone. |
| Photos save but show broken | phone_media_origin is plain http:// |
Use an https:// address, or remove the setting, or use Fivemanage (section 6). |
refused a media link on "<host>" |
A link from a host that is not on the allow-list | Add the host to Config.Media.allow (section 6), or leave it refused. |
| Radio app says radio is not available | No voice script is running, or it is YACA | See section 5, Radio. |
| Radio: "You need a radio to tune in" | Config.Radio.item is set and the player doesn't carry that item |
Give them the item, or set item = false in config/apps.lua. |
| Payphone refuses the call for money | Too little money in the account Config.Payphone.pay names, or a custom bridge with no money functions |
On a standalone server nobody has cash: keep pay = 'either' or use 'bank'. |
| Can't type in a text field | Another script called SetNuiFocus(false, false) while the phone was open |
Find that script (the NUI devtools show it). |
Start-up check: phone_media_origin not set |
The server has no public Cfx.re address (a local or LAN test server) | Players on the same PC or network are fine. For a public server, check it is listed, or set setr phone_media_origin "https://..." (section 6). |
| Handset invisible, a stock phone, or a grey box in the hand | The phone's model did not stream. F8 shows the handset model "pulse_titanium" did not load. (or pulse_ultra, pulse_clear, pulse_flip, whichever handset that phone is) |
Set sv_enforceGameBuild to 2699 or newer. Upload stream/ again, unchanged, and keep every data_file line in fxmanifest.lua. |
Store and items
| What you see | Why | Fix |
|---|---|---|
| No store clerk | The clerk only appears within about 60 m. The store may be off, or your map covers Legion Square | Check Config.Store.enabled. Move the counter in Config.Store.locations. |
store: the item "pulse_phone_box" ... is not registered in your inventory |
The box item is missing | Add it (section 4). Until then phones are handed over without a box. |
The store says "inventory full" but the player has room; the console says store: the inventory would not take <item> |
That item is not in your inventory's item list, so the inventory refuses it | Add the item named in the console (section 4, and config/items/), or set Config.Store.box = false to hand phones over without boxes. The purchase was refunded. |
No Reserve or cable in the store, or store: the item "pulse_cable" ... |
The charging items are missing from your inventory | Add pulse_magpack, pulse_magpack_max and pulse_cable (section 4), and their pictures. |
No Pulse Home Wi-Fi in the store, or store: the item "pulse_router" ... |
The router item is missing from your inventory, or Config.Wifi.enabled is false |
Add pulse_router (section 4) and its picture. |
Home Wi-Fi: the model "pulse_router" is not streamed in F8 |
stream/ was not uploaded in full |
Upload stream/ again, unchanged. Wi-Fi still works; the router is not drawn. |
No Pulse Burner in the store, or store: the item "pulse_burner" ... |
The burner item is missing from your inventory, or Config.Burner.enabled is false |
Add pulse_burner (section 4) and its picture. |
Pulse Burner: the model "pulse_burner" is not streamed in F8 |
stream/ was not uploaded in full |
Upload stream/ again, unchanged. Burners still work; the Pulse handset shows in the hand. |
| An officer has no Intercept app, or it says they are off duty | Their job is not in Config.Taps.jobs, their grade is below minGrade, or the framework says they are off duty |
Check config/apps.lua and their job. |
| "A router can only go inside a home you own or have a key to" | placement is 'housing' (or 'auto' with a housing script) |
Place it inside your home, or change placement in config/apps.lua. |
| Router won't place: the ring stays red, or a message says why | The spot breaks a rule. It must be a flat surface within about 3 m of the player (not a wall or a slope), at least minSpacing (8 m) from another router, and the player must have fewer than maxPerPlayer (2) placed. With placement = 'interior' it must be indoors ("A router has to go indoors"). With 'housing' it must be in a home they own or have a key to. |
Stand closer and aim at a floor or table. Pick up an older router first. Or change placement in config/apps.lua (section 8, Home Wi-Fi). |
| "Routers go in homes, and this server has no housing script the phone can read" | placement = 'housing', but none of the housing scripts in section 7 is running |
Set placement to 'auto' or 'interior', or run a supported housing script. |
| Items show without a picture | The pictures were not copied | Copy config/items/images/ into your inventory's image folder. The start-up check's Item pictures line names the missing ones and the folder. |
Start-up check: [FAIL] Items ... missing in ox_inventory |
ox_inventory only reads its own item file | Paste the entries printed under the box into ox_inventory/data/items.lua, then restart ox_inventory and the phone. |
Start-up check: Phone item ... opens <another script> |
ox_inventory's phone entry names another script's export |
Replace that entry with the one printed under the box (also in Settings > Server > Health Check, with Copy), then restart ox_inventory. The stock entry is fine as it is. |
Start-up check: [WARN] Items TMC cannot be asked which items it has |
TMC has no way to list its items, so the phone can't tell which are there | Make sure every item printed under the box is in TMC's item list. The store names any item TMC refuses. |
Start-up check: [WARN] Items ... restart the server once so ESX loads them |
The items were added to ESX's items table, but this ESX can't reload them while running |
Restart the server once. |
Start-up check: [WARN] Items ... could not add the items itself |
The phone could not write to ESX's items table or QBCore's items (the reason is on the line) |
Do it by hand: run config/items/esx.sql (ESX) or paste config/items/qb-core.lua into qb-core/shared/items.lua (QBCore), then restart. |
Unique phones are waiting for their inventory. |
Unique phones are on, but none of the inventories they need is running | Start the selected supported inventory before phone and check Config.Providers.inventory. Pulse keeps the unique-phone setting and resumes when that inventory becomes available; do not change ownership mode just to bypass this warning. |
| A bill can't be paid: nobody to receive it | The bill's company has no account in a company-account script, or its sender can't be found | Set Config.Bills.payToCity = true to take such bills as city fines. |
Other scripts, language and service
| What you see | Why | Fix |
|---|---|---|
A script errors with No such export for another phone |
It calls another phone's exports, for example exports['<old phone>']:SendMail. Pulse Phone does not copy other phones' exports. |
Change that call to Pulse Phone's own export (Exports), or ask the script's author for a Pulse Phone option. Scripts that use events need nothing. |
No such export for phone |
The phone's folder was renamed | Rename it back to phone (below). |
| Wrong language | Config.Locale is set to another language, or the player picked one |
Set Config.Locale. Each player can choose their own in Settings > General > Language. |
Text shows as keys like key.answer |
An old config/locales/ folder was copied over the new one |
Use the new locale files. Re-apply your own wording by hand. |
| App Hub download says No Connection | The phone has no cellular signal here (a dead zone, or no signal with the Carrier on) and is not on Wi-Fi. Downloads need Wi-Fi or mobile data. | Move somewhere with signal, or join Wi-Fi (a Pulse Home Wi-Fi router). |
| App Hub download says No Cellular Plan, Data Limit Reached or Cellular Data Is Off | The Carrier is on and the phone has no plan or has used its data, or the player turned Cellular Data off | Buy or upgrade a plan in the Carrier app (installed on every phone while the Carrier is on), turn Cellular Data back on, or join Wi-Fi. |
| Everyone has "No Service" | The Carrier is on (Config.Carrier.enabled = true or setr phone_carrier 1), so each phone needs a plan |
Players buy a plan in the Carrier app. Or turn it off: set enabled = false and remove the setr phone_carrier line. |
| No signal in some places only | Dead zones are on (Config.Coverage.enabled) |
Check your zones with phone:zone show in game. Emergency calls always work. |
Settings > Server, emergency alerts and updates
| What you see | Why | Fix |
|---|---|---|
| No Server row in Settings | The player doesn't have the ace phone.admin, or Config.OwnerTools.enabled = false |
add_ace group.admin phone.admin allow and add the player to group.admin, then reopen Settings. |
phone:setup does nothing |
Typed in the server console, or the player isn't an admin | Type it in game (F8) as an admin. In the console, phone:health prints the same checks. |
| A change made in game is not in effect | It is marked Restart needed | Restart the phone (ensure phone) or the server. The start-up check's Restart line lists what is waiting. |
Editing a config/ file changes nothing |
That setting was changed in game, and the in-game value wins | Press Reset to Default on it in Settings > Server, or phone:reset <key> in the console. |
| Settings > Server shows everything read-only | Config.OwnerTools.enabled = false in config/apps.lua |
Set it to true and restart the phone. |
Not saved: ... under a setting |
The value isn't one that setting takes (out of range, wrong shape, a job name with spaces) | Use the value the message describes. |
| Nobody gets an emergency alert | Config.Broadcast.enabled = false, or the players are outside the circle you drew |
Check config/apps.lua. Send to the whole city to test. |
| Players get severe or advisory alerts silently, or not at all | Each player can switch those levels off, and severe alerts follow Silent Mode | That is the player's choice. Extreme alerts always sound. |
| An officer has no New Alert button | Their job isn't in Config.Broadcast.senders, their grade is below the one listed, or they are off duty |
Add 'police:3' (job:lowest grade) to senders, or set requireDuty = false. |
Wait ... before sending another alert |
The sender's cooldown (cooldownSeconds) or hourly limit (perHour) |
Wait, or raise the limits in config/apps.lua. |
No Update line in the start-up check |
The phone couldn't reach the update file (no internet, a firewall), or Config.UpdateCheck.enabled = false |
Nothing to fix: the phone carries on without it. With Config.Debug = true the console says why. |
Newer features
| What you see | Why | Fix |
|---|---|---|
| No Shade app | Shade is off by default, and needs a pulse_vpn item, a listed job or access.everyone |
Set Config.DarkMarket.enabled = true in config/apps.lua and check its access block. |
| No SIM card in the store, or no credit in Settings | SIM cards are off by default (Config.Sim.enabled), and prepaid credit is a second switch (prepaid) |
Switch them on in config/apps.lua, and add pulse_sim and pulse_topup to your inventory (section 4). |
| A Pulse Beacon can't be stuck to a car | The player is too far from the vehicle (attachRange, 4 m), or owns maxPerPlayer (8) already |
Stand next to the car. Check config/apps.lua. |
| "An unknown Pulse Beacon is moving with you" | The safety warning: someone else's beacon travelled with the player for alertAfter seconds |
Expected. Only set alert.enabled = false if your rules allow covert tracking. |
| Pulse Buds, Ring Light or Card Wallet don't work from the inventory | Their items are missing, or switched off | Add pulse_buds, pulse_ringlight and pulse_wallet (section 4), and check config/apps.lua. |
| Slipstream won't let a player host or join | They are further than joinRadius (60 m) from the start line, the race is full (maxRacers), or the fee is outside minFee to maxFee |
Drive to the start line. Check config/apps.lua. |
| Hail: a driver never gets rides | Their car's class or model isn't allowed, their job isn't in driver.jobs, they lack driver.licenceItem, or they are outside serviceArea |
Check the driver block in config/apps.lua. |
| Eats orders are never delivered by a player | No courier on duty with a job in couriers.jobs; with cityCourier.enabled the city delivers instead |
Add your delivery jobs to config/apps.lua (or in Settings > Server > Jobs). |
| Realty shows no homes | Your housing script can't list homes for sale, and Config.Homes.listings is empty |
Add listings in config/apps.lua, or run a housing script from section 7. |
| No agent gets viewing requests in Realty | No on-duty player has a job in realtor.jobs |
Add your job names in config/apps.lua (or in Settings > Server > Jobs). |
| Live games: no invite arrives | The game is switched off in config/apps.lua, or the invite waited longer than inviteSeconds |
Check config/apps.lua, and send the invite again. |
| A company line rings nobody, or callers wait on hold | Nobody is signed in as a dispatcher for that line, or no member is on duty | See config/apps.lua: dispatchers sign in on the Services app. |
| Groups: "the group is full" | maxMembers (6, leader included) |
Raise it in config/apps.lua. |
| Breaking news doesn't notify anyone | breaking.enabled is off, or the cooldown (cooldownSeconds, perAuthorSeconds) hasn't passed |
Check config/apps.lua, or Settings > Server > News. |
Install and version problems
| What you see | Why | Fix |
|---|---|---|
You lack the required entitlement, or an escrow error at start |
The server's key belongs to a different Cfx.re account than the one that bought Pulse Phone | The asset must be owned by the same Cfx.re account as your server key (sv_licenseKey). Download the phone from Keymaster (Granted Assets) on that account. A copy from someone else never runs. |
| Other scripts or items stop working after renaming the folder | Other scripts and the item entries reach the phone as phone (exports.phone, phone.useItem) |
Keep the folder named phone. |
Odd behaviour after an update, your config has no Config.Charging section |
An old config.lua was copied over |
Sections it lacks run on defaults. Copy the missing sections from the new config/config.lua, or start from the new file. |
| An old adapter stops scripts connecting after an update | Old bridge/ files (from this or an older version) were copied back |
Use the new files (section 10). |
| Two phones start | The old phone folder is still somewhere under resources |
Move it out of resources. |