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.
-
Firmware to convert Xiaomi LYWSD03MC device to a Zigbee compatible device with Heiman STHM-I1H model to allow zigbee2mqtt, HOMEd, and other zigbee controller use it as a known device and bind required clusters automatically.
-
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 -DSDK_PREFIX=$(pwd)/../tl_zigbee_sdk -DTOOLCHAIN_PREFIX=$(pwd)/../tc32 -B build . 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
- 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 try to increase timeouts in the script.
The UART flasher software uses the tool from https://github.com/pvvx/ATC_MiThermometer. Thanks to pvvx for the awesome work on this!
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.
- It introduces itself as Heiman STHM-I1H model to match the model in zigbee2mqtt and other controller software tools
This project is licensed under the GNU General Public License 3.0 or later - see the LICENSE.txt file for details.