Has anyone reverse engineered how LED curtain hooks work?

Confirmed the setup in my pic works. If your data is on the right and not the left, just change the direction setting to Right. total 400 LEDs not 800 like you were trying.

Edit: My curtain does not have the lil chips on them though.

Jack is a spam bot. Ignore them and their linksā€¦

DId you have any luck here. I am in the exact same scenario.

I did this to and made a gap file disabling the last 20 leds on the strip in the matrixā€¦
This works a litte, but somehow my image is flipped from the middle.

So if i put a line on the left side of the matrix it also apears on the right sideā€¦ cant figure it out yet.

Will that was easier than i thougt. Disabled ZigZag in Xlights.

Here is te gap file.
Just make is 800 LEDā€™s and than a Matrix.

"[","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",
"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","]"

Ah using xlightsā€¦ I would have just left the WLED settings as 1D and just made a custom model in xLights Or I think you can use a shadow model (but I know nothing about them)

Maybe I should have posted here. However my divider results are slightly different then described here.

The pixels are in the right place out of the box. However my colors shift per (few) strands.

Wled curtain color issues

Iā€™m working on a custom PCB to control a pixel curtain structured as a hub-and-spoke of 3-wire WS2812B pixels. The idea is to monitor and count the bits on the data signal using an MCU, and switch the signal to the segments in order using demultiplexers.
Iā€™ve managed to parse the WS2812B data signal on an ATMega328P, so that I can output the switching signal during the LOW portion of the last bit of a particular segment, giving enough time to do the switching without compromising the data signal. Itā€™s pure bit banging, so any AVR device running at 16MHz or above and with enough pins to address the segments should work.
[This approach would also support striping across the segments. Or the last segment could be used to chain any number of such modules together.]

My planned configuration is 24 segments (Xmas tree), using three 3:8 demuxes (74HCT238D) and 3 enable lines taking up 6 output pins. Physically, it is a ring shaped PCB with LED connectors around the circumference. I may make a chainable 7/8-segment module on the same principles for creating linear curtains.


So I had one of the curtains that by trial and error goes to 780 pixels. It goes a row then skips 40 pixels at the top before the start of the next row. I struggled with trying to get it working directly in wled but couldnā€™t figure it out. I mostly use xlights anyways so set it as a 1D string to 800 and then created a custom model in xlights which works perfectly.

Just wondering whether an ledmap file might do much of the same directly in WLED?

Not knocking your solution (xlights is hugely powerful), but a direct WLED solution might be useful tooā€¦

Just to add to thisā€¦

There seems to be 4 types of LED curtains weā€™ve identified in the wild: (ā€œweā€ being the WLED MoonModules core team)

  1. Simple LED curtains with a return data wire. You can buy these ā€œpebbleā€ strands on AliExpress if you know where to look. Just solder the last pixel data-out to the return wire and pick it back up at the top.
  2. Curtains with fixed address pixels. These pixels are 3-wire but they donā€™t have a data-out. Installation is simple, but repair of a broken is difficult without a donor curtain as the strands are all permanently addressed at the factory. I personally use these extensively for large displays.
  3. Curtains with active T-connectors at the top. Those are detailed above. They seem to strip off X LEDs of output for the curtain strand (often 40 pixels) before sending the data stream to the rest of the curtain on data-out. 40 pixels may be simply reuse for some curtains Iā€™ve seen with 40x40 pixels and they just reuse the same active T-connectors.
  4. Same as #3, except the circuitry required is now integrated into a WS281x-like LED at the top of the chain, inside the T-Connector. These are kinda weird in my opinion because they mix physical LED types (flat strip vs pebble). The ones we have for testing are also configured for 40 pixels but only use 20.

(And thereā€™s possibly other variants as we havenā€™t seen any of the ones mentioned at the top of the thread with specifically numbered PCBs.)

#4 PCB detail:

Looking at #4 thereā€™s 2 capacitors and 2 resistors. Data-in is connected directly to the strip thatā€™s hanging down. This is curious because WS2812b only specify a 100nF decoupling capacitor per pixel, so Iā€™m curious if the extra components in some way influence how long the strands are - is it possible to change the components and skip/split more or less pixels?

(Iā€™ve also seen some on random Instagram reels that are around 60x60 curtains, so it would make sense that the chips are customizable in some way - but it was a very scammy advertisement so I donā€™t have info on the curtain they used in promo, which wasnā€™t what they were actually selling!)

Thereā€™s also some ā€œprior artā€ here where someone was doing a similar thing several years back:

If anyone has some knowledge of the addressable pixel in the image above, Iā€™d love to hear about it.

Yes, an LED map is the best way to solve this. Remap 780 pixels to 400.

Unfortunately you get the framerate for 780 pixels (around 42 FPS max) rather than the framerate for 400 pixels (around 84 FPS max) but you do benefit from less CPU overhead to calculate effects on 20x20 vs 20x40