I’ve been working on a new LED-based project recently. This is my first time working with controllable LEDs, and for the most part I haven’t run into any major issues. The example project I’m working off of is using an RPi, but the only Pi I have at the moment is a very old Model B. That’s been fine for learning the LED stuff, but it’s not powerful enough for the actual project.
I picked up a ROC-RK3328-CC with the hopes it would mostly be a drop in replacement. The Adafruit Blinka library seemed to support a wide range of SBCs, not just Pis, including some Libre models which I thought was promising. I was able to patch Blinka and another library to better support the ROC-RK3328-CC. But it turns out that the WS281X (Neopixel) support in Blinka is highly specific to Pis, even though other GPIO aspects would work.
I’ve done a lot of searching, and I’ve hit a dead end, so here’s my question: is it at all feasible to control WS281X LEDs from a ROC-RK3328-CC? Nearly all resources I find related to the WS281X protocol and small boards say something like, “WS281X uses very specific timings, and must be controlled from a real-time chip like an Arduino. Things like RPis aren’t precise enough.” But then I have a Pi that is controlling them just fine, and clearly that’s very common.
I mostly write software and only occasionally dip into hardware projects, so this is definitely hitting my knowledge limit. Is there something specific about Raspberry Pis that make them better suited for working with WS281X than other SBCs? Or is it more like: Pis can do it, but aren’t ideal, and other boards also could do it in a less-than-ideal way?
I’m probably just searching wrong, but I have found zero examples online of someone controlling WS281X from a Linux-based board that isn’t a Raspberry Pi. My instincts tell me that if I have a computer and it’s got some GPIO pins, it should be possible. But if literally no one else is doing it, then maybe I’m wrong, or maybe it’s just so much work it’s not worth it.
Should I continue down this path? I’m happy to spend some time in C or Rust if necessary to do the low-level work, I just want some confirmation that there isn’t some fundamental blocker with boards like ROC-RK3328-CC that make it impossible.
Thanks so much for any help!