- 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로 코드 확인
- 대시보드에 코드 입력 시 기기 연결 완료
플래싱 구성 요소
- 설치 시 세 가지 주요 바이너리 플래싱
-
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 버그바운티 지원
- 프로젝트는 투명성과 right-to-repair 운동을 지지
- 펌웨어 이미지와 백엔드 API 서버 코드를 곧 오픈소스로 공개 예정
- 커뮤니티가 자체 인프라를 감사·개선·호스팅할 수 있도록 지원
참고 자료