- Firmware personalizado para dispositivos Nest Thermostat de 1.ª y 2.ª generación, con una estructura que reemplaza el bootloader y el kernel mediante la interfaz OMAP DFU
- Después del flasheo, el dispositivo deja de conectarse a los servidores de Nest/Google y pasa a comunicarse con la plataforma independiente NoLongerEvil
- Redirige el tráfico de red a un servidor API replicado mediante ingeniería inversa, lo que permite mantener las funciones existentes mientras se obtiene control total de los datos y la configuración del usuario
- El proceso de instalación consta de entrar en modo DFU, flashear el bootloader (
x-load, u-boot) y el kernel (uImage), además del registro de cuenta y la vinculación del dispositivo
- Su objetivo es eliminar la dependencia de la nube y recuperar la propiedad del dispositivo, y declara su apoyo al código abierto y al movimiento right-to-repair
Descripción general
- Este proyecto proporciona herramientas e imágenes para instalar firmware personalizado en el Nest Thermostat
- Usa la interfaz OMAP DFU (Device Firmware Update) para reemplazar el bootloader y el kernel
- Solo puede aceptar nuevo firmware en modo DFU
- Después del flasheo, el dispositivo no se comunica con los servidores de Nest/Google y se conecta a la plataforma NoLongerEvil
- Esto permite que el usuario obtenga control total sobre el funcionamiento y los datos del termostato
Cómo funciona
- El firmware personalizado modifica componentes del bootloader y del kernel para redirigir el tráfico de red al servidor especificado
- Ese servidor es una réplica del servidor Nest API obtenida mediante ingeniería inversa, lo que permite que el dispositivo funcione de forma independiente
- Intercepta la capa de comunicación para que el dispositivo crea que sigue conectado a la infraestructura oficial de Nest
- De esta manera, se mantiene la compatibilidad con el software existente y se elimina la dependencia de Google Cloud
Procedimiento de instalación
- Tras clonar el repositorio, hay que instalar los paquetes requeridos (como libusb) según el sistema operativo
- Linux:
build-essential, libusb-1.0-0-dev, gcc, pkg-config
- macOS: Xcode Command Line Tools e instalación de libusb mediante Homebrew
- Ejecutar
build.sh detecta automáticamente el sistema operativo y compila la herramienta omap_loader
- Antes de ejecutar
install.sh, el dispositivo debe pasar a modo DFU
- Verificar la carga (50% o más), retirarlo de la pared, conectarlo por USB y reiniciarlo (mantener pulsado de 10 a 15 segundos)
- Al entrar en modo DFU, se flashean automáticamente
x-load, u-boot, uImage
- Una vez completado el arranque, aparece el logo de NoLongerEvil; tarda entre 3 y 4 minutos
- Registrar una cuenta en nolongerevil.com y luego vincular el dispositivo
- En el dispositivo Nest, consultar el código en Settings → Nest App → Get Entry Code
- Al introducir el código en el panel, la conexión del dispositivo queda completada
Componentes flasheados
- Durante la instalación se flashean tres binarios principales
- x-load.bin – bootloader de primera etapa (X-Loader para OMAP)
- u-boot.bin – bootloader de segunda etapa (Das U-Boot, dirección
0x80100000)
- uImage – imagen del kernel de Linux (dirección
0x80A00000)
- Después del flasheo, el dispositivo comienza a ejecutarse desde
0x80100000 (u-boot)
Seguridad y precauciones
- Esta herramienta proporciona acceso de bajo nivel al proceso de arranque del dispositivo
- Se recomienda usarla solo en dispositivos propiedad del usuario
- Un firmware incorrecto implica riesgo de dañar el dispositivo y dejarlo inutilizable
- Es software experimental, por lo que se recomienda no usarlo en dispositivos esenciales para calefacción o refrigeración
Créditos y compromiso con el código abierto
- La tecnología base depende del trabajo de varios investigadores de seguridad
- grant-h / ajb142: herramienta de bootloader USB para OMAP
omap_loader
- exploiteers (GTVHacker): investigación Nest DFU Attack, que demostró la viabilidad de firmware personalizado en dispositivos de 1.ª y 2.ª generación
- FULU y patrocinadores: apoyo al bug bounty de Nest Learning Thermostat Gen 1/2
- El proyecto apoya la transparencia y el movimiento right-to-repair
- Las imágenes de firmware y el código del servidor API backend se publicarán pronto como código abierto
- Se busca permitir que la comunidad audite, mejore y aloje su propia infraestructura
Material de referencia
1 comentarios
Opiniones en Hacker News
Si tu caldera soporta OpenTherm, recomiendo probar el proyecto de termostato SAT
Permite compensación por clima, compensación a baja carga y control PID, así que regula con la precisión que soporte el sensor de temperatura (en mi caso ±0.02°C)
Se maneja con Home Assistant, y puedes lograr ahorro de energía y comodidad al mismo tiempo
Los datos en tiempo real se pueden ver en el panel de Grafana o en Emoncms
Por ejemplo, Ecobee no soporta el control multietapa de la caldera, y tampoco se integra con la bomba de calor, así que hay desequilibrio de temperatura entre habitaciones
Algún día quiero instalar sensores de temperatura de HA por toda la casa, para que decida automáticamente qué sistema priorizar según la hora del día
Ahí terminó mi intento con OpenTherm
Esto solo parece usar otro servicio cerrado llamado NoLongerEvil en lugar de Google
Se llame como se llame, no hay forma de saber si son confiables.
Para que realmente lo sean, creo que se necesita firmware y backend completamente de código abierto
Por ahora solo están hackeando el firmware de Google para redirigir el tráfico a otro servidor, así que espero que publiquen un backend autoalojable y el proceso de compilación
Edit: dicen que pronto van a publicar el backend como open source, así que tengo expectativas
No será perfecto, pero tiene valor permitir reutilizar un dispositivo muerto
Desde el controlador Nest hasta un servidor de Minecraft, quiero administrarlo con Kubernetes liviano y operar cambiando nodos según haga falta
Por ahora no es más que una imagen de firmware que se conecta a un servicio cerrado
Ni siquiera se puede cambiar a dónde se conecta, y no hay política de privacidad
El inicio de sesión se hace con una cuenta de GitHub, propiedad de Microsoft, y la autenticación la maneja clerk.com
Dicen que pronto lo van a liberar como open source, así que toca esperar
Que todavía no haya política de privacidad me parece entendible por estar en una etapa temprana
En la página "Open Source" del sitio del panel solo está el firmware; no hay código del lado del servidor
Solo con el firmware es difícil considerarlo software completamente libre
Edit: viendo con más detalle, dice que pronto también publicarán el backend como open source
Issue relacionado en GitHub
Hay una advertencia que dice: “no uses este firmware en un termostato esencial para calefacción/refrigeración”
Hace tiempo tuve una experiencia en la que un termostato falló y la temperatura de la casa subió a un nivel peligroso, así que este tipo de advertencias hay que tomarlas en serio
Yo pienso seguir usando mi termostato analógico redondo Honeywell, que lleva décadas funcionando bien
Yo tomé otro enfoque y diseñé una PCB nueva
La hice para tener control 100% por firmware, y compartí el proceso de ingeniería inversa de la interfaz LCD
Espero que el exploit de Cody permita escribir un firmware completamente nuevo
De verdad espero que este proyecto tenga éxito
Antes trabajé con el equipo de desarrollo del Nest de 1.ª y 2.ª generación, y ese equipo se tomaba el producto muy en serio
Ellos no habrían tomado la decisión de apagar el servicio de esta manera
Incluso cuando nosotros estábamos ahí, nuestras opiniones no se reflejaban
Tengo expectativas al ver la frase “estamos comprometidos con la transparencia y el movimiento por el derecho a reparar”
Es realmente absurdo que una empresa que decía preocuparse por el medio ambiente haya convertido así los dispositivos de sus usuarios en basura
Parece una decisión tomada solo para ahorrar costos de nube o vender productos nuevos
Este tipo de empresas solo persiguen ganancias, no el medio ambiente.
Además, algunas incluso están implicadas en conflictos internacionales y problemas de derechos humanos
Enlace al informe de la ONU
Estoy buscando un termostato con menor dependencia de la nube
Uso dos Nest y es demasiado frustrante, así que quiero un producto que se integre directamente con Home Assistant
Casi no hay productos que soporten ambas cosas, WiFi + API, y Venstar era de lo poco que más o menos lo hacía, pero lo descarté por su módulo WiFi inestable
La estructura del firmware también era rara, así que ya no seguí intentando
En Home Assistant también funciona bien a través de la integración con HomeKit