Skip to content

Driving a HUB75 panel

A HUB75 LED panel can be driven straight from the board's pins with the HUB75 driver, or over Ethernet through a receiving card with Panel Card. Board, panel and settings are below, in that order.

Which of the two paths

A receiving card earns its place above roughly 16,384 pixels. Below that, a card is a Windows tool to configure and a dedicated Ethernet link to run, for a panel the board could drive itself. The HUB75 driver is the small end of that split; for a card, see Driving LED panels with a receiving card.

A MoonHub75 drives a 64x64 1/32-scan panel at 6-bit and 1,508 Hz. Larger walls and other panel families wait on reports: the refresh reading plus your geometry makes one useful.

Which board

The chip needs an LCD_CAM or a Parlio block: an S3, a P4 or an S31. The classic ESP32 has neither, and its 13 usable output GPIOs are all a 1/16 port needs, which leaves nothing for a strand, a button or a microphone.

Three boards have published pin maps, which the board select fills in:

  • MoonHub75, a Lilygo T7-S3 on a passive adapter. It also carries an INMP441 microphone socket on IO10/11/12, so an audio-reactive effect and a panel run together.
  • Adafruit MatrixPortal S3. Three of its lines sit on GPIO 35 to 37, which the octal-PSRAM images hold, so it runs the esp32s3-zero image.
  • Waveshare ESP32-S3 RGB Matrix, SKU 34422. The Waveshare ESP32-S3-Matrix is a different product, with an onboard 8x8 matrix and no HUB75 connector.

A published map hides the pin rows, since those lines are soldered; they stay bound and still drive the panel. The generic per-chip sets and Custom show them. A line on a pin the chip wires to flash or PSRAM is refused before init, with the line named. Free pins per chip: GPIO usage.

The one naming trap

A panel's ribbon names its color lines R1/G1/B1 (upper half) and R2/G2/B2 (lower half). Some board docs call the same pairs R0/G0/B0 and R1/G1/B1.

Settings the panel cannot tell you

  • scanRate is read off the panel's label or listing, not calculated: two panels of the same size can scan differently. A 1/32-scan panel needs the e line; on 1/16 that pin is free.
  • peripheral matters on a P4, which has one LCD_CAM and one Parlio: a board already driving LED strips from one needs the panel on the other.
  • clockEdge: every pixel one column over means the other edge.

Depth, refresh and brightness

Every bit plane is a full scan, so bitDepth costs refresh and memory linearly. One 64x64 panel at 1/32 scan is 16,384 bytes a frame at 4-bit and 24,576 at 6-bit. Brightness on a HUB75 panel is time, not amplitude, so lowering it shortens each plane's lit time and keeps every color level. The price is top brightness: full white lights about a third of the time at 6-bit.

If a panel flickers, refresh is the measured rate to report.