Skip to the content
Docs

Troubleshooting

On this page4

Reading the console at start

A healthy start looks like this:

Code
[5code-recognition] Schema ensured (mysql 8.0.39).
[5code-recognition] Integrations: framework=qbx inventory=ox_inventory voice=pma-voice appearance=illenium-appearance tattoos=illenium-appearance death=qbx_medical police=qbx_police mdt=none evidence=none target=none textui=native hud=jg-hud screenshot=builtin
[5code-recognition] Full scan time with current settings: 90 s.
[5code-recognition] Resource started successfully (v1.0.0).
[5code-recognition] Up to date (1.0.0).

The last line arrives about eight seconds after the others, and is silently skipped if the update check cannot reach GitHub — its absence is not a fault.

Read the Integrations line carefully. It is the fastest way to spot that a system you meant to use was not detected.

Every line the script can print

Errors

None of our lines appear at all, and FXServer complains about /onesync.

OneSync is off. The resource declares it as a hard dependency and is not started.

cfg
set onesync on

Warnings


Code
[5code-recognition] Database mariadb 10.3.39 is older than the tested minimum (MySQL 8.0 / MariaDB 10.4). Continuing, untested.

The script runs, but your database version is older than the minimum we support. Upgrade to MySQL 8.0+ or MariaDB 10.4+ when you can. If something database-shaped misbehaves, this line is the first suspect.


Code
[5code-recognition] The secret salt is stored in the database. Set recognition_secret in server.cfg (see docs: Security).

(This section is the "Security" page the console line points to.)

No recognition_secret convar was set, so one was generated and stored in your database. It works, but anyone with database access can read it. The best place for it is server.cfg, set before the first start:

cfg
set recognition_secret "[YOUR LONG RANDOM TEXT]"

Set the secret once and never change it: the voices players learned, voiceprints, tattoo codes on papers and the proof log all depend on it, so a changed secret is refused at start (see the next line).

If your server already ran with the stored secret:

  • Fresh install, no real player data yet: add the convar above, set ServerConfig.AllowSaltChange = true for one restart, then set it back to false.
  • Live server: you may simply keep the stored secret. Everything works; this line just keeps showing at start.

Code
[5code-recognition] Running with the previously stored secret salt. Restore recognition_secret, or set ServerConfig.AllowSaltChange = true once to accept the new value.

The secret differs from the one the server used before, so the script kept the old one. Put the old recognition_secret back. Only if you really want a new secret: set ServerConfig.AllowSaltChange = true for one restart, then set it back to false. Accepting a new secret resets learned voices, voiceprints and tattoo codes.


Code
[5code-recognition] Missing item definitions: voice_changer, hidden_camera. See docs: Getting Started > Items.

Those items do not exist in your inventory's item list. The script hands items out; it does not create them. Add the definitions from the Items page and restart your inventory.


Code
[5code-recognition] Voice detection is low-trust on this server (provider: enhanced). Voice results are flagged for admins.

Your voice system does not expose reliable "is this person talking" information. Voice still works, but results are flagged in the staff panel so a dispute can be judged with that in mind. Not a fault — see Known Limitations.


Code
[5code-recognition] MDT auto-detect skips lb-tablet (version 1.5.3) for now: it does not export CreateMDTReport (yet), which statements and camera reports need. It is checked again, so an export that turns up later is used without a restart.

That MDT runs, but this build has no export for statements or camera reports, so they stay on paper. Leave Config.MDTSystem = 'auto' — you do not need 'none' to work around it. The script looks again a few times in the first minute and then whenever a statement or camera report is sent, so an MDT that creates its exports a moment after it starts is picked up on its own, with one more line:

Code
[5code-recognition] MDT lb-tablet (version <its version>) has its export(s) now, so statements and camera reports go to it.

If that line never comes, the MDT build really lacks the export: update the MDT and restart it. See Police, MDT & Evidence.


Code
[5code-recognition] db.prune took 6.20 ms (over 5.0 ms).

The database clean-up (it removes expired memories, scans and papers) held the server thread for longer than ServerConfig.Perf.TickWarnMs in one stretch without a pause. The time it spends waiting for the database is not counted. Once in a while this is harmless. If it shows on every run, send the line together with your recognition:selftest output.


Code
[5code-recognition] Ignored 1 stored setting override (Config.Foo.Bar): unknown or invalid. The config.lua value is used.

A staff member changed that setting in game, and the setting no longer exists or no longer accepts that value — usually after an update changed the config. The file value is being used. Nothing to do; if the setting still exists under a new name, set it again in the panel.


Code
[5code-recognition] Config.<Selector> = '<x>' but <x> is not started.
[5code-recognition] Config.TargetSystem = '<x>' but <x> is not started; using 'none'.

You pinned an integration to a resource that is not running. <Selector> is any of the *System keys and Config.Framework and Config.MulticharSystem (that last one reads …but that resource is not started.).

What happens next depends on the area:

AreaWhat the script does
framework, inventory, voice, appearance, death, police, MDT, evidence, HUD, nametag, weather sync, screenshotKeeps your choice rather than silently falling back, so that area does nothing.
targetFalls back to 'none' and keeps working.
text UI, emotesFalls back to 'native' and keeps working.
progressFalls back to 'nui' and keeps working.

Either start that resource, fix the spelling of its folder name, or set the selector back to 'auto'.

Information


Code
[5code-recognition] standalone: items are kept by the script (use /recognition:use).

No inventory was detected. The five items live in the script's own store. Players use /recognition:items and /recognition:use <item>. Normal on a standalone server; if you do run an inventory, it was not detected — check Config.InventorySystem and the start order in server.cfg.


Code
[5code-recognition] Freecam check needs a newer server artifact (GetPlayerFocusPos); skipped.

One optional check needs a newer FXServer artifact. Everything else runs. Update your artifact when convenient.


Code
[5code-recognition] Discord log webhooks: none configured (optional).

No Discord channel has a URL, so nothing is sent to Discord. Discord logging is optional: this one line is all a server without it ever gets. When some channels do have a URL, the line lists those instead (Discord log webhooks on: admin, proofs.) and says nothing about the empty ones. To enable a channel:

cfg
set recognition_webhook_proofs "[YOUR WEBHOOK URL]"

Code
[5code-recognition] Webhook 'proofs' was ignored (it is an http:// URL), so it is off. Set an https:// URL in config_server.lua or its convar.

A value was set for that channel, but it is not a usable URL: a typo, an http:// URL or a leftover placeholder. The brackets say which (it is an http:// URL, it does not start with https://, it is not a URL, the value is not text); the URL itself is never printed. When the default channel has a URL, the line says so it posts to the default webhook instead. Fix the value so it starts with https:// and restart.


Code
[5code-recognition] 42 new clothing/prop items found (mp_f_freemode_01: 12, mp_m_freemode_01: 30). Run Auto-scan from the admin panel to classify them.

A clothing pack was installed, or the game updated. Until those items are classified, an unknown mask counts as covering the face, an unknown top as long sleeves, a hat or helmet like a cap, and an unknown gloves-slot item leaves the hands bare. Open the admin panel → Clothing → Run Auto-scan. This line is printed only when the counts changed.


Code
[5code-recognition] Admin settings overrides active: 7 (see the admin panel > Settings, or reset them to the file defaults).

Seven settings are different from config.lua because a staff member changed them in game. Nothing is printed when there are none. The Changed filter on the admin panel's Settings page shows exactly which.


Code
[5code-recognition] Update available: 1.0.0 -> 1.0.1

A newer version is published. See Updating.

Neither this line nor Up to date (1.0.0). appears until about eight seconds after the rest of the boot block, and neither appears at all when the check cannot reach GitHub — a blocked host, a rate limit or an unreadable versions.json is a debug line and nothing else. A missing update line is not a fault and never means the resource failed to start; the Resource started successfully line above it is the one that says that.

Common problems

F3 does nothing, or nobody gets an arrow

  • Check Config.StartMode. The F3 menu only exists in 'menu' mode (the default). In 'prompt' mode the arrow and Recognize [E] appear by themselves; in 'target' mode the option is in your target script's menu.
  • Check the key: a player may have rebound it in Settings → Key Bindings → FiveM → Recognition: open the menu.
  • The menu uses the UP / DOWN arrows and Enter only. The number keys do nothing on purpose — on most servers they are the inventory hotbar.
  • You have to face them — your body within 90° of them — within 5 metres, on the same floor. They may look anywhere.
  • Both of you must be on foot (Config.Scan.OnFootOnly).
  • The menu says "Nobody in front of you" when nobody is close enough, and "Nobody in clear view - step to where you can see them" when a wall is between you.
  • A client hook may be blocking it. Check Hooks.IsPlayerBusy and Hooks.CanShowPrompt in bridge/hooks.lua.

The hidden camera gave no paper, or there are no camera recordings

Camera papers are not handed out by themselves. The recording waits in F3 → Camera recordings (last 24 h) and is printed from there, once, with a 3-second Printing....

Printing needs the F3 menu, which only exists with Config.StartMode = 'menu'. With 'prompt' or 'target' there is no way to print in this version. See Devices & Reports.

What the player seesWhy
"No recordings to print (last 24 h)"No camera look reached 50 % in the last 24 hours, or each one was already printed
"Recording now · 25% (needs 50%)"The look is still running and the camera has seen too little. It becomes printable at 50 % — the HUD shows REC with the same %, green from 50 %
"(camera on too short)"The camera was off for too much of this look. Keep it on
"(printed recently)"A recording of this person was already kept or printed recently (Config.HiddenCamera.ReportPairCooldownMinutes, 30 min)
"You need your hidden camera with you to print."The camera must be in the inventory to print
"The camera saw only 30% - not enough for a recording (needs 50%)."The look ended below 50 %, so no recording was kept

The scan never fills

BarCheck
VoiceAre they actually talking? Are they on a radio or a phone? Is your voice system detected on the Integrations line?
FaceIs anything covering it? Are they facing you?
ClothingCan you see them — no wall in the way? (Cars and people never block the view.)
TattooDo they have any, on skin you can currently see?
All of themLook at the slow line. Night, rain and fog all take their toll

"Changes don't apply"

The three usual causes, in order of likelihood:

  1. You edited the file on a different server or a different folder than the one you are testing on.
  2. A staff member changed that setting in game, and the override wins over the file. The boot line above tells you how many overrides are active; the Settings page's Changed filter tells you which. Reset to file clears one.
  3. The setting needs a restart. Command names, table names, item names and a few others are read once at boot. The Settings page marks these After restart.

Wrong framework or inventory detected

Pin it instead of 'auto':

lua
Config.Framework       = 'esx'          -- or 'qb-core' / 'qbx_core' / 'ox_core' / 'standalone'
Config.InventorySystem = 'ox_inventory'

Use the exact resource folder name. If the resource is not running you get the warning above rather than a silent fallback.

Characters get new identities on every login

The framework's character id is not stable, or the multicharacter selector is not linked to our table:

  • Qbox — add {'recognition_identities', 'identifier'} to qbx_core's characterDataTables.
  • 0R Multicharacter v3 — add the same table to Database.List.
  • ESX — our tables are created at the first start. Restart the server once afterwards, or import sql/install.sql before the first start, so esx_multicharacter can see them.

Nobody forgets anybody after a death

  • Check the death= field on the Integrations line. If it says native, your ambulance script was not detected and the movement fallback is in use.
  • Config.Death.Enabled must be true.
  • A revive always keeps memories. Only a respawn erases them.
  • Hooks.ShouldProcessDeath may be returning false.
  • Open Deaths in the admin panel. A death may still show Waiting; Keep memories or Wipe memories decides it by hand.

Admin panel says "no permission"

cfg
add_ace group.admin recognition.admin allow
add_principal identifier.license:YOUR_LICENSE_HERE group.admin

If you use child permissions, remember that view is what opens the panel at all. A txAdmin login only gets the levels in Config.Admin.TxAdminPerms.

The panel refuses to show a pair

By default staff cannot view or edit a pair involving their own character (Config.Admin.BlockSelfView, Config.Admin.BlockSelfEdit). Use the server console, or another character.

Everybody is suddenly unrecognizable after a clothing update

New items are unclassified, and an unclassified mask or top counts as hiding (a full face cover, long sleeves). Look for the "new clothing items" line and run Auto-scan. Hats and helmets are the exception and behave like a cap, so a new uniform pack does not black out a whole department.

Papers or devices cannot be handed over

Your inventory cannot store item metadata. Use /recognition:handover <item> while facing the person.

Nothing reaches Discord

  • The URL must start with https://.
  • It goes in config_server.lua or a set convar, never in config.lua.
  • Look for the "Discord log webhooks" line: a channel missing from its list has no URL. A "Webhook '<channel>' was ignored" warning means the value you set was refused, and says why.
  • recognition:status prints the queue length and any channel that disabled itself after repeated failures.

Reporting a problem

Include:

  1. The output of recognition:selftest from the server console.
  2. The Integrations line from your start-up log.
  3. Your framework, inventory, voice system and FXServer artifact.
  4. What you did, what you expected, what happened.

Support: discord.gg/TdMewPJ4W6 (opens in a new tab)