Installation
Step-by-step instructions for installing and configuring oxide-carplay
Step-by-step setup for oxide-carplay.
Prerequisites
Required resources
| Resource | Purpose |
|---|---|
ox_lib | Locale, callbacks, animation helpers |
o-link | Character lookup, item registration, inventory, progress bar, notifications, weather/time |
xsound | Vehicle-based 3D audio playback |
o-link expectations
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
oxide-carplay uses FiveM KVP storage. No SQL import is required. Current KVP usage: saved playlists per character and saved CarPlay settings per character.
Installation
Place the resource
Place oxide-carplay inside your server's resources folder.
Add startup order
Start dependencies before the resource:
ensure ox_lib
ensure o-link
ensure xsound
ensure oxide-carplayReview configuration
Configuration is split across:
shared/config.luashared/config/carplay.lua
Review shared/config/carplay.lua first. Key server-owner settings include:
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 = 500See 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 = falseAdd the item to your inventory resource if needed
Add to data/items.lua:
['carplayjb_usb'] = {
label = 'Suspicious USB',
weight = 100,
stack = false,
description = 'A USB drive with custom firmware. Looks like it could modify vehicle systems.',
},Add to 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-carplay/carplayjb_usb.png if your inventory UI uses item icons.
Verification
ox_lib, o-link, xsound, and oxide-carplay load without dependency errors.M to open CarPlay.Notes for UI developers
The packaged web/dist build is already included and referenced by the manifest. Rebuilding the UI is only necessary if you edit files under web/src.