logo elektroda
logo elektroda
X
logo elektroda

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

p.kaczmarek2 2790 7
ADVERTISEMENT
Treść została przetłumaczona polish » english Zobacz oryginalną wersję tematu
  • 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

    Cool? Ranking DIY
    Helpful post? Buy me a coffee.
    About Author
    p.kaczmarek2
    Moderator Smart Home
    Offline 
    p.kaczmarek2 wrote 12317 posts with rating 10201, helped 583 times. Been with us since 2014 year.
  • ADVERTISEMENT
  • #2 20990322
    p.kaczmarek2
    Moderator Smart Home
    I flashed this bar again. This time for someone else. Packaging and product:
    Miboxer 3 in 1 LED controller with green light on a wooden surface. MIBOXER 3 in 1 LED Controller (WiFi + 2.4G) packaging on a wooden table. MiBoxer 3 in 1 LED controller packaging on a wooden table MiBoxer 3 in 1 LED controller on a wooden table. Miboxer 3 in 1 LED controller on a wooden table.
    App:
    App interface of 3 in 1 Controller with color and brightness settings for light. App interface for adding electrical devices. App screen adding device 3 in 1 Controller (WiFi+2.4G) with an option to finish the process. App screen showing the addition of a 3 in 1 Controller (WiFi+2.4G).
    Interior:
    Close-up of an electronic circuit with an exposed module. View of the interior of a white plastic electronic device with a mounted green circuit board and several black components. Close-up of a circuit board with a CB3S module and electronic components. Close-up photo of a PCB with a CB3S module installed. CB3S module mounted on a circuit board.
    For the duration of flashing, I removed the CB3S with hot air:
    Electronic module with a breadboard and wires on a wooden surface. Photo of a MiBoxer electronic module on a workshop table. Electronic circuit with wires on a breadboard.

    Added after 26 [seconds]:

    At this moment - the interior remains unchanged.
    Helpful post? Buy me a coffee.
  • ADVERTISEMENT
  • #3 21360725
    priva7eer
    Level 2  
    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. I uploaded OpenBK7231T_UA_1.17.803.bin without any major problems, configured OBK with my WiFi, MQTT and saved them as well. I am using Flasher bk7231flasher_1.3.3.

    After assembling and commissioning, the chip booted and the LEDs lit up white, but there were no sliders or buttons to control the light in the device panel.

    I went to Web Application > Filesystem. I added (Create File) autoexec.bat with the contents above. After a reboot, the sliders and buttons appeared, but did not control anything. The LEDs remained white. After searching for a while, I found the solution:

    // set baud rate (if your device is using 9600, remove this line)
    tuyaMcu_setBaudRate 115200
    .

    I remembered that when trying to convert the Tuya configuration I got a message

    Sorry, no meaningful pins data found. This device may be TuyaMCU or a custom one with no Tuya config data.
    Baud keyword found, this device may be TuyaMCU or BL0942. Baud value is 9600
    No module information found.
    And the Tuya section starts, as usual, at 2023424


    Removing that line worked. Thanks for the cool soft!

    PCB with mounted CB3S module and various connectors. .
  • ADVERTISEMENT
  • #4 21360774
    p.kaczmarek2
    Moderator Smart Home
    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 situation occurs.

    PS: the baud problem is easy to detect by looking at the logs in the Web App log - if the baud is bad, there is no communication, not even heartbeats from TuyaMCU arrive and the command tuyaMcu_sendQueryState does not work.
    Helpful post? Buy me a coffee.
  • #6 21488606
    trynio132
    Level 2  
    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 out the CB3S chip and soldered in my ESP-12S board
    I've done the basic setup and it generally works, but I'm not entirely happy with the settings.
    Could anyone help with the tasmot settings for the FUT037W+?

    When I uploaded the configuration and then pasted the settings into the console from this model it's pretty much ok because from the remote it works, but from the web app it's impossible to control in RGBCTT mode, just RGB works
    https://templates.blakadder.com/miboxer_WL5.html

    On the other hand, uploading these settings from FUT039W https://templates.blakadder.com/miboxer_FUT039W.html
    There is an option to control RGBCTT, but the leds spontaneously change colour one second after my setting (as if to the previously selected colour)
  • ADVERTISEMENT
  • #7 21490059
    p.kaczmarek2
    Moderator Smart Home
    What is the current configuration of the Tasmota that you used?
    Helpful post? Buy me a coffee.
  • #8 21491749
    trynio132
    Level 2  
    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 81,26 }

    Tasmota configuration settings for LED controller. .
    And then by trial and error I arrived at this configuration :) .
    Backlog DimmerRange 0,1000; TuyaMCU 11,20; TuyaMCU 26,21; TuyaMCU 21,21; TuyaMCU 24,24; TuyaMCU 81,26; TuyaMCU 98,101;

    On these settings it now works properly, as I specifically have the RGB + W bar and can control the colours, white light on and off as well as the dimming function works.

    Tasmota user interface with sliders for lighting control. .

    Also thanks for your help.

    As a curiosity I can say that I bought the same driver in the zigbee version - that is FUT037Z+ and it turns out that in it there is no possibility to switch on the white diode at the same time together with the RGB, I found some discussions on github regarding this driver and everyone confirms that the zigbee version does not cope with switching on the RGB diode at the same time, and the W/CCT

    Also, if anyone is wondering what to use when building a smart home, it is definitely better to choose the Wifi model and solder the chip to the ESP :) .

    The only inconvenience I have is that in this configuration I can't turn on the white LED alone from the homeassistant. RGB alone works for me of course, and RGB in combination with the white LED, however it is not possible to switch on the white alone without RGB (but from the remote it works fine so it's a detail)

    In the example of the homeassistant, such a setting makes the white light shine and the RGB diode shine red
    This is of course probably a matter of the lighting widget in the homeassistant itself :) .

    Tasmota interface with color wheel for RGB and white lighting control.

Topic summary

The discussion focuses on the Miboxer FUT037W+ LED strip controller, notable for its dual-microcontroller design integrating a CB3S WiFi module (BK7231N) and an external MCU to support both WiFi and RF control. Users analyze its internal hardware, communication protocol based on TuyaMCU over UART, and firmware modifications to enable integration with Home Assistant. Key challenges include identifying the correct TuyaMCU baud rate, which varies between 9600 and 115200 baud in different device versions, affecting communication and control responsiveness. Firmware flashing with OpenBeken (OpenBK7231T) and Tasmota is explored, with users sharing configuration templates and troubleshooting issues such as missing control sliders and RGBCTT mode inconsistencies. The device’s Tuya data points (DPs) are mapped, revealing control over ON/OFF, mode selection (white, colour, scene, music), brightness, color temperature, and color settings. Comparisons with the zigbee variant FUT037Z+ highlight differences in white LED control capabilities. The discussion includes practical advice on soldering, flashing procedures, and configuration parameters to achieve full functional control of the LED strip via MQTT and web interfaces.
Summary generated by the language model.
ADVERTISEMENT