Go Down

Topic: Cheap addressable RGB strip - how to control? (Read 28591 times) previous topic - next topic


Hey guys,

I found this rather cheap RGB LED strip on eBay:

It arrived yesterday and I was planning on putting it behind the projector screen in my living room to do some atmo light. But as it turns out the strip doesn't use a shift register as one would suspect, at least not in the common sense.

I used my scope to try and reverse engineer what I need to send to the strip, but turns out it's doing some weird stuff and I'm unable to find any documentation anywhere.

Here's what I found so far, maybe somebody knows what this is:

The strip has four wires: GND +5V DTI CKI
DTI and CKI are on another source online called DAT_RECV and CLK_RECV so I was assuming a shift register with data and clock.

The scope told me a different story. There is a ~7bit signal both on CKI and DTI (but different ofc). Here's the timing of a "shift pixel" command in 10ths of microseconds (0.1us): (| means a falling/rising edge)
// DTI + 32 | 10 , 14 | 26 | 16 , 16 | 18 , 16 | 18 , 18 | 14 , 20 | 12 , 22 | 14 +
// CKI | 32 , 10 | 14 , 26 , 16 | 16 , 18 | 16 , 18 | 18 , 14 | 20 , 12 | 22 , 14 |   

Both lines are high by default, CKI becomes LOW, 3.2us later DTI becomes low as well, 1.0us later CKI rises to HIGH again etc.
Finally CKI becomes HIGH 1.4us after DTI.

Each of the areas between two | depict one bit. Both CKI and DTI are used to transfer actual data (or I'm misunderstanding something completely).

So far I achieved to do some stuff, like shifting pixels through the strip, but only in the direction of the shift register and only in RGB + mix of full red, full green etc. The controller that came with it is able to do all kinds of nice effects, but it seems that the ucs on the strip are doing some of the controlling themselves (1 uc handles data i/o tells 2nd uc what to do. 2nd uc controls 8 rgb LEDs => 24 channel LED driver).

Thanks for any help and sorry for the long post! :)

I hope it'll be possible to hack this strip, since adafruits alternative has the disadvantage of price and availability. :-/


Without too much analysis could bet, it's I2C. Please draw the waveforms, so I could decode the address/data.


The trick is to find out what those chips are between the LEDs. Can you spot a number on them?


Nov 09, 2011, 10:26 pm Last Edit: Nov 10, 2011, 04:00 am by milamber Reason: 1
I went looking for information on strips using d7001. Most of the strips I found used a combination D7001/D7002. With the explanation given:
D7001 with 24 outputs for the LED driver chips
D7002 for the bus driver chip

I couldn't find any specifications for either chip. But I am curious as to how it is working.
<edit with further info>
I found two images that I have attached but I will try direct linking to put them in this post:

From Google translate:
"Here(below) is a typical application circuit D7001/7002. The above is 8 5050 RGB LED, below the LED driver IC D7001 and bus transfer chips D7002. Only two external components resistor, a capacitor element is very small."

Frustratingly I can not find anything that even resembles a spec sheet for either the D7001 or the D7002. It does look like the D7002 just runs the BUS and the D7001 is just taking the DT and CK lines in and driving the LEDs.

I am interested as these look really nice and seem like they are at a good price.


Just received Chinese versions from a manufacturer. Not too much info.


The pins are labeled DAT and CLK or on the pinout SDA and SCL, which is I2C.



Mar 05, 2012, 10:39 am Last Edit: Mar 05, 2012, 11:19 am by ratkins Reason: 1
Check this thread out. The author of the FastSPI library has a sample of a D7001-based strip and is planning on adding support.

I note the eBay URL you pasted says 12V but you say the strips are labelled 5V. Which is it? How much current do they draw? I'm interested in using these strips in a project of my own.

Cheers, Robert.


Hi!  FastSPI author here - I do have a D7001 strip, but I haven't had a chance to figure out how it's talking yet, and my attempts to find datasheets have been limiting.  The next chipset on my chain is the TM1803 in high speed mode (just had a "oh, duh!" moment for how I can support it in my library, as well as re-work the TM1809/4 support so that the code is a bit cleaner, and not quite as ... delicate as it is right now).

If it's I2C - That can probably get me a bit closer to working out what's going on here.  Time to read up on I2C I suppose!  Also, it isn't clear to me whether it's 12 bits per pixel (a datasheet I saw talked about 4096 colors) or 12 bits per rgb pixel.  The former would be fantastic from a color leveling standpoint (most other chipsets I work with are 8 bits per pixel, 24 bits per rgb pixel).  The latter would be a bit limiting, I get higher than 4 bits per pixel w/hl1606.

FastLED (formerly FastSPI_LED) -- new home http://fastled.io


Very keen to hear an update on this when you've got something to share, Daniel :-). Just about to order some of these strips myself, for this year's project.

Any first-hand info on the voltage for these strips, by the way? Is it 5V everywhere, or 5V signalling and 12V to power the LEDs like the LPD6803 strips I used last time?


May 16, 2012, 04:13 pm Last Edit: May 16, 2012, 04:17 pm by thefloyd Reason: 1
Hi -
 I've got a 5M roll of this stuff, but my manufacturers in China refuse to give me any documentation on the strips so I refuse to order more. I like the lower power requirement of this strip versus the ws2801 and lpd8806 variants plus the lower cost.

I'm willing to give 1/2 meter long segments away to anyone who might be able to take a serious crack at getting this stuff to do anything useful. I'm a PIC micro guy myself, but even working arduino code should be easy enough to port over. I'm admittedly not a great hardware guy but I've spent 2 weekends blindly trying to send data to this and I've yet to get it to do anything useful.

The only catch is that any code given needs to be freely (as in no strings attached) redistributable.


Oh, PS the stuff I have is 5V across the board. I think the 12V variants (if they exist) would have to use the trick of stacking 3 LEDs per driver circuit making the strips not individually addressable. Also, these only seem to come from one source (there are other manufacturers reselling it but it seems that there's only one making it at this point). I've yet to see a 12V variant in all my dealings with manufacturers.


May 17, 2012, 02:30 pm Last Edit: May 17, 2012, 03:04 pm by ratkins Reason: 1
I'd guess the Chinese manufacturers are reluctant to give out datasheets because they're worried about other manufacturers ripping of their designs. Which is funny, because the specs at least look a lot like these NXP chips:




(I may, however, be talking completely out of my arse here. I would welcome this being pointed out if it's discovered by someone who does indeed know what they're talking about.)

Edit: Dicking with google translate I found this, which I think is meant to be a whitepaper, which has a little more information than is on the above diagrams (but not much):



May 19, 2012, 08:19 pm Last Edit: May 19, 2012, 09:47 pm by thefloyd Reason: 1
Yeah, I'm guessing the same thing too, but it's pointless as the design is already well documented. If I were trying to rip off the strip itself I probably already have what I need. I don't see the point in withholding programming documentation from me (I tried asking them if they want to sell LED strips or they're trying to sell cheap shitty controllers - because it sure sounds like they're trying to protect the latter at the expense of the former but the language barrier doesn't help.) I've been buying from them for a while and told them I'd probably be able to (re)sell a lot of this stuff to hobbyists as the price is right, but only if we had the specs. No go..

The IC is manufactured by a company called DBIC (DBIC D7001, D7002) and I had found their website at one point. Rather unsurprisingly, they're a Chinese manufacturer too. This is probably a knockoff of someone else's chip design. I submitted requests to them (fudged it a little and said I was interested in using their product to design my own led strip) but got no replies back. The strips are sold under a part number "S301" across many "manufacturers", so I'm pretty sure they're all coming from one source. My main manufacturer claims this is their design - they are a large manufacturer of lighting, not a reseller - but it's hard to validate that as they've sold me products (controllers mainly) that look just like the same damn controllers everyone else sells. I have noticed most of the ws2801 strips (which I buy from them) from other sellers carry their part number on them, so they're at least a pretty big source of them. They may indeed be the main source of these too.

I think we'll only make progress with this once someone with the know-how can reverse engineer the protocol. I didn't buy a controller, but I could, and I do have a scope.. but I have no experience reverse engineering stuff at this low a level. If anyone has pointers, I'd be willing to request a controller in my next order with them.

I've posted what I have received from my manufacturers about these strips at:


Nothing exciting there, though, mostly just marketing blurb. I do think these are only 12 bit color strips though (4 for each of r, g, b) as the documentation claims 4k colors per LED (this _could_ be a controller limitation, too. I've received controllers where it's obvious someone used a regular 'int' to track the number of 'pixels' and thus they're useless for LED strip lengths > 8M).

I'm unfortunately stuck working this beautiful day for my day job, so I'm going to take a crack at trying to talk to this thing as if it were one of those PCA9626 chips today.. maybe I'll get somewhere if they used this chip as the inspiration for this design..

BTW - shameless plug for myself - I do sell the same strips Adafruit does at a better price and with better availability (since that's what started the thread) :). The same site with the PDF can take you to my store, if anyone is interested.


Just an FYI, I've still yet to have any luck getting these strips to do much of anything.

I do believe that the company that makes the ICs on these strips may indeed be the company manufacturing them, too. I came across this:


db-ic.com is responsible for the D7001/D7002 chips as seen on these strips.

Still no datasheets or programming specifications, though.. :(


With the help of some friends from the Amsterdam Hackerspace and the Meta group, I've hooked the controller for these strips up to a logic analyser and got some dumps. Bad news: it still doesn't make sense. Firstly, here are what a couple of the patterns look like looked like on a scope:

In both, the top is the clock line and the bottom is the data line. According to people there who know something about I2C this is not what an I2C clock signal ought to look like.

More interesting, here are a couple of dumps from the http://www.saleae.com/ a friend bought. Screen caps follow, but you can download the software from that link and play with the attached dumps yourself without owning the hardware.

It still doesn't make sense. For some of the patterns, after an initial burst of enthusiasm the controller seems to be sending nothing, despite the LEDs happily continuing their pattern. Maybe all the controller is doing is selecting one of a hundred or so patterns and telling the D7001 which one to display.

Links to the data files for the Salae: http://dl.dropbox.com/u/1432370/S301/R700-A%20LedController%20mode%2017.logicdata, http://dl.dropbox.com/u/1432370/S301/R700-A%20LedController%20mode%2018.logicdata

Does any of the above help anyone? Doesn't look like my original project is going to come off now :(.


Aug 09, 2012, 10:49 pm Last Edit: Aug 09, 2012, 10:55 pm by JoeN Reason: 1

It still doesn't make sense. For some of the patterns, after an initial burst of enthusiasm the controller seems to be sending nothing, despite the LEDs happily continuing their pattern. Maybe all the controller is doing is selecting one of a hundred or so patterns and telling the D7001 which one to display.

How many patterns are there that you can select from?  Are there many or fairly few?  If there are few, maybe you should just grab the waveforms and write a small library to basically play them back if that is all this product is capable of doing.  
I will never ask you to do anything that I wouldn't do myself.

Go Up