Pulse Phone docs

Pulse Phone — Quick start

Install one resource named phone. Keep your existing framework and supported scripts; Pulse detects them when it starts.

For Pulse Phone 1.4.24 min readUpdated

PhoneHub + Pulse is a separate edition with its own licence and its own copy of this phone. If you bought that edition, follow its own install guide instead: a server runs one phone resource.

1. Check your server

What Needed?
OneSync on, game build 2699 or newer Required
A database: oxmysql (or mysql-async, ghmattimysql) on MariaDB 10.6+ or MySQL 8 Recommended. Without a SQL resource the phone keeps its data in the server's key/value store
One voice resource: pma-voice, mumble-voip, SaltyChat, TokoVOIP or YACA Recommended. Without one, calls connect but carry no audio
screenshot-basic Recommended, so the camera can save photos. The standard resource works
A framework and an inventory Optional. Without them the phone runs standalone

Start your database, framework, inventory, voice resource and screenshot-basic before Pulse. See requirements and your framework for the correct order.

Back up your database before the first start. Pulse creates its own tables. If another phone left tables with the same names, they are renamed to old_<name> (nothing is deleted); the details are in requirements.

2. Copy the phone folder

Download your purchase from your Cfx.re account. Copy the phone folder containing fxmanifest.lua into your server's resources. Keep its name. Your server key must belong to the account that owns the asset.

Uploading with FTP (a hosted server): use Binary mode (FileZilla: Transfer > Transfer Type > Binary), or upload the zip and extract it on the server. Auto mode changes the locked files and the phone refuses to start; the symptoms and the fix are in Troubleshooting. The folder you upload must match this table; the start-up check names any file that is missing or the wrong size.

The Pulse Phone 1.4.2 download:

Folder or file Files Size
ui/ 3,932 78.3 MB
stream/ 40 30.5 MB
config/ 138 23.2 MB
d6c1e95a/ (the locked code; its name differs per release) 7 5.5 MB
data/ 2 1.4 MB
bridge/ 55 0.5 MB
guides/ 13 0.2 MB
phone.sql 1 0.2 MB
fxmanifest.lua 1 6 KB
whole phone folder 4,204 139.7 MB

Updating an existing installation? Follow Updating first to preserve settings and player media. Stop the previous phone resource before switching to Pulse.

3. Add inventory items

Open Inventories and follow the instructions for the inventory you already use. Supplied definitions and pictures are in config/items/. Merge entries into your inventory; do not replace its whole item file.

ESX's default inventory and QBCore can register missing definitions automatically. Other inventories may require supplied entries. Copy item pictures where your inventory expects them. Standalone without an inventory needs no items.

4. Start Pulse

Keep automatic detection in config/config.lua. The first section contains framework, language, inventory selection, phone item and keys. Optional settings are indexed in Configuration.

Add this after your existing dependencies in server.cfg:

server.cfg
ensure phone
add_ace group.admin phone.admin allow

Restart the server. Pulse creates its database tables when the SQL connection is available. Read its console check and follow any corrective instructions. Run phone:health to repeat it.

5. Open your phone

Join as an administrator, open F8 and enter phone:setup. Confirm the detected framework and inventory, then complete the guided setup. Press F1 or use /phone to open the phone. If your settings require an item, buy a phone and use its box from inventory first.

Settings saved in Settings → Server override matching file settings. Reset a saved override there if you want the file value to apply again.

6. Optional: the lighter screenshot-basic

Your download also contains a screenshot-basic folder. It is the CitizenFX screenshot-basic (MIT licence) with one change: the original keeps redrawing the game image for its capture layer every frame, even when nobody is taking a photo, and this copy draws only while a photo is being taken. The resource name, its exports (requestScreenshot, requestScreenshotUpload, requestClientScreenshot) and its events are unchanged, and it comes already built, so it does not need to build itself on first start. The changed files are listed in screenshot-basic/ZERODEV-CHANGES.md.

Pulse works with either copy, so this step is optional. Other scripts on your server use screenshot-basic too, so switch on a test server first if you have one:

  1. Rename your current screenshot-basic folder (for example to screenshot-basic.bak) and move it out of resources, so you can put it back.
  2. Copy ours into resources with the same name, screenshot-basic, and keep the same ensure screenshot-basic line.
  3. Restart the server and try every script that takes screenshots: the phone camera, and any report, evidence or bodycam tool you run.
  4. If anything behaves differently, delete our copy, put your old folder back as screenshot-basic and restart.

Set up the features you use

  • Calls, video and Live: supported voice resources, call controls and production video connection setup.
  • Photos and videos: built-in storage, FiveManage and other upload options. Private service keys stay in your server configuration. On a hosted server whose web port is not reachable, photos need FiveManage: two lines in server.cfg (set phone_media_provider "fivemanage" and set phone_fivemanage_token "<token>").
  • Configuration: shops, apps, accessories, languages and optional features.
  • Troubleshooting: find the symptom and follow its fix.
  • Developer integrations: custom scripts and advanced connection settings.

Normal installation does not require editing bridge/, ui/ or stream/. Keep the complete resource together, including its model and map assets.