Teensy 4.1/64x128 RGB Display Errors

Has anyone had or heard of any difficulties with the FeatureDemo working on 4-32x64 pixels (arranged in 64x128)? I can get the top two displays to work and I can get the bottom two displays to work independently, but when I have all 4 on, the first display works fine, but the top left display displays every other row, and the other displays seem to do something random.

I can share any settings anyone might find helpful. Thanks in advance,


Yes, please share your settings and what platform you’re using

Thank you for the reply, Louis. I am using Teensy 4.1.

I am currently using the following setup. All 4 boards are powered/connected. The boards are connected in a reverse Z orientation with the Teensy providing input to the top right board, then a short connector to the top left board, then a long connector to the bottom right board, then a final short connector to the last board on the bottom left.

I have attempted 36x192, but the simple act of connecting board two to board 3 causes display 2 to skip rows.

Thank you for your help!


#include <MatrixHardware_Teensy4_ShieldV5.h> // SmartLED Shield for Teensy 4 (V5)
#include <SmartMatrix.h>

#define COLOR_DEPTH 24
const uint16_t kMatrixWidth = 128; // Set to the width of your display, must be a multiple of 8
const uint16_t kMatrixHeight = 64; // Set to the height of your display
const uint8_t kRefreshDepth = 36;
const uint8_t kDmaBufferRows = 4;
const uint8_t kPanelType = SM_PANELTYPE_HUB75_32ROW_MOD16SCAN;
const uint32_t kMatrixOptions = (SM_HUB75_OPTIONS_NONE);
const uint8_t kBackgroundLayerOptions = (SM_BACKGROUND_OPTIONS_NONE);
const uint8_t kScrollingLayerOptions = (SM_SCROLLING_OPTIONS_NONE);
const uint8_t kIndexedLayerOptions = (SM_INDEXED_OPTIONS_NONE);

Looks like a faulty ribbon cable or connector especially if you can make each panel work by itself using the same settings. Did you try switching the order of the panels?

I only have 2 long ribbon cables that connect from the output of the top left panel to the input of the bottom right panel, and they both produce the same result.

The simple act of connecting the output of the 2nd (top left) panel to either of the bottom panels causes the 2nd panel to change to displaying every other row. This happens even if want to use 3 panels for 32x192. I tried using const int32_t kMatrixOptions = (SM_HUB75_OPTIONS_C_SHAPE_STACKING); thinking I had the order of the panels wrong, but this did not work either.

I saw where Louis got a 64x128 working, so I know it’s possible.

Thanks for the suggestion.


Oh I’m sorry easone. I perhaps know why you suggested a faulty ribbon cable… the first picture I posted had the bottom two panels blank. They aren’t blank, but just aren’t displaying anything recognizable. Posting that picture was my mistake.

Can you drive either of the bottom panels independently?

Yes, all 4 panels work normally when I set the width to 64 and the height to 32 and move the Teensy/SmartMatrix Shield to each panel. And the top 2 panels work normally with the width at 128 and the height to 32. And the bottom 2 panels work normally with the width set at 128 and the height to 32.

And the top 2 panels work normally with the width set at 128 and the height 64, and only the top 2 panels connected. It doesn’t appear to like it when I connect the bottom panels to the working top 2 panels.

I assume that the correct orientation of the panels is (for the default SM_HUB75_OPTIONS_NONE) and perhaps 3 and 4 reverse if I use SM_HUB75_OPTIONS_C_SHAPE_STACKING, but that doesn’t work either.

Out 2 In <---- Out 1 In – Teensy

Out 4 In <---- Out 3 In

I see my other “connection” between the Out of Panel 2 and the In of Panel 3 did not appear, but that’s how they are wired.

I suspect your long ribbon cables are both faulty, possibly with one connector reversed… Try changing the physical layout of the boards so you only use short ribbon cables?

Okay, I’ll try that. In that case, is the correct use of SM_HUB75_OPTIONS_C_SHAPE_STACKING for me to reverse the connections between panels 3 and 4 as below?

Out 2 In <---- Out 1 In – Teensy
Out 4 In ----> Out 3 In

You will need to rotate panels 3 and 4 by 180 degrees so their inputs and outputs are correct.

easone, that was it!!! The long ribbon cables must have been bad. I never would have thought that a bad ribbon cable attached to the output of one panel would affect that panel’s display.

And I looked at that SM_HUB75_OPTIONS_C_SHAPE_STACKING for a while and would have never thought about flipping the bottom panels!

Thank you so much!