Installation

Step-by-step instructions for installing and configuring oxide-carplayer

Step-by-step setup for oxide-carplayer.

Prerequisites

Required resources

ResourcePurpose
oxmysqlSaves the map mode setting in the shared oxide_settings table
ox_libLocale, callbacks, animation helpers
o-link 1.8.0 or newerCharacter lookup, item registration, inventory, progress bar, notifications, weather/time, and the shared map
xsoundVehicle-based 3D audio playback

Car Player needs o-link 1.8.0 or newer. Older versions do not include the shared map files this resource loads.

This resource depends on your server's o-link setup for:

  • character identifiers used for KVP persistence
  • usable item registration for the jailbreak USB
  • inventory item checks and removal
  • progress bar display during jailbreak
  • player notifications
  • weather and time data used on the map screen
  • the shared map shown on the Home and Map screens, with mainland and Cayo Perico artwork, and the server-wide map mode default (see Shared map mode)

oxide-carplayer uses FiveM KVP storage for player data. No SQL import is required. Current KVP usage: saved playlists per character and saved Car Player settings per character. The only database value is the resource's map mode, stored in the shared oxide_settings table, which is created automatically on first start.

Installation

Place the resource

Place oxide-carplayer inside your server's resources folder.

Add startup order

Start dependencies before the resource:

server.cfg
ensure oxmysql
ensure ox_lib
ensure o-link
ensure xsound
ensure oxide-carplayer

Review configuration

Configuration is split across:

  • shared/config.lua
  • shared/config/carplay.lua

Review shared/config/carplay.lua first. Key server-owner settings include:

shared/config/carplay.lua
Config.CarPlay.Enabled = true
Config.CarPlay.Keybind = 'M'
Config.CarPlay.DefaultVolume = 50
Config.CarPlay.AudioRange = 12.0
Config.CarPlay.MaxQueueSize = 20
Config.CarPlay.MaxPlaylists = 10
Config.CarPlay.MaxPlaylistTracks = 50
Config.CarPlay.MapUpdateInterval = 500

See Configuration for the full reference, including mini-player and jailbreak settings.

Register the jailbreak item if you want that feature

The jailbreak flow requires the item named by Config.Jailbreak.RequiredItem to exist in the inventory system your o-link setup uses.

Default item name:

Config.Jailbreak.RequiredItem = 'carplayjb_usb'

If you do not want the jailbreak feature, you can disable it:

Config.Jailbreak.Enabled = false

Add the item to your inventory resource if needed

The entry is ready to paste in itemimages/ox_inventory_items.lua in the resource folder. Copy the ['carplayjb_usb'] entry into data/items.lua, above that file's final closing brace. If your file already has an item with the same name, keep only one copy.

itemimages/ox_inventory_items.lua
['carplayjb_usb'] = { label = 'Suspicious USB', weight = 100, stack = false, close = true, description = 'A USB drive with custom firmware. Looks like it could modify vehicle systems.' },

Add to shared/items.lua:

qb-inventory/shared/items.lua
carplayjb_usb = {
    name = 'carplayjb_usb',
    label = 'Suspicious USB',
    weight = 100,
    type = 'item',
    image = 'carplayjb_usb.png',
    unique = true,
    useable = true,
    shouldClose = true,
    description = 'A USB drive with custom firmware.',
},

An item image is included at oxide-carplayer/itemimages/carplayjb_usb.png if your inventory UI uses item icons (for ox_inventory, copy it into ox_inventory/web/images/).

Verification

Start the server and confirm oxmysql, ox_lib, o-link, xsound, and oxide-carplayer load without dependency errors.
Join the server, enter any vehicle seat, and press M (or run /carplayer) to open Car Player.
Paste a standard YouTube URL and verify metadata loads and audio plays.
Close the UI while music is playing and verify the mini-player appears if enabled.
Have a second player enter the same vehicle and verify passenger playback syncs.
Open the Map screen and verify tiles load, position updates, and Quick Nav sets a waypoint.
If jailbreak is enabled, use the configured USB item in a vehicle and verify the progress bar, minigame, and success notification work.

Interface files

The interface comes prebuilt in web/dist. There is nothing to build or install for it.

Updating from 1.x

Version 2.0.0 changes a few things server owners and players will notice:

  • The open command is now /carplayer.
  • The mini-player keybind commands are now carplayer_mp_pause, carplayer_mp_next and carplayer_mp_repeat.
  • Because the commands were renamed, each player's custom Car Player keybinds reset to the defaults once. Players can set them again in FiveM's key binding settings.
  • The map now comes from o-link's shared map, with Cayo Perico support. Update o-link to 1.8.0 or newer before you start the new version.
Update o-link to 1.8.0 or newer.
Older copies of this resource used a different folder name. If your server still has that folder, remove it and its ensure line.
Place the new oxide-carplayer folder and make sure ensure oxide-carplayer comes after oxmysql, ox_lib, o-link and xsound.
Do a full server restart.

Playlists and settings saved under the old folder name do not carry over, because FiveM stores them per resource name. Players will need to save their playlists and settings again.

Next Steps