FAQ
TL;DR: Scope tests showed a 7-byte reset pulse offset in 100 % of failed SPI transfers; “SPI DMA now stable” [Elektroda, p.kaczmarek2, post #20966214] Fixing OpenBeken ≥1.18.94 restores clean data on BK7231N-based Feit 20-ft strips. Why it matters: the patch lets RGBWWCW segments run full-speed animations without random glitches.
Quick Facts
• Kit street-price: ≈ US $25 for 20 ft strip + PSU + controller [Elektroda, darconeous, post #20791392]
• Supply rail: 24 V DC; only +24 V, DOUT, GND carried on USB-C-style plug [Elektroda, darconeous, post #20791392]
• MCU: Bk7231N Wi-Fi SoC, RISC-V core, 2 MB flash [Elektroda, darconeous, post #20792424]
• LED driver combo per 100 mm segment: SM16703 + SM16704 → 7 channels (R,G,B,WW,WW,CW,CW) [Elektroda, darconeous, post #20804661]
• Key GPIOs: P16 =DOUT, P22 =24 V enable, P24 =button [Elektroda, darconeous, post #20804661]
What silicon does the Feit 20-ft Color-Chasing strip use?
The controller board hosts a BK7231N Wi-Fi SoC and drives each 100 mm segment with paired SM16703 and SM16704 LED drivers, giving seven output channels per segment [Elektroda, darconeous, #20791392; #20804661].
How is the 7-channel colour order arranged?
Measured output shows R, G, B, Warm-White 1, Warm-White 2, Cool-White 1, Cool-White 2—abbreviated RGBWWCW. The two white pairs share die but double brightness, so the white channels effectively span 0-510 counts [Elektroda, darconeous, post #20804661]
Which pins do I need when rewiring or extending the strip?
The USB-C-shaped receptacle carries only three lines: pin A5/ B6 = +24 V, A7/ B7 = DOUT (data), and A1/B12 = GND. Verify with a multimeter before soldering [Elektroda, darconeous, #20791392; sasipraveen39, #21315554].
Is it safe to connect the strip’s plug to a real USB-C port?
No. The strip injects 24 V on contacts that standard USB-C hosts expect at 5 V or lower. Plugging it into a computer could damage the host port [Elektroda, darconeous, post #20791392]
How do I flash OpenBeken onto the BK7231N controller?
- Solder to 3.3 V, GND, RX, TX and hold BOOT0 low. 2. Run the Python bk7231tools script to write latest bin; back up the 2 MB flash first. 3. Power-cycle and connect to the web UI [Elektroda, darconeous, #20803236; p.kaczmarek2, #20791759].
How can I find the button or MOSFET pins after flashing?
Use the built-in GPIO Finder in OpenBeken. Press the physical key; P24 shows level change. Toggle suspected outputs to locate the P22 MOSFET that enables the 24 V rail [Elektroda, darconeous, #20803236; #20804661].
What command sequence drives seven-channel pixels today?
After updating to OpenBeken ≥1.18.94: 1. SM16703P_Init 10 7 0 1 2 3 4 5 6
2. SM16703P_SetPixel -1 0 255 0 0 0 0 0
sets all pixels green. 3. SM16703P_Start
streams data. The extra arguments declare channel count and mapping [Elektroda, darconeous, post #20804661]
Was there a known SPI DMA bug and is it fixed?
Earlier SPI DMA sent frames with random 7-byte lags, corrupting colours in roughly 1 in 3 refreshes [scope statistic, #20804661]. OpenBeken commit Feb 2024 eliminates the timing race; p.kaczmarek2 confirms stability: “SPI DMA now stable” [Elektroda, p.kaczmarek2, post #20966214]
Can I bit-bang SM16703 timing instead of using SPI?
Not reliably. The BK7231 instruction cache inserts non-deterministic stalls; even NOP loops give 2 µs pulses, far longer than the 0.3 µs spec. Only RAM-resident functions might work, but current toolchains lack support [Elektroda, darconeous, #20807690; p.kaczmarek2, #20807800].
What happens if I write values > initial buffer size?
Old driver revisions allowed over-range writes, corrupting memory and locking the module. Stay within 0-255 per channel or upgrade firmware to prevent the overflow [Elektroda, darconeous, post #20804661]
How can I add Home Assistant control?
Expose OpenBeken’s MQTT topics or use the HTTP API. Each SM16703P_SetPixel call can be wrapped in an automation. ESPHome’s FastLED component does not yet support seven-channel SM16703/4 chains [Elektroda, kevdel, post #20869022]
Edge case: will a 5 V logic level drive DOUT?
No. SM16703/4 expect 24 V-tolerant logic derived from their VCC. Driving with 5 V risks mis-timing or LED ghosting. Always feed data from the BK7231 at the controller board, not externally [SM16703 datasheet].
3-step quick how-to: turn every second segment warm white?
SM16703P_Init 14 7 0 1 2 3 4 5 6
2. Loop for i in 0,2,4...: SM16703P_SetPixel i 0 0 0 255 255 0 0
3. SM16703P_Start
. Each call lights alternate segments warm white at full brightness [Elektroda, thread synthesis].