ThisCalculator

Everyday

ESP32 Board Gave Jellyfin the Marquee It Deserves?

Updated · Standard formula, shown below

ESP32 Board Gave Jellyfin the Marquee It Deserves?

Yes, an ESP32 board can give Jellyfin a marquee—a scrolling text display—and it deserves it for the price and flexibility. You connect a cheap LED matrix to the ESP32, run a small client that talks to your Jellyfin server, and it shows what’s playing, who’s playing it, and the next episode in a scrolling banner.

What the ESP32 Actually Does Here

The ESP32 is a low-cost microcontroller with built-in Wi-Fi and Bluetooth. For this project, it acts as a dedicated display driver: it fetches JSON data from your Jellyfin server’s API, formats it into a short text message, and pushes it to an LED matrix over a data cable. It does not transcode video, store media, or run the Jellyfin server itself—that stays on your PC, NAS, or mini server.

The typical setup uses an ESP32 DevKit board (about $5–$10) and a P3 or P4 64×32 LED matrix panel (about $15–$30). The panel connects via the HUB75 interface, which the ESP32 can drive directly with the right library. You power the panel with a 5V supply capable of 2–4 amps, depending on panel size and brightness.

Why Jellyfin Specifically

Jellyfin exposes a REST API that returns current playback sessions. The endpoint /Sessions gives you, for each active session, the user name, the item being played (movie, episode, song), the playback position, and the runtime. A small script on the ESP32 polls this endpoint every few seconds, formats a line like “Alice is watching Episode 3 of The Expanse — 42%�, and scrolls it across the matrix.

The same approach works with Plex or Emby, but Jellyfin is fully self-hosted and free, so there is no third-party server dependency. The API is also stable and well-documented, which makes writing the client straightforward. You do not need a separate Raspberry Pi or a full computer just for the display—the ESP32 is enough.

Hardware You Need

  • An ESP32 development board (any with at least 4 MB flash; the classic DevKitC works).
  • A HUB75 LED matrix panel (64×32 or 64×64; P3 or P4 pitch).
  • A 5V power supply (2A for 64×32 at moderate brightness, 4A for 64×64 or full white).
  • Jumper wires or a ribbon cable for the HUB75 connector.
  • Optional: a 3D-printed or acrylic frame to hold the panel.

Do not power the panel from the ESP32’s 5V pin—it cannot supply enough current. Use a separate supply and connect the grounds together.

Software Setup Step by Step

  1. Install the Arduino IDE or PlatformIO and add the ESP32 board package.
  2. Install the ESP32-HUB75-MatrixPanel-I2S-DMA library (the most common one for driving HUB75 panels).
  3. Install the ArduinoJson library for parsing Jellyfin’s JSON responses.
  4. Write a sketch that connects to Wi-Fi, fetches /Sessions?api_key=YOUR_KEY, and parses the first active session.
  5. Format the text, set the scroll speed, and call panel.drawText() in a loop.
  6. Set the API key by going to Jellyfin Dashboard → API Keys → Create Key.

For a ready-made project, search for “Jellyfin ESP32 marquee� on GitHub—several open-source implementations exist that you can flash directly.

Common Problems and Fixes

No display output: Check the HUB75 wiring. The ESP32 pins are not standardized across libraries; the MatrixPanel library has a default pinout, but you must match it exactly. Use the library’s example to test with a solid color first.

Flickering or ghosting: Usually a power issue. Add a 1000 µF capacitor across the panel’s power input, and make sure the 5V supply can handle the panel’s peak current.

Wi-Fi drops: The ESP32’s Wi-Fi is reliable, but the antenna is small. Keep the board away from metal enclosures and power supplies. If it still drops, increase the polling interval to 10 seconds rather than 2.

Text is too small or too large: The default font in the library is 5×7 pixels. For a 64×32 panel, that gives about 12 characters visible at once. Use a larger font library (like TomThumb or Org_01) for readability.

Costs and Alternatives

The total hardware cost is roughly $20–$40, depending on panel size and where you buy. That is far cheaper than a dedicated “Now Playing� device like an Amazon Echo Show or a smart display, and it is fully customizable.

Alternatives include:

  • A Raspberry Pi Zero with an HDMI display—more expensive and more power-hungry, but easier to render rich graphics.
  • A cheap Android tablet running a Jellyfin dashboard app—simpler but not a marquee.
  • An old smartphone with a scrolling web page—works but looks less like a marquee.

The ESP32 wins on size, power draw (under 1W for the board), and the authentic LED marquee look.

Safety and Power Notes

The LED matrix draws significant current at full brightness. Always use a regulated 5V supply rated for at least the panel’s maximum current (check the panel’s datasheet). Do not leave the panel at 100% brightness for long periods—it generates heat and reduces LED lifespan. If the panel gets hot to the touch, reduce brightness in software or add a small fan.

When wiring, disconnect power before changing connections. The HUB75 connector has 16 pins; a single misaligned ribbon cable can short the data lines and damage the ESP32’s GPIO pins.

Frequently Asked Questions

Can I use an ESP8266 instead of an ESP32? No. The ESP8266 lacks the I2S DMA hardware needed to drive HUB75 panels smoothly. It can drive smaller 8×8 or 16×16 matrices, but not the 64×32 panels that make a good marquee.

Does it work with multiple users at once? Yes, the API returns all active sessions. You can cycle through them, showing each user’s playback for a few seconds, or show the most recent one. The script can sort by LastPlaybackCheckIn to pick the most recent.

Can I show album art? Not directly on a single-color or RGB matrix without significant work. The panel is low-resolution (64×32), so album art would be tiny and blocky. Some projects use a second, higher-resolution display for art, but that defeats the marquee aesthetic.

What if my Jellyfin server is on a different network? The ESP32 must reach the server’s IP and port. If the server is behind a VPN or firewall, you need to allow the ESP32’s IP in Jellyfin’s network settings. For remote access, use a reverse proxy with HTTPS, but that adds latency and complexity.

Is this project beginner-friendly? It is intermediate. If you have flashed an ESP32 with Blink, you can do this, but expect to debug wiring and JSON parsing. The GitHub projects include wiring diagrams, so start with one of those rather than from scratch.

Can I use it as a clock when nothing is playing? Yes, the same sketch can fetch the time from an NTP server and display it. Many implementations do exactly that as a fallback state.

Related

Method: the standard formula for this calculation, rounded as each result states. See how the calculators work or report an error.