1,440 Commits since 9.5
6 Board & Docker images
4.6× Faster frame prep
8s Sooner to fppd on a BBB
Subsystem key //
Platform
Media
Pixels
Panels
Network
Control
Platform
A new foundation
FPP 10.0
DEBIAN 13 · TRIXIE
NEW LINUX KERNEL
Pi64
Pi
BBB
BB64
Debian 12 → Debian 13 “Trixie” — newer libraries top to bottom
A new Linux kernel on every platform , with current Wi-Fi drivers, performance work and hardware fixes
Native arm64 images for Pi 3, 4, 5, Zero 2 W and CM4 / CM5
PocketBeagle 2 and PocketBeagle 2 Industrial supported
32-bit images still built for older and 32-bit-only boards
More headroom for bigger shows
Platform
Boots faster, plays sooner
TIME TO FPPD START · SINGLE-CORE BBB
FPP 9.5
54s
FPP 10.0
46s
~8s SOONER
fppd starts about 8 seconds sooner on a single-core BeagleBone — several services taken off the critical path to fppd and the web UI
DHCP no longer drags in polkit and hostnamed just to set a hostname FPP already wrote itself
rsyslog deferred off the boot path; atd and ufw no longer ship enabled
Twelve unused PHP extensions dropped — 1.6 MB back per web worker
The new kernel reaches the network seconds earlier
The spoken IP announcement yields to fppd and the web server instead of fighting them for the core
Power on, show on
Media
An entirely new media engine
MEDIA
PIPEWIRE
ZONE A
ZONE B
AES67
PipeWire + GStreamer replace the VLC and SDL backends
Simple mode for one speaker, Advanced mode for everything else
Multi-zone audio — group outputs and route media to all of them
Real-time volume and EQ, per output
Routing Matrix, plus a live pipeline Graph Visualizer
Friendly sound-card aliases that survive a reboot or a re-plug
One graph, every speaker
Media
Audio over the network
SOURCE
+0 MS
+12 MS
+30 MS
AES67 audio-over-IP output — PTP-synced and standards-compliant
Opus RTP streaming, unicast and multicast
Per-output delay compensation across zones
USB bandwidth checks, before you find out the hard way
Sound-card presence monitoring, with warnings that name the problem
A null sink for boards with no audio hardware at all
The whole yard is the speaker
Media
Video, rebuilt
Playback rebuilt on GStreamer / KMS — HDMI and DSI
Video output regions — one video can span two displays
Play Media can target any video output, not just the first
Video straight into a Pixel Overlay model, from any stream
yt-dlp support: hand it a YouTube URL and press play
Overlay Model Effect can draw and scroll images on a model, not just colours and patterns
More screens, more ways to fill them
Pixels
Know your pixels by name
WS2812B
800 KHZ
SK6812
800 KHZ
TM1814
CONST-I
UCS1903
400 KHZ
Per-port protocols now actually apply — the setting was saved but never read
SK6812, WS2812B, WS2815 and the rest of the 800 kHz family, listed by name
TM18xx support, including TM1814’s constant-current preamble
400 kHz parts — TM1803, TM1804, UCS1903 — now driveable
Parts that would be driven wrong are deliberately left off the list
Pixel string “Reverse” is saved again
Stop guessing which WS2811 you bought
Pixels
Faster pixel processing
CPU TIME TO PREPARE ONE FRAME
9.5
10.0
HEADROOM FOR MORE PIXELS
4.6× faster panel frame prep — precomputed lookup tables and NEON accumulation
Pixel string prep tiled and fused — faster again on the same board
More pixels per controller before you run out of frame time
CPU handed back to the web UI — pages and test controls stay responsive while the show runs
Idle outputs park the PRUs instead of burning a core
DPIPixels replaces rpi_ws281x on every Pi string output, with variable frame rate per sequence and no reboot
Full string length on every port for latch-chip capes, plus Falcon V4 / V5 smart receivers
Same board, more pixels
Panels
Panels that drive themselves
Four new self-PWM chips: DP3364S, ICND1065L, SM16380SH, ICND2153
1/64 scan register tables — no more stretching a 1/32 table to fit
Full-height layout uses both RGB lanes on one row — 128×64 and 64×64
Several independent matrices on one cape — a two-sided display no longer needs two controllers
16 outputs, higher refresh rates, panels and strings sharing a cape
Two-sided? One controller
Network
Talks to everything
FPP
E1.31
DDP
DMX
ART-NET
WLED
MQTT
mDNS / Avahi discovery — players find each other with no setup
MultiSync defaults to unicast on new installs
E1.31 sync universes , input and output, with priority on bridged data
Per-controller UDP pacing and DSCP marking
WLED-Native discovery, audio-reactive networking, more ported FX
Bulk pixel data API — push a whole frame to an overlay model in one request instead of one call per pixel
Sort and save the display order of your systems
One show, many boxes
Control
Automate the awkward parts
IF
TRUE
ELSE
START PLAYLIST
SET VARIABLE
If / Set Variable commands, plus Variables and Recurring Tasks
Every command logs its source — UI, MQTT, schedule, plugin or API
FSEQ effects gain run-if-not-running, and restart-in-place instead of stacking
Reboot and Shutdown are ordinary commands now
Calendar view of your schedule
Companion media that lives and dies with its playlist entry
Say it once, it happens
Control
Plugins without the restart
FPPD
RUNNING
PLUGIN
PLUGIN
PLUGIN
Load and unload plugins at runtime — fppd keeps playing
Plugin API 6: plugins register their own HTTP routes and shut down cleanly
Dependencies install themselves — apt packages and Python via pipx / uv
Redesigned manager: categories, icons, grid view, popularity, one plugin log
Open issue and PR counts shown on the card
Official, community or unknown — tracked and surfaced in the health check
Find it, install it, use it
Control
A UI you can live in
Dark mode across the entire interface
Basic / Advanced / Experimental levels — plus a temporary 15-minute Advanced
Status pushed over WebSocket instead of polled
Playlist editor redesigned: sections, inline help, mass select, missing-file badges
True 3D Virtual Display with transform controls
Channel Fader, RGB / RGBW test, color fades, DMX sine generator
Simple until you need it not to be
Platform
It stays up — and tells you why
Main-loop watchdog with phase tracking and stall recovery
Crash reports resolve to file and line on the device
Keep crash reports local, or send them — your call
One-click support bundle for when you do need to ask
Health check, fan monitoring and adjustable thermal trip points
Warnings that say what to actually do about it
Show night shouldn’t be a surprise
Platform
Hardened, not just patched
Command injection in the web UI and in crash handling — fixed
Buffer overflows in MultiSync ping and SetSetting — fixed
Heap overflow and out-of-bounds read in DDP bridging — fixed
Protected backups no longer leak the encryption password in plaintext
Outputs can no longer be freed while the output thread is walking them
Ports stay powered on across a config reload
The boring work that matters
Network
Under the hood
SOURCE
BUILD
TEST
IMAGE
DISTCC · NOCC
PLAYWRIGHT
NIGHTLY
HTTP layer moved from libhttpserver to drogon
chrony replaces ntpsec for time sync, with LAN gateway fallback
Full OpenAPI docs , including the C++ command APIs and plugin routes
Playwright UI tests, a Dev Container, amd64 / arm64 Docker builds
Distributed compilation via distcc and nocc; asan and tsan targets
One flash tool for Pi, BeagleBone and BeagleBone 64 — NVMe, eMMC and SSD
Built to keep being built
Open source. Runs on hardware you already own.
Over a decade of releases, every one of them open source. FPP 10.0 is the biggest yet.
Get it
github.com/FalconChristmas/fpp
Already on 9.x? → About → Upgrade OS
Before you upgrade. Back up your config first. Moving 32-bit → 64-bit needs a re-image, not
an in-place upgrade. Debian 13 library changes mean most plugins will want reinstalling.
Falcon Player 10.0 · 1,440 commits since 9.5 · falconchristmas.com