WLED icon indicating copy to clipboard operation
WLED copied to clipboard

Tail of the 48 invisible pixels. New Copper Dipped Addressed Pixels it seems

Open jamestutton opened this issue 4 years ago • 67 comments

A very odd issue.

Have some of the "ws2812b" dipped copper wire style LEDs. They have been cut off a larger strip off 100. In total there are 40 pixels on the strip. Original set was 100 LEDs.

Was having issues getting them working with both wled and esphome untill I set the pixel count to a a number greater than there length. Then realised the odd issue. The first pixel appears to be the 49th pixel. Ie the first 48 addresses do nothing.

Even hooked them up to a larger strip of normal 12mm ws2812b 1-150 normal ws2812s. Pixels 150-190 should be these. But no. Have to set the chain as 238. LEDs 1-150 light normally 151-198 don't exist so nothing happens 199 onwards light this strip first led onwards

So 48 addresses get skipped then these LEDs start again from 199 onwards.

Hopefully this is clear and someone seen this before and has a clue?

Currently these LEDs terminate on last led of the strip so not able to see what happens of add more to end of the chain. But may cut last one off just to see.

jamestutton avatar Nov 03 '20 20:11 jamestutton

That is indeed strange and I haven't heard of it before... Did you try connecting the input of these directly to the ESP? That would help to see if the problem is with the output of the first 150 LEDs or with the input of these 40.

Aircoookie avatar Nov 04 '20 15:11 Aircoookie

So Plot thinkens. Split the 40 LEDs into 2 chains of 20 as have a theory that the LEDs actually have a hardcoded or at least static addresses. And then put them in a Y config.
Which technically should with my understanding of normal WS2812s cause them to mirror in they were doing normal shifting of data. And Low and behold on direct conection with ESP one chain responds to Addresses 48-67 the other branch 68-87.

So it seems that the LEDs are physically/logically addressed as 48-87. And I expect they actually pass every packet vs shifting the stream so if I connect normal WS2812s down stream of these ! can get individual leds to light twise with one command. A scan for example goes down first fork then falls off end and lights first led of the second fork

ebay link to the item : https://www.ebay.co.uk/itm/10M-WS2812B-sk6812-RGBW-Fairy-String-Light-Copper-Wire-5V-USB-Pixel-timer-remote/324288164000?hash=item4b8114b0a0:g:l1gAAOSw-mNfbGXT

jamestutton avatar Nov 06 '20 09:11 jamestutton

So yes they seem to be a new sort of "addressed" pixel in some way. They respond to the normal WS2812B commands but are transmitting the entire data stream and know which packet is for them!!!

So New Test Setup Will Refer to new leds as "Copper Dipped Pixels==CDP"

ESP  -> JUNCTION  ->  (A) 20 CDP (Addr48-67) -> (C) 50x 12mm WS2812B -> (D) 50x 12mm WS2812B ->END
          ^^^     ->  (B) 20 CDP (Addr68-87) ->END

So borrowing a bit of code from ESPHOME same effect with WLED as well

Data Sent

            it.all() = ESPColor(0, 0, 0);
            it[48] = ESPColor(255, 0, 0);
            it[50] = ESPColor(0, 255, 0);
            it[67] = ESPColor(0, 0, 255);
            
            it[69] = ESPColor(255, 255, 0);
            it[71] = ESPColor(0, 255, 255);
            it[87] = ESPColor(255, 0, 255);

So with the above 6 commands. A total of 12 LEDS are lite at physical postions

A) 
1   = it[48] = ESPColor(255, 0, 0);
3   = it[50] = ESPColor(0, 255, 0);
20  = it[67] = ESPColor(0, 0, 255);

B) 
2   = it[69] = ESPColor(255, 255, 0);
4   = it[71] = ESPColor(0, 255, 255);
20  = it[87] = ESPColor(255, 0, 255);

C) 
48  = it[48] = ESPColor(255, 0, 0);
    
D) 
1   = it[50] = ESPColor(0, 255, 0);
18  = it[67] = ESPColor(0, 0, 255);
20  = it[69] = ESPColor(255, 255, 0);
22  = it[71] = ESPColor(0, 255, 255);
38  = it[87] = ESPColor(255, 0, 255);

Love to know what these are. Only other thing i can tell you all is the pinout is VCC / GND / DATA. So a little different from the normal. Have to believe the addresseses are software programable in some way but are obviously stored in some way so maybe a programming mode of some sort.

Will keep posting any further findings here.

jamestutton avatar Nov 06 '20 15:11 jamestutton

Interested in this... Bought a bunch of these strings, and using a Pixelblaze on them, noticed that they like 300ns timing, yet depending on pattern, I have 1-2 pixels (usually #2+3 or #4 alone) at the start that "flicker wildly" with lots of data, while the others all work correctly, in a string of 200. Same model/type, same V,G,D layout. These are a weird beast, and I look forward to more people experimenting and reporting back.

If you are correct that forking the data line doesn't created a mirror, these will be a nifty new way to control LEDs, allowing a forked data line to simplify wiring. (Imagine an infinity polyhedra [cube/whatever] where the data line can just split into multiple paths as needed to easily fill all vertexes, but all pixels remain individually addressable!)

scruffynerf avatar Nov 17 '20 11:11 scruffynerf

I can now confirm these do seem to have a "location memory". Cut 10 off the end of a strand of 200, cleaned the wires (flame off the lacquer and sandpaper), wired to a connector and hooked up to my PB, and they insist (and work normally) on being pixels 191-200, despite being the only pixels in the circuit. More testing coming soon.

scruffynerf avatar Nov 18 '20 15:11 scruffynerf

https://youtu.be/ge8Swdd9Srw Seeing is believing. 4 individual strands all with a common data line (so data line splits into 4, but all LEDs remain individually addressable!! Not the usual WS2812, eh?)

scruffynerf avatar Nov 18 '20 21:11 scruffynerf

Glad I'm not going mad. Tried reaching out to some of sellers and even the ws2812 manufacturers. To see if anyone has a data sheet or any info but so far no luck. I had only brought the sets of 100 so it good to know they must have at least 200 programmable addresses. Wondered if the 200 was 2*100 so repeated. As that's the other thing you can do. Join 2 sets of 100 and they will repeat.

jamestutton avatar Nov 18 '20 21:11 jamestutton

Good to know, Ben of Pixelblaze wondered about that aspect... So two strings in serial will repeat?

This really is a mystery. Thank you for posting, as I'm sure I'd have been discovering this and totally confused why it wasn't working normally. Your post here put me on track to confirm and see the value of this.

scruffynerf avatar Nov 18 '20 22:11 scruffynerf

Interesting. The 2811/2812/2812b "protocol" doesn't send an ID in the data, so what the heck? A theory: each chip is sending the full data set of color bits on to the next chip, and only takes its color from the nth color data from the full set. That would be different from 2811/12/12b, in that, they only send bits that overflow to the next chip.

A way to test: Set the LED count to 1. Hook up a scope or logic analyzer to the data line between the last 2 LEDs in strip. What is being sent? 24bits, or nothing?

nlflint avatar Nov 18 '20 22:11 nlflint

@nlflint Given that the single forked data line is transmitting to all 4 strings, I think it's sending all of the data. I can test this (not today), by doing a fork on both ends:

Controller /\ S1 S2 /\ S3 S4

If that works as expected, they have to be passing the entire dataset.

scruffynerf avatar Nov 18 '20 22:11 scruffynerf

Don't have the scope but sure it full data set as can put normal ws2812s downstream of last pixel and they behave as behave as full data stream is received. Ie can send 100 packets and light 100 of these and the 100 ws2812s downstream so pixel 101 and 1 are both pixel 1 in transactional sense

On Wed, 18 Nov 2020, 22:30 Nathan Flint, [email protected] wrote:

Interesting. The 2811/2812/2812b "protocol" doesn't send an ID in the data, so what the heck? A theory: each chip is sending the full data set of color bits on to the next chip, and only takes its color from the nth color data from the full set.

A way to test: Set the LED count so only lights to the last LED on a given string. Hook up a scope or logic analyzer to the data line between the last 2 LEDs in strip. What is being sent? Full dataset, or data for 1 pixel?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Aircoookie/WLED/issues/1312#issuecomment-729998204, or unsubscribe https://github.com/notifications/unsubscribe-auth/AARRMJZIEVIT6C3H2VXXVALSQRDIDANCNFSM4TJGYLYQ .

jamestutton avatar Nov 18 '20 22:11 jamestutton

@jamestutton ah, well there you go.

nlflint avatar Nov 18 '20 22:11 nlflint

It also full dataset as you can put them out of order. So can wire them as 30-39,20-29,1-9,10-19 if you want

On Wed, 18 Nov 2020, 22:36 scruffynerf, [email protected] wrote:

@nlflint https://github.com/nlflint Given that the single forked data line is transmitting to all 4 strings, I think it's sending all of the data. I can test this (not today), by doing a fork on both ends:

Controller / S1 S2 / S3 S4

If that works as expected, they have to be passing the entire dataset.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Aircoookie/WLED/issues/1312#issuecomment-730000829, or unsubscribe https://github.com/notifications/unsubscribe-auth/AARRMJ3JOPZ47XWDNAUTVN3SQRD57ANCNFSM4TJGYLYQ .

jamestutton avatar Nov 18 '20 22:11 jamestutton

Yeah, these aren't ws2812s... Whatever is encased in epoxy is some new magic chip.

scruffynerf avatar Nov 18 '20 22:11 scruffynerf

There gotta be a way to easily reprogram them. In the factory, they wouldn't do it individually before assembling the strip. There's no way you could keep track of the order. They have to do it after the strip is assembled. Need that datasheet, it probably explains the protocol for reprogramming.

nlflint avatar Nov 18 '20 22:11 nlflint

My guess is programming mode is like standard ws2812 protocol so they cascade to learn there string position.

Then normal usage they just pass along the full data stream and then listen for there own packet number. Must be some sort of limit to how many you can have as it storing it's ID in some sort of solid state mem.

Also worth mentioning they really good for power usage. 100 light bright on a USB power bank with little to no dimming in my tests so far.

On Wed, 18 Nov 2020, 22:42 Nathan Flint, [email protected] wrote:

There gotta be a way to easily reprogram them. In the factory, they wouldn't do it individually before assembling the strip. There's no way you could keep track of the order. They have to do it after the strip is assembled. Need that datasheet, it probably explains the protocol for reprogramming.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Aircoookie/WLED/issues/1312#issuecomment-730003542, or unsubscribe https://github.com/notifications/unsubscribe-auth/AARRMJYBNYA6OFOXACHEUUTSQREUZANCNFSM4TJGYLYQ .

jamestutton avatar Nov 18 '20 22:11 jamestutton

yeah, that's gotta be how it works. It could also be a one-time programming, once it's done, it's final. If they could be reprogrammed, then once you cut them up, and hook them up in a spiderweb-like configuration, each LED could no longer infer its position. There would be ambiguity until they were put back in a straight line.

nlflint avatar Nov 18 '20 22:11 nlflint

Based on what @scruffynerf was demoing, I think they have a permanent (or semi-permanent) address code burned in to them.

I'm guessing the data line is not regenerated, but connected through as one long bussed data line. That would save manufacturing cost, allowing them to have 3 solid uncut wires bonded to the LED modules, compared to the usual WS2812 which will not work if your data line shorts DIN and DOUT, forcing either non-contiguous wires to be assembled or these cut 4-wire hacks you see in other WS2812-compatible fairy wire:

ws2812 string 4 wire cut

Notice that it looks like that was made with 4 contiguous wires, then every-other middle wire is cut. The red/green color is probably so they don't mix them up during manufacturing, and I bet each color swaps DIN/DOUT order.

Compared to that, these 3-wire bussed-addressable LEDs would be easier to assemble, even with the extra step of programming their addresses somehow after the string was soldered.

simap avatar Nov 18 '20 23:11 simap

So who's going to sacrifice one of their LED's and see what chip is inside?

THATDONFC avatar Nov 19 '20 03:11 THATDONFC

Willing to try any tips for removing the resin coating as it very hard.

Have dropped one in ISO and another in asotone see if either of those effects it. Had a quick test with side cutters but it so small and hard they just slide or chop straight through the lot.

On Thu, 19 Nov 2020, 03:52 THATDONFC, [email protected] wrote:

So who's going to sacrifice one of their LED's and see what chip is inside?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Aircoookie/WLED/issues/1312#issuecomment-730111925, or unsubscribe https://github.com/notifications/unsubscribe-auth/AARRMJZMRGCOBHWUO3QK7VLSQSI57ANCNFSM4TJGYLYQ .

jamestutton avatar Nov 19 '20 06:11 jamestutton

So first attempt at tearing one down.

So for ref Golden Wire is 5V then GND and Data.

Seems the Data line is indeed continuous so no seperate Din/Dout.

Continutiy check also confirms this. All 3 leads are ~8Ohms for ~10cm section with LED in middle.

2020-11-19-091530_1 2020-11-19-091645_1

As such it seems they must be one time programmed at the factory some how.

jamestutton avatar Nov 19 '20 09:11 jamestutton

@jamestutton, thanks for the photos! I was dying of curiosity! What did you end up using to get the goop off?

simap avatar Nov 19 '20 21:11 simap

Hot air gun @200C seemed to make it brittle and then while it was warm was able to break it up a bit.

jamestutton avatar Nov 19 '20 22:11 jamestutton

I got some, was able to crack the goop after a few tries w/ heat (thanks for the tip!). There's some distortion or residue on the LED package epoxy that made clearer photos challenging. Was mainly trying to find out the method of programming, nothing obvious. Would probably need proper de-cap and a microscope. I do see some pads on the IC that look like they could be unused bond wire spots, opposite the data input bond.

I'm totally speculating here, but it makes me wonder if this IC is floating around in other WS2812 clones on the market that haven't had an address burned in.

DSC04635 (1)

DSC04624

simap avatar Nov 20 '20 22:11 simap

@simap to clarify, the middle wire is ground, which is the V+ and data sides? Is the bigger side the V+? (Looking at the original photos, looks like it) Which would make the single wire running to the IC on the left of your photos, the data line connection. Which pads are you discussing, the two near the ground wire?

scruffynerf avatar Nov 20 '20 22:11 scruffynerf

To confi Large one is 5v+ middle is gnd then left is data

jamestutton avatar Nov 20 '20 23:11 jamestutton

Gotcha, updated comment for clarity for future readers.

simap avatar Nov 20 '20 23:11 simap

@scruffynerf These are the pads I'm talking about. DSC04635 marked

simap avatar Nov 20 '20 23:11 simap

@scruffynerf These are the pads I'm talking about. DSC04635 marked

I wonder if one is a potential White, as in RGBW.

But honestly these have to be some new chip, cause it's got just 3 pads, not 4... and I'm really curious what is it. That's not DIN, its just D, cause there is no Dout.

Compare this to ws2812 (really this is likely a SK6812) ViE0vhW Notice the 4 pads because V, G, DI, DO

Or even a apa102 (again this is likely the improved clone): 1 - r62weoi

2 more pads, adding CI, CO

So what is this? Why isn't anyone listing it accurately?

scruffynerf avatar Nov 21 '20 02:11 scruffynerf

I got some of these "addressable ws2812" LEDs from the thread mentioning them on Reddit. I got the 20M set, and the LEDs on the second half are definitely individually addressable from the first half, but I haven't had a look at the datastream yet. One of the patterns in the included controller turns on (or changes colors) of the LEDs successively, or kind of randomly, and it definitely does the first half of the strip first, then the second half.

Is there a repository of RGB(W) LED controller die photos anywhere? I also took some die photos of WS2815s I got last year (which I suspect are real WS2815s), vs "WS2815"s I got this year with entirely different die in them (I suspect they are GS8208). I would like to either contribute my die photos, or compare to the existing ones to see what I really have

WS2815 from last year - probably real ws2815 with a ceramic cap mounted next to the die image

"WS2815" from this year - maybe a GS8208? image

blardyblar avatar Nov 23 '20 19:11 blardyblar