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:

Firmware 2.1.1_0159

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€):

Hailege CP2102 Adaptador USB a TTL UART 232 con 485 puertos

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:

CP2102 USB to UART Bridge Controller

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:

CP210x Universal Windows Driver

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:

Silicon Labs CP210x USB to UART Bridge (COM3)

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 ;-)

Despiece LYWSD03MMC

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

Conexiones Dupont en CP2102

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.

Conexiones Dupont en LYWSD03MMC

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 dispositivo CP2102 USB to UART Bridge Controller (COM3) - Paired
  • Pulsar el botón Firmware y seleccionar el fichero ATC_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.

TLSR825x USB-COM Flash Writer

  • 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.

Firmware 0.49 OK

  • Colocar los dos pequeños tornillos que sujetan la carcasa interior usando un destornillador T4
  • Colocar con cuidado la tapa posterior

Referencias

Historial de cambios

  • 2025-01-12: Documento inicial