2 puntos por GN⁺ 2025-11-05 | 1 comentarios | Compartir por WhatsApp
  • 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
    1. x-load.bin – bootloader de primera etapa (X-Loader para OMAP)
    2. u-boot.bin – bootloader de segunda etapa (Das U-Boot, dirección 0x80100000)
    3. 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

 
GN⁺ 2025-11-05
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

    • A mí también me interesa mucho este proyecto. Uso una combinación de caldera Vitodens 100 + Ecobee + bomba de calor, pero es incómodo porque cada sistema funciona por separado
      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
    • Me pregunto si este proyecto también funciona con sistemas HVAC de aire forzado
    • Hace tiempo, al reemplazar una caldera Vaillant, intenté instalar yo mismo una placa OpenTherm, pero el fabricante lo bloqueó diciendo que anulaba la garantía
      Ahí terminó mi intento con OpenTherm
    • En una caldera Worcester Bosch vieja estoy usando ems-esp para controlar la temperatura de impulsión según la temperatura exterior. También lo manejo con Home Assistant
    • Me pregunto si hay algún controlador multizona bueno para Home Assistant
  • 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

    • Google ya abandonó estos dispositivos. Ahora mismo lo veo simplemente como un intento de revivir basura electrónica
      No será perfecto, pero tiene valor permitir reutilizar un dispositivo muerto
    • Quiero armar un pequeño servidor stack con SBC para correr yo mismo varios servicios en casa
      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

    • A mí este proyecto me parece genial. Es impresionante que hayan hecho ingeniería inversa del Nest Thermostat para crear un firmware nuevo
      Que todavía no haya política de privacidad me parece entendible por estar en una etapa temprana
    • Creo que este tipo de reacción negativa es la razón por la que los buenos proyectos lo tienen difícil en internet
  • 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

    • Dicen que están esperando el envío de código del bug bounty que propuso Louis Rossman. Si sale bien, estaría genial
      Issue relacionado en GitHub
    • Ya no me inspira mucha confianza eso de “pronto lo publicamos”
  • 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

    • Eso no es más que una exención de responsabilidad.
      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

    • Ahora ya no queda nadie de esa época en Google.
      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

    • Que no haya conexión de red no significa que haya que tirar un termostato que funciona
    • El marketing al final es el arte de mentir.
      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

    • También hay termostatos basados en Z-Wave en vez de WiFi, pero yo prefiero HTTP o MQTT
      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
    • Ecobee todavía requiere conexión a la nube, pero mediante la integración con HomeKit se puede controlar localmente
      En Home Assistant también funciona bien a través de la integración con HomeKit