Hace tiempo expliqué cómo cambiar el firmware de un Xiaomi LYWSD03MMC, un monitor de temperatura y humedad, para poder integrarlo en Home Assistant.
La idea era usar la herramienta Telink Mi Flasher para flashear un custom firmware utilizando un simple navegador y una conexión BT con el dispositivo.
Desde Octubre de 2023, este dispositivo tiene un firmware 2.1.1_0159 mediante el cual Xiaomi ha bloqueado la posibilidad de cambiar el firmware usando Telink Mi Flasher y pvvx
ha tenido que poner un mensaje en su herramienta:
Flash mediante USB-COM
A día de hoy, Enero de 2025, la única opción para grabar un custom firmware es usar la herramienta TLSR825x USB-COM Flash Writer v0.5 de pvvx
y conectar con el dispositivo mediante un adaptador como este Hailege CP2102 Adaptador USB a TTL UART 232 (8,99€):
Tal como explica pvvx
en la documentación del USB-COM y el usuario Tuti4120
en este post de la issue 298 y en este otro post de la misma issue únicamente hay que realizar estas conexiones antes de poder enviar el firmware a través del adaptador USB a TTL:
- 3.3V → CR2032 Battery +
- GND → CR2032 Battery -
- TXD → P14
Además, según la documentación del adaptador CP2102, el modo USB to TTL se configura mediante un switch DIP de dos dígitos y un switch SMD de la siguiente manera:
- Dialing 1 (USB): On
- Dialing 2 (485): Off
- Switch (S1): Up (232-TTL)
Drivers CP210x
El adaptador Hailege CP2102 Adaptador USB a TTL UART 232 incorpora el chip CP2102 USB to UART Bridge de Silicon Labs.
Al conectar por primera vez el adaptador a un ordenador con Windows (en mi caso he usado Windows Server 2022) puede que no tenga los controladores necesarios para funcionar tal como muestra el Administrador de Dispositivos:
Por ese motivo, es necesario descargar el CP210x Universal Windows Driver (versión 11.4.0, 18 Diciembre 2024) y descomprimirlo en un directorio temporal donde veremos el siguiente contenido:
A continuación, únicamente hay que seleccionar el dispositivo y actualizar su controlador usando el contenido de esta carpeta. Si todo funciona correctamente, el dispositivo Silicon Labs CP210x USB to UART Bridge quedará configurado en un puerto COMx
, listo para ser utilizado:
Procedimiento de flasheo
Una vez tenemos todo preparado, ha llegado la hora de realizar el flasheo de un LYWSD03MMC
con el último firmware disponible a día de hoy ATC_v49.bin
usando el adaptador USB-COM CP2102
.
Desmontar el termostato
Para ello, tenemos que abrir el termostato siguiendo estos pasos:
- Quitar con cuidado la tapa posterior deslizando una pequeña pieza de plástico por la ranura de la parte inferior
- Sacar la batería CR2032 del dispositivo
- Quitar los dos pequeños tornillos que sujetan la carcasa interior usando un destornillador T4
- Sacar con cuidado la carcasa interior usando un pequeño destornillador plano para hacer palanca en la parte superior
- Sacar el circuito del termostato (con cuidado para no sacar también el LCD ;-)
Preparar las conexiones
A continuación debemos conectar 3 cables Dupont Macho-Hembra en los siguientes pines del adaptador CP2102:
- 3.3V → Cable rojo
- GND → Cable negro
- TXD → Cable azul
El otro extremo de los cables Dupont rojo y negro se conectarán a los bornes de la batería CR2032 para alimentar el Xiaomi LYWSD03MMC:
- Cable rojo → Battery + (la parte lateral de la CR2032)
- Cable negro → Battery - (la parte central)
Los cables rojo y negro se pueden fijar fácilmente pasándolos por debajo de los bornes donde se coloca la batería CR2032.
Conectar el USB-COM
A continuación se conecta el adaptador USB-COM al ordenador y se espera a que sea detectado en el Administrador de dispositivos (la luz naranja se enciende).
- Acceder a la herramienta web https://pvvx.github.io/ATC_MiThermometer/USBCOMFlashTx.html
- Pulsar el botón
Open
y seleccionar el dispositivoCP2102 USB to UART Bridge Controller (COM3) - Paired
- Pulsar el botón
Firmware
y seleccionar el ficheroATC_v49.bin
que habíamos descargado previamente - Hacer contacto con el cable azul (TXD) en el punto P14 y sujetarlo bien con la mano durante el flasheo (hay que tener un buen pulso ;-).
- Pulsar el botón
Write to Flash
para que empiece el proceso (la luz azul del TX parpadeará)
Al cabo de unos 34 segundos finaliza el envío del firmware que se envía sin comprobación alguna.
Si no estamos seguros de haber mantenido el cable azul en el punto P14 y se ha movido, es recomendable volver a repetir el proceso para asegurar que se envía completamente el firmware.
- Soltar el cable azul (P14) y desconectar los cables rojo y negro de los bornes de la batería
Montaje del termostato
Finalmente, se procede a montar todas las piezas del termostato en orden inverso:
- Asegurarse que el LCD está plano y bien colocado en su hueco
- Colocar el circuito dentro de la caja alineando el agujero de la parte superior izquierda con un pequeño pin de plástico
- Colocar la carcasa interior apretando bien en las cuatro esquinas (si no está bien apretado no se verá bien la pantalla LCD)
- Colocar la batería CR2032 y comprobar que el termostato funcione y la pantalla funcione
- Acceder a la herramienta web https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html
- Conectar con el dispositivo
ATC_XXXXXX
para comprobar que se ha flasheado correctamente el firmware 4.9
Si todo ha salido según lo previso, se mostrará información sobre el firmware y los datos de batería, temperatura, humedad, etc.
- Colocar los dos pequeños tornillos que sujetan la carcasa interior usando un destornillador T4
- Colocar con cuidado la tapa posterior
Referencias
- Xiaomi LYWSD03MMC Bluetooth to Zigbee from the “unsupported” firmware version 2.1.1.0159 @ YouTube: AI Home Tech Lab
- Flashing of LYWSD03MMC B1.5 @ YouTube: Raked T. (Tuti4120)
Historial de cambios
- 2025-01-12: Documento inicial