FAQ
TL;DR: Users opened the MoesGo MS-105B dual dimmer, then achieved 100 % OTA success after 3 profile attempts—“the device stays in AP mode after power-cycle” [Elektroda, leśny_ziutek, #20827936]. Flashing works via Tuya-cloudcutter and OpenBeken without soldering.
Why it matters: This lets DIYers replace Tuya cloud control with fully local, automatable firmware in under 10 minutes.
Quick Facts
• SoC: Tuya CB2S (BK7231N, 2 MB flash) [Elektroda, 20827148]
• Companion MCU: Holtek HT66F3195 for zero-cross dimming [Elektroda, 20827148]
• Power stage: 2× SLD8N65SV 650 V / 7 A MOSFETs [Elektroda, 20827148]
• Type: Trailing-edge (MOSFET) dimmer, 1–100 % output [Elektroda, 20827148]
• OTA block risk: Updating to newer Tuya firmware can lock flashing [Elektroda, 20827829]
What chips are inside the MoesGo/MS-105B two-channel dimmer?
The Wi-Fi module is a Tuya CB2S (BK7231N) with 2 MB flash, while dimming logic runs on a Holtek HT66F3195 MCU; drive power uses two SLD8N65SV MOSFETs and S3M bridge diodes [Elektroda, 20827148]
Is the module leading-edge or trailing-edge?
Scope captures show MOSFET conduction starts after the zero-cross—confirming a trailing-edge (RC) topology [Elektroda, 20827148]
How do I enter AP (slow-blink) pairing mode?
- Power the dimmer until it fast-beeps.
- Short S1 to L ten times (~2 s rhythm).
- Device switches to slow-beep AP mode and advertises “SmartLife-XXXX” [Elektroda, 20827829]
Can the dimmer be flashed without opening the case?
Yes. Tuya-cloudcutter exploits AP mode; after selecting firmware version 1.0.2 and a matching BK7231N profile, OpenBeken uploads over Wi-Fi in 2–3 minutes [Elektroda, 20827829]
Which cloudcutter profile worked?
“bk7231n_common_user_config_ty” was the first working profile after two failures—success on the 3rd try [Elektroda, 20827936]
What happens if I accept Tuya firmware updates first?
Upgrading may patch the exploit and permanently block OTA flashing—avoid updating in the Tuya/SmartLife app [Elektroda, 20827829]
How do I silence the incessant beeper?
Add tuyaMcu_defWiFiState 4
to autoexec.bat and reboot; the MCU stops buzzing after a short delay [Elektroda, 20828080]
How are the Tuya dpIDs mapped to channels?
dpID 1/7 = on-off for L1/L2; dpID 2/8 = brightness for L1/L2; dpID 6/12 provide delayed-toggle seconds [Elektroda, #20828118; #20828211].
Minimum brightness is still too bright—fix?
Issue arises when bulbs need lower phase angle. Use tuyaMcu_setDimmerRange <min> <max>
, e.g., 100 900
, then test. Philips WarmGlow dimmed 0–100 %, while an Osram lamp only managed 30–100 % [Elektroda, 21351383]
Can I attach a latching (rocker) wall switch instead of a momentary?
The Tuya MCU expects momentary inputs. Work-around: wire an unused BK7231N GPIO (e.g., P26) to the switch and set its role to TglChannelOnToggle
; a rules script then toggles channel 1 or 2 [Elektroda, 20899252]
Edge case: what if OpenBeken boots in safe mode?
TuyaMCU keeps handling S1/S2 locally, so basic on/off still works during OBK recovery [Elektroda, 20888015]
Quick 3-step OTA flashing recap?
- Verify firmware version via Tuya app; do NOT update.
- Run
tuya-cloudcutter.sh
, choose BK7231N profile, supply OpenBeken .ug
file.
- Put dimmer in slow-blink AP mode; tool uploads firmware and reboots [Elektroda, 20827829]
Does Home Assistant auto-discover the dimmer?
With OpenBeken ≥ v1.17.326, HA MQTT discovery publishes two light
entities (with brightness) and one RSSI sensor; erroneous extra relays were fixed in that build [Elektroda, 20838604]
Can I remove the Holtek MCU and let BK7231N handle dimming?
Not yet. BK7231N lacks real-time zero-cross hardware; implementing phase-cut in firmware would require new driver development and community testing [Elektroda, 20901151]
What MOSFET ratings should replacement parts match?
Use 650 V Vds and ≥7 A continuous current; SLD8N65SV Rds(on) is 1.1 Ω at 25 °C [Elektroda, 20827148]