How to stream FPP show audio to viewers' phones
Install the PulseMesh plugin on your Falcon Player and send perfectly synchronized music to every phone at your display.
If your show runs on FPP (Falcon Player), you can stream its audio straight to viewers' phones: install the PulseMesh Connector from FPP's own Plugin Manager, link it to your display with a token, and phones play your soundtrack synchronized to your lights within ±10ms — no FM transmitter, no extra hardware on the Pi. The plugin supports FPP 7.0 and newer. Here's the full path.
What the plugin does
The PulseMesh Connector rides along with fppd: as your sequences play, it reads FPP's timing (via MultiSync) and feeds the PulseMesh sync engine in the cloud. Every connected phone corrects continuously against the show clock, so the audio stays locked to your lights even on congested holiday-night cell networks. It installs as a service that starts on boot — set it up once in the off-season and it's there in December.
Step 1 — Prepare FPP
Two things on the FPP side, both in the web interface:
- Enable MultiSync packets — Status/Control → MultiSync → check "Send MultiSync Packets". This is how the plugin hears your show's timing.
- Install the plugin — Content Setup → Plugin Manager → find "PulseMesh Connector" → Install, then restart fppd when prompted.
You need FPP 7.0 or newer; the plugin runs on any platform FPP supports. (Running FPP in Docker? Fully supported — expose port 8089 from the container so you can reach the plugin's status page.) The FPP setup guide has click-by-click screenshots for every step here.
Step 2 — Create your display and connector
Register a free account (Starter is free forever — one display, up to 5 concurrent viewers, 250 viewer sessions a year). In the dashboard: fill in your display's name and address, then create a Connector for it and copy the connector's token.
Back in FPP, open Content Setup → PulseMesh, paste the token, and save. The status flips to Connected.
Step 3 — Let the audio upload, then test
On first connection the plugin uploads your audio files to the platform. Do the initial setup on unmetered internet if you can — with a big song library it's the one bandwidth-heavy step. After that, the Connector averages about ~2MB per hour during playback, which is why a cellular hotspot at the display works fine all season.
Then start a sequence and open the web player or the PulseMesh app on your phone: pick your display and listen. If a song shows as loading right after setup, the upload is probably still processing — check "Files Pending Upload" under Content Setup → PulseMesh, and give it 20 minutes.
Also feeding speakers or an FM transmitter from the same FPP? Phones can run slightly ahead of your player's own audio output (PulseMesh isn't subject to the Pi's soundcard latency). The playback offset lets you delay PulseMesh to match — 80ms is a good starting point.
Step 4 — Give viewers a way in
Viewers open the web player or app, which finds your display by location within your geo-radius. Put a QR code on a yard sign to get them there; on Pro plans and up, Display Codes link straight to your display with a custom QR and a 4-character code. And since much of your audience listens in cars, note that Perfect Sync (Pro and up) compensates for car Bluetooth delay automatically — more on that in the car audio guide.
Common questions
Which FPP versions are supported? FPP 7.0 and newer. Older installs need an FPP upgrade first.
Does the plugin update itself? Yes — it checks for updates on each startup. Manual update and restart commands are in the connector reference.
Player or remote — where does the plugin go? On the FPP instance that plays your show and knows the timeline — the one sending MultiSync packets. [VERIFY: exact guidance for player/remote multi-FPP setups — worth a sentence from Bob for the common two-Pi layout.]
My display doesn't show up for viewers. Make sure the display is set to Public in the dashboard and its address is correct — full troubleshooting list in the FPP setup guide.
Sequencing with xLights and playing through xSchedule instead? That guide is here. Either way, the free plan is enough to hear it working from your own driveway tonight.