LED strip control via BeagleBone Black

I have some of the RGB LED strips (part # 2543) and I have been working on trying to get a BBB (BeagleBone Black) to output a signal quick enough to control these LED strips. It’s proving to be time consuming, but I think I may be able to produce a signal if I dig a little deeper into the GPIOs via memory mapping.

But I am wondering if a 3.3V signal will be enough to trigger the LED Strip? It would be nice to know now if I’d be wasting my time. If not then what’s a good alternative. I noticed the mbed library for the strips, but its not clear to me what sort of hardware I need to run that on. Can anyone offer advice?


The #2543 LED strip is one of our older discontinued strips that use the TM1804. These strips have an operating voltage of 5V, so you would probably need to use something like a logic level shifter to boost the 3.3V signal to 5V.

Alternatively, as you pointed out, we have an mbed library for these LED strips. This library works on the mbed microcontrollers. We also have an Arduino library, which works on Arduino and Arduino-compatible boards, which include the Arduino Uno, A-Star 32U4 boards, and the Baby Orangutan B-328. A more detailed list of compatible boards can be found in the “Supported Platforms” section of the Arduino library’s GitHub page linked to above.


Well I did an experiment tonight using the Arduino drivers which I had working. I built a voltage divider and was still able to get the LEDs to work with a 3.3V signal from the divider. So I am forging ahead with trying to get this to work on a BBB. Plus I ordered some shifters from you guys which I can use if need be. The problem I am facing right now is whether or not I can disable interrupts on the board while I send the signal. If I can’t disable interrupts, what other strategies can I use?

Also, in looking at the specs of the ones I have and the newer versions with the WS2182Bs, I see that the notice for my set says, “so you can use the same code to control either of them and you can chain one type to the other.” Yet, in the specs for the two sets the timings on the WS2182Bs is twice as fast as it is for the TM1804s. So is that saying that the WS2182Bs can run at the slower timings as well? Does that also imply that there is quite a bit of leeway in the accuracy of the timings? What is the tolerance?


The TM1804 has two options for its protocol timing: high-speed and low-speed. It sounds like when you were referring to the TM1804 datasheet, you were looking at the low-speed option. However, the TM1804 LED strip you have (#2543) uses the high-speed option, and this cannot be changed. Also, the WS2812Bs cannot run at the low speed.

If you look at the timing diagrams we provide on the product pages for the high-speed TM1804 strip that you have, and a WS2812B LED strip, you can see that the timing is very similar. That’s why it works to chain a high-speed TM1804 to a WS2812B.

The timing tolerance for your LED strip is discussed on its product page, which says:

I am not familiar with the BeagleBone Black, so I do not know what strategies you might use to generate such pulses.


Wow, i can’t believe that I missed that. This page shows the low-speed timings. I have referred to that page dozens of times while messing with my code. It was never once obvious to me that you guys had two different sets of these lights at two different sets of timings. That page and this one are practically indistinguishable from each other. Now I’m not sure whether I have the high-speed or the low-speed set.

I originally said I have the #2543 because that looks exactly like my product, but it could just as well be the #2540. How can I tell?

I have been using the Arduino library so I guess I must have the high-speed strips since a note at the bootom of the GITHub page for the the library says, “2.0.0 (2013-10-07): Dropped support for the older, slower LED strips in order to make the library faster.” So I must have the high speed strips. Although both of your product pages for low and high speed still point to that same library. Confusing. But I think I’ve got it now. I wish I had the new ones, but I don’t. Maybe for another project…

It sounds like you have the high-speed TM1804s. If you want to be sure, you or whoever ordered the LED strips could log in to pololu.com, click “My Account”, and check the order history.