Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug: LED strips longer than 74 LEDs are not working with the FX library if controller is ESP32 based #368

Open
lackoder opened this issue Dec 27, 2024 · 11 comments

Comments

@lackoder
Copy link

lackoder commented Dec 27, 2024

Okay, I had some hard time to find out that the bug is in this FX library. I have a 144 LEDs strip with RGB LEDs and I wanted to make it work with the FX library on an ESP32 D1 mini (Wemos). It turned out if I set the number of leds higher than 74, it will not work (LEDs are not using FX or turn on at all). It seems another library, FastLED had the same issue, so I tried their sample code and boom, all 144 LEDs started to work on the same hardware setup because they fixed it in their lib since then. You can read more about it here:
https://www.reddit.com/r/FastLED/comments/tbhkb4/fastled_with_esp32_issues_with_strings_longer/

It means your FX library has the same timing issue somewhere in your library that if the number of leds is less or equal to 74: it works on my hardware but only half of the LEDs work, if set to 75 or greater: it doesn't work at all, no fx, leds not turning on.

On the other hand, an ESP8266 work flawlessly on the same hardware setup, instead of ESP32 with an ESP8266 with your library, all 144 LEDs.

Can you fix this for me pls? I have been using your FX lib on eps8266 for long time, but time to move to esp32.

@lackoder lackoder changed the title Bug: LED strips longer than 74 LEDs are not working with the FX library Bug: LED strips longer than 74 LEDs are not working with the FX library if controller is ESP32 based Dec 27, 2024
@moose4lord
Copy link
Collaborator

moose4lord commented Dec 27, 2024

This is a known issue with the Adafruit_NeoPixel library (which WS2812FX extends) and the new arduino_esp32 core v3.x.x.
See #356, #365 and adafruit/Adafruit_NeoPixel#402.
Until Adafruit fixes its lib, you can use board manager to downgrade the ESP32 core to v2.0.17.

@lackoder
Copy link
Author

Ah, okay. Setting it back to 2.0.17 worked.. but this is just a workaround, Arduino IDE keeps asking if I want to upgrade a platform unfortunately.

@moose4lord
Copy link
Collaborator

Hey, the constant nagging to upgrade is a pain.
I've seen other problems with arduino-esp32 v3.0.x besides the RMT debacle, especially with ESP32-S3 hardware. I think I'll be on v2.0.17 for quite a while.

@hallmark
Copy link

A fix to the NeoPixel library was merged 12 hours ago, so with a new release soon there is positive movement on this.

adafruit/Adafruit_NeoPixel#394

@moose4lord do you have link(s) to these other issues with ESP33-S3 hardware? I'm working on a project with my kids and was planning to move over from a Feather ESP32-S2 to a more compact setup with a QT Py S3.

And hoping to play around with Matter, so I really do want to stay on arduino-esp32 v3.0.x. 😅

@moose4lord
Copy link
Collaborator

That's good to hear. I was beginning to think Adafruit wasn't interested in fixing this issue. I'll have to grab it from their GitHub page and try it out.

I have to back peddle a bit on my statement about the ESP32-S3 and arduino-esp32 v3.0.x. I guess my problem was more with the EP32-S3 and not so much arduino-esp32 v3.0.x. I had been working for a while with the original ESP32 and thought the ESP32-S3 would be more or less a drop in replacement, but that didn't turn out to be the case. One of my sketches used 5 of the 8 RMT channels in the original ESP32 to transmit data, but I found out the ESP32-S3, while having 8 RMT channels, only 4 are transmit-only channels. The other 4 channels are receive-only channels. So that was a bummer. I also didn't realize the ESP32-S3 has only 384kB of flash memory, as opposed to the original ESP32's 448kB. My sketch, which uses WiFi AND Bluetooth AND OTA, was too big to fit in the ESP32-S3's flash.

So lesson learned. Look at the hardware specs before committing to a new processor.

@moose4lord
Copy link
Collaborator

Just tested the Adafruit_NeoPixel library from Adafruit's GitHub page. Ran with arduino-esp32 v3.0.7 and 500 LEDs, and no crashes. Worked great! Hopefully it'll get pushed to the Arduino library manager repository soon.

@tyeth
Copy link

tyeth commented Jan 14, 2025

Released just now 👍

@lackoder
Copy link
Author

How stable is it? Shall I grab out the guts of my tech to update to v3?

@tyeth
Copy link

tyeth commented Jan 14, 2025

Sorry I meant the Adafruit NeoPixel library was just released, but this library will presumably need a new release to pick it up.

@moose4lord
Copy link
Collaborator

Adafruit_NeoPixel v1.12.4 is now available in the library manager. Works well. You do not need a new version of the WS2812FX lib to implement this fix. Once you install the latest version of Adafruit_NeoPixel, WS2812FX will pick up the changes automatically.

@lackoder
Copy link
Author

Now the v2 hack is gone! I am very happy with it. Works with a Wemos D1 mini ESP32 based board with the 1.4.5 fx library like a charm. Just tested with a 144 leds strip, everything is fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants