How to Install and Set Up LB Phone: ESX, QBCore and QBOX
By Luke, RPScripts
What LB Phone is and what it needs
LB Phone is a full smartphone resource for FiveM. Out of the box it covers the basics players expect from a phone, such as calls, messages, mail, camera, clock, notes, maps, weather, voice memos and an app store, plus social apps (InstaPic, Birdy, Trendy and Spark) and extras like DarkChat, a marketplace, Yellow Pages, music and crypto. The download contains two resources: lb-phone itself and a separate phone prop resource, lb-phoneprop.
Before you install any phone, write down what your server actually runs: framework, inventory, libraries, and your GTA V edition with the FXServer artifact version. A phone touches calls, character data, inventory items and server services, so check those integrations, not just the app list.
Supported frameworks
According to the product page, LB Phone works with ESX, QBCore, QBOX, ox_core, vRP 2.0 or standalone, and detects the framework automatically by default. The creator's documentation also states that LB Phone automatically detects your framework by default. For any other framework there is a documented custom-framework route (see below).
Requirements
The hard requirements are short: oxmysql plus one of the supported frameworks, or standalone. ox_core is one of those framework options, not an extra dependency; the creator's dependency list does not include it. The official installation guide adds these details:
- MariaDB 10.11 or newer. You can check your version with
SELECT VERSION()in HeidiSQL. The guide explicitly says not to use XAMPP. - oxmysql
- loaf_bcrypt (recommended)
- up-to-date server artifacts
- OneSync Infinity (optional), which is required for a few features such as AirShare
Before you start: back up and check your database
The creator's guide asks you to always take a backup before making any changes to your database. This matters more than usual here: before running LB Phone's SQL file, the guide says to delete all tables starting with phone_ in your database.
On a brand-new server that is harmless. On a server that already ran another phone, it can delete that phone's data. The original gcPhone and Re-Ignited base.sql, for example, create phone_app_chat, phone_calls, phone_messages and phone_users_contacts, so all four match the phone_ prefix. Quasar Smartphone V3 prefixes its tables with qs_phone_. Before you delete anything, export the database, list every table that starts with phone_ and check which resource created it. Following reset instructions on an existing database will not preserve phone history. If you want to keep old phone data, plan a migration on a test server first instead of a fresh install.
Step-by-step installation
The steps below combine the product page and the official installation guide. Where the guide is more detailed, we follow the guide.
1. Copy the resources
Unzip the download and copy lb-phone and lb-phoneprop from the [lb] folder into your server's resources folder.
2. Delete old phone_ tables and run the SQL file
With your backup in place, delete all tables starting with phone_, then run the included lb-phone/phone.sql file in your database. The creator recommends HeidiSQL and says not to use phpMyAdmin. Their common-issues page adds that SQL import errors usually come from phpMyAdmin or an outdated MariaDB version, and that hosts with game panels often ship both.
3. Install the dependencies
Install oxmysql and make sure your server artifacts are current. oxmysql is not included in the download and must start first.
loaf_bcrypt is optional but recommended. The creator explains that FiveM's built-in bcrypt runs on the main server thread and can cause a hitch of around 80 ms when LB Phone hashes or verifies a password, while loaf_bcrypt does this work in a separate worker thread. LB Phone detects and uses it automatically once it is started. Add these lines before start lb-phone in your server.cfg:
add_unsafe_worker_permission loaf_bcrypt
start loaf_bcrypt
4. Set the start order in server.cfg
Every resource LB Phone uses, including your framework, oxmysql and inventory, needs to start before LB Phone. Custom apps start after it. The product page gives this order, placed after oxmysql and your framework:
ensure oxmysql
ensure lb-phoneprop
ensure lb-phone
5. Configure uploads and API keys
Adjust config/config.lua to your needs. Photo, video and audio uploads need an upload method and API keys: choose the method in config.lua and enter the keys in lb-phone/server/apiKeys.lua. The default upload method is Fivemanage; if you prefer your own S3 or R2 storage, the creator points to lb-presigned. Treat the upload service as part of your running costs, and keep credentials in the server-side configuration rather than in client code.
The creator says the phone should work out of the box after this, with further options in the config folder.
Don't have LB Phone yet? Get LB Phone v2 on RPScripts: instant download, newer files in your account downloads, setup support.
Framework notes for ESX, QBCore and QBOX
LB Phone detects ESX, QBCore and QBOX automatically by default, so there is no separate install path per framework in the sources we checked. The differences show up in your inventory and in framework apps.
Unique phone items
LB Phone can give each phone item its own number. That lets players steal and share phones, but it needs an inventory with metadata support. The creator recommends ox_inventory (for ESX, QBOX and others) or qb-inventory (for QBCore) and lists lj-inventory, core_inventory and qs-inventory as supported out of the box. Other inventories with metadata can be connected through the creator's custom inventory guide.
For both recommended inventories, set Config.Item.Unique and Config.Item.Require to true in the LB Phone config, and optionally Config.Item.Inventory to the inventory name. On ox_inventory you add or replace the phone item in ox_inventory/data/items.lua and remove the NPWD integration block for Item('phone' in ox_inventory/items/client.lua. On qb-inventory (the guide targets version 2.0.0) you replace the phone entry in qb-core/shared/items.lua. Restart the server afterwards.
Decide what should happen when a phone is given away, stored or confiscated, and test your integration rather than assuming any inventory with metadata works unchanged.
Housing and custom frameworks
The home app supports qb-houses, loaf_housing and qs-housing by default; you select yours with Config.HouseScript. Other housing scripts need a custom integration, which the creator describes as requiring coding experience.
If you run a custom framework, you edit the standalone framework files on the client and server side. For the wallet, home, garage and services apps to show, set Config.CustomFramework to true or create your own framework files. A standalone setup therefore still needs integration work for those apps.
Video calls and TURN servers
LB Phone uses WebRTC for video calls, InstaPic live and recording nearby players' voices. If video calls or live streams show no one, the creator says a firewall is usually blocking the connection and a TURN server usually fixes it. The phone has built-in support for Cloudflare's Realtime TURN server via Config.DynamicWebRTC, and you can also use a service like Metered through Config.RTCConfig. Check your GTA V edition as well: the Cfx.re migration notes list Mumble as deprecated on Enhanced, so a voice dependency alone does not prove calls will work there.
Common problems after installation
- Wallet, garage or services app missing: the script did not detect your framework, or it is not set up correctly.
- Home app missing: your housing script is not configured; by default the home app works with only a few scripts.
- Phone does not open: the creator suggests a fresh copy of
lb-phone, then settingConfig.DisableOpenNUItofalseto find a conflicting resource, then enablingConfig.Debug. - SQL import errors: use HeidiSQL instead of phpMyAdmin and an up-to-date MariaDB.
- "Unknown column x in field list": a database column added in an update is missing; the creator publishes the queries to fix it in the #updates channel of their Discord.
- AirShare not working: enable OneSync Infinity and update your artifacts.
For general errors, start with the first red line about the resource in your server console. A framework object that is nil usually means the framework starts later or is the wrong one.
Updating LB Phone later
Where you get the new files depends on where you bought the phone. On RPScripts, a newer file appears in your account downloads when it is available. The creator's guide refers buyers of its own package to Cfx.re.
The update steps from the creator's guide:
- Back up the
lb-phonefolder, for example as a ZIP. - Back up your database if the patch notes say the database changes. The guide uses HeidiSQL's "Export database as SQL" with the "Create" boxes checked, the "Drop" boxes unchecked and "Insert ignore (do not update existing)" selected for data.
- Delete the old
lb-phoneresource. - Install the latest version.
- Reapply your config changes. Unless the patch notes say otherwise, you can copy the entire config folder.
If an update adds a database column and you skipped the patch-note queries, you will see the "Unknown column" error above.
FAQ
Which frameworks does LB Phone support?
ESX, QBCore, QBOX, ox_core, vRP 2.0 or standalone, with automatic detection by default.
Is ox_core required?
No. ox_core is one of the supported frameworks. The required dependency is oxmysql.
Which MariaDB version do I need?
MariaDB 10.11 or newer, according to the creator's installation guide.
Do I really have to delete the phone_ tables?
The creator's guide says to delete all tables starting with phone_ before running the SQL file. Back up first and check which resource each table belongs to, because older phones such as gcPhone use the same prefix.
Is OneSync required?
OneSync Infinity is optional, but a few features such as AirShare need it.
Can each phone have its own number?
Yes, with the unique phones feature and an inventory with metadata support.
Do I need loaf_bcrypt?
It is recommended, not required. It moves password hashing off the main server thread.