I'm programmer and my electronics knowledge and soldering skills are pretty basic.

I want to find a bright, addressable (a.k.a. digital) RGB LED strip which can be attached to RPi and programmed without any hassle in any programming language (although Python is not my favourite, I'd prefer JavaScript or even C++).

I want it a bright as possible, so preferably 12V, but 5V may be enough. It should not flicker as to not cause eye strain.

I'm confused about the controller options out there - so many different chips, different LEDs, different generations. For example, some options from Adafruit are:

  • NeoPixels, use WS2812S (older) or WS2812B (newer) - some comments on their website say that they might be not the best option for RPi;

  • weatherproof LPD8806 strip (but their older models might have HL1606 chip instead, so again I'm not sure how it would turn out);

  • DotStar, which is their newest model and has APA102 chip

Besides Adafruit, there are other options, which make things even more confusing. Like this one, which claims to be "WS2812B strip with integrated WS2811 controller". Or this one.

How can the stripe be WS2812B if it has WS2811 controller and is that better than Adafruit NeoPixels which have WS2812B only?

And also this one which has only WS2811. It's not a strip, but still a pretty cheap option. This might work for me if RPi can connect to it.

Essentially, the question boils down to this:

Which LED strips and chips (or their combinations) are the most hassle-free to interface and work with on RPi: WS2811, WS2812B, WS2812B with WS2811 (as Amazon claims it), LPD8806 or APA102?

  • I'm not sure how anyone could comment. I have no idea what you find hassle-free and I don't own all the LED strips you are considering.
    – joan
    Jan 11 '15 at 16:22
  • Well, I know that every LED strip would require some amount of work, but my question boils down to this: which of the mentioned controller chips would be the easiest one to interface with RPi - which of them has the most stable software solutions to control the lights? It wouldn't require someone to have all of them, it would require just some experienced engineer to be familiar with these chips and what problems each of them might have in combination with RPi. Jan 11 '15 at 16:29
  • 1
    the addressible 2812 makes a lot of sense, you can buy them on ebay in various configurations too. There's a Kickstarter project right now that makes the power hassles easier.
    – tedder42
    Jan 16 '15 at 18:22
  • This is a product recommendation question which is considered off-topic here. Voting to close to prevent an endless stream of answers citing all LED strips out there. Nov 18 '16 at 8:47
  • Formally you are correct, although the choice was really just among WS*, LPD* and APA* because all other options seem to be based on those. It's all about choosing the right interface (SPI, power etc.) and collecting information to understand what is what. Documentation for those chips is scarce and not available in single place, mostly only in some forums with poor "Chinglish" or "trial and error" experimentation articles. This question with answers could be reformatted and moved to some wiki page, if only there was a wiki with Stackexchange popularity... Nov 21 '16 at 9:24

You're better off with the APA102. Because they have a separate clock pin, the timing is much less critical; the Pi can setup the new data (pin 1), then clock that data in (pin 2). Then repeat. At its own speed.... I'm not sure how quick a Raspberry Pi can alter its GPIO pins... But at least it would work.

  • Agree with APA102 being the easiest since it is SPI. WS28xx are a pain. I was able to just connect the rasperry pi 2 to apa102s w/o even a level shifter and it just works. They also look a lot nicer than WS28xx since they have higher FPS and PWN frequency. Dec 25 '15 at 19:33

It took some hours and searching through multiple forums, but it seems I have now gathered some crucial information. Maybe someone else will find it useful. Feel free to correct this answer if I am wrong or if something important is missing.

So, the chips and strips I mentioned in my question can be categorized in two types:

  1. with one control pin: WS2812S or WS2812B. Essentially, WS2812 is a LED assemblied into a single device with WS2811 controller chip. That's why sometimes you'll find them called as "WS2812B strip with WS2811 controller" which makes things confusing for a beginner who doesn't know relations between WS2812B and WS2811. These strips might have also new generation APA104 chips (important! do not confuse with APA102 - that is a different beast, as we'll see later). I'm not sure how APA104 quality differs from WS2812, but they all are compatible with the same one control pin and I guess the data exchange protocol should be the same.

    These strips are good for Arduino and other lower level electronic solutions, but they might be not the best option for Raspberry Pi. As Adafruit says:

    The protocol used is very very timing-specific and can only be controlled by microcontrollers with highly repeatable 100nS timing precision. We have example code for using with the Arduino Uno/Mega microcontroller at 8MHz and 16MHz, and with a little effort you can use with the Raspberry Pi, or Beagle Bone Black, but it will not work with the Basic Stamp, NETduino, any other interpreted/virtual machine microprocessor or any processor slower than 8 MHz.

  2. with two control pins (one for clock and one for data): LPD8806 or APA102. These strips have built-in PWM controller, thus timing requirements are not as strict as for the strips of the first type, so these should be more stable and hassle free to work with. Again, I'm not sure how exactly APA102 differs from LPD8806, but I see lots of APA102 offers on ebay and there are some useful examples and libraries for working with APA102 on Raspberry Pi.

So, I'd say for now my choice would be APA102, unless someone finds a serious reason to pick some other option instead.


It sounds like you might want to re-think your requirements. I doubt you want to control the pulses powering the LEDs directly.

It sounds like you are expecting to change the color of lighting in a room, so you probably want assembled devices that plug in to wall current, not something with LEDs controlled directly via a Pi. I just mentioned several options in this answer: I'm looking for a serial input type "polychromatic" LED as an output for my raspberry pi. Does such a device exist?

To summarize: In addition to the light strips you describe, you can buy an inexpensive LED device that screws into a standard light socket and uses an IR remote, and use the Pi, an IR LED and the lirc package to control it. Another option might be to buy a device intended for stage lighting, and connect it to the Pi using the DMX protocol.

  • Thanks for ideas, yes, separate LED lights sounds like a good option, too. Also, LED light systems (like Philips Hue and its alternatives) currently are over my budget, although something like that would be great. So currently I'm evaluating what LED strips could do - I intend to place some kind of blurry plastic screen in front of the strip to make the lights less sharp - ideally it would be nice to have vertical bands of light. But I'll leave the plastic screen for a different question. Jan 12 '15 at 11:22

APA102 LED strip is great choice, the difference between APA102 and LPD8806 are the locations of the IC, APA102 is a built-in IC, but LPD8806's IC is outside.


I think APA102 AND SK9822 LED is much better for RPi, as it is much faster and more stable.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.