logo elektroda
logo elektroda
X
logo elektroda

[BK7231N] [CBU] Ligency RGBW+IC LED Spotlights GPIO Identification After Flashing

pborrelli  6 2082 Cool? (0)
📢 Listen (AI):

TL;DR

  • Two outdoor addressable RGBW+IC LED spotlights using a CBU module with BK7231N were flashed to OpenBeken after backing up the factory firmware.
  • GPIO doctor testing found no pin that lit the LEDs, but P24 responded as the button using "Set Input P-up."
  • Tuya’s extracted config lists CBU, SPI MISO17, SPI MOSI16, SCL14, CS15, and key1_pin 24, with the Tuya section starting at 2023424.
  • The light-control GPIO mapping remains unknown, and the board tracing plus similar forum threads still left the author stuck.
Generated by the language model.
Hi all! I just got two of these outdoor addressable LED Spotlights (RGBW+IC) that use a CBU. Disassembly was a bit destructive and cracked the case that held the circuit board, but it'll still be usable when it's done.
Photo of a circuit board with a CBU module and electronic components.
Circuit board of JBT-WF1-XC004-YWY module with pin labels
Close-up of a circuit board with markings and LED lights.
Close-up of a circuit board with electronic components.
I was successfully able to backup the factory firmware (attached) and install OpenBeken using BK Flasher, but haven't been able to make much progress since then. I can't seem to figure out how the GIPOs control the lights. I used the GPIO doctor on all the pins, but none will cause the lights to light up in any way (they did work before I flashed OpenBeken). I've only been able to identify that P24 is the button by using the "Set Input P-up," and pressing the button to see the change. Other than that, I am hitting a wall.
Text Description
Device configuration, as extracted from Tuya: 
- Microphone (TODO) on P23
- SPI MISO17
- SPI MOSI16
Device seems to be using CBU module, which is using BK7231N.
And the Tuya section starts, as usual, at 2023424

JSON Format:
{
	"Jsonver":"1.0.0",
	"brightmin":"10",
	"gmwb":"75",
	"title20":"1",
	"gmwg":"70",
	"knum":"1",
	"wfcfg":"spcl_auto",
	"colormin":"10",
	"pmemory":"1",
	"gmkb":"60",
	"k1sfunc":"5",
	"cmod":"4",
	"lednum":"12",
	"netlptime":"3",
	"micpin":"23",
	"rstbr":"50",
	"musicfunc":"1",
	"colormax":"100",
	"module":"CBU",
	"cwmaxp":"100",
	"rstmode":"1",
	"k1lfunc":"1",
	"dmod":"7",
	"brightmax":"100",
	"speedstep":"20",
	"wfct":"3",
	"expowctrl_pin":"8",
	"defbright":"100",
	"rstnum":"3",
	"rstcor":"r",
	"key1_pin":"24",
	"sensimax":"300",
	"miso":"17",
	"mosi":"16",
	"keyfunc":"1",
	"irfunc":"0",
	"expowctrl_lv":"1",
	"adclimit":"2400",
	"sensimin":"30",
	"MISO":"17",
	"wt":"20",
	"key1_lv":"0",
	"brightstep":"20",
	"remdmode":"0",
	"colorpfun":"0",
	"CS":"15",
	"gmwr":"100",
	"gmkg":"60",
	"onoffmode":"1",
	"colororder":"0",
	"brightrate":"20",
	"lptime":"3",
	"aging":"0",
	"category":"1101",
	"SCL":"14",
	"gmkr":"80",
	"defcolor":"r",
	"crc":"107",
	"}cPhAgw_di{abi":"0",
	"id":"null",
	"swv":"1.0.20",
	"bv":"40.00",
	"pv":"2.2",
	"lpv":"3.4",
	"pk":"keyfwt38nejumpuv",
	"firmk":"keyfwt38nejumpuv",
	"cadv":"1.0.5",
	"cdv":"1.0.0",
	"dev_swv":"1.0.20",
	"s_id":"null",
	"dtp":"0",
	"sync":"0",
	"attr_num":"1",
	"mst_tp_0":"9",
	"mst_ver_0":"1.0.20",
	"mst_tp_1":"0",
	"mst_ver_1":"null",
	"mst_tp_2":"0",
	"mst_ver_2":"null",
	"mst_tp_3":"0",
	"mst_ver_3":"null } )Agw_wsm{nc_tp",
	"ssid":"null",
	"passwd":"null",
	"md":"0",
	"random":"0",
	"wfb64":"1",
	"stat":"0",
	"token":"null",
	"region":"null",
	"reg_key":"null",
	"dns_prio":"0 }{uuid",
	"psk_key":"MnXfZutokIqrbtJmhnyMq6P1A0fcXxvuXcRmO",
	"auth_key":"tAOi6vMDmHSZ7VN7CvmGSE3IFbjv0AEi",
	"ap_ssid":"SmartLife",
	"ap_passwd":"null",
	"country_code":"null",
	"bt_mac":"null",
	"bt_hid":"null",
	"prod_test":"false",
	"fac_pin":"q8es5qukiuljknuj }{nc_tp",
	"lckey":"null",
	"h_url":"null",
	"h_ip":"null",
	"hs_url":"null",
	"hs_ip":"null",
	"hs_psk":"null",
	"hs_psk_ip":"null",
	"mqs_url":"null",
	"mqs_ip":"null",
	"mq_url":"null",
	"mq_ip":"null",
	"ai_sp":"null",
	"ai_sp_ip":"null",
	"mq_psk":"null",
	"mq_psk_ip":"null",
	"lp_url":"null",
	"lp_ip":"null",
	"time_z":"null",
	"s_time_z":"null",
	"wx_app_id":"null",
	"wx_uuid":"null",
	"dy_tls_m":"0",
	"cloud_cap":"0",
	"psk21_key":"null }{nc_tp"
}

I did find out from the backup that BK Flasher identified the use of SPI, MOSI, and MISO. You'll have to forgive me, as that is getting beyond my level of knowledge and it's a bit of a foreign language. I did my best to trace out the pins on the board and what components they are connected to. Here's what I found:
Circuit board with CBU module and labeled pins and pathways.
I've spent the past three days reading and learning; these threads seem similar to my device:
[BK7231N/CBU] Casa Life ALDI Aus - Floor Lamp Mood Lamp - RGB control, SPI? MOSI? MISO?
Deciphering Pin Configuration & JSON Readout for Marlrin RGBCW Corner Floor Lamp (MOSI/MISO)
[BK7231N - CBU] Teardown of Aldi (Australia) CasaLux Smart Led Corner Lamp
If there's any recommendations or literature that informs how to make this work, please let me know. I've been searching, but haven't found the solution yet.
Attachments:
  • readResult_BK7231N_QIO_OutdoorLEDSpotlights_2024-12-1-07-27-55.bin (2 MB) You must be logged in to download this attachment.

About Author
pborrelli wrote 10 posts with . Been with us since 2022 year.

Comments

p.kaczmarek2 16 Jan 2024 07:55

This looks like individually adressable LEDs, the DO (Data Out) marking also indicates this. Have you tried our experimental SPI driver? 1. Start driver startDriver SM16703P 2. Init Driver - replace... [Read more]

pborrelli 16 Jan 2024 15:51

You Sir are a genius and a saint! I ran the SPI Driver commands and got light! Two of the four lit up, one blue and the other white. I then powered it down to get a picture of the chip on the LED board: ... [Read more]

p.kaczmarek2 16 Jan 2024 16:18

WS2814A ... well, to be honest, it's the first time ever I see this chip, but it bears a significant resemblance to WS2812 LEDs. Let's check the datasheet: https://obrazki.elektroda.pl/6439973400_1705418166_thumb.jpg... [Read more]

pborrelli 16 Jan 2024 17:44

Good to know that it's new equipment, and not just that I'm new. I cleared the assignment on P16 and did some poking and prodding and am finally getting somewhere. P8 & P15 are set to relays, and I have... [Read more]

pborrelli 17 Jan 2024 23:30

I've been doing some testing and tuning, but not much to report. I can get all four lights to light up by playing with various settings on the number of pixels and the color assignment going to each one,... [Read more]

pborrelli 15 Aug 2024 20:52

So it's been most of a year now, these sat for about seven months, but I finally picked them up again. I found a workaround that provides correct color and individual control of each LED; though it's... [Read more]

FAQ

TL;DR: 32-bit LED frames move 33 % more data than standard 24-bit packets, and “timings are similar… but frame is 32 bit” [Elektroda, p.kaczmarek2, post #20912797] This CBU-based BK7231N board drives four WS2814 RGBW spots once GPIO P8 & P15 are powered and P16 feeds data. Why it matters: understanding the 32-bit SPI stream prevents ‘no-light’ headaches after flashing.

Quick Facts

• Module: Tuya CBU with BK7231N Wi-Fi SoC [Elektroda, pborrelli, post #20911851] • LED chipset: WS2814 (32-bit RGBW, SK6812 family) [Elektroda, p.kaczmarek2, post #20912797] • Active control pins: Data =P16, Power-En =P8 & P15 (relay-style) [Elektroda, pborrelli, post #20912961] • Tested LED count: 4 heads × 3 RGBW groups ≈ 12 pixels total [Elektroda, pborrelli, post #20911851] • ESPHome workaround: platform "Beken_SPI_LED_Strip", chipset="sk6812", is_wrgb=True [Elektroda, pborrelli, post #21192339]

Why did the LEDs stop working after flashing OpenBeken?

WS2814 uses 32-bit RGBW frames. The default OpenBeken SPI driver outputs 24-bit data, so pixels ignore the stream and stay dark [Elektroda, p.kaczmarek2, post #20912797]

Which GPIO pins must be configured to light the strips?

Set P8 and P15 as relays (they switch LED power) and leave P16 unassigned; the SPI driver uses P16 for data output [Elektroda, pborrelli, post #20912961]

How do I test the experimental SPI driver in OpenBeken?

  1. startDriver SM16703P
  2. SM16703P_Init 4
  3. SM16703P_SetPixel 0 255 255 255 (repeat for each pixel)
  4. SM16703P_Start This lights all heads when power relays are on [Elektroda, p.kaczmarek2, post #20912797]

I receive “enable tx 0x0000320c” errors—what does it mean?

The driver tries to send data when P8/P15 are low; LEDs lack power. Toggle both relays on, then rerun SM16703P_Start [Elektroda, pborrelli, post #20912961]

Is there a working firmware without code changes?

ESPHome 2024.6+ supports the Beken_SPI_LED_Strip platform; set chipset=sk6812 and is_wrgb=True for full RGBW control [Elektroda, pborrelli, post #21192339]

Edge case: can the driver overrun at high pixel counts?

Yes; developers report buffer overrun above 128 pixels on BK7231N, causing color drift OpenBeken Wiki. Keep totals below 120 for stability.

What power supply do the spotlights use?

Typical unit ships with a 12 V DC adapter rated 1 A (≈12 W), matching 0.3 W per WS2814 die at full white “Product Listing”.

Expert tip for reliable startup?

“Toggle relays before sending pixels; otherwise the first frame is lost,” advises user pborrelli [Elektroda, 20912961]
Generated by the language model.
%}