Controlling Multiple Strips of WS2812b LEDs

First and foremost, given this is my first post:

I <3 OctoPrint! I enjoy everything about 3D printing - the intersection of hardware hacking, Maker community, even coding... but discovering OctoPrint took me to the moon and exponentially increased my enjoyment.

It's been a delightful learning curve, one plug-in after another. Channeling my passion for WS2812b individually-addressable LEDs, I discovered Charlie / @cp2004 's awesome OctoPrint WS281x_LED_status plugin - and and delighted with the results! I'm using a 20-LED strip currently mounted horizontally across the top of the printer - providing not only visual status indications, but also providing illumination for OctoLapse timelapse sequences.

I completely understand the SPI hardware limitation on the Pi - and have been contemplating methods to drive additional strips. Of course, just using 'dumb' LEDs and simple switches / relays to control them via the Pi would be one option -- but where's the fun / challenge in that?

As a byproduct of another recent build ("Festive Holiday Lighting") creating an LED with 8 channels of 50 LEDs each... I got to thinking: What if something else was actually driving the LEDs - under the guidance of OctoPrint?

I considered an Arduino, or something like an SP105e controller - but settled on the Fadecandy board. Perhaps a bit of an overkill - but this board provides 8 discrete channels, each supporting up to 64 LEDs and includes an actively supported open source library.

I recently printed the LED Ring which mounts to the hotend (into which I've installed a strip of 11 WS2812b LEDs), and also have a NeoPixel ring I'd like to mount around my WebCam used with OctoLapse.

Since the Fadecandy is controlled via USB by the Raspberry Pi, it works around the SPI limitation. I'm just curious if anyone has already gone down this path and has any #ProTips or warnings? I see lots of great threads here on various LED setups - but nothing quite along these lines. Welcome any links to #RTFM if I missed some relevant documentation or discussion.

Finally, while I'm here and thinking of it: I built the level-shifter circuit to connect the 5v LED strip to the 3.3v logic level of the Pi, as discussed in Charlie's plugin wiki. Just curious - what type of enclosure have others used / built / printed for housing this added circuitry?



Hey there :slight_smile:

I don't use it myself (yet) but check out this great plugin by @Charlie_Powell

With wled you can turn an ESP8266/ESP32 into a great LED wifi controller.
I'm not sure how many channels are supported (but I think it's just one) but you can use a lot of LEDs on a channel (my strip got 300) and divide it in seperate segments.

I also used it for Christmas and Halloween lightning.

With @Charlie_Powell s plugin you can connect to one of those controllers and react to printer states including:

  • Idle
  • Disconnected
  • Print success
  • Print failed
  • Print paused

But keep in mind that this plugin is under early development, so please be patient as bugs are fixed and features are added :slight_smile:


I think the WLED plugin is still under development and might not be ready for prime time, but I bet @Charlie_Powell would love some feedback.


I'd better get on with finishing the plugin then... It's functional with the event reactive effects and such, but there's no guarantees that it actually does any thing useful yet.

So many projects, such little time (well, I say that, we are in Lockdown 3.0 so I actually have a lot of time) but given the amount of interest around WLED and this plugin I guess I had better get on with it...


@PrintedWeezl @Charlie_Powell -- Thanks for the quick replies! I'm already using Charlie's WS281x_LED_status plugin with great success and enjoyment -- and am familiar with the wled library, and have a veritable fleet of ESP32 / ESP8266 microcontrollers laying around -- so this sounds like a great place to look. Thanks for the heads up and pointers! I just wired up a fade candy with 3 outputs (Pixel Ring, hot-end LED ring and another short strip) and am experimenting with controlling each, independently - but it's a long road between here and integrating with OctoPrint. I'm off to check out (more of) Charlie's great work, and see if there's any way I can contribute. Thanks for the pointers - and for the community!