2P by GN⁺ 4일전 | ★ favorite | 댓글 1개
  • 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 설치
  • 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로 코드 확인
    • 대시보드에 코드 입력 시 기기 연결 완료

플래싱 구성 요소

  • 설치 시 세 가지 주요 바이너리 플래싱
    1. x-load.bin – 1단계 부트로더 (X-Loader for OMAP)
    2. u-boot.bin – 2단계 부트로더 (Das U-Boot, 주소 0x80100000)
    3. 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 버그바운티 지원
  • 프로젝트는 투명성과 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용 멀티존 제어기 중 괜찮은 게 있는지 궁금함
  • 이건 단순히 Google 대신 NoLongerEvil이라는 또 다른 폐쇄형 서비스를 쓰는 것처럼 보임
    이름이 뭐든, 그들이 신뢰할 만한지는 알 수 없음.
    진짜로 믿을 수 있으려면 완전한 오픈소스 펌웨어와 백엔드가 필요하다고 생각함
    지금은 Google 펌웨어를 해킹해서 트래픽을 다른 서버로 돌리는 수준이라, 자체 호스팅 가능한 백엔드와 빌드 프로세스가 공개되길 바람
    수정: 백엔드를 곧 오픈소스로 공개할 예정이라니 기대 중임

    • Google은 이미 이 기기들을 버렸음. 지금은 그저 e-waste를 되살리는 시도라고 봄
      완벽하진 않아도, 죽은 기기를 다시 쓸 수 있게 해주는 건 의미 있음
    • 나는 작은 SBC 스택 서버를 만들어 집안의 여러 서비스를 직접 돌리고 싶음
      Nest 컨트롤러부터 Minecraft 서버까지 경량 Kubernetes로 관리하고, 필요할 때마다 노드를 교체하는 식으로 운영하고 싶음
  • 현재는 단순히 폐쇄형 서비스에 연결되는 펌웨어 이미지일 뿐임
    어디로 연결되는지도 바꿀 수 없고, 개인정보 처리방침도 없음
    로그인은 Microsoft 소유의 GitHub 계정으로 하고, 인증은 clerk.com이 처리함
    곧 오픈소스화될 예정이라니 기다려봄

    • 나는 이 프로젝트가 멋지다고 생각함. Nest Thermostat를 리버스 엔지니어링해서 새 펌웨어를 만든 거라니 대단함
      아직 프라이버시 정책이 없는 건 초기 단계라 이해할 수 있음
    • 이런 부정적인 반응이 온라인에서 좋은 프로젝트가 힘들어지는 이유라고 생각함
  • 대시보드 사이트의 "Open Source" 페이지에는 펌웨어만 있고 서버 측 코드는 없음
    펌웨어만으론 완전한 자유 소프트웨어라고 보기 어려움
    수정: 자세히 보니 곧 백엔드도 오픈소스로 공개된다고 되어 있음

    • Louis Rossman이 제시한 버그바운티 코드 제출을 기다리고 있다 함. 잘 풀리면 멋질 듯함
      관련 GitHub 이슈
    • “곧 공개된다”는 말엔 이제 신뢰가 잘 안 감
  • “이 펌웨어를 난방/냉방에 필수적인 온도조절기에 사용하지 말라”는 경고가 있음
    예전에 온도조절기 고장으로 집안 온도가 위험 수준까지 올라간 경험이 있어서, 이런 경고는 진지하게 고려해야 함

    • 그건 단순한 면책문구일 뿐임.
      나는 수십 년째 잘 작동하는 아날로그 Honeywell 원형 온도조절기를 계속 쓸 생각임
  • 나는 다른 접근을 택해서 새 PCB를 직접 설계
    100% 펌웨어 제어가 가능하도록 만들었고, LCD 인터페이스 리버스 엔지니어링 과정을 공유했음
    Cody의 익스플로잇이 완전히 새 펌웨어를 쓸 수 있게 해주길 기대함

  • 이 프로젝트가 꼭 성공하길 바람
    예전에 Nest 1세대, 2세대 개발팀과 함께 일했는데, 그 팀은 제품에 진심이었음
    그들이 이런 식으로 서비스를 종료하자는 결정을 내리진 않았을 것임

    • 지금은 Google에 그때 사람들 아무도 남아 있지 않음.
      우리가 있을 때도 의견이 반영되지 않았음
  • “우리는 투명성과 수리할 권리 운동에 헌신하고 있다”는 문구를 보고 기대 중임

  • 환경을 생각한다던 회사가 이런 식으로 사용자 기기를 쓰레기로 만든 것은 정말 어이없음
    단지 클라우드 비용을 아끼거나 새 제품을 팔기 위한 결정 같음

    • 네트워크 연결이 안 된다고 해서 작동하는 온도조절기를 버릴 필요는 없음
    • 마케팅은 결국 거짓말의 예술임.
      이런 기업들은 환경보다 이익만을 추구함.
      게다가 일부는 국제 분쟁과 인권 문제에도 연루되어 있음
      UN 보고서 링크
  • 클라우드 의존이 적은 온도조절기를 찾고 있음
    Nest 두 대를 쓰는데 너무 답답해서, Home Assistant와 직접 연동되는 제품을 원함

    • WiFi가 아닌 Z-Wave 기반 온도조절기도 있지만, 나는 HTTP나 MQTT를 선호함
      WiFi + API를 모두 지원하는 제품은 거의 없고, Venstar만이 그나마 가능하지만 불안정한 WiFi 모듈 때문에 포기했음
      펌웨어 구조도 특이해서 더 이상 시도하지 않음
    • Ecobee는 여전히 클라우드 연결이 필요하지만, HomeKit 통합을 통해 로컬 제어가 가능함
      Home Assistant에서도 HomeKit 연동으로 잘 작동함