logo elektroda
logo elektroda
X
logo elektroda

Unusual Miboxer FUT037W+ LED strip controller with TuyaMCU - communication protocol, OpenBeken

p.kaczmarek2 
Illuminated Miboxer FUT037W+ LED strip connected to a controller.
I invite you to analyze the interior, structure and communication protocol (TuyaMCU - UART-based) of the unusual Miboxer FUT037W+ LED strip controller.
The product discussed here is distinguished by the fact that, in addition to WiFi communication, it also supports RF control, which is why the manufacturer decided to build it based on two microcontrollers.
We have a separate CB3S WiFi module (BK7231N) and a separate external MCU to which basically everything is connected. But let`s start from the beginning...

Purchase Miboxer FUT037W+
The product was given to me by a reader to upload OBK in order to pair the equipment with Home Assistant, but as far as I know, it was bought for about PLN 90:
Miboxer FUT037W+ LED RGBW controller.
Let`s see the item description from the seller:
Description and photo of the Miboxer MiLight FUT037W+ controller with packaging.
Yes, you can control it via WiFi or remote controls. Now the specifications:
Technical details and packaging of the Miboxer FUT037W+ controller.
Information about Bluetooth from the description suggests that there will be no ESP8266 inside.
User manual for Miboxer FUT037W+ controller
What do we get in practice?
LED controller Miboxer FUT037W+ packaging Miboxer FUT037W+ LED Controller Packaging Box of Miboxer FUT037W+ LED strip controller on a wooden table. Miboxer FUT037W+ LED controller box on a wooden surface
Set contents:
White casing of the Miboxer FUT037W+ LED controller on a wooden surface, featuring certifications and QR codes. Packaged LED controller Miboxer FUT037W+ on a wooden table Miboxer FUT037W+ LED Controller on a workbench
QR codes:
Close-up of a QR code on the Miboxer FUT037W+ device. Sticker with QR code and markings on LED controller
This controller has a separate DC jack input and a separate input for cables - smart and convenient.
Power and wire inputs on the Miboxer FUT037W+ LED controller.
And here are the outputs for the LED strip:
Close-up of electrical terminal connectors of Miboxer FUT037W+ LED controller


Interior of Miboxer FUT037W+
Just lift the cover, there are no screws:
Interior of the Miboxer FUT037W+ LED strip controller
You can immediately see that the MOSFET transistors are more powerful than usual, but why are they so dusty?
Close-up of a circuit board with MOSFET transistors in the Miboxer FUT037W+ controller
Slightly better:
Close-up of MOSFET transistors on a printed circuit board.
Electronic circuit board of the Miboxer FUT037W+ LED controller
K50N03A, really good parameters:
Diagram showing specifications and pin configuration of a MOSFET transistor.
We can now remove the PCB and look at the rest of the electronics:
Interior of Miboxer FUT037W+ LED controller Interior of Miboxer FUT037W+ LED controller with CB3S WiFi module
The WiFi module is WB3S, but it is on a separate board and connects to the base only with four goldpins. Here we have 3.3V, ground and TX and RX.
This is a typical example of a device based on TuyaMCU. Details in this topic:
class="notranslate"> TuyaMCU protocol - communication between the microcontroller and the WiFi module
Here I see the step down controller, it probably generates 3.3V from 12V from the belt:
CB3S WiFi module on the PCB of Miboxer FUT037W+ LED controller
And here we have the PL1166 A110K48 RF system (the MCU is under the WiFi module):
Close-up of the Miboxer FUT037W+ controller's circuit board with visible electronic components.
Close-up of electronic modules in the Miboxer FUT037W+ LED controller.
I desoldered the board with the WiFi module to see what the MCU is there:
WiFi module CB3S held by pliers WiFi module on a circuit board with a holder.
This is Nuvoton MS51FC0AE:
Close-up of a circuit board with a Nuvoton chip and other electronic components.
Close-up of the Miboxer FUT037W+ circuit board with visible electronic components.
Block diagram of a 24MHz 8051 microcontroller
This MCU supports the RF system and transistors, and communicates with the WiFi module via UART.

Tests with the Tuya application, i.e. we listen to UART communication
The already mentioned TuyaMCU protocol is based on UART and is used to send variable values in both directions, TuyaMCU variables have their own ID, the so-called dpID.
I described it in more detail in this topic: TuyaMCU analyzer - UART packet decoder for Tuya devices - dpID detector
So, the Tuya app recognizes the device from a distance:
App interface for adding a new device.
Despite one failure ("weak signal"), pairing is successful:
App screen showing the addition of a 3 in 1 (WiFi+2.4G) device App screen for adding a device with Miboxer LED controller showing weak signal App screen showing Tuya device being added. App screen showing successful addition of 3 in 1 Controller (WiFi+2.4G) device.
Inside we have a typical RGBCW controller:
Mobile application interface of MiBoxer showing LED control with color wheel and brightness sliders.
Of course, there are options here such as the initial state, calendar, etc., but I have discussed this before, so I will skip it.
Interface of Miboxer FUT037W+ LED controller app
Everything works:
Miboxer FUT037W+ LED controller with connected light strips displaying various colors.
So, according to the linked topic about the TuyaMCU analyzer, I collected data and launched the analyzer:
https://github.com/openshwprojects/TuyaMCUAnalyzer
First without pairing:

55AA00000000FF55AA000100000055AA000200000155AA03000001000355AA0307000816020004000003E81855AA030300000555AA0307000817020004000002124255AA030700101803000C3031363030336538303365380755AA030700201903001C30303030303030303030303030303030303030303030633830303030DC55AA0307000514010001012555AA0307000515040001012955AA030700121E00000E00000001010106000000000014006455AA030700061F00000200003055AA030700062000000200003155AA0307000522010001013355AA030700102100000C000100000000000003E800003255AA03070006D10000020000E255AA03070006D20000020000E355AA0307000568040001017C55AA0307000569040001017D55AA030700106500000C4200000001FA1464000D04C61655AA030000010104

Result:
User interface of TuyaMCU Analyzer showing UART packet data interpretation.
It is worth emphasizing that the TuyaMCU analyzer even decodes colors!
And after pairing, in order, warm white setting:

55 AA 00 06 00 19 1C 03 00 15 31 30 30 30 30 30 30 30 30 30 30 30 30 30 
33 65 38 30 30 30 30 83 55 AA 00 06 00 08 17 02 00 04 00 00 00 00 2A 55 
AA 00 06 00 05 15 04 00 01 00 24     

55 AA	00	06		00 19	1C030015313030303030303030303030303033653830303030	83	
HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 30 30 30	CHK	

55 AA	00	06		00 08	1702000400000000	2A	
HEADER	VER=00	Unk		LEN	fnId=23 Val V=0	CHK	

55 AA	00	06		00 05	1504000100	24	
HEADER	VER=00	Unk		LEN	fnId=21 Enum V=0	CHK	

Cool white setting:

55 AA 00 06 00 19 1C 03 00 15 31 30 30 30 30 30 30 30 30 30 30 30 30 30 
33 65 38 30 33 65 38 C3 55 AA 00 06 00 08 17 02 00 04 00 00 03 E8 15 55 
AA 00 06 00 05 15 04 00 01 00 24 55 AA 00 00 00 00 FF  

55 AA	00	06		00 19	1C030015313030303030303030303030303033653830336538	C3	
HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 33 65 38	CHK	

55 AA	00	06		00 08	17020004000003E8	15	
HEADER	VER=00	Unk		LEN	fnId=23 Val V=1000	CHK	

55 AA	00	06		00 05	1504000100	24	
HEADER	VER=00	Unk		LEN	fnId=21 Enum V=0	CHK	

55 AA	00	00		00 00		FF	
HEADER	VER=00	Heartbeat		LEN		CHK	

White temperature setting 50%:

55 AA 00 06 00 19 1C 03 00 15 31 30 30 30 30 30 30 30 30 30 30 30 30 30 
33 65 38 30 31 66 37 C1 55 AA 00 06 00 08 17 02 00 04 00 00 01 F7 22 55 
AA 00 06 00 05 15 04 00 01 00 24    

55 AA	00	06		00 19	1C030015313030303030303030303030303033653830316637	C1	
HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 31 66 37	CHK	

55 AA	00	06		00 08	17020004000001F7	22	
HEADER	VER=00	Unk		LEN	fnId=23 Val V=503	CHK	

55 AA	00	06		00 05	1504000100	24	
HEADER	VER=00	Unk		LEN	fnId=21 Enum V=0	CHK	

White temperature setting 75% (cooler white):

55 AA 00 00 00 00 FF 55 AA 00 06 00 19 1C 03 00 15 31 30 30 30 30 30 30 
30 30 30 30 30 30 30 33 65 38 30 33 31 37 8E 55 AA 00 06 00 08 17 02 00 
04 00 00 03 17 44 55 AA 00 06 00 05 15 04 00 01 00 24     

55 AA	00	00		00 00		FF	
HEADER	VER=00	Heartbeat		LEN		CHK	

55 AA	00	06		00 19	1C030015313030303030303030303030303033653830333137	8E	
HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 33 31 37	CHK	

55 AA	00	06		00 08	1702000400000317	44	
HEADER	VER=00	Unk		LEN	fnId=23 Val V=791	CHK	

55 AA	00	06		00 05	1504000100	24	
HEADER	VER=00	Unk		LEN	fnId=21 Enum V=0	CHK	

Green color setting:

55 AA 00 06 00 19 1C 03 00 15 31 30 30 36 66 30 33 65 38 30 33 65 38 30 
30 30 30 30 30 30 30 FF 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 
00 10 18 03 00 0C 30 30 36 62 30 33 65 38 30 33 65 38 34 55 AA 00 00 00 
00 FF  

55 AA	00	06		00 19	1C030015313030366630336538303365383030303030303030	FF	
HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 36 66 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30	CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	Unk		LEN	fnId=21 Enum V=1	CHK	

55 AA	00	06		00 10	1803000C303036623033653830336538	34	
HEADER	VER=00	Unk		LEN	fnId=24 Str V=30 30 36 62 30 33 65 38 30 33 65 38	CHK	

55 AA	00	00		00 00		FF	
HEADER	VER=00	Heartbeat		LEN		CHK	

Code Red Setting:

55 AA 00 06 00 19 1C 03 00 15 31 30 31 36 31 30 33 65 38 30 33 65 38 30 
30 30 30 30 30 30 30 CB 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 
00 10 18 03 00 0C 30 31 36 31 30 33 65 38 30 33 65 38 04                
            
55 AA	00	06		00 19	1C030015313031363130336538303365383030303030303030	CB	
HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 31 36 31 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30	CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	Unk		LEN	fnId=21 Enum V=1	CHK	

55 AA	00	06		00 10	1803000C303136313033653830336538	04	
HEADER	VER=00	Unk		LEN	fnId=24 Str V=30 31 36 31 30 33 65 38 30 33 65 38	CHK	

Blue color setting:

Setting blue:

55 AA 00 06 00 19 1C 03 00 15 31 30 30 65 31 30 33 65 38 30 33 65 38 30 
30 30 30 30 30 30 30 F9 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 
00 10 18 03 00 0C 30 30 65 31 30 33 65 38 30 33 65 38 32 55 AA 00 00 00 
00 FF                                                                   
            
55 AA	00	06		00 19	1C030015313030653130336538303365383030303030303030	F9	
HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 65 31 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30	CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	Unk		LEN	fnId=21 Enum V=1	CHK	

55 AA	00	06		00 10	1803000C303065313033653830336538	32	
HEADER	VER=00	Unk		LEN	fnId=24 Str V=30 30 65 31 30 33 65 38 30 33 65 38	CHK	

55 AA	00	00		00 00		FF	
HEADER	VER=00	Heartbeat		LEN		CHK	

Disabling toggle:

55 AA 00 06 00 05 14 01 00 01 00 20 55 AA 00 00 00 00 FF  

55 AA	00	06		00 05	1401000100	20	
HEADER	VER=00	SetDP		LEN	dpId=20 Bool V=0		CHK	

55 AA	00	00		00 00		FF	
HEADER	VER=00	Heartbeat		LEN		CHK	

Toggle on:

55 AA	00	06		00 05	1401000101	21	
HEADER	VER=00	SetDP		LEN	dpId=20 Bool V=1		CHK	



Dimmer at 46%:

55 AA 00 06 00 19 1C 03 00 15 31 30 30 65 31 30 33 65 38 30 31 64 30 30 
30 30 30 30 30 30 30 EE 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 
00 10 18 03 00 0C 30 30 65 31 30 33 65 38 30 31 64 30 27                
      
55 AA	00	06		00 19	1C030015313030653130336538303164303030303030303030	EE	
HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 65 31 30 33 65 38 30 31 64 30 30 30 30 30 30 30 30 30	CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	Unk		LEN	fnId=21 Enum V=1	CHK	

55 AA	00	06		00 10	1803000C303065313033653830316430	27	
HEADER	VER=00	Unk		LEN	fnId=24 Str V=30 30 65 31 30 33 65 38 30 31 64 30	CHK	

Dimmer at 12%:

55 AA 00 06 00 19 1C 03 00 15 31 30 30 65 31 30 33 65 38 30 30 37 39 30 
30 30 30 30 30 30 30 C9 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 
00 10 18 03 00 0C 30 30 65 31 30 33 65 38 30 30 37 39 02 55 AA 00 00 00 
00 FF   

55 AA	00	06		00 19	1C030015313030653130336538303037393030303030303030	C9	
HEADER	VER=00	Unk		LEN	fnId=28 Str V=31 30 30 65 31 30 33 65 38 30 30 37 39 30 30 30 30 30 30 30 30	CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	Unk		LEN	fnId=21 Enum V=1	CHK	

55 AA	00	06		00 10	1803000C303065313033653830303739	02	
HEADER	VER=00	Unk		LEN	fnId=24 Str V=30 30 65 31 30 33 65 38 30 30 37 39	CHK	

55 AA	00	00		00 00		FF	
HEADER	VER=00	Heartbeat		LEN		CHK	

Dimmer at 100%:

55 AA	00	06		00 19	1C030015313030653130336538303365383030303030303030	F9	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100e103e803e800000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303065313033653830336538	32	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00e103e803e8 Col: ■		CHK	



5 hour timer:

55 AA 00 06 00 08 1A 02 00 04 00 00 46 50 C3     

55 AA	00	06		00 08	1A02000400004650	C3	
HEADER	VER=00	SetDP		LEN	dpId=26 Val V=18000		CHK	


Timer for 1 hour and 16 minutes:

55 AA 00 00 00 00 FF 55 AA 00 06 00 08 1A 02 00 04 00 00 11 D0 0E   

55 AA	00	00		00 00		FF	
HEADER	VER=00	Heartbeat		LEN		CHK	

55 AA	00	06		00 08	1A020004000011D0	0E	
HEADER	VER=00	SetDP		LEN	dpId=26 Val V=4560		CHK	


Power On->Initial mode option:

55 AA 00 06 00 10 21 00 00 0C 00 00 00 00 00 00 00 00 03 E8 00 00 2D 55 

55 AA	00	06		00 10	2100000C000000000000000003E80000	2D	
HEADER	VER=00	SetDP		LEN	dpId=33 Raw V=00 00 00 00 00 00 00 00 03 E8 00 00		CHK	



Power On->Restory Memory option:

55 AA 00 00 00 00 FF 55 AA 00 06 00 10 21 00 00 0C 00 01 00 00 00 00 00 
00 03 E8 00 00 2E 55 AA 00 00 00 00 FF       

55 AA	00	00		00 00		FF	
HEADER	VER=00	Heartbeat		LEN		CHK	

55 AA	00	06		00 10	2100000C000100000000000003E80000	2E	
HEADER	VER=00	SetDP		LEN	dpId=33 Raw V=00 01 00 00 00 00 00 00 03 E8 00 00		CHK	

55 AA	00	00		00 00		FF	
HEADER	VER=00	Heartbeat		LEN		CHK	

Scrolling colors, in order: green, yellow, red, pink, blue:

E0 E0 E0 E0 E0 00 E0 E0 E0 00 00 00 00 E0 55 AA 00 06 00 19 1C 03 00 15 
31 30 30 36 33 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 CC 55 AA 
00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 36 33 
30 33 65 38 30 33 65 38 05 55 AA 00 06 00 19 1C 03 00 15 31 30 30 34 36 
30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 CD 55 AA 00 06 00 05 15 
04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 34 36 30 33 65 38 30 
33 65 38 06 55 AA 00 06 00 19 1C 03 00 15 31 30 30 32 62 30 33 65 38 30 
33 65 38 30 30 30 30 30 30 30 30 F7 55 AA 00 06 00 05 15 04 00 01 01 25 
55 AA 00 06 00 10 18 03 00 0C 30 30 32 62 30 33 65 38 30 33 65 38 30 55 
AA 00 06 00 19 1C 03 00 15 31 30 30 30 62 30 33 65 38 30 33 65 38 30 30 
30 30 30 30 30 30 F5 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 
10 18 03 00 0C 30 30 30 62 30 33 65 38 30 33 65 38 2E 55 AA 00 06 00 19 
1C 03 00 15 31 30 31 35 64 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 
30 FD 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 
30 31 35 64 30 33 65 38 30 33 65 38 36 55 AA 00 06 00 19 1C 03 00 15 31 
30 31 33 37 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 CE 55 AA 00 
06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 31 33 37 30 
33 65 38 30 33 65 38 07 55 AA 00 06 00 19 1C 03 00 15 31 30 31 32 32 30 
33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 C8 55 AA 00 06 00 05 15 04 
00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 31 32 32 30 33 65 38 30 33 
65 38 01 55 AA 00 06 00 19 1C 03 00 15 31 30 31 30 34 30 33 65 38 30 33 
65 38 30 30 30 30 30 30 30 30 C8 55 AA 00 06 00 05 15 04 00 01 01 25 55 
AA 00 06 00 10 18 03 00 0C 30 31 30 34 30 33 65 38 30 33 65 38 01 55 AA 
00 06 00 19 1C 03 00 15 31 30 30 65 62 30 33 65 38 30 33 65 38 30 30 30 
30 30 30 30 30 2A 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 
18 03 00 0C 30 30 65 62 30 33 65 38 30 33 65 38 63 55 AA 00 06 00 19 1C 
03 00 15 31 30 30 64 30 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 
F7 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 
30 64 30 30 33 65 38 30 33 65 38 30 55 AA 00 06 00 19 1C 03 00 15 31 30 
30 62 31 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 F6 55 AA 00 06 
00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 62 31 30 33 
65 38 30 33 65 38 2F  


55 AA	00	06		00 19	1C030015313030363330336538303365383030303030303030	CC	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1006303e803e800000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303036333033653830336538	05	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=006303e803e8 Col: ■		CHK	

55 AA	00	06		00 19	1C030015313030343630336538303365383030303030303030	CD	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1004603e803e800000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303034363033653830336538	06	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=004603e803e8 Col: ■		CHK	

55 AA	00	06		00 19	1C030015313030326230336538303365383030303030303030	F7	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1002b03e803e800000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303032623033653830336538	30	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=002b03e803e8 Col: ■		CHK	

55 AA	00	06		00 19	1C030015313030306230336538303365383030303030303030	F5	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1000b03e803e800000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303030623033653830336538	2E	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=000b03e803e8 Col: ■		CHK	

55 AA	00	06		00 19	1C030015313031356430336538303365383030303030303030	FD	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1015d03e803e800000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303135643033653830336538	36	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=015d03e803e8 Col: ■		CHK	

55 AA	00	06		00 19	1C030015313031333730336538303365383030303030303030	CE	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1013703e803e800000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303133373033653830336538	07	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=013703e803e8 Col: ■		CHK	

55 AA	00	06		00 19	1C030015313031323230336538303365383030303030303030	C8	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1012203e803e800000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303132323033653830336538	01	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=012203e803e8 Col: ■		CHK	

55 AA	00	06		00 19	1C030015313031303430336538303365383030303030303030	C8	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=1010403e803e800000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303130343033653830336538	01	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=010403e803e8 Col: ■		CHK	

55 AA	00	06		00 19	1C030015313030656230336538303365383030303030303030	2A	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100eb03e803e800000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303065623033653830336538	63	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00eb03e803e8 Col: ■		CHK	

55 AA	00	06		00 19	1C030015313030643030336538303365383030303030303030	F7	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100d003e803e800000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303064303033653830336538	30	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00d003e803e8 Col: ■		CHK	

55 AA	00	06		00 19	1C030015313030623130336538303365383030303030303030	F6	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e803e800000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303062313033653830336538	2F	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e803e8 Col: ■		CHK	



Moving the Dimmer from 100% to 0%:

55 AA 00 06 00 19 1C 03 00 15 31 30 30 62 31 30 33 65 38 30 33 64 31 30 30 30 30 30 30 30 30 EE 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 62 31 30 33 65 38 30 33 35 31 F8 55 AA 00 06 00 19 1C 03
 00 15 31 30 30 62 31 30 33 65 38 30 33 30 62 30 30 30 30 30 30 30 30 EB 55 AA 00 06 00 05 15 04 00 01 01 25 55 
AA 00 06 00 10 18 03 00 0C 30 30 62 31 30 33 65 38 30 32 37 61 29 55 AA 00 06 00 19 1C 03 00 15 31 30 30 62 31 30 33 65 38 30 32 34 32 30 30 30 30 30 30 30 30 BE 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00
 0C 30 30 62 31 30 33 65 38 30 31 39 36 FF 55 AA 00 06 00 19 1C 03 00 15 31 30 30 62 31 30 33 65 38 30 31 62 34 
30 30 30 30 30 30 30 30 ED 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 62 31 30 33 65 38 30 30 66 34 29 55 AA 00 06 00 19 1C 03 00 15 31 30 30 62 31 30 33 65 38 30 30 64 65 30 30 30 30 30 30 30 30
 1F 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 62 31 30 33 65 38 30 30 33 64 26 55 
AA 00 06 00 19 1C 03 00 15 31 30 30 62 31 30 33 65 38 30 30 33 39 30 30 30 30 30 30 30 30 C2 55 AA 00 06 00 05 15 04 00 01 01 25 55 AA 00 06 00 10 18 03 00 0C 30 30 62 31 30 33 65 38 30 30 30 61 20 55

55 AA	00	06		00 19	1C030015313030623130336538303364313030303030303030	EE	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e803d100000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303062313033653830333531	F8	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e80351 Col: ■		CHK	

55 AA	00	06		00 19	1C030015313030623130336538303330623030303030303030	EB	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e8030b00000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303062313033653830323761	29	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e8027a Col: ■		CHK	

55 AA	00	06		00 19	1C030015313030623130336538303234323030303030303030	BE	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e8024200000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303062313033653830313936	FF	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e80196 Col: ■		CHK	

55 AA	00	06		00 19	1C030015313030623130336538303162343030303030303030	ED	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e801b400000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303062313033653830306634	29	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e800f4 Col: ■		CHK	

55 AA	00	06		00 19	1C030015313030623130336538303064653030303030303030	1F	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e800de00000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303062313033653830303364	26	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e8003d Col: ■		CHK	

55 AA	00	06		00 19	1C030015313030623130336538303033393030303030303030	C2	
HEADER	VER=00	SetDP		LEN	dpId=28 Str V=100b103e8003900000000		CHK	

55 AA	00	06		00 05	1504000101	25	
HEADER	VER=00	SetDP		LEN	dpId=21 Enum V=1		CHK	

55 AA	00	06		00 10	1803000C303062313033653830303061	20	
HEADER	VER=00	SetDP		LEN	dpId=24 Str V=00b103e8000a Col: ■		CHK	



Finally, a comparison of packages.
Color, i.e. dpID 24:

    CC CC CC
30 30 36 62 30 33 65 38 30 33 65 38 dpID 24 green
30 31 36 31 30 33 65 38 30 33 65 38 dpID 24 red
30 30 65 31 30 33 65 38 30 33 65 38 dpID 24 blue

Color with temperature, i.e. dpID 28:

      CC CC CC
31 30 31 36 31 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 Setting Red
31 30 30 65 31 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 Setting Blue
31 30 30 36 66 30 33 65 38 30 33 65 38 30 30 30 30 30 30 30 30 Setting Green

31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 33 31 37 Temperature 75% cool
31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 31 66 37 Temperature 50% 
31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 33 65 38 Temperature cold
31 30 30 30 30 30 30 30 30 30 30 30 30 30 33 65 38 30 30 30 30 Temperature Warm


I also have a schema and dpIDs here, but taken from Tuya servers:
Code: JSON
Log in, to see the code

To summarize, we have the variables here:
- dpID 20 - boolean, on/off state
- dpID 21 - enum, operating mode, in order: white colors, color, animation, music
- dpID 22 - value, from 1 to 1000, probably the brightness level, but it only appears in white mode, not RGB
- dpID 23 - value, from 0 to 1000, white temperature
- dpID 24 - RGB color as ASCII string
- dpID 26 - value, timer in seconds
- dpID 28 - RGBCW color as ASCII string



Uploading OBK
We upload with my flasher:
https://github.com/openshwprojects/BK7231GUIFlashTool
Unfortunately, you have to remove (or desolder - depending on the PCB version) the WiFi module outside the system, because TuyaMCU uses the same UART port as programming.
Wireless module Miboxer FUT037W+ connected to a breadboard
later we need to create autoexec.bat : :

// start driver
startDriver TuyaMCU
// always send wifi state 0x04 to MCU - paired and connected to cloud
tuyaMcu_defWiFiState 4
// set baud rate (if your device is using 9600, remove this line)
tuyaMcu_setBaudRate 115200
// setup Tuya LED color dpID 24 and Color format 1
// (the other dpIDs are taken from default settings)
tuyaMCU_setupLED 24 1

The code is really very short, but the remaining dpIDs are set to default values. OBK does not send dpID 28 at the moment, but tests have shown that sending dpID 22 is sufficient.
The above code will connect the LED controller with OBK to the MCU from this device, so all LED commands as well as Home Assistant Discovery will work automatically.

Summary
I have already tested several Miboxer products (also relays) and it seems that they all have a similar structure. There is always TuyaMCU and a separate WiFi module. There is also an option to connect RF, but I haven`t tested it this time.
This device is a bit more complex than typical LED strip controllers, but we managed to free it from the cloud. Our TuyaMCU LED controller in OBK is quite new, so if you have any questions or problems, please feel free to write, we will try to help.
As for the construction itself - the transistors inside are certainly better than in the controller that I tested (and repaired) some time ago in the topic WiFi SmartLife single-color LED strip dimmer - test, interior, diagram , so basically I think we can recommend this product for slightly larger installations.
PS: Related forum topics:
- Miboxer FUT036w and CB3s Issues: Flashing Firmware, WiFi Connectivity, and Button Control
- Does MiBoxer FUT035W+ has Beken chipset and is it supported with OpenBeken?
PS2: If we don`t like the use of TuyaMCU in this product and we don`t need RF, we can always desolder the MCU and make jumpers to the PWM pins of the module itself with BK, but in this PCB version it would be quite problematic

About Author
p.kaczmarek2
p.kaczmarek2 wrote 12014 posts with rating 10034 , helped 575 times. Been with us since 2014 year.

Comments

p.kaczmarek2 04 Mar 2024 19:33

I flashed this bar again. This time for someone else. Packaging and product: https://obrazki.elektroda.pl/6787749600_1709577063_thumb.jpg https://obrazki.elektroda.pl/7863337400_1709577035_thumb.jpg... [Read more]

priva7eer 24 Dec 2024 00:53

I converted the FUT037W+ today according to these instructions. Specifically, I soldered the module board - that is, those 4 pins, without surface soldering or hot air, and used those pins for programming.... [Read more]

p.kaczmarek2 24 Dec 2024 05:47

So in your copy the baud was the default 9600 and not 115200? It's interesting and strange that different copies of the same product (different versions?) use different baud. It's good to know that this... [Read more]

divadiow 28 Dec 2024 17:58

assuming this is the backup from this device: https://github.com/openshwprojects/FlashDumps/blob/e559bb3a377b5866ff4758540840d11fb67ed4ed/IoT/BK7231N/BK7231N_QIO_FUT037W_2024-05-1-20-15-07.bin it equates... [Read more]

trynio132 21 Mar 2025 00:25

Hi, I have uploaded the Tasmot software to myself on the ESP-12S board. (Interestingly on the ESP-12F boards after soldering it doesn't work because I have some weird voltage on the GPIO0 pin) I soldered... [Read more]

p.kaczmarek2 22 Mar 2025 09:38

What is the current configuration of the Tasmota that you used? [Read more]

trynio132 23 Mar 2025 14:42

After uploading the tasmota, I used a template like this { "NAME": "name", "GPIO":[0,2272,0,2304,0,0,0,0,0,0,0,0,0,0,0,0], "FLAG":0, "BASE":54, "CMND": "DimmerRange 0,1000 | TuyaMCU 21,23 | | TuyaMCU... [Read more]

%}