Embedded
Networked LED Scoreboard Controller
A Voltwyn prototype: a Raspberry Pi CM4 sender streams RGB888 frames over an isolated wired LAN to W5500-EVB-Pico2 receivers, each driving a 128 x 128 pixel region through two HUB75 outputs. The example layout is a 640 x 256 canvas across ten receivers at 20 frames/s, with an optional HDMI capture and video bridge path.
System architecture
Networked LED Scoreboard Controller
- CaptureTest pattern, raw RGB or HDMI video
- SendCM4 sender over isolated LAN
- CommitCRC fragments, acknowledge, then commit
- DisplayRP2350 PIO scanning to HUB75 panels
The challenge
A large LED scoreboard made of many HUB75 panels needs a controller that can show test patterns or live video across several receiver boards without tearing, stale images or a network fault leaving garbage on the display.
How the system works
Python sender tools handle discovery, configuration validation, test patterns and raw video. RP2350 receiver firmware in C parses CRC-checked fragments, prepares a complete frame, acknowledges it and waits for a separate commit before display. A PIO scanner drives the panels, and a watchdog and blanking timeout cover stalls.
Design decisions
- Split each frame into prepare, acknowledge and commit, so a receiver never shows a partial frame and expired or replayed frames are discarded.
- Blank the output if no frame is committed for over one second, and let a stopped scanner trip the watchdog.
- Bounded the pinned upstream DHCP client behind a guard that limits reads and rejects malformed or stale replies, without patching the dependency.
- Limited the transport to a trusted isolated display LAN, because CRC and source filtering are not authentication.
What the evidence shows
Host tests cover all three scan ratios, CRC, missing, corrupt, reordered and duplicate packets, frame-number and millisecond wrap, receiver resets at all 44 fragment boundaries, 1,280 DHCP option-length cases, localhost UDP with simulated receivers and an FFmpeg H.264 path. CI runs the host suite and builds the receiver firmware for each scan profile.