# F.A.Q > Frequently asked questions for ML Radio Category: RADIO · Source: https://miciomods.it/docs/ml-radio-faq · Last updated: 2026-09-26 ## Setup **Does it work without xsound?** Yes. Voice radio, channels, antennas, jammers and hacking all run without it. xsound only powers streamed music: station playlists, speaker zones and boombox audio. Set `Config.Broadcast.streamingProvider = 'none'` to disable streamed music. **Which voice system does it need?** pma-voice. The primary channel, the secondary monitor channel and push-to-talk all run through it. Other voice resources are not supported. **Do I have to replace my pma-voice?** Only for the dual channel. The download ships a pma-voice fork that adds a second radio channel, and ml_radio uses it to keep a background frequency open while the player talks on the main one. On stock pma-voice that single feature disables itself with one console warning; channels, antennas, jammers, hacking, stations and stereos are untouched. If you already run a customised pma-voice, port the `setSecondRadioChannel` export into your copy instead of overwriting it. **Is there a key to open the radio?** Not by default. Every keybind ships empty so the script never takes a key on install, and players assign their own under Settings, Key Bindings, FiveM. The radio opens by using the item, which needs no key at all. To ship a default, fill `Config.UI.keybind`. **Can players use the radio without an item?** No. A radio from `Config.Items.radios` has to be in the inventory. There is no command that bypasses it. ## Signal and Antennas **Why do players have no signal?** Coverage comes from infrastructure. `Config.Signal.baseSignalWithoutAntenna = 0` means a player outside every tower and antenna range has nothing. Four fixed towers ship pre-configured; add more locations or let players place their own antennas. **Can fixed towers be hacked?** Only if the location opts in with `hackable = true`. By default fixed towers cannot be hacked; player-placed antennas can, unless their tier disables it. **What does a successful hack do?** The antenna is knocked offline and locked for `Config.Antenna.hack.lockDuration` (5 minutes by default), and its health takes `damageOnSuccess` damage (50 by default, infinite-health towers immune). A fixed tower can override the lockout with its own `hackLockDuration`. The owner is warned after a delay, and locks survive restarts. **Do placed antennas survive restarts?** Yes. Position, health, active state and lockouts persist in the database. Picking an antenna up writes its condition onto the item. ## Jammers **How do allies keep radio inside a jammer?** The jammer owner adds their frequencies to the jammer's whitelist from its interaction menu. Everyone else inside the radius reads JAMMED. **Can a jammer be destroyed?** Yes, while `Config.Jammer.durability.destroyable = true`. It also drains power over time and needs batteries to keep running. ## Stations and Music **How do I set up the autoplay music?** Autoplay ships off with an empty track list. Put your own links in the station's `autoplay` block and switch `enabled` on. A track can also be an mp3 inside the resource, written as a path under `sounds/`, which loops forever with no stream host at all. **shared/config_audio.lua** ```lua autoplay = { enabled = true, tracks = { { url = 'https://radio.myserver.com/stream', title = 'My Station' }, { url = 'sounds/my_track.mp3', title = 'My Track' }, } } ``` Until a station has something to play, it stays off the air unless a DJ goes live, and any speaker zone or stereo on its frequency stays silent. **What music am I allowed to play?** Whatever you hold the rights to. No music ships inside the resource, so every source on a station is one the server owner chose. Two things decide it. The recording: a track licensed through a performing rights organisation is off limits whether it is streamed or dropped into `sounds/`, because where the file sits changes nothing. And the service: YouTube, Spotify and similar platforms license playback only inside their own player, so routing their audio into the game breaks their terms. `Config.BlockedStreamHosts` refuses those services out of the box. **Who can go live as a DJ?** The jobs listed in the station's `permission` table. An empty table lets anyone take it. Set `permission = false` to lock the console, and the station will only ever play its own autoplay. The console offers queue management, play, pause, skip, shuffle, repeat, volume and crossfade, and voice ducking lowers the music while the DJ talks. **Can I restrict which stream links players use?** Yes, in `server/config_server.lua`. List the hosts you allow; subdomains of a listed host pass too. **server/config_server.lua** ```lua Config.AllowedStreamHosts = { 'radio.myserver.com' } ``` Empty allows any public host. Private addresses are always blocked, and the hosts in `Config.BlockedStreamHosts` are refused either way. To take custom links away from a station entirely, set `allowStreaming = false` on it and only the configured tracks will play. ## Items and Battery **How do I rename the items?** Handsets and consumables are in `Config.Items`, antennas in `Config.Antenna.tiers`, jammers in `Config.Jammer.tiers`, stereos in `Config.StereoProps.items`. Change the names there and register matching items in your inventory. **What happens when the battery dies?** The radio disconnects from the air. A warning fires once at `Config.Battery.lowThreshold` percent, and a battery item restores `chargeAmount` percent on use. ## Updates **How do I update the script?** 1. Download latest from CFX Portal 2. Backup the three config files in `shared/`, `server/config_server.lua`, anything you edited in `open/`, and your own files in `locales/` and `sounds/` 3. Replace everything else 4. Restart the resource Database tables migrate automatically on start.