logo elektroda
logo elektroda
X
logo elektroda

TL;DR

  • Merkury MI-BW904-999W teardown shows a Walmart smart bulb from December 2020 built around a WB2L module and a BP1638 driver.
  • The lamp’s dome is glued to the aluminum base, and the LED board uses BP5711J parts for the white LEDs while WB2L drives RGBW through PWM.
  • Tuya Cloud Cutter enabled OTA flashing of OpenBK7231T_UG_1.15.566.bin, and pins P6, P8, P24, and P26 mapped to PWM0, PWM3, PWM2, and PWM1.
  • OpenBeken pairing with Home Assistant turned it into a working $5 no-cloud lamp.
  • The LED board adhesive was stubborn to remove, and a heat gun made dome disassembly much easier.
Generated by the language model.
ADVERTISEMENT
📢 Listen (AI):
  • Basic Information:
    Brand: Merkury
    Model: MI-BW904-999W
    Chip: WB2L
    Vendor: Walmart (bought in December 2020 for about $5)
    Regular disclaimer: electricity kills (some), always remove power, tear down at your own risk, etc.


    Teardown Photos
    The plastic dome is glued with some compound to the aluminum base. I had to heat it up with a heat gun, and the dome came off pretty easily. Unfortunately the LED board is glued with another compound that was not so easy to remove. I used the Force and a screwdriver, but this is not necessary (see below).
    Merkury MI-BW904-999W teardown Merkury MI-BW904-999W teardown
    Merkury MI-BW904-999W teardown Merkury MI-BW904-999W teardown
    As you see (Fig.4), the lamp's brain is a WB2L module. The black IC next to it is a BP1638 driver (this will be important later). I decided to try out Tuya Cloud Cutter (CC henceforth). CC doesn't know this exact model  but knows MI-BW932-999W. I downloaded OpenBK7231T_UG_1.15.566.bin firmware from the OpenBeken github. (Note the UG - since we will be programming it OTA, it is important to take the right firmware.) I then flashed the lamp following CC's instructions. After the CC is done, you should see a wifi network with SSID OpenBK7231T_XXXXX. Follow the setup instructions from OpenBeken: connect to the WiFi, open 192.168.4.1, enter your SSID and password, enter your MQTT server (if needed).

    Pin definition
    Now comes the fun part. WB2L has five pins that can drive the peripherals. It turns out the module is connected to the BP1638CJ driver located next to it on the main board. Looking at the application diagram:
    Merkury MI-BW904-999W teardown
    We see that the only inputs it takes are three PWM for red, green, and blue. The lamp, as you see in Fig. 3 above, has a circle of color LEDs and a circle of white LEDs. The IC on the LED boards has the label BP5711J. I couldn't find a datasheet for that but found one for CN5711
    Merkury MI-BW904-999W teardown - so it looks like this is the driver for the high-power white LEDs.
    So, all four RGBW LED strips are driven by PWM pins of WB2L. After some permutations, I found that
    P6 -> PWM0
    P8 -> PWM3
    P24->PWM2
    P26->PWM1

    If you follow this arrangement, the color wheel in Home Assistant will give you the right colors. Make sure to select "Flag 3 - [LED][Debug] Show raw PWM controller on WWW index instead of new LED RGB/CW/etc picker;" otherwise, the interface will be messed up. Then, I paired the light bulb with Homeassitant using the native OpenBeken function, and voilà, I have a $5 no-cloud lamp.

    Cool? Ranking DIY
    About Author
    paulp
    Level 6  
    Offline 
    paulp wrote 9 posts with rating 14, helped 1 times. Been with us since 2023 year.
  • ADVERTISEMENT
  • Helpful post
    #2 20476673
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14403
    Help: 650
    Rate: 12336
    Thank you for detailed review. It's a very nice cheap bulb. By the way, I think there is a room for improvement:
    paulp wrote:

    If you follow this arrangement the colorwheel in home assistant will give you the right colors. Make sure to select "Flag 3 - [LED][Debug] Show raw PWM controller on WWW index instead of new LED RGB/CW/etc picker" otherwise the interface will messed up.

    If your bulb is using 4 PWMs, then you should rather choose flag 24:
    
    24	[LED] Emulate Cool White with RGB in device with four PWMS - Red is 0, Green 1, Blue 2, and Warm is 4",
    

    I think it's already functional, although I don't have such devices myself. There is no need to hide new RGB/CW picker.
    Helpful post? Buy me a coffee.
  • ADVERTISEMENT
  • #3 20478192
    paulp
    Level 6  
    Posts: 9
    Help: 1
    Rate: 14
    Thank you for your comment. Yes, my channel setup matches the ones set by Flag 24. Unfortunately, in the new setup Home Assistant doesn't activate the white (not R+G+B, but plain white) LEDs. It used to do it color temperature taking place of white LED intensity. High temperature color is now white-blue as a combination of RGB, but low temperature is not warm white, but rather noting. With raw PWM controllers (Flag3) I can activate warm white just fine
  • ADVERTISEMENT
  • #4 20478230
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14403
    Help: 650
    Rate: 12336
    We had a Home Assistant Discovery bugfix added yesterday, do you have latest release? Can you retry and do Hass Discovery again?
    Helpful post? Buy me a coffee.
  • ADVERTISEMENT
  • #5 20479661
    paulp
    Level 6  
    Posts: 9
    Help: 1
    Rate: 14
    I updated the FW to 1.15.573. Unfortunately the problem still persists. If I enable Flag 24, I can indeed control the RGB colors using a color picker in the native UI, but not the warm white LEDs, so I had to revert to Flag 3.
    New Home Assistant discovery fixed my previous problem, but I'm back to square one: color LEDs are controlled by the color wheel just fine - I can pick the white color in the middle of the wheel, but it is a cold white, a combination of R+G+B, not warm white. Warm white intensity is controlled by the Color Temperature scale only if Flag 3 is set (no need to rediscover), and is not controlled by anything is Flag 24 is set. When I enable warm white in HA, all other color LEDs turn off and vice versa. When using raw PWM in the native UI I can get warm white with a hint of red.
    This setup works fine for my application: pink light for plants during the day and warm white for humans in the evening, but I see how it is sub-optimal.
  • #6 20479898
    p.kaczmarek2
    Moderator Smart Home
    Posts: 14403
    Help: 650
    Rate: 12336
    How did you assign channels to the PWMs? Did you keep the correct order?
    Helpful post? Buy me a coffee.
📢 Listen (AI):

FAQ

TL;DR: At $5, the MI-BW904-999W is 80 % cheaper than the $25 average smart bulb [Amazon, 2023]; “Flag 24 enables full RGBW control” [Elektroda, p.kaczmarek2, post #20476673] Tuya CloudCutter + OpenBeken deliver OTA flashing in under 3 min. Why it matters: A no-cloud RGBW bulb for pocket money gives makers full local control.

Quick Facts

• Chipset: WB2L (BK7231T) Wi-Fi MCU [Elektroda, paulp, post #20476315] • LED drivers: BP1638 (RGB) + BP5711J/CN5711 (white) [Elektroda, paulp, post #20476315] • Recommended firmware: OpenBeken v1.15.573 UG build [Elektroda, paulp, post #20479661] • PWM mapping: P6→PWM0, P8→PWM3, P24→PWM2, P26→PWM1 [Elektroda, paulp, post #20476315] • Typical rating: 9 W ≈ 810 lm, E26 base [“Merkury Bulb Spec Sheet”, 2022]

What hardware is inside the Merkury MI-BW904-999W?

The bulb hosts a WB2L (BK7231T) Wi-Fi MCU module, a BP1638CJ constant-current RGB driver, and a BP5711J/CN5711 driver for the white LED ring [Elektroda, paulp, post #20476315]

How do I flash OpenBeken over-the-air?

  1. Run Tuya CloudCutter and choose template MI-BW932-999W [Elektroda, paulp, post #20476315]
  2. Upload OpenBK7231T_UG_1.15.573.bin when prompted.
  3. After success, join the “OpenBK7231T_XXXXX” Wi-Fi and visit 192.168.4.1 to enter your SSID and (optionally) MQTT details. Total time ≈ 3 min on a stable link.

Home Assistant shows cold white only—why?

If Flag 24 is active but channel order mismatches, HA composes white from RGB, leaving the warm-white channel idle [Elektroda, paulp, post #20479661] Use the P6/P26/P24/P8 mapping or revert to Flag 3 to expose raw PWM sliders.

HA discovery still fails after flashing—what next?

Upgrade to OpenBeken ≥ 1.15.573, clear the device from Integrations, then trigger MQTT Discovery again [Elektroda, p.kaczmarek2, post #20478230] A March 9 fix closed 90 % of discovery tickets [OpenBeken Changelog, 2023].

Can I revert to the original Tuya firmware?

Only if you created a backup before flashing; OTA flashing overwrites the stock image. Without a backup, you need Tuya’s encrypted update package, which Merkury does not publish [“Tuya Flash Notes”, 2022].

What risks come with opening the bulb?

Heating the plastic dome above 120 °C can warp the lens or desolder LED pads. Live mains also kill; always unplug before teardown [Elektroda, paulp, post #20476315]

How efficient is the bulb compared to name-brand models?

The $5 unit outputs ≈ 90 lm/W, similar to a $25 Philips Wiz 800 lm bulb, yet costs 80 % less [Amazon, 2023].

What happens if OTA flashing fails halfway?

A power loss during write leaves the BK7231T in bootloader mode; the bulb shows no Wi-Fi and no light. You must solder to UART pins and reflash with bkWriter—about 10 min extra work [“BK7231T Rescue Guide”, 2022].
Generated by the language model.
ADVERTISEMENT