logo elektroda
logo elektroda
X
logo elektroda

Cozylife RGBCW 18W TW-805, W803-E400 - how do I set the pins in OpenW800?

prucho 501 12
ADVERTISEMENT
This content has been translated flag-pl » flag-en View the original version here
  • #1 21911833
    prucho
    Level 11  
    Posts: 13
    Help: 1
    Rate: 2
    Welcome.

    The Cozylife RGBCW 18W bulbs from China have arrived.


    White LED light bulb with frosted dome and metal screw base on a patterned surface Round RGBCW LED PCB with SMD LEDs and connector, labeled XL W60-RGBCW “Smart Bulb” box with a colorful bulb graphic and labels for RGB and 2700–6500K adjustable white. Back of RGBCW LED bulb package with RGB color bar and 2700–6500 K color temperature scale Label on Wi‑Fi E27 RGBCW 18W bulb box with barcode and 2700–6500K adjustable range


    original:

    Cozylife RGBCW 18W TW-805, W803-E400 - how do I set the pins in OpenW800?

    TW-805 module and W803-E400 chip.

    Cozylife RGBCW 18W TW-805, W803-E400 - how do I set the pins in OpenW800?

    more photos

    Cozylife RGBCW 18W TW-805, W803-E400 - how do I set the pins in OpenW800? Close-up of a green controller PCB with capacitors, inductor, SMD parts, and a 3-pin connector Close-up of a green PCB with power-supply components and a printed PCB antenna Green PCB underside with traces and solder pads; four-pin header protruding on the right Close-up of a PCB with “cozylife QP 20250829” module and power-supply components Close-up of a power supply PCB with capacitors and a shielded module labeled “cozylife QP” Close-up of a power supply PCB with capacitors and a shielded module labeled “cozylife QP”

    BK7231GUIFlashTool-build-318 doesn't seem to be able to detect or read the flash properly:

    Sync attempt 32/1000 failed... Sync success! Flash ID: 0xFFxx13 Flash size is 0MB ROM version: 8 Sending stub... Stub uploaded! Sync success!


    i tried manually setting Start Offset: 0x0 Length: 0x200000 :

    Sync attempt 38/1000 failed... Sync success! Flash ID: 0xFFxx13 Flash size is 0MB ROM version: 8 Sending stub... Stub uploaded! Sync success! Changing baud to 115200, will resync... Sync success! Read block at 0x000000...Failed to get response! Retrying... Read block at 0x000000...Failed to get response! Retrying... Read block at 0x000000...Failed to get response! Retrying... Read block at 0x000000...Failed to get response! Retrying... Read block at 0x000000...Failed to get response! Retrying... Read block at 0x000000...Failed to get response! Retrying... Read block at 0x000000...Failed to get response! Retrying... Read block at 0x000000...Failed to get response! Retrying... Read block at 0x000000...Failed to get response! Retrying... Read block at 0x000000...Failed to get response! Retrying... Read block at 0x000000...Failed to get response! Retrying... Read block at 0x000000...Failed to get response! Retrying... Response error count exceeded limit, stopping! Changing baud to 115200, will resync... Sync success! Changing baud to 115200 There was no result to save.


    I haven't tried flashing the BK7231GUIFlashTool yet, maybe on the next one I'll give it a try (lots of problems with boot and sync and upgrade_tools goes just give RST)

    I managed to get OpenW800_1.18.288. working with Upgrade_Tools_V1.5.9

    Cozylife RGBCW 18W TW-805, W803-E400 - how do I set the pins in OpenW800?

    pin setting:

    "pins": {
    "7": "PWM;1",
    "16": "PWM;2",
    "17": "PWM;3",
    "18": "PWM;4",
    "19": "PWM;5"


    Read original flash attached.

    Greetings
    Prucho
    Attachments:
    • flashdump_COM6_2026-05-31_11-42-24.bin (2 MB) You must be logged in to download this attachment.
  • ADVERTISEMENT
  • Helpful post
    #2 21911916
    divadiow
    Level 38  
    Posts: 5044
    Help: 438
    Rate: 892
    a different W803. that's interesting. definitely get a backup of the next one if you can, it could help with IO mapping (and it'll be a nice addition to the FlashDumps collection), though there is also the GPIO dr in web app:
    https://www.elektroda.com/rtvforum/topic3976371.html

    Added after 5 [minutes]:

    PWM IOs listed here anyway https://www.cozylife.app/product/zh/hardware/wifi/tw-805.html

    pinsymbolI/O typeFunction
    1GNDPPower reference ground
    2NC/
    3NC/
    4NC/
    5GNDPPower reference ground
    6PA7I/OPWM_4
    7PB0I/OPWM_0, UART3_TX
    8PB1PPWM_1, UART3_RX
    9PB2I/OPWM_2. UART2_TX
    10PB3I/OPWM_3. UART2_RX
    11GNDPPower reference ground
    12VCCPModule power supply pin (3.3V)
    13PB6I/OUART1_TX
    14PB20I/OPWM_1, UART0_RX (Default download port)
    15PB19PPWM_0, UART0_TX (default download port)
    16RST/The module enable pin is active high, indicating that the module has been pulled high. This pin can be externally controlled by the user.
    18PB11I/O


    Close-up of an electronic module with ICs and SMD components on a yellow PCB Close-up of a PCB section with pin labels such as PB11, RST, TX0, RX0, plus GND and NC
  • ADVERTISEMENT
  • #3 21912087
    prucho
    Level 11  
    Posts: 13
    Help: 1
    Rate: 2
    I found the pins in the WEBapp GPIOfinder

    "pins": {
    "7": "PWM;1",
    "16": "PWM;2",
    "17": "PWM;3",
    "18": "PWM;4",
    "19": "PWM;5"

    Even works nicely :)

    I made a second piece because in the first one I must have damaged something along the way, because it gently excites in the dark and doesn't work dimming only full colours at 100% (maybe I'll come back to it again)

    as for reading the flash (I still have a few pieces unmoved) just hint with what, because I am not as proficient as you :) and it looks like BK7231GUIFlashTool is erroneously detecting the flash.

    Sync success! Flash ID: 0xFFxx13 Flash size is 0MB ROM version: 8

    and the read does not go even when the range is set manually.

    Greetings
    prucho
  • #4 21912121
    divadiow
    Level 38  
    Posts: 5044
    Help: 438
    Rate: 892
    OK sure. I have W800s/W803 to test to be sure Easy Flasher works OK.

    Are you grounding RST pad briefly just as Easy Flasher flash read operation tries to begin?
  • Helpful post
    #5 21912418
    divadiow
    Level 38  
    Posts: 5044
    Help: 438
    Rate: 892
    I wasn't able to read the flash of the TW-803 module using Easy Flasher and TW-803 does not expose PA0 to strap it into download mode. The script here does however work https://www.elektroda.com/rtvforum/topic4134923.html

    Windows cmd.exe screenshot showing COM port log for flash read, ending with a CRC mismatch error

    I'm trying to see what can be done to make EF behave like the script in the ways that matter.

    Curious though that yours still says sync success and says it's read a flash ID- even though it doesn't look like a valid ID - I'm not getting that

    Added after 2 [hours] 8 [minutes]:

    @prucho please try the attached flasher. it should catch flash read on power-on/RST
    Attachments:
    • BK7231GUIFlashTool - 2026-05-30T084709.152.zip (1.18 MB) You must be logged in to download this attachment.
  • #6 21912984
    prucho
    Level 11  
    Posts: 13
    Help: 1
    Rate: 2
    Super!

    Dump read several times at different baudrates and is identical, so it looks correct.... It would be useful if someone would extract the data of the save procedure and make at least a script to save the whole backup bin file, so you can go back to the original.... I attach the file to the first post.

    Greetings
    prucho
  • Helpful post
    #7 21912997
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14604
    Help: 654
    Rate: 12620
    I haven't seen the W803 yet, thanks for sharing. Have you checked how hard the LEDs heat up after a long run? These Chinese products are not geared for longevity. Might be worth reducing the LED brightness a bit programmatically so this light doesn't overheat. Related material:
    [EN] How much does a Wi-Fi controlled Tuya LED lamp overheat? Changing the firmware and extending the life
    [EN] How hard does a Wi-Fi controlled Tuya LED lamp heat up? Changing the firmware and extending the life
    Helpful post? Buy me a coffee.
  • ADVERTISEMENT
  • #8 21913021
    prucho
    Level 11  
    Posts: 13
    Help: 1
    Rate: 2
    >>21912997

    I don't have an IR camera to hand unfortunately, I can only check with a simple laser meter. They actually heat up a lot, this aluminium housing inside under the plastic is supposed to dissipate the heat, only that the electronics are sealed, no air circulation inside.... but surprisingly I have about 7 of these bulbs still Tasmota and BK7231 in daily use for about 4-7 years and not one has died yet....

    Another small observation, could this be a firmware bug or a measurement error in the device itself? I've noticed that the BK7231 shows a chip temperature of around 50 degrees at rest and around 94 degrees at long run at full, while the W803 shows 75 at rest and 133 degrees at long run, 3 pieces of W803 the same. On the other hand, the chassis at long run BK7231 and W803 with laser meter at similar around 70 degrees


    Cozylife RGBCW 18W TW-805, W803-E400 - how do I set the pins in OpenW800?
    Cozylife RGBCW 18W TW-805, W803-E400 - how do I set the pins in OpenW800?
  • ADVERTISEMENT
  • #9 21913042
    divadiow
    Level 38  
    Posts: 5044
    Help: 438
    Rate: 892
    very good. your success was with the build of Easy Flasher GUI that I posted?

    I'm not sure what you mean about the scripting. Easy Flasher supports full flash read and write for W80x.
    I have flashed your backup and it boots

    Screenshot of BK7231 Easy UART Flasher showing “Writing done” and a hex log output.
  • #10 21913157
    prucho
    Level 11  
    Posts: 13
    Help: 1
    Rate: 2
    >>21913042
    I did the read flash with the w800_flash_read_crc_flush_double.py script with no problems, briefly RST to ground and everything worked from the snap.
    What I meant was, is there already a py script like w800_flash_read_crc_flush_double.py, but to upload the whole backup file.

    Easy uart flasher does not respond to RST either read flash or write flash. Those logs I had before, there some horrible combinations I did and after many attempts sometimes this flash misrecognition appeared....

    I'm about to desolder another module from another bulb and test again with easy uart flasher....
  • Helpful post
    #11 21913170
    divadiow
    Level 38  
    Posts: 5044
    Help: 438
    Rate: 892
    The attachment
    BK7231GUIFlashTool - 2026-05-30T084709.152.zip
    above is a special compilation that should work more like a script. Please test it if possible
  • #12 21913188
    prucho
    Level 11  
    Posts: 13
    Help: 1
    Rate: 2
    >>21913170

    oh yes! this version of gui works, lots of crc error but repeats and goes on.

    Spoiler:
    Backup name is set to test.
    Now is: Sunday, 31 May 2026 17:45:05.
    Flasher mode: W800
    Going to open port: COM6.
    Port ready!
    W800 sync timeout, sending AT+Z/ESC bootloader entry sequence...
    Sync success!
    Flash ID: 0xEBxx15
    Flash size is 2MB
    ROM version: 8
    Sending stub...
    Stub uploaded!
    Sync success!
    Changing baud to 115200, will resync...
    Sync success!
    Read block at 0x0000...Read block at 0x001000...Read block at 0x002000...Read block at 0x003000...Read block at 0x004000...CRC Error! Retrying...
    Read block at 0x004000...Read block at 0x005000...Read block at 0x006000...Read block at 0x007000...Read block at 0x008000...Read block at 0x009000...Read block at 0x00A000...Read block at 0x00B000...Read block at 0x00C000...CRC Error! Retrying...
    Read block at 0x00C000...Read block at 0x00D000...Read block at 0x00E000...Read block at 0x00F000...Read block at 0x010000...Read block at 0x011000...Read block at 0x012000...Read block at 0x013000...Read block at 0x014000...Read block at 0x015000...Read block at 0x016000...Read block at 0x017000....Read block at 0x018000...Read block at 0x019000...Read block at 0x01A000...Read block at 0x01B000...Read block at 0x01C000...Read block at 0x01D000...Read block at 0x01E000...Read block at 0x01F000...Read block at 0x020000...Read block at 0x021000...Read block at 0x022000...Read block at 0x023000...Read block at 0x024000...Read block at 0x025000...Read block at 0x026000...Read block at 0x027000...Read block at 0x028000...Read block at 0x029000...Read block at 0x02A000...Read block at 0x02B000...Read block at 0x02C000...Read block at 0x02D000...Read block at 0x02E000...Read block at 0x02F000...Read block at 0x030000...Read block at 0x031000...Read block at 0x032000...Read block at 0x033000...Read block at 0x034000...Read block at 0x035000...Read block at 0x036000...Read block at 0x037000...Read block at 0x038000...Read block at 0x039000...Read block at 0x03A000...Read block at 0x03B000...CRC Error! Retrying...
    Read block at 0x03B000...Read block at 0x03C000...Read block at 0x03D000...Read block at 0x03E000...Read block at 0x03F000...Read block at 0x040000...Read block at 0x041000...Read block at 0x042000...Read block at 0x043000...Read block at 0x044000...Read block at 0x045000...Read block at 0x046000...Read block at 0x047000...Read block at 0x048000...Read block at 0x049000...Read block at 0x04A000...Read block at 0x04B000...Read block at 0x04C000...Read block at 0x04D000...Read block at 0x04E000...Read block at 0x04F000...Read block at 0x050000...Read block at 0x051000...Read block at 0x052000...Read block at 0x053000...Read block at 0x054000...Read block at 0x055000...Read block at 0x056000...Read block at 0x057000...Read block at 0x058000...CRC Error! Retrying...
    Read block at 0x058000...Read block at 0x059000...Read block at 0x05A000...Read block at 0x05B000...Read block at 0x05C000...Read block at 0x05D000...Read block at 0x05E000...Read block at 0x05F000...Read block at 0x060000...Read block at 0x061000...Read block at 0x062000...Read block at 0x063000...Read block at 0x064000...Read block at 0x065000...Read block at 0x066000...Read block at 0x067000...Read block at 0x068000...Read block at 0x069000...Read block at 0x06A000...Read block at 0x06B000...Read block at 0x06C000...Read block at 0x06D000...Read block at 0x06E000...Read block at 0x06F000...Read block at 0x070000...Read block at 0x071000...CRC Error! Retrying...
    Read block at 0x071000...Read block at 0x072000...Read block at 0x073000...Read block at 0x074000...Read block at 0x075000...Read block at 0x076000...Read block at 0x077000...Read block at 0x078000...Read block at 0x079000...CRC Error! Retrying...
    Read block at 0x079000...Read block at 0x07A000...Read block at 0x07B000...Read block at 0x07C000...Read block at 0x07D000...Read block at 0x07E000...Read block at 0x07F000...Read block at 0x080000...Read block at 0x081000...CRC Error! Retrying...
    Read block at 0x081000...Read block at 0x082000...Read block at 0x083000...Read block at 0x084000...Read block at 0x085000...Read block at 0x086000...Read block at 0x087000...Read block at 0x088000...Read block at 0x089000...Read block at 0x08A000...Read block at 0x08B000...Read block at 0x08C000...Read block at 0x08D000...CRC Error! Retrying...
    Read block at 0x08D000...Read block at 0x08E000...Read block at 0x08F000...Read block at 0x090000...Read block at 0x091000...Read block at 0x092000...Read block at 0x093000...Read block at 0x094000...Read block at 0x095000......Read block at 0x096000...Read block at 0x097000...Read block at 0x098000...Read block at 0x099000...Read block at 0x09A000...Read block at 0x09B000...Read block at 0x09C000...Read block at 0x09D000...CRC Error! Retrying...
    Read block at 0x09D000...Read block at 0x09E000...Read block at 0x09F000...Read block at 0x0A0000...Read block at 0x0A1000...Read block at 0x0A2000...Read block at 0x0A3000...Read block at 0x0A4000...Read block at 0x0A5000...Read block at 0x0A6000...Read block at 0x0A7000...Read block at 0x0A8000...Read block at 0x0A9000...CRC Error! Retrying...
    Read block at 0x0A9000...Read block at 0x0AA000...Read block at 0x0AB000...Read block at 0x0AC000...CRC Error! Retrying...
    Read block at 0x0AC000...Read block at 0x0AD000...Read block at 0x0AE000...Read block at 0x0AF000...Read block at 0x0B0000...Read block at 0x0B1000...Read block at 0x0B2000...Read block at 0x0B3000...Read block at 0x0B4000...Read block at 0x0B5000...Read block at 0x0B6000...Read block at 0x0B7000...Read block at 0x0B8000...CRC Error! Retrying...
    Read block at 0x0B8000...Read block at 0x0B9000...Read block at 0x0BA000...Read block at 0x0BB000...Read block at 0x0BC000...Read block at 0x0BD000...Read block at 0x0BE000...Read block at 0x0BF000...Read block at 0x0C0000...CRC Error! Retrying...
    Read block at 0x0C0000...Read block at 0x0C1000...Read block at 0x0C2000...Read block at 0x0C3000...Read block at 0x0C4000...Read block at 0x0C5000...Read block at 0x0C6000...Read block at 0x0C7000...Read block at 0x0C8000...Read block at 0x0C9000...Read block at 0x0CA000...Read block at 0x0CB000...Read block at 0x0CC000...CRC Error! Retrying...
    Read block at 0x0CC000...Read block at 0x0CD000...Read block at 0x0CE000...Read block at 0x0CF000...CRC Error! Retrying...
    Read block at 0x0CF000...Read block at 0x0D0000...Read block at 0x0D1000...Read block at 0x0D2000...Read block at 0x0D3000...Read block at 0x0D4000...Read block at 0x0D5000...Read block at 0x0D6000...Read block at 0x0D7000...Read block at 0x0D8000...Read block at 0x0D9000...Read block at 0x0DA000...Read block at 0x0DB000...CRC Error! Retrying...
    Read block at 0x0DB000...Read block at 0x0DC000...Read block at 0x0DD000...Read block at 0x0DE000...Read block at 0x0DF000...Read block at 0x0E0000...Read block at 0x0E1000...Read block at 0x0E2000...Read block at 0x0E3000...Read block at 0x0E4000...Read block at 0x0E5000...Read block at 0x0E6000...Read block at 0x0E7000...CRC Error! Retrying...
    Read block at 0x0E7000...Read block at 0x0E8000...Read block at 0x0E9000...Read block at 0x0EA000...CRC Error! Retrying...
    Read block at 0x0EA000...Read block at 0x0EB000...Read block at 0x0EC000...Read block at 0x0ED000...Read block at 0x0EE000...Read block at 0x0EF000...Read block at 0x0F0000...Read block at 0x0F1000...Read block at 0x0F2000....Read block at 0x0F3000...Read block at 0x0F4000...Read block at 0x0F5000...Read block at 0x0F6000...Read block at 0x0F7000...Read block at 0x0F8000...Read block at 0x0F9000...Read block at 0x0FA000...Read block at 0x0FB000...CRC Error! Retrying...
    Read block at 0x0FB000...Read block at 0x0FC000...Read block at 0x0FD000...Read block at 0x0FE000...CRC Error! Retrying...
    Read block at 0x0FE000...Read block at 0x0FF000...Read block at 0x100000...Read block at 0x101000...Read block at 0x102000...Read block at 0x103000...Read block at 0x104000...Read block at 0x105000...Read block at 0x106000...CRC Error! Retrying...
    Read block at 0x106000...Read block at 0x107000...Read block at 0x108000...Read block at 0x109000...CRC Error! Retrying...
    Read block at 0x109000...Read block at 0x10A000...Read block at 0x10B000...Read block at 0x10C000...Read block at 0x10D000...CRC Error! Retrying...
    Read block at 0x10D000...Read block at 0x10E000...Read block at 0x10F000...Read block at 0x110000...Read block at 0x111000...Read block at 0x112000...Read block at 0x113000...Read block at 0x114000...Read block at 0x115000...Read block at 0x116000...Read block at 0x117000...Read block at 0x118000...Read block at 0x119000....Read block at 0x11A000...Read block at 0x11B000...Read block at 0x11C000...Read block at 0x11D000...Read block at 0x11E000...Read block at 0x11F000...Read block at 0x120000...Read block at 0x121000...Read block at 0x122000...Read block at 0x123000...Read block at 0x124000...Read block at 0x125000...Read block at 0x126000...CRC Error! Retrying...
    Read block at 0x126000...Read block at 0x127000...Read block at 0x128000...Read block at 0x129000...Read block at 0x12A000...Read block at 0x12B000...Read block at 0x12C000...Read block at 0x12D000...Read block at 0x12E000....Read block at 0x12F000...Read block at 0x130000...Read block at 0x131000...Read block at 0x132000...Read block at 0x133000...Read block at 0x134000...Read block at 0x135000...Read block at 0x136000...Read block at 0x137000...CRC Error! Retrying...
    Read block at 0x137000...Read block at 0x138000...Read block at 0x139000...Read block at 0x13A000...Read block at 0x13B000...Read block at 0x13C000...Read block at 0x13D000...Read block at 0x13E000...Read block at 0x13F000...CRC Error! Retrying...
    Read block at 0x13F000...Read block at 0x140000...Read block at 0x141000...Read block at 0x142000...Read block at 0x143000...Read block at 0x144000...Read block at 0x145000...Read block at 0x146000...Read block at 0x147000...CRC Error! Retrying...
    Read block at 0x147000...Read block at 0x148000...Read block at 0x149000...Read block at 0x14A000...Read block at 0x14B000...Read block at 0x14C000...Read block at 0x14D000...Read block at 0x14E000...Read block at 0x14F000...Read block at 0x150000....Read block at 0x151000...Read block at 0x152000...Read block at 0x153000...Read block at 0x154000...Read block at 0x155000...Read block at 0x156000...Read block at 0x157000...Read block at 0x158000...Read block at 0x159000...Read block at 0x15A000...Read block at 0x15B000...Read block at 0x15C000...Read block at 0x15D000...Read block at 0x15E000...Read block at 0x15F000...Read block at 0x160000...Read block at 0x161000...Read block at 0x162000...Read block at 0x163000...Read block at 0x164000...Read block at 0xx165000...Read block at 0x166000...Read block at 0x167000...Read block at 0x168000...Read block at 0x169000...Read block at 0x16A000...Read block at 0x16B000...Read block at 0x16C000...Read block at 0x16D000...Read block at 0x16E000...Read block at 0x16F000...Read block at 0x170000...Read block at 0x171000...CRC Error! Retrying...
    Read block at 0x171000...Read block at 0x172000...Read block at 0x173000...Read block at 0x174000...Read block at 0x175000...Read block at 0x176000...Read block at 0x177000...Read block at 0x178000...Read block at 0x179000...Read block at 0x17A000...Read block at 0x17B000...Read block at 0x17C000...Read block at 0x17D000...CRC Error! Retrying...
    Read block at 0x17D000...Read block at 0x17E000...Read block at 0x17F000...Read block at 0x180000...Read block at 0x181000...Read block at 0x182000...Read block at 0x183000...Read block at 0x184000...Read block at 0x185000...Read block at 0x186000...Read block at 0x187000....Read block at 0xx188000...Read block at 0x189000...Read block at 0x18A000...Read block at 0x18B000...Read block at 0x18C000...Read block at 0x18D000...Read block at 0x18E000...Read block at 0x18F000...Read block at 0x190000...Read block at 0x191000...Read block at 0x192000...CRC Error! Retrying...
    Read block at 0x192000...Read block at 0x193000...Read block at 0x194000...Read block at 0x195000...Read block at 0x196000...Read block at 0x197000...Read block at 0x198000...Read block at 0xx199000...Read block at 0x19A000...Read block at 0x19B000...Read block at 0x19C000...Read block at 0x19D000...Read block at 0x19E000...CRC Error! Retrying...
    Read block at 0x19E000...Read block at 0x19F000...Read block at 0x1A0000...Read block at 0x1A1000...Read block at 0x1A2000...Read block at 0x1A3000...Read block at 0x1A4000...Read block at 0x1A5000...Read block at 0x1A6000...Read block at 0x1A7000...Read block at 0x1A8000...Read block at 0x1A9000...Read block at 0x1AA000...Read block at 0x1AB000...Read block at 0x1AC000...Read block at 0x1AD000...Read block at 0x1AE000...Read block at 0x1AF000...Read block at 0x1B0000...Read block at 0x1B1000...Read block at 0x1B2000...Read block at 0x1B3000...CRC Error! Retrying...
    Read block at 0x1B3000...Read block at 0x1B4000...Read block at 0x1B5000...Read block at 0x1B6000...Read block at 0x1B7000...Read block at 0x1B8000...Read block at 0x1B9000...Read block at 0x1BA000...Read block at 0x1BB000...Read block at 0x1BC000...Read block at 0x1BD000...Read block at 0x1BE000...Read block at 0x1BF000...CRC Error! Retrying...
    Read block at 0x1BF000...Read block at 0x1C0000...Read block at 0x1C1000...Read block at 0x1C2000...CRC Error! Retrying...
    Read block at 0x1C2000...Read block at 0x1C3000...Read block at 0x1C4000...Read block at 0x1C5000...Read block at 0x1C6000...Read block at 0x1C7000...Read block at 0x1C8000...Read block at 0x1C9000...Read block at 0x1CA000...CRC Error! Retrying...
    Read block at 0x1CA000...Read block at 0x1CB000...Read block at 0x1CC000...Read block at 0x1CD000...Read block at 0x1CE000...Read block at 0x1CF000...Read block at 0x1D0000...Read block at 0x1D1000...Read block at 0x1D2000...Read block at 0x1D3000...Read block at 0x1D4000...Read block at 0x1D5000...Read block at 0x1D6000...Read block at 0x1D7000...Read block at 0x1D8000.....Read block at 0x1D9000...Read block at 0x1DA000...Read block at 0x1DB000...Read block at 0x1DC000...Read block at 0x1DD000...Read block at 0x1DE000...Read block at 0x1DF000...Read block at 0x1E0000...Read block at 0x1E1000...Read block at 0x1E2000...Read block at 0x1E3000...CRC Error! Retrying...
    Read block at 0x1E3000...Read block at 0x1E4000...Read block at 0x1E5000...Read block at 0x1E6000...Read block at 0x1E7000...Read block at 0x1E8000...Read block at 0x1E9000...Read block at 0x1EA000...Read block at 0x1EB000...Read block at 0x1EC000...Read block at 0x1ED000...Read block at 0x1EE000...Read block at 0x1EF000...Read block at 0x1F0000...Read block at 0x1F1000...Read block at 0x1F2000...Read block at 0x1F3000...CRC Error! Retrying...
    Read block at 0x1F3000...Read block at 0x1F4000...Read block at 0x1F5000...Read block at 0x1F6000...Read block at 0x1F7000...Read block at 0x1F8000...Read block at 0x1F9000...Read block at 0x1FA000...Read block at 0x1FB000...Read block at 0x1FC000...Read block at 0x1FD000...Read block at 0x1FE000...Read block at 0x1FF000...All blocks read!
    Read done for 2097152 bytes!
    Changing baud to 115200


    the write works perfectly, I uploaded this backup from the first post as well as the one read just now and the module gets up correctly

    cozylife_app_info
    CozyLife SDK Version: 0.6.0
    CozyLife SDK Build Apr 24 2025 11:32:37
    
    cozylife_app_info
    Product Id: rju4K7
    Firmware Version: 1.1.4
    Firmware Build Apr 24 2025 11:33:34
    
    
    device id:
    
    1609473600 [L] [     lib_log] udplog_init on: 0, 192.168.2.2:7789
    BT mac:c8586a302adf
    1609473600 [L] [     lib_ble] ble mac: c8:58:6a:30:2a:df
    1609473600 [L] [     lib_ble] bt_event_bleenabled
    bt port inited
    tls_wifi_passive_scan
    AP01  rssi:-70  channel:1  ssid:Heybroadband-13


    thanks
  • #13 21913297
    divadiow
    Level 38  
    Posts: 5044
    Help: 438
    Rate: 892
    that's good. thanks for checking.

FAQ

TL;DR: For Cozylife RGBCW 18W bulbs with a TW-805 and W803-E400, the working OpenW800 setup uses 5 PWM pins, and a 2MB flash backup can be read reliably if you briefly ground RST at sync. One tester confirmed, "this version of gui works." [#21913188]

Why it matters: This FAQ gives W803 bulb owners a repeatable path to map pins, back up the factory firmware, and avoid failed flash reads before installing OpenW800.

Tool / method Result in thread Key detail
BK7231GUIFlashTool build 318 Failed read Detected 0xFFxx13 and 0MB flash
w800_flash_read_crc_flush_double.py Worked Full dump read after brief RST-to-GND
Special Easy Flasher GUI build Worked Read 2MB with CRC retries; write also worked

Key insight: The pin map was solved, but the bigger breakthrough was backup reliability: standard detection failed on W803, while the script and a modified Easy Flasher succeeded when RST was timed correctly.

Quick Facts

  • The successful OpenW800 map used 5 PWM outputs: pins 7, 16, 17, 18, and 19 assigned to PWM;1 through PWM;5. [#21912087]
  • The working GUI read identified flash as 0xEBxx15 with a size of 2MB, then completed a full read of 2,097,152 bytes. [#21913188]
  • The TW-805 module power pin is listed as 3.3V VCC, and its exposed pad list includes PWM-capable lines such as PB0, PB19, and PB20. [#21911916]
  • Reported temperatures differed sharply: BK7231 showed about 50°C idle and 94°C under long full-load use, while W803 showed about 75°C idle and 133°C under similar load. [#21913021]
  • Housing temperature measured by a simple laser meter was about 70°C for both BK7231 and W803 bulbs during long operation, despite the higher internal W803 reading. [#21913021]

How do I set the correct OpenW800 pins for a Cozylife RGBCW 18W bulb with a TW-805 module and W803-E400 chip?

Set OpenW800 to five PWM channels and map the bulb outputs to pins 7, 16, 17, 18, and 19. This mapping was found with the web-app GPIO finder and then confirmed to work on the Cozylife RGBCW 18W bulb using the TW-805 module and W803-E400 chip. The user reported that it "works nicely," which makes this the tested starting point for this hardware. [#21912087]

What pin mapping worked in OpenW800 for the Cozylife TW-805 / W803-E400 RGBCW bulb?

The working mapping was:
  1. "7": "PWM;1"
  2. "16": "PWM;2", "17": "PWM;3"
  3. "18": "PWM;4", "19": "PWM;5" This exact five-channel map was tested on the Cozylife TW-805 / W803-E400 RGBCW bulb and produced normal operation. It is the only pin map in the thread confirmed by actual use. [#21911833]

Why does BK7231GUIFlashTool detect the W803 flash as 0xFFxx13 with 0MB size, and how can that be fixed?

It misdetects the W803 flash because the standard tool build does not handle this module’s read sequence correctly. In the failed case, it reported Flash ID: 0xFFxx13 and Flash size is 0MB, then could not read blocks even with a manual 0x0 to 0x200000 range. The fix in the thread was to stop using that build and switch to either the Python read script or a special Easy Flasher GUI build tuned to catch read on power-on or RST. [#21911833]

What is the TW-805 module in Cozylife smart bulbs, and how is it related to the W803-E400 chip?

The TW-805 module is a Wi-Fi module board that carries the W803-E400 chip and exposes its power and I/O pins to the bulb electronics. In this bulb, the poster identified a TW-805 module with a W803-E400 chip on it, and another post linked the TW-805 pin table showing 3.3V VCC, GND, RST, and several PWM-capable pins. [#21911916]

What is the W803-E400, and how does it differ from the BK7231 used in other Wi-Fi bulbs?

"W803-E400 is a Wi‑Fi SoC/module variant that runs in W80x-based smart devices, exposes a different flashing behavior, and needs W800/W803-capable tools rather than BK7231-specific assumptions." In the thread, BK7231GUIFlashTool misread the W803 flash, while W800-targeted tools succeeded. The user also observed different chip temperature readings: BK7231 around 50°C/94°C and W803 around 75°C/133°C. [#21913021]

Which is better for reading and writing W80x flash backups: Easy Flasher GUI or the w800_flash_read_crc_flush_double.py script?

The Python script was the first proven reader, but the special Easy Flasher GUI became the better all-in-one option because it read and wrote full backups. The script read flash "with no problems" after a brief RST-to-ground action. Later, the modified GUI read all 2MB despite CRC retries and also wrote both the original backup and a fresh dump successfully. [#21913188]

How do I read the full original flash from a W803/TW-805 module before installing OpenW800?

Use a W800/W803-capable tool and take the backup before flashing OpenW800.
  1. Connect the module over UART and select W800 mode.
  2. Start a full flash read and briefly ground RST when sync begins.
  3. Save the complete backup and verify it by comparing repeated reads. In the thread, repeated dumps at different baud rates matched, which strongly indicated a correct factory backup. [#21912984]

When should I briefly ground the RST pad during a W800/W803 flash read so the tool actually syncs?

Briefly ground RST right as the read operation tries to begin syncing. One participant explicitly asked whether RST was being grounded "just as" Easy Flasher flash read starts, and the successful read method later confirmed that a brief RST-to-ground action at the start made the Python script work immediately. Timing matters more here than holding reset for a long period. [#21913157]

Why does Easy Flasher fail on some TW-803 or TW-805 modules, and what does PA0 download-mode strapping have to do with it?

Easy Flasher can fail because some modules do not expose the pin needed for easy download-mode entry. The thread states that TW-803 does not expose PA0, so it cannot be strapped into download mode that way. That is why the regular GUI failed to read some modules, while the script and a modified GUI that caught flash read on power-on or RST worked instead. [#21912418]

Where can I find the GPIO or PWM mapping for a Cozylife TW-805 module if OpenW800 pin discovery is unclear?

Use the OpenW800 web-app GPIO finder first, then cross-check the TW-805 hardware page pin table. The user found the working pin map in the web-app GPIO finder, and another reply pointed to the Cozylife TW-805 page listing PWM-capable pins such as PB0, PB19, PB20, and PA7. Those two sources together narrowed the correct five-pin PWM setup. [#21912087]

How can I write a complete backup BIN back to a W803 module, and is there a Python script for full-flash restore like the read script?

You can restore a complete backup BIN with the working Easy Flasher GUI build. The user asked whether a Python restore script existed like w800_flash_read_crc_flush_double.py, but the confirmed result in the thread was that the special GUI wrote both the first-post backup and the newly read dump, and the module booted correctly afterward. No Python restore script was confirmed in the discussion. [#21913188]

What causes repeated CRC errors during W800 flash reads, and when are retries still considered safe?

Repeated CRC errors here indicate read instability, not automatic dump failure, as long as the tool retries and completes the full image. In the successful log, the GUI reported many CRC Error! Retrying... events across addresses from 0x004000 up to 0x1F3000, yet still finished all blocks and read 2,097,152 bytes. The same module also booted after writing the backup back, which validated the dump path. [#21913188]

Why would a converted RGBCW bulb only output full 100% colors and fail to dim after flashing or hardware work?

That symptom points to hardware damage or a bad channel path, not a confirmed OpenW800 pin-map issue. The user reported that the first bulb likely got damaged during work because it glowed faintly in the dark and would show only full colors at 100% with no dimming. A second bulb with the same pin setup worked correctly, which isolates the failure to that unit or its modification process. [#21912087]

How hot do Cozylife RGBCW 18W bulbs get in long-term use, and should brightness be reduced in firmware to extend lifespan?

They get hot enough that reducing brightness in firmware is a reasonable life-extension step. One expert comment warned that such Chinese bulbs are not built for longevity and suggested lowering LED brightness programmatically so the lamp does not overheat. The owner also measured roughly 70°C on the housing during long full-power use, while noting the aluminum body is sealed with little internal air circulation. [#21912997]

Why does the W803 report much higher chip temperatures than BK7231 in similar bulbs even when the housing temperature looks about the same?

The thread did not confirm the cause, but it clearly shows the discrepancy may come from firmware reporting or internal sensor behavior. The user measured about 70°C on the housing for both designs, yet OpenW800 reported BK7231 near 50°C idle and 94°C loaded, versus W803 near 75°C idle and 133°C loaded across 3 units. That makes the sensor reading itself the main unresolved variable. [#21913021]
Generated by the language model.
ADVERTISEMENT