- Firmware customizado para dispositivos Nest Thermostat de 1ª e 2ª geração, com estrutura que substitui o bootloader e o kernel pela interface OMAP DFU
- Após o flashing, o dispositivo interrompe a conexão com os servidores da Nest/Google e passa a se comunicar com a plataforma independente NoLongerEvil
- Redireciona o tráfego de rede para um servidor de API obtido por engenharia reversa, mantendo as funções existentes enquanto permite controle total dos dados e das configurações pelo usuário
- O processo de instalação é composto por entrada no modo DFU, flashing do bootloader (
x-load, u-boot) e do kernel (uImage), além das etapas de cadastro da conta e vinculação do dispositivo
- Tem como objetivo eliminar a dependência da nuvem e recuperar a propriedade do dispositivo, além de declarar apoio ao open source e ao movimento right-to-repair
Visão geral
- Este projeto fornece ferramentas e imagens para instalar firmware customizado no Nest Thermostat
- Usa a interface OMAP DFU (Device Firmware Update) para substituir o bootloader e o kernel
- O novo firmware só pode ser aceito no modo DFU
- Após o flashing, o dispositivo não se comunica com os servidores da Nest/Google e se conecta à plataforma NoLongerEvil
- Com isso, o usuário obtém controle total sobre o funcionamento e os dados do termostato
Como funciona
- O firmware customizado modifica componentes do bootloader e do kernel para redirecionar o tráfego de rede a um servidor especificado
- Esse servidor é uma réplica do servidor da API da Nest obtida por engenharia reversa, permitindo que o dispositivo opere de forma independente
- A camada de comunicação é interceptada para que o dispositivo reconheça como se estivesse conectado à infraestrutura oficial da Nest
- Dessa forma, mantém a compatibilidade com o software existente e remove a dependência da nuvem do Google
Procedimento de instalação
- Após clonar o repositório, instale os pacotes necessários (como
libusb) de acordo com o sistema operacional
- Linux:
build-essential, libusb-1.0-0-dev, gcc, pkg-config
- macOS: Xcode Command Line Tools e instalação do
libusb via Homebrew
- Execute
build.sh para detectar automaticamente o sistema operacional e compilar a ferramenta omap_loader
- Antes de executar
install.sh, é preciso colocar o dispositivo no modo DFU
- Verifique a carga da bateria (50% ou mais), remova da parede, conecte via USB e reinicie (segure por 10 a 15 segundos)
- Ao entrar no modo DFU, o flashing de
x-load, u-boot, uImage é feito automaticamente
- Após a conclusão da inicialização, o logotipo NoLongerEvil é exibido; o processo leva cerca de 3 a 4 minutos
- Registre uma conta no site nolongerevil.com e depois vincule o dispositivo
- No dispositivo Nest, acesse Settings → Nest App → Get Entry Code para verificar o código
- Ao inserir o código no painel, a conexão do dispositivo é concluída
Componentes gravados no flashing
- Durante a instalação, três binários principais são gravados
- x-load.bin – bootloader de primeiro estágio (X-Loader for OMAP)
- u-boot.bin – bootloader de segundo estágio (Das U-Boot, endereço
0x80100000)
- uImage – imagem do kernel Linux (endereço
0x80A00000)
- Após o flashing, o dispositivo inicia a execução em
0x80100000 (u-boot)
Segurança e cuidados
- Esta ferramenta fornece acesso de baixo nível ao processo de boot do dispositivo
- Recomenda-se o uso apenas em dispositivos de propriedade do usuário
- Firmware incorreto pode causar danos ao dispositivo (brick)
- Por se tratar de software experimental, recomenda-se não usar em dispositivos essenciais para aquecimento ou resfriamento
Créditos e compromisso com open source
- A tecnologia de base depende do trabalho de vários pesquisadores de segurança
- grant-h / ajb142: ferramenta de bootloader USB para OMAP
omap_loader
- exploiteers (GTVHacker): a pesquisa Nest DFU Attack demonstrou a viabilidade de firmware customizado em dispositivos de 1ª e 2ª geração
- FULU e apoiadores: suporte ao bug bounty do Nest Learning Thermostat Gen 1/2
- O projeto apoia a transparência e o movimento right-to-repair
- As imagens de firmware e o código do servidor de API de backend devem ser disponibilizados em open source em breve
- A ideia é permitir que a comunidade audite, melhore e hospede sua própria infraestrutura
Materiais de referência
1 comentários
Comentários do Hacker News
Se a sua caldeira suportar OpenTherm, recomendo usar o projeto de termostato SAT
Ele permite compensação climática, compensação de baixa carga e controle PID, então o controle fica na precisão suportada pelo sensor de temperatura (no meu caso, ±0,02°C)
É operado pelo Home Assistant, e dá para ganhar economia de energia e conforto ao mesmo tempo
Os dados em tempo real podem ser vistos no dashboard do Grafana ou no Emoncms
Por exemplo, o Ecobee não suporta controle em múltiplos estágios da caldeira, e também não se integra com a bomba de calor, então há desequilíbrio de temperatura entre os cômodos
Um dia quero instalar sensores de temperatura do HA pela casa toda, para decidir automaticamente qual sistema priorizar em cada horário
No fim, minha tentativa com OpenTherm terminou ali
Isso parece simplesmente usar outro serviço fechado chamado NoLongerEvil no lugar do Google
Seja qual for o nome, não tem como saber se eles são confiáveis.
Para ser realmente confiável, acho que seria necessário firmware e backend totalmente open source
No momento, está mais no nível de hackear o firmware do Google e redirecionar o tráfego para outro servidor, então espero que publiquem um backend auto-hospedável e o processo de build
Edit: estou animado ao saber que pretendem abrir o código do backend em breve
Mesmo não sendo perfeito, já tem valor permitir que um aparelho morto volte a ser usado
Desde o controlador do Nest até um servidor de Minecraft, quero administrar tudo com Kubernetes leve e operar trocando nós sempre que necessário
No estado atual, isso é apenas uma imagem de firmware que se conecta a um serviço fechado
Nem dá para mudar para onde ela se conecta, e também não há política de privacidade
O login é feito com conta do GitHub, de propriedade da Microsoft, e a autenticação é processada pelo clerk.com
Como deve se tornar open source em breve, vou esperar
Consigo entender a falta de política de privacidade por ainda estar em estágio inicial
A página "Open Source" do site do dashboard tem apenas o firmware e não inclui o código do lado do servidor
Só o firmware torna difícil considerar isso software totalmente livre
Edit: olhando com mais atenção, diz que o backend também será open source em breve
Issue relacionada no GitHub
Há um aviso dizendo para não usar este firmware em um termostato essencial para aquecimento/refrigeração
Já tive uma experiência em que uma falha no termostato fez a temperatura da casa subir a níveis perigosos, então esse tipo de aviso deve ser levado a sério
Pretendo continuar usando meu termostato analógico redondo da Honeywell, que funciona bem há décadas
Tomei outra abordagem e projetei uma nova PCB eu mesmo
Fiz isso de forma que fosse possível ter 100% de controle do firmware, e compartilhei o processo de engenharia reversa da interface LCD
Espero que o exploit do Cody permita gravar um firmware totalmente novo
Espero muito que esse projeto dê certo
No passado, trabalhei com a equipe de desenvolvimento do Nest de 1ª e 2ª geração, e aquele time realmente se importava com o produto
Eles não teriam tomado a decisão de encerrar o serviço dessa forma
Mesmo quando ainda estávamos lá, nossas opiniões não eram levadas em conta
Fiquei esperançoso ao ver a frase de que eles estão comprometidos com a transparência e com o movimento pelo direito ao reparo
É realmente absurdo uma empresa que dizia se preocupar com o meio ambiente ter transformado os aparelhos dos usuários em lixo desse jeito
Parece apenas uma decisão para economizar custos de nuvem ou vender produtos novos
Empresas assim buscam lucro acima do meio ambiente.
Além disso, algumas delas também estão envolvidas em conflitos internacionais e questões de direitos humanos
Link para o relatório da ONU
Estou procurando um termostato com menos dependência da nuvem
Uso dois Nest e isso é frustrante demais, então quero um produto que se integre diretamente ao Home Assistant
Quase não há produtos que suportem Wi‑Fi + API ao mesmo tempo; a Venstar era praticamente a única opção, mas desisti por causa do módulo Wi‑Fi instável
A estrutura do firmware também era estranha, então não tentei mais
No Home Assistant ele também funciona bem por meio da integração com HomeKit