SM16704 Compatible?

Looking to do a permanent Christmas Light setup. I like the look of the Pixel Strings but would really like RGBCW. I found SM16704’s that would fit the bill for lights but as I have never done anything with LEDs I have no idea if I could make them work with WLED. I ordered all the parts to make a controller so I can mess around with it but curious if anyone has any experience with these LEDs. Thank you!

A quick Google found, “Similar to SK6812”, but not sure if that means they would work.

What I found was they were analog controllable LED strips.

This is the listing if it helps…

You can wait until someone that knows sees this, buy something that is supported, or get that and find out. :wink:

If you look on the advert, they state a K-1000C controller is recommended. This controller outputs DMX or PWM. I’m sure WLED drives PWM via Node MCU, so should be compatible? I’m sure I’ll be corrected/educated if this isn’t the case lol.

Well I got everything ordered. I’ll keep you all posted on wether or not it works.

2 Likes

I recently ordered and received a pair of string lights that use the SM16704 from here


purely for the fact it’s an RGBW pixel. I wired everything up, flashed WLED to a ESP32, set the LED settings to RGBW - but no luck with having any control over them. With just power and no signal, the whole string cycles through the spectrum, not sure how that’s happening - if there’s a default light mode the IC gets put in. Here’s the datasheet:

Will tinker some more, hoping others have more luck.

Well that kind of sucks because those look just like the ones I ordered. I haven’t put hands on them yet to mess around. Let me know if you figure anything out!

After some failed attempts at trying to change the timing to conform to that datasheet, I decided to buy a LED controller that was shown in this video:

thinking it outputs in this protocol and I’d be able to reverse engineer it.

Well I received it today, hooked it up, and set it to the same settings the guy had in that video - and no luck. I checked some of the other protocols (there’s about 20) and one that had decent success was the TM1814 setting. Maybe these strips use that IC instead? I have no idea, and I can’t read the IC through the casing. Anyway, the lights do work with that setting - except the white channel seems to always be on so maybe the controller only outputs three of the four chanels.

I hooked the logic analyzer up and saw that it has a high resting signal. I’m going to continue messing with it to see if I can get WLED using that protocol (NeopixelBus does have an implementation…) but figured I’d post my findings real quick.

Thank you for all the help. Mine should be at the house on Friday and should have an update on my progress by Saturday. Keep me posted on any finding.

Ok success. I compiled WLED using the ‘USE_TM1814’ define and it works. Still odd that they advertise as sm16704 when this must be a TM1814 chip…

Edit: the datasheet also accounts for the pattern when there is no data signal
“…When input signal is disconnected, it can realize synchronized fixation of
colorful pattern change and prevent in-operation of subsequent cascade chip caused by chip damage…”

1 Like

Sounds like you saved me a load of time, I am itching to try it out!

Just want to clarify your compile. Did you just un-comment USE_TM1814 in NpbWrapper.h?

“Ok success”. Do you mean successful WLED compilation, or success with the LED strip using that compilation, or both? In other words, is everything working for you now?

@fvierra27 you can define USE_TM1814 during compile which will enable those features.

@huggy-d1 Yes it compiles and is able to drive the string, however, the solid mode always goes to full red (with a few twitching pixels) after the transition effect. It’s not a big deal for me since I’ll always be using an effect.

Keep in mind, these were advertised SM16704 pixels which might be TM1814 pixels, so this isn’t proof of WLED working with SM16704 pixels.

What is the max current limit setting? I suspect it is just over the limit for your power injection and power supply capacity. Reduce the max current limit slightly, in 100mA increments. If you see a visible difference in the end of the strip, add power injection to the far end of the strip, or the middle and far end.

@huggy-d1 this is definitely not a power issue, it’s a signal issue. I’m running a 5v 3A power supply to a strip of 50 pixels, it’s enough power to drive all pixels full on. Just to humor you I tried limiting the power, but saw no changes.

@fvierra27 I forgot I had to add this line:

    `_pGrbw->SetPixelSettings(NeoTm1814Settings(165,165,165,380));`

right before _pGrbw.Begin() in NgbWrapper.h to get this to work. This sets up a few header packets that are sent to the strip before each refresh.

Did you get your strip today?

Sorry for the long delay busy weekend trying to get lights up at the house. I had compiled using the USE_TM1814 in preparation and it did not work. I tried adding the changes you said you made as well also to no avail. Last resort I just loaded WLED 0.11 checked the white channel box and it worked.

You must have received legit SM16704 strings then :+1: