An easy-to-use pixel show player for the xLights ecosystem.
While we will continue to add features through the 2026 season, EZPlayer was tested on several 4th of July shows and is ready for use.
EZPlayer can be used completely locally, supporting:
- A flexible schedule of playlists of sequences
- A jukebox view of songs to choose from for immediate / queued playback
- Audio (.mp3, and auto-conversion from other formats) and .fseq playback from an xLights show folder
- DDP and E1.31 controllers on attached IPv4 networks
- Live view of the show
- Status screens
- Network scan, controller status, and controller actions for many common controllers
- Remote Falcon viewer control
- Local (LAN) Web UI
- Background sequences, volume control automation, etc.
- Integrations API for advanced users
With the (optional) EZPlayer cloud registration:
- See the full EZPlayer UI for your show over the internet
- Configure show page for your viewers
For sequences from EZRGB:
- Automatic sequence mapping, download, and installation
- Layout sync
You can also build and deploy your whole show through the cloud, directly to your EZPlayer.
EZPlayer doesn't support (and likely won't support):
- USB controllers
- OS management
- Controller capes
- Plugins (equivalent functionality is available by using other integration methods)
You do not need to build from source to use the app.
➡️ Download the latest release:
https://github.com/ezpixelplayer/ezplayer/releases
We currently provide builds for:
- Windows (x64) —
EZPlayer-Setup-*.exe - macOS (Apple Silicon) —
EZPlayer-*-arm64.dmg(M1/M2/M3/M4 — most Macs sold since late 2020) - macOS (Intel) —
EZPlayer-*-x64.dmg(older Intel-based Macs) - Linux x64 (Debian/Ubuntu/Mint, recommended) —
ezplayer-ui-electron_*_amd64.deb - Linux x64 (AppImage) —
EZPlayer-*.AppImage - Linux ARM (Raspberry Pi) —
ezplayer-ui-electron_*_arm64.deb - Linux ARM (Raspberry Pi) (AppImage) —
EZPlayer-*-arm64.AppImage - Linux (portable tarball) —
ezplayer-ui-electron-*.tar.gz
Not sure which Mac you have? Apple menu → About This Mac — if "Chip" says Apple anything (M1/M2/M3/M4), use the arm64 build; if "Processor" says Intel, use the x64 build.
Just download the installer or portable build and run it.
EZPlayer Mac images are signed thanks to EZRGB.
On Debian/Ubuntu/Mint, the .deb is the simplest path:
sudo apt install ./ezplayer-ui-electron_*_amd64.debThat registers a menu entry and you can launch from your application launcher or by running ezplayer-ui-electron from a terminal.
For the AppImage on Ubuntu 24.04+, install the FUSE runtime once:
sudo apt install libfuse2t64 # libfuse2 on older Ubuntu / DebianThen chmod +x EZPlayer-*.AppImage and launch.
The portable tarball just extracts and runs — no install — useful for distros without .deb support.
For controller ICMP ping to work as an unprivileged user (any package format), run this once:
sudo sh -c 'echo "net.ipv4.ping_group_range = 0 2147483647" > /etc/sysctl.d/99-ezplayer-ping.conf'
sudo sysctl -p /etc/sysctl.d/99-ezplayer-ping.confEZPlayer is tested on Raspberry Pi 5 and 4 (64-bit OS and 4GB or more required). The Linux ARM releases work, or you can build it yourself. Releases currently only include the application; it is not a full OS image (though that might be added later).
For detailed documentation, see the EZPlayer manual.
When you first run EZPlayer, you will choose your show folder. This should contain your xLights files, which are needed for EZPlayer to find your controllers. You can change the show folder later from the "Settings" screen.
The player opens to the "Player" screen, but there will not be much here yet. So, navigate between screens using the sidebar menu. (If no sidebar is visible, click the 3 bars in the upper right corner.)
Start on the "Songs" screen. Here you can add songs (aka "sequences"). Start by choosing the .fseq; hopefully the music and metadata will be found automatically. If not, associate the .fseq file with its audio file, the song title, etc. If you have image files (or URLs) handy, you can enter those as well, this way your songs will show with images in the jukebox gallery. It is recommended to add some tags to your songs, as this will help build playlists. You can then try playing your songs from the "Jukebox" gallery.
After adding some songs, create playlists on the "Playlists" screen. You can think of a playlist as an ordered list of songs to play, but it can also be used as a "set" of songs that are not taken in order. As we'll see later, you might want to make an "intro" playlist, a few main playlists, and an "outro" playlist.
After you have some playlists, visit the "Schedule" screen. Here, you can assign your playlists to play on the right days. Note that each schedule item is where you can set the "intro" and "outro" that goes with your show playlist, assign priorities, add loop/shuffle, and so forth.
Return to the "Player" screen, which will give you a summary of what is going and what will happen next. But, if you want more detail about exactly how your schedule will run, try the "Schedule Preview" button on the "Schedule" screen, or if you want more details about how the show is running, how the controllers are performing, etc., try "Show Status".
If you want to connect to the cloud (for remote management, automatic sequence rendering and download, etc.), visit the "Cloud" screen.
If you used the EZRGB website to set up your show, choose cloud setup when EZPlayer launches for the first time. Click the link, or use the QR code to register the player via another device (such as your phone). Your layout, sequences, schedule, and settings will download to your show folder automatically.
EZPlayer does not do well with missing files. Don't remove anything.
Please report any bugs or requests here: GitHub Issues
For any general discussion, join us on Discord.
EZPlayer is a show player and scheduler app for animated light shows based on pixel controllers. It reads files and sends the data over the network at show time, and plays the audio in sync. This is very similar to what xLights xSchedule does.
It is also similar in purpose to FPP, though FPP is more of an embedded service with a web UI.
With two established player solutions, why would anyone make a brand new one?
Well, we liked the design of xSchedule but found it to be underdesigned and undermaintained, and getting the sort of simplicity and features we wanted to see in the future would have been difficult on that codebase.
On the other hand, FPP is more of a decentralized design, hybrid player+OS manager+cape firmware, and as a result, can be a bit complex to work with.
So, we started a new one, featuring:
- Node.js / Electron stack / React, for a modern UI that supports the same look both on the desktop and on the web (local or cloud)
- Simplicity, starting with how songs and playlists are maintained
- Affero GPL licensing, so it is free forever
September 2026: With 0.6 wrapping up, we expect 0.7 to contain one more round of architectural features related to the playback pipeline (pixel data and audio). We also expect to add some smaller features (brightness control, more schedule options, video playback, and a round of cloud improvements). October onward will be focused on stability and fixes.
We have a lot of features planned for the coming years. We aim to simplify the way the xLights ecosystem works, while solving long-standing problems. We have a plan for interactive show elements, but without resorting to a complex and brittle plugin architecture or a tangled web of version dependencies.
Despite that broad scope, we want to avoid the complexity that currently plagues the xLights ecosystem, so there are a few things we do not expect we will ever implement:
- USB controllers
- Cape support (this is a player, not a controller firmware)
- A complex plugin architecture
EZPlayer is developed in part by EZRGB. EZRGB feels that the community should have a PC-based player that is easy to use, and hosts cloud functionality for the community and their commercial clients.
See DEVELOPING.md.
Your various files (song lists, playlists, schedules, and settings) end up in your show folder in ./ezplayer in .json files. You might want to back those up if you spend a lot of time working on them.