I was searching for a device driver to drive ws2812b addressable LEDs in the linux kernel but could not find any.

Is there a specific reason that there are no drivers for these LEDs?

  • You typically use an Arduino or an ESP8266/ESP32 to driver such LEDs.
    – wurtel
    Dec 18 '19 at 11:33
  • Right, I am using an arduino to control these LEDs, but I was thinking if, it would be possible to do it with a device driver. Dec 18 '19 at 11:35

I looked at the data sheet


and there is no hint as to how this strip connects to anything. So before you look for a device driver, you need to figure what kind of hardware interface you are going to use, and where you are going to get it from. It also needs to supply 5V, but doesn't tell you the power needed. (Actually, that is because the datasheet apparently applies to a single 3-colour LED on a 5mmx5mm chip: you can buy these on reels and make them up with any given length -- not really an end-user product.)

The hardware interface needs to give strict timings, down to 0.4 microseconds with a tolerance of 150 nanoseconds. You will never get timings like that directly through a device driver.

I use these LEDs for background lighting, and they usually come with a power supply rated around 30 watts, and a control box with an infra-red remote. No provision for any other control connector.

  • So is it mainly because the fine timing required by the LEDs cannot be achieved with a device driver ? Dec 18 '19 at 11:33
  • Far as I can see, yes. You need some extra hardware that generates signals on a strict timebase, and can read just a few bits of control information that change the intensities and time slots of those signals. The timing of those control bits is unimportant, being as it can be via an IR control. You also need to get the DC power teed into the circuit separately. Dec 18 '19 at 11:40

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.