and what were a color depth and refresh rate finally?
I’d Likely just run two pis with parts of the same image, controlled by a local webserver, which “should” work, but requires working boards first ![]()
How many panels is possible for one channel on your library, or atleast on one pi displaying an image?
Easy enough to make this work since i have 5 rows of 4, which would be 5 channels or 2 pis worth
Where did you get the 128x64 panels? do you happen to have a link?
I doubt i can sell my panels in time so i got approval to just buy more from the college
realisticaly the images wont be animated, and will change at the same time, aslong as each one can display the image it pulls from the webserver thats all i need
the same… about 4x 128x64. But the color only 12bits (RGB444)
not surprising, as long as each lib works at wire speed (rPi can go faster but the panels can’t, so it’s limited by the panels and changing to another microcontroller will not improve this).
You were asking me how I run it:
#ifdef GFXDISPLAY_M384BY256
defaults.rows = 64;
defaults.cols = 128;
defaults.chain_length = 4;
defaults.parallel = 3;
// 50 is faster but makes the screen dimmer
defaults.pwm_lsb_nanoseconds = 100;
// lower color depth definitely helps refresh
defaults.pwm_bits = 7;
// Time dithering of lower bits
// 2 changes speed from 400Hz (from 160Hz)
// 1 is also an option
defaults.pwm_dither_bits = 2;
defaults.led_rgb_sequence = "RBG";
defaults.panel_type = "FM6126A";
defaults.pixel_mapper_config = "V-mapper";
I get 150-ish Hz, with 21bpp color depth
root@rPi4:~# ~/rpi-rgb-led-matrix/examples-api-use/demo --led-panel-type=FM6126 --led-rows=64 --led-cols=128 --led-chain=4 --led-parallel=3 --led-show-refresh --led-scan-mode=0 --led-pwm-bits=7 --led-pwm-lsb-nanoseconds=50 -D0 --led-row-addr-type=0 --led-slowdown-gpio=3 --led-pwm-dither-bits=2
150.8Hz
if I drop to 12bpp with –led-pwm-bits=4, it goes up to 280Hz
its less changing to another microcontroller and using a second RPI, sectioning off the image / video to be two parts, one given to one of the pis (top half to one and bottom half to another, this would let me stay under 4 panels (128x64) a channel, just would mean i need 5 channels
that should work right? if its just an image they dont have to be synced up (for now) and each pi can each run a separate instance
or am i misinterpreting?
yes, it would work, what’s what video walls do with many more sections.
The only tricky thing is keeping all those controllers in sync, which in your case is only 2.
That should be easy enough to do using software, especially since i can do the video sync part on my own once the project is done, otherwise its mainly going to be a static image or a gif with repeating weather effects
the issue now is finding replacement boards
waveshare has 64x64 versions of the same pitches which im looking at, but im not sure if they are PWM or not
its possible to chain 8 of those together to make an equivilent to the 4 panels i was thinking of right? and wont overload the channel?
What boards do you use on your large display project? or how could i go about looking for one that uses the supported types?
-
yes chaining 2x 64x64 will give you a 128x64 panel that will work the same as far as the lib is concerned
-
I buy from Azerone, either on amazon if it’s in local stock, or directly from Hongren (I send him paypal, he ships to me from China). He knows what the chips are and never shipped me the wrong panel:
or
https://www.amazon.com/Indoor-128x64-Module-256mm128mm-256128mm/dp/B0869P1DCH/ref=sr_1_2
You can send money to him on faith if you need to direct order from china, I’ve worked with him for years
Since FB is starting to be more and more of a problem, I used the opportunity to get his whatsapp number: +86 159 2059 2439
I would normally not work with a random person in China I don’t know but in this case I can definitely vouch for him, it’s safe to contact him and order from him directly. Be specific on exactly what you need (likely ABCDE panels and not ABC and of course, not PWM).
If you mention my name and tell him you need the same I had, that works too
thats awesome! thank you, i’ll get in contact with him, replacements were shaping up to be 1500 cad and i would rather avoid that if i can
even if i have to pay for rush shipping
Since you use 6126a’s for your 128x64s i assume that would be the ideal to ask for? what about a Ideal multiplexing IC?
i need them to be 2.5mm pitch for the stuff i have for the framing, but i assume that’s not an issue, more-so the chips themselves?
Honestly, there are so many chips, I didn’t ask for a specific chip, just “not PWM” and “ABCDE addressing” (not ABC).
Just a heads up that apparently China is on holiday break (chinese new year) so you’ll need to wait a week or so to get anything shipped I think.
I’ll probably just message those parameters and ask to verify the chip before purchase just in case, since i don’t want to go in blind again
though if its the same manufacturer its likely not an issue, i just want to hedge my bets before dropping another chunk of cash
I didn’t notice where @marcmerlin mentioning he was using the 6126 driver. I think you’re mistaken. If you have a choice, it’s best to avoid the 6126 and 6127 chips.
Any “138 type” multiplexer from the table
Some of my 128x64 ABCDE panels were using FM6126 and FM6127, not my first choice, but they worked once they got the init
My newer same sized P2 flexible panels are using another chip I haven’t actually checked which one, and “just work” with ABCDE addressing and no init
Using any “init” chip is a lottery since we usually know nothing about the meaning of this initialization and use random values that someone has chosen for their panel and which may not be optimal for a particular case.
In addition, even with the data loading itself there are some ambiguities - for example, for FM6126 I came across different procedures… and the protocol that I used in my library is slightly different from the hzeller’s code.
Hi @marcmerlin
Yesterday, I was studying the FM6126/6127 chip support code in the library to understand how difficult it is to add support for @Remii 's panels with its DP3246 chips.
FM6126 drivers differ from the standard ones in two ways: they require initialization at startup and have a special latching method when loading data, where the LAT pulse isn’t triggered after the entire load, but is held high for the last few clock pulses.
I found initialization for the fm6126 and 6127 chips in the code, but I don’t see any special data loading procedure. And searching for the string “fm6126” doesn’t seem to yield any other occurrences in the code.
But since you used panels with 6126 and they worked for you, that means this part should be there, and I just didn’t find it. Can you tell me where to look?
@board707 I didn’t write that code, so I can’t tell you where things are, however if you look at github history as well a git blame, you’ll find the CLs that added FMxxxx support.
But, while I hear what you’re saying, it does not match my experience.
I absolutely remember taking a FM6126 panel, sending a special command to it from the linux command line before support was added to the lib, and then using the panel with the old code and it worked.
I also remember initializing the panel on rpi, moving it to a teensy with smartmatrix without powering the panel off, and it worked.
So my testing/recollection does seem to confirm that only the init string was truly needed, even if the spec sheet might say otherwise. It’s possible what the lib does is not up to spec but just happens to work.
Ok, thank you for the info.
So @Remii could test his panels with library 6126 settings, just make slight tuning of initialization values.
i think aslong as the fm6126 does the same thing, writing to latch twice (one for each control register) before OE, i can try to mess with latch timing if its just variables and see if i can get some kind of control working
after talking with Hongren on @marcmerlin 's suggestion it seems like i can get replacements at a beyond reasonable price, but i can still test to try and get the 3246 working while they are on order
As I see in datasheet, the DP3246 chip required a two control registers with 11 and 12 latches, while a FM6126 uses a two registers with 12 and 13 latches. Also you will need to change register values.
So I think the most easiest way will be to edit a InitFM6126() method, changing the register values and latches in place. As for testing purposes, you don’t need to rename the method itself, just try to run a library example with fm6126 option after editing.
The method is located in Framebuffer.cc file, starting from the line 513.
PS
I could help you write the code, but that doesn’t make much sense since I don’t have such panels and so, you’ll still have to debug it yourself.