WS281x, SK6812 driver for the Omega2? [Solved]
If you install a new build system and run make, ledchain is included correctly in the Omega2Pro firmware. No other configuration is required.
@crispyoz As @Lazar-Demin wrote above practically every recent firmware already has the ledchain kernel module.
Probably for most of us this is simpler to use (and change its configuration only) than build some custom firmware.
luz last edited by
@Alexandr-Didenko thanks for pointing me to that old post! Apparently that was a cut&paste error of mine back in 2017
I just edited it to have it point to the github repo now.
And what we can to write in feeds.conf.default?
src-git plan44 https://github.com/plan44/plan44-feed.git?
Yes, I think that would work (master branch should be the default) but to make sure I usually specify the branch explicitly:
src-git plan44 https://github.com/plan44/plan44-feed.git;master
Note that if
feeds.confdoes not exist already, first copy
feeds.confand then append the new line.
(Side note: It's a widespread error to directly edit
feeds.conf.default, altough one should not!
feeds.confis the mechanism intended to customize your build , like
.configor the contents of
files/. All of these are NOT in the openwrt git repo, and belong to you.
feeds.conf.defaulthowever belongs to openwrt)
@luz Sorry to dragging you back in the past to remind you about this beautiful creation of yours!
I am using p44-ledchain on the Omage 2+ on the pwm0(Pin 18) with 5 ws2812 LEDs with my Custom PCB board.
I used the below command line to insert the driver(as mentioned in the readme);
insmod p44-ledchain ledchain0=0,5,1,10,5100
Here the issue I am facing is that when i give command to update all 5 LEDs, it does not control all five LEDs. Sometimes it glows 3 and sometime 2.
Eg. To glow all 5 LEDs in Bright Blue color; I applied below command but it turned on only first 3 LEDs in Green, 1 bright blue, 1 dim blue.
echo -e "\x00\x00\xFF\x00\x00\xFF\x00\x00\xFF\x00\x00\xFF\x00\x00\xFF" > /dev/ledchain0
I am pretty sure that the driver if okay in terms of controlling the LEDs.
Can you help me to make this work by pointing to the points I might have missed.
@dixit What configuration parameters have you set for the ledchain module? I expect this is a timing issue, WS2812x seem to vary a bit depending on the manufacturer,
@crispyoz What do you mean by
What configuration parameters have you set for the ledchain module?
I am using p44-ledchain driver as it is and providing the above mentioned parameter while inserting the module.
use ledchain0(pwm0) in non-inverted mode, for 5 leds in chain, ws2812 ledtype, 10 retries, 5100ns Maxretries value(default suggested for ws2812 on readme Github)
Let me know what other information would be helpful?
@dixit If you read the documentation for the ledchain module you will note that it takes some configuration parameters, you can place these parameters in a text file: /etc/modules.d/91-p44-ledchain
Here is an example of mine:
Here is the documentation:
luz last edited by luz
5100ns Maxretries value(default suggested for ws2812 on readme Github)
Not actually default, but explicitly for a difficult WS2812 chain.
The problem with the idle time between bits is that while a too long idle time will not work with some WS2812, a too short idle time might be very hard for the Omega2 to meet at all, depending on interrupt load caused by other drivers.
So while in my experiments back then, 5100nS were usually fine, it might be too low in your case. I'd first try without specifying a time at all (having the driver use its internal default, which is 10000nS), and if that does not work, try values between 10000 and 5100.
Another thing: do you have a level shifter between the (3.3V) Omega2 pin and the (5V) input of the first WS2812 chip?
Without it, it very much depends on the exact voltages on the 3.3V and 5V rails. For example if 5V is a bit higher (say, 5.1V), the threshold on the input also rises a bit, and the 3.3V output's "high" might be not always be enough for a clean "high" input to the WS2812.
I had exactly this problem with the first version of the Pixelboard table, it started working reliably not before I put a 74AHCT1G125 (single gate version of the more common 74AHCT125) in between Omega2 and WS28xx input.
[Update: also see here]
5100ns Maxretries value(default suggested for ws2812 on readme Github)by this I meant the same as you said, could not convey though.
I checked the hardware design, we dont have level-shifter emplied. I will try with level shifter and let you know here.
I appreciate your prompt attention. Thank you @crispyoz @luz .