2 ポイント 投稿者 GN⁺ 2025-11-05 | 1件のコメント | WhatsAppで共有
  • 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分かかる
  • Webサイト nolongerevil.com でアカウント登録後、機器を連携
    • Nest機器でSettings → Nest App → Get Entry Codeからコードを確認
    • ダッシュボードにコードを入力すると機器接続が完了

フラッシュされる構成要素

  • インストール時に3つの主要バイナリをフラッシュ
    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サーバーコードは近日中にオープンソースとして公開予定
    • コミュニティが独自インフラを監査・改善・ホスティングできるよう支援

参考資料

1件のコメント

 
GN⁺ 2025-11-05
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 を2台使っているが、あまりに不便なので、Home Assistant と直接連携できる製品が欲しい

    • WiFi ではなく Z-Wave ベースの温度調節器 もあるが、私は HTTP や MQTT を好む
      WiFi + API の両方をサポートする製品はほとんどなく、Venstar だけが一応可能だが、不安定な WiFi モジュール のせいで諦めた
      ファームウェア構造も独特なので、もうこれ以上試していない
    • Ecobee は依然としてクラウド接続が必要だが、HomeKit 統合 を通じてローカル制御が可能だ
      Home Assistant でも HomeKit 連携で問題なく動作する