This repository contains the Zigbee firmware for Xiaomi LYWSD03MMC Bluetooth temperature and humidity sensor.
The LYWSD03MMC is a Bluetooth temperature and humidity sensor that can be integrated into a Zigbee network using this firmware. This repository hosts the code and related resources to flash the device and make it compatible with Zigbee networks.
-
Full-featured firmware to convert Xiaomi LYWSD03MC device with default ZCL battery, temperature and relative humidity clusters
-
Display support for known revisions
-
OTA support in firmware and binaries in ZCL format for update
-
Flashable over-the-air from custom ATC firmware https://devbis.github.io/telink-zigbee/
-
Flashable over SWS-UART interface using one of:
- Zigbee compatible hardware (e.g., Zigbee coordinator or gateway).
- Necessary tools for flashing firmware to the sensor.
-
Clone TC32 toolchain according to your host OS:
git clone https://github.com/devbis/tc32.git -b linux
git clone https://github.com/devbis/tc32.git -b macos
git clone https://github.com/devbis/tc32.git -b windows
-
Clone this repository and SDK:
git clone https://github.com/devbis/z03mmc.git git clone https://github.com/devbis/tl_zigbee_sdk.git -b 3.6.8.5 --depth 1 cd z03mmc
-
Configure and build:
cmake -B build -DSDK_PREFIX=$(pwd)/../tl_zigbee_sdk -DTOOLCHAIN_PREFIX=$(pwd)/../tc32 -DMANUFACTURER_CODE=0x1141 cmake --build build --target z03mmc.zigbee
Firmware binary is located at
build/src/z03mmc.bin
The binary with OTA header is at the same folder, ending withz03mmc.zigbee
- Open an awesome tool from ATC_MiThermometer https://devbis.github.io/telink-zigbee/
- Click "Connect" button and find device LYWSD03MMC, wait for connection (Connected in logs)
- On a new device with stock firmware click "Do Activation" and wait some time.
- Next "Select Firmware", choose file with the transitional firmware ATC_ota_400000, click "Start Flashing". This step is required even if you already installed a custom bluetooth firmware. Not flashing this file will likely cause your device to get bricked and require flashing via USB/UART!
- You will see in logs "Update done after NN seconds"
- Connect to the device again (with name ATC_802190 or similar, based on mac-address). If it doesn't appear, remove and reinsert the battery and refresh the webpage with the flashing tool.
- Flash the latest z03mmc.bin firmware over transitional firmware to convert it to zigbee.
- The device should now show up in your Zigbee bridge (If joining is enabled, of course). If it doesn't, reinsert the battery and/or short the RESET and GND contacts on the board for 3 seconds.
- TTL-USB adaptor
- 1k-1.8k Ohm resistor
- python3 with pyserial module installed
To flash a new firmware via an standard USB to UART adapter, simply connect the Thermometer as seen in the picture Mi_SWS_Connection.jpg to the USB to UART converter and run the TLSR825xComFlasher.py tool.
Example: python3 TLSR825xComFlasher.py -p COM3 wf 0 z03mmc.bin
Example: python3 TLSR825xComFlasher.py -p /dev/ttyUSB0 wf 0 z03mmc.bin
In case if the SWS pin is used by the firmware, try this sequence:
-
Power off the sensor
-
python3 TLSR825xComFlasher.py -p <YOUR_COM_PORT> -t5000 wf 0 z03mmc.bin
-
Now you have 5 seconds to power on the sensor
-
In case the chip has not started being flashed, run
python3 TLSR825xComFlasher.py -p <YOUR_COM_PORT> wf 0 z03mmc.bin
without the timeout again.If the flashing fails reduce baud rate down to 340000 or increase timeouts in the script.
-
If you flashed the module but the screen is remaining blank, try
python3 TLSR825xComFlasher.py -p <YOUR_COM_PORT> ea
to erase all flash and then write the firmware again.
The UART flasher software uses the tool from https://github.com/pvvx/ATC_MiThermometer. Thanks to pvvx for the awesome work on this!
- Zigbee2mqtt: works without custom converter since 1.33.2, OTA is supported
- ZHA: works without quirks, OTA update is supported
- HOMEd: works, OTA update is supported
- TuYa: it is reported device can connect to some hubs/gateways and visible with Smart Life app, values are rounded to integers, OTA is not supported
- MiHome: does not work
- Yandex Hub/Station: works, OTA is not available
- deCONZ/Phoscon App: not supported (need to add the device to its database?)
- You can use Zigbee OTA to flash 1141-0203-99993001-ATC_v46.zigbee. See zigbee2mqtt local OTA index or ZHA OTA folder
- Using UART dongle, use .bin firmware you like, either original or custom from https://github.com/pvvx/ATC_MiThermometer
The already flashed firmware supports OTA zigbee upgrade via standard flow. See zigbee2mqtt, ZHA, and HOMEd documentation for details.
z03mmc is based on the original work of @pvvx, and @atc1441, who developed the initial firmware versions for bluetooth-capable device.
- Flash the firmware
- Enable pairing mode on Zigbee coordinator
- In case it is not joining, close the RESET and GND contacts on the board for 3 seconds to reset Zigbee settings. Replug the battery may require
- For zigbee2mqtt you need to add custom converter if you use version 1.33.1 or earlier
This project is licensed under the GNU General Public License 3.0 or later - see the LICENSE.txt file for details.