HUB75 Panels - pixelmatix/SmartMatrix GitHub Wiki
HUB75 RGB panels are typically used for LED billboards (e.g. Times Square), making them cost-effective and readily available. They're much cheaper per-pixel than addressable LEDs, and available in a wide range of pixel pitch (as of now, 2 mm spacing up to 10 mm spacing per LED). They do require an external controller to continually send data to the panels to refresh them line by line, and that's where the SmartLED Shield and SmartMatrix library come in. Adafruit, Sparkfun, and other distributors carry panels that are known to be compatible with SmartLED Shield and the SmartMatrix library, but most panels on AliExpress and other sources are compatible as well.
HUB75 Panels Ranging from P2 to P10 pitch
There doesn't seem to be an official standard for these displays, but they usually have the same 2x8 connector and "HUB75" pinout for connecting to a controller board. Power is supplied to the displays through a separate connection: either two screw terminals, or a 4-pin 0.156" spacing connector.
The pixel pitch and "RGB" are good search terms on Aliexpress, e.g. "P6 RGB" for a 6 mm pitch RGB HUB75 panel.
Despite what they look like when refreshed at a high rate, the panels typically only display two rows of pixels at a time, with each pixel either in a fully on or fully off state. We see a full image with high color depth as a result of SmartMatrix Library updating the content of the rows two at a time, toggling the LEDs on and off, and cycling through the rows at a high rate of speed.
HUB75 Pinout ("HUB75E" with addresses A-E)
The SmartMatrix Library and SmartMatrix Shield has been tested with many panels from Adafruit and SparkFun, as well as Chinese vendors. If you're unsure of compatibility, please post a link to the panel you're interested in to the SmartMatrix Community
These panels can draw a large amount of current when displaying full white on all pixels at full brightness. When displaying other graphics, there will usually be a mix of light and dark pixels, and you may run your panels at less than 100% brightness, so it's hard to estimate the power supply size needed.
For a P6 panel, you can estimate the max current per fully lit LED is about 60mA. Smaller pitch panels have smaller LEDs that draw less current. Larger pitch panels may have larger LEDs that draw more. A typical panel draws only two rows at a time, across the width of a panel. A 64x32 P6 panel may draw up to 64260mA = 7.68A current!
Here's an article that shows some power supply current measurements for these panels:
Octoscroller - NYC Resistor
A 16x32 and 32x32 panel will have similar current draw, which may seem strange at first examination, but both panels only light up two rows at a time when refreshing (one in the top half and one in the bottom half). At any moment in time, either display will only have up to 64 LEDs lit at once. The 16x32 panel scans through eight row pairs per frame, and the 32x32 panels scans through 16 row pairs per frame. The 32x32 panel refreshes twice the number of rows, but spends half the amount of time driving each row.
When SmartMatrix Library started, all panels had the same general characteristics:
- Panel contains two RGB channel inputs, driving one row of pixels per channel at a time, resulting in two visible rows evenly spaced vertically across the panel, going from left to right when viewed from the front
- The currently driven LED rows are selected with address lines driven directly
- There are
n=matrixHeight/2
rows to choose from, and2^n
address lines driven to select the row - e.g. a 32x16 panel would have 16/2=8 rows to choose from, with three address lines to select: "ABC"
- e.g. a 128x64 panel would have 128/2=64 rows to choose from, with five address lines to select: "ABCDE"
- There are
- Driver chipsets on the panel act as simple shift registers
The panels sold by Adafruit and SparkFun all have these characteristics and are therefore easily supported by SmartMatrix Library
HUB75 manufacturers started making panels that didn't follow the above "rules", and SmartMatrix Library may not be able to support them. When you order panels from Aliexpress or other vendors, you're taking a chance as the vendors typically just send whatever panels they have in stock, not necessarily matching the photos or specifications they list, even if you request a panel with a specific chipset or configuration.
Panels with a FM6126A/FM6126B chipset require a special initialization sequence to be sent before starting SmartMatrix Library. Without the sequence, the panels may display seemingly random pixels, or be completely blank. There is initial support for this in SmartMatrix Library 4.0, but not for all platforms:
-
Teensy platforms: supported
-
ESP32: limited support, see this discussion
- Also note that if you're using a SmartLED Shield or the latch circuit with an ESP32, you may need to modify your circuit and Hardware header file to define and use the
CLK_MANUAL_PIN
. See more details here
- Also note that if you're using a SmartLED Shield or the latch circuit with an ESP32, you may need to modify your circuit and Hardware header file to define and use the
-
Add to
kMatrixOptions
:SM_HUB75_OPTIONS_FM6126A_RESET_AT_START
Some panels drive more than one row per RGB channel at a time, and are more difficult for SmartMatrix Library to refresh. If running example code on your panel results in scrambled text and graphics being displayed, you might have one of these panels. These panels are only supported in SmartMatrix Library 4. The MultiRowRefreshMapping example sketch walks you through determining the mapping for your panel, how to add the mapping to SmartMatrix Library, and how to test to make sure the mapping is applied correctly. This is not yet an easy process. You may find that one of the already added panel types supports your panel. Feel free to record video of running the MultiRowRefreshMapping sketch and post to the SmartMatrix Community to get help with mapping a new panel.
There are some high pixel density panels, e.g. 64x64 with 2.5mm pitch, that have only "A" and "B" address lines despite being specified as /32 scan (normally should have 5 address lines "A,B,C,D,E"). They use a shift register for updating the address, instead of directly driving the address lines.
These panels have a chipset that requires a series of pulses on the A and B ("AB") or A and C ("AC" or "ABC") lines while the latch signal is high, to change which row is driven. This is a significant departure from how the generic panels work, and is incompatible with how SmartMatrix Library and SmartMatrix/SmartLED Shield hardware was intended to work.
How would you know if you had one of these panels? Here's an incomplete list of clues:
- You have ICN2038S chips on the board
- The silkscreen for the HUB75 connector only shows the "A" and "B", or "A", "B" and "C" signals for addressing, when your panel is large
It won't be possible to support these with the Teensy platform, due to the way the latch is controlled by a timer, and the address bits are controlled by DMA driving GPIO.
On the ESP32, it should be possible to support these panels with certain hardware configurations, but it's been difficult to get a sample of these panels to test. The panels with this configuration only seem to show up for people that don't want them. If you have a panel with this configuration and want to donate it (with shipping to the UK) to help with adding support with this feature for the ESP32 platforms, please reach out!
Some discussion here:
- https://community.pixelmatix.com/t/new-p2-1-32-scan-64-64-led-panel-with-different-ic-chip-controller/281
- https://github.com/pixelmatix/SmartMatrix/issues/49
These panels are supported by hzeller's Raspberry Pi matrix driver: https://github.com/hzeller/rpi-rgb-led-matrix
If you're ordering from a vendor that may send you panels incompatible with SmartMatrix Library, you may want to request specific chipset that are known to work. Here's an (very) incomplete list of chipsets that are known to work
- ICN2028BP
- FM6124
- DP5220X
- ICN2028AP
Here's an incomplete list of chipsets that are known to be incompatible:
- ICN2038S
- FM6126A (limited compatibility) - search for
SM_HUB75_OPTIONS_FM6126A_RESET_AT_START
in Features - TC7558N used in "AB"/"AC"/"ABC" panels(?)
- GS6238S - though there may be a possible fix
- ICN2053