NoLongerEvil-Thermostat – Nest 1세대·2세대용 펌웨어
(github.com/codykociemba)- Nest Thermostat의 1·2세대 기기용 커스텀 펌웨어로, OMAP DFU 인터페이스를 통해 부트로더와 커널을 교체하는 구조
- 플래싱 후 기기는 Nest/Google 서버와의 연결을 중단하고, 독립적인 NoLongerEvil 플랫폼과 통신하도록 전환
- 네트워크 트래픽을 역공학된 API 서버로 리디렉션해 기존 기능을 유지하면서 사용자 데이터와 설정을 완전 제어 가능
- 설치 과정은 DFU 모드 진입, 부트로더(x-load, u-boot) 및 커널(uImage) 플래싱, 계정 등록 및 기기 연동 단계로 구성
- 클라우드 종속 해제와 기기 소유권 회복을 목표로 하며, 오픈소스 공개와 right-to-repair 운동 지지를 명시
개요
- 이 프로젝트는 Nest Thermostat에 커스텀 펌웨어를 설치하기 위한 도구와 이미지 제공
- OMAP DFU(Device Firmware Update) 인터페이스를 사용해 부트로더와 커널을 교체
- DFU 모드에서만 새로운 펌웨어 수용 가능
- 플래싱 후 기기는 Nest/Google 서버와 통신하지 않으며, NoLongerEvil 플랫폼과 연결
- 이를 통해 사용자가 온도조절기 동작과 데이터에 대한 완전한 제어 확보
작동 방식
- 커스텀 펌웨어는 부트로더와 커널 구성요소를 수정해 네트워크 트래픽을 지정된 서버로 리디렉션
- 해당 서버는 Nest API를 역공학한 복제 서버로, 기기가 독립적으로 작동 가능
- 통신 계층을 가로채어 기기가 공식 Nest 인프라와 연결된 것처럼 인식하게 함
- 이 방식으로 기존 소프트웨어와의 호환성 유지 및 Google 클라우드 의존성 제거
설치 절차
- 리포지토리 클론 후, OS별로 필수 패키지(libusb 등) 설치
- Linux:
build-essential,libusb-1.0-0-dev,gcc,pkg-config - macOS: Xcode Command Line Tools 및 Homebrew 기반 libusb 설치
- Linux:
-
build.sh실행으로 OS 자동 감지 후 omap_loader 도구 빌드 -
install.sh실행 전 기기를 DFU 모드로 전환해야 함- 충전 상태 확인(50% 이상), 벽면 분리, USB 연결, 재부팅(10~15초 누름)
- DFU 모드 진입 시 자동으로 x-load, u-boot, uImage 플래싱
- 부팅 완료 후 NoLongerEvil 로고 표시, 약 3~4분 소요
- 웹사이트 nolongerevil.com에서 계정 등록 후 기기 연동
- Nest 기기에서 Settings → Nest App → Get Entry Code로 코드 확인
- 대시보드에 코드 입력 시 기기 연결 완료
플래싱 구성 요소
- 설치 시 세 가지 주요 바이너리 플래싱
- x-load.bin – 1단계 부트로더 (X-Loader for OMAP)
- u-boot.bin – 2단계 부트로더 (Das U-Boot, 주소 0x80100000)
- uImage – Linux 커널 이미지 (주소 0x80A00000)
- 플래싱 후 기기는 0x80100000(u-boot)에서 실행 시작
보안 및 주의사항
- 이 도구는 기기 부트 프로세스에 대한 저수준 접근을 제공
- 사용자 소유 기기에서만 사용 권장
- 잘못된 펌웨어는 기기 손상(브릭) 위험 존재
- 실험적 소프트웨어로, 난방·냉방에 필수적인 기기에는 사용 금지 권고
크레딧 및 오픈소스 약속
- 기반 기술은 여러 보안 연구자들의 연구에 의존
-
grant-h / ajb142: OMAP USB 부트로더 도구
omap_loader - exploiteers (GTVHacker) : Nest DFU Attack 연구로 1·2세대 기기 커스텀 펌웨어 가능성 입증
- FULU 및 후원자들: Nest Learning Thermostat Gen 1/2 버그바운티 지원
-
grant-h / ajb142: OMAP USB 부트로더 도구
- 프로젝트는 투명성과 right-to-repair 운동을 지지
- 펌웨어 이미지와 백엔드 API 서버 코드를 곧 오픈소스로 공개 예정
- 커뮤니티가 자체 인프라를 감사·개선·호스팅할 수 있도록 지원
참고 자료
Hacker News 의견
-
보일러가 OpenTherm을 지원한다면 SAT 온도조절기 프로젝트를 써보길 추천함
날씨 보정, 저부하 보정, PID 제어가 가능해서 온도 센서가 지원하는 정밀도(내 경우 ±0.02°C)로 제어됨
Home Assistant로 조작하며, 에너지 절약과 쾌적함을 동시에 얻을 수 있음
실시간 데이터는 Grafana 대시보드나 Emoncms에서 볼 수 있음- 나도 이 프로젝트에 관심이 많음. Vitodens 100 보일러 + Ecobee + 히트펌프 조합을 쓰는데, 각 시스템이 따로 놀아서 불편함
예를 들어 Ecobee는 보일러의 다단 제어를 지원하지 않고, 히트펌프와도 연동되지 않아 방마다 온도 불균형이 생김
언젠가 집 전체에 HA 온도 센서를 설치해서, 시간대별로 어떤 시스템을 우선 가동할지 자동으로 결정하도록 만들고 싶음 - 이 프로젝트가 강제 송풍 HVAC에도 작동하는지 궁금함
- 예전에 Vaillant 보일러를 교체하면서 OpenTherm 보드를 직접 설치하려 했는데, 제조사에서 보증 무효라며 막았음
결국 OpenTherm 시도는 거기서 끝났음 - 오래된 Worcester Bosch 보일러에는 ems-esp를 써서 외기 온도 기반으로 유량 온도를 제어하고 있음. 역시 Home Assistant로 관리함
- Home Assistant용 멀티존 제어기 중 괜찮은 게 있는지 궁금함
- 나도 이 프로젝트에 관심이 많음. Vitodens 100 보일러 + Ecobee + 히트펌프 조합을 쓰는데, 각 시스템이 따로 놀아서 불편함
-
이건 단순히 Google 대신 NoLongerEvil이라는 또 다른 폐쇄형 서비스를 쓰는 것처럼 보임
이름이 뭐든, 그들이 신뢰할 만한지는 알 수 없음.
진짜로 믿을 수 있으려면 완전한 오픈소스 펌웨어와 백엔드가 필요하다고 생각함
지금은 Google 펌웨어를 해킹해서 트래픽을 다른 서버로 돌리는 수준이라, 자체 호스팅 가능한 백엔드와 빌드 프로세스가 공개되길 바람
수정: 백엔드를 곧 오픈소스로 공개할 예정이라니 기대 중임- Google은 이미 이 기기들을 버렸음. 지금은 그저 e-waste를 되살리는 시도라고 봄
완벽하진 않아도, 죽은 기기를 다시 쓸 수 있게 해주는 건 의미 있음 - 나는 작은 SBC 스택 서버를 만들어 집안의 여러 서비스를 직접 돌리고 싶음
Nest 컨트롤러부터 Minecraft 서버까지 경량 Kubernetes로 관리하고, 필요할 때마다 노드를 교체하는 식으로 운영하고 싶음
- Google은 이미 이 기기들을 버렸음. 지금은 그저 e-waste를 되살리는 시도라고 봄
-
현재는 단순히 폐쇄형 서비스에 연결되는 펌웨어 이미지일 뿐임
어디로 연결되는지도 바꿀 수 없고, 개인정보 처리방침도 없음
로그인은 Microsoft 소유의 GitHub 계정으로 하고, 인증은 clerk.com이 처리함
곧 오픈소스화될 예정이라니 기다려봄- 나는 이 프로젝트가 멋지다고 생각함. Nest Thermostat를 리버스 엔지니어링해서 새 펌웨어를 만든 거라니 대단함
아직 프라이버시 정책이 없는 건 초기 단계라 이해할 수 있음 - 이런 부정적인 반응이 온라인에서 좋은 프로젝트가 힘들어지는 이유라고 생각함
- 나는 이 프로젝트가 멋지다고 생각함. Nest Thermostat를 리버스 엔지니어링해서 새 펌웨어를 만든 거라니 대단함
-
대시보드 사이트의 "Open Source" 페이지에는 펌웨어만 있고 서버 측 코드는 없음
펌웨어만으론 완전한 자유 소프트웨어라고 보기 어려움
수정: 자세히 보니 곧 백엔드도 오픈소스로 공개된다고 되어 있음- Louis Rossman이 제시한 버그바운티 코드 제출을 기다리고 있다 함. 잘 풀리면 멋질 듯함
관련 GitHub 이슈 - “곧 공개된다”는 말엔 이제 신뢰가 잘 안 감
- Louis Rossman이 제시한 버그바운티 코드 제출을 기다리고 있다 함. 잘 풀리면 멋질 듯함
-
“이 펌웨어를 난방/냉방에 필수적인 온도조절기에 사용하지 말라”는 경고가 있음
예전에 온도조절기 고장으로 집안 온도가 위험 수준까지 올라간 경험이 있어서, 이런 경고는 진지하게 고려해야 함- 그건 단순한 면책문구일 뿐임.
나는 수십 년째 잘 작동하는 아날로그 Honeywell 원형 온도조절기를 계속 쓸 생각임
- 그건 단순한 면책문구일 뿐임.
-
나는 다른 접근을 택해서 새 PCB를 직접 설계함
100% 펌웨어 제어가 가능하도록 만들었고, LCD 인터페이스 리버스 엔지니어링 과정을 공유했음
Cody의 익스플로잇이 완전히 새 펌웨어를 쓸 수 있게 해주길 기대함 -
이 프로젝트가 꼭 성공하길 바람
예전에 Nest 1세대, 2세대 개발팀과 함께 일했는데, 그 팀은 제품에 진심이었음
그들이 이런 식으로 서비스를 종료하자는 결정을 내리진 않았을 것임- 지금은 Google에 그때 사람들 아무도 남아 있지 않음.
우리가 있을 때도 의견이 반영되지 않았음
- 지금은 Google에 그때 사람들 아무도 남아 있지 않음.
-
“우리는 투명성과 수리할 권리 운동에 헌신하고 있다”는 문구를 보고 기대 중임
-
환경을 생각한다던 회사가 이런 식으로 사용자 기기를 쓰레기로 만든 것은 정말 어이없음
단지 클라우드 비용을 아끼거나 새 제품을 팔기 위한 결정 같음- 네트워크 연결이 안 된다고 해서 작동하는 온도조절기를 버릴 필요는 없음
- 마케팅은 결국 거짓말의 예술임.
이런 기업들은 환경보다 이익만을 추구함.
게다가 일부는 국제 분쟁과 인권 문제에도 연루되어 있음
UN 보고서 링크
-
클라우드 의존이 적은 온도조절기를 찾고 있음
Nest 두 대를 쓰는데 너무 답답해서, Home Assistant와 직접 연동되는 제품을 원함- WiFi가 아닌 Z-Wave 기반 온도조절기도 있지만, 나는 HTTP나 MQTT를 선호함
WiFi + API를 모두 지원하는 제품은 거의 없고, Venstar만이 그나마 가능하지만 불안정한 WiFi 모듈 때문에 포기했음
펌웨어 구조도 특이해서 더 이상 시도하지 않음 -
Ecobee는 여전히 클라우드 연결이 필요하지만, HomeKit 통합을 통해 로컬 제어가 가능함
Home Assistant에서도 HomeKit 연동으로 잘 작동함
- WiFi가 아닌 Z-Wave 기반 온도조절기도 있지만, 나는 HTTP나 MQTT를 선호함