2 ポイント 投稿者 GN⁺ 2024-07-02 | 1件のコメント | WhatsAppで共有

動機

  • ここ数年、Sleep Numberベッドへのローカルネットワークアクセスの可能性を探ってきた
  • HomeKit経由でベッド設定を制御できる homebridge プラグインを作成した
  • Sleep Number から API リクエスト頻度が高すぎるため、プラグインを無効化してほしいと依頼された
  • ローカルネットワークアクセスによってサーバーを迂回する方法を見つけることを決意した

事前準備

  • Sleep Number Hub のモデル番号: 360SIQ01D
  • UART to TTY デバイスおよびその他のハードウェアツールが必要
  • USB-A フラッシュドライブが必要

ルートアクセス権の取得

  1. J16 ヘッダーに UART デバイスを接続
  2. UART デバイスにコンソールを接続(baud rate: 115200)
  3. ハブの電源を入れ、2秒以内に <SPACE> を押して自動起動シーケンスを停止
  4. ブート環境変数を編集
    • 既定の環境変数をバックアップ
    • bootcmd 変数から run set_bootargs; を削除
    • bootargs 変数に以下を追加:
      console=ttymxc0,115200 root=/dev/mmcblk${linux_mmcdev}p1 rootwait rdinit=/bin/bash -- -c "sed -i 's/LMR=`.*`/LMR=let_me_root/' /init; exec /init"
      
  5. 初回起動時に "let_me_root" ファイルのあるフラッシュドライブを挿入
  6. ルートパーティションを rw で再マウントし、let_me_root ファイルを追加
  7. SSH アクセスを設定

ローカルネットワーク制御および監視サーバーの作成

  • Python 2.7.18 を使って HTTP サーバーを設定
  • /bam/scripts ディレクトリ内のスクリプトを実行できる HTTP サーバースクリプトを作成
  • スクリプトをハブにコピーして実行

rc.d スクリプトの追加

  • /real.root パーティションに rc.d スクリプトを追加
  • スクリプトをハブにコピーし、適切な場所へ移動
  • 必要なシンボリックリンクを追加

便利なコマンド

  • /bio スクリプトからさまざまなベッド制御コマンドを利用可能
  • 例のコマンド:
    • arg=PSNL: ベッド左側の最後に設定された Sleep Number 値を取得
    • arg=PSNS&arg=L100: ベッド左側の Sleep Number を 100 に設定

次のステップ

  • /bam ルートディレクトリのベッド制御機能を調査
  • SSH トンネル経由で Sleep Number サーバーと通信するハブのセキュリティ問題を検討
  • SleepIQ アプリを置き換えられるシンプルな Web アプリを作成

付録: ハブの元の U-Boot 環境変数

  • baudrate=115200
  • bootcmd=run find_board_name; run set_bootargs;setenv boot_mmcdev 0; run bootcmd_mmc;setenv boot_mmcdev 1; run bootcmd_mmc
  • その他の変数...

GN⁺の意見

  • このガイドは Sleep Number ベッドへのローカルネットワークアクセスを可能にし、ユーザーにより多くの制御権を与える
  • ハブのセキュリティ問題を考えると、外部インターネット接続を切断するのが望ましい
  • 類似の機能を提供する他のスマートホーム製品も存在する
  • 新しい技術を導入する際は、セキュリティと保守の問題を慎重に検討する必要がある

1件のコメント

 
GN⁺ 2024-07-02
Hacker News のコメント
  • 昔はスマート機能のないベッドを使っていた

    • 2つの有線コントローラーがポンプに接続されていた
    • インターネットや Linux マイクロコントローラーは不要だった
    • ハッキングの心配もなく、安心して眠れた
  • Sleep Number サーバーと SSH トンネル経由で通信するハブに興味がある

    • PubkeyAuth を使っているのか、それともパスワードなのか気になる
    • DNS ハイジャックの可能性を想像してみる
    • Homer Simpson の有名なセリフのように「ベッドが上がったり下がったりする」と引用する
  • Eight Sleep Pod 3 にアクセスする似たような方法がある

    • 一部のモデルには書き換え可能な MicroSD カードが含まれている
    • TFA で使われた方法は、カードなしで root アクセスを得るうえでも有効かもしれない
    • Eight Sleep はファームウェア更新に署名しているが、署名に使った秘密鍵も一緒に送っている
  • Eight Sleep のベッドをハックする話だと思っていた

    • 実際の「Number Sleep Hub」の写真を見て驚いた
    • Eight Sleep と Sleep Number という2社が水冷ベッドを作っていることに衝撃を受けた
  • 次はランサムウェアについての冗談

    • 「1000ドル払わないと、来月いっぱいベッドで眠れない」
  • インターネットが切れてベッドの温度を調整できない状況は不便だ

  • Sleep Number のベッドは買わないと決めた

    • 中国へのアウトソーシング後、内部バッフルが壊れたマットレスを2つ経験した
  • ベッドが Linux を動かす必要があるのか疑問に思う

    • 1GB の RAM とフル OS が必要なベッドがなぜ必要なのか理解できない
    • WiFi 接続のない洗濯機を探すのも難しかった
    • スマート機器を避けるのはますます難しくなっている
  • はんだ付け工具を買い物リストに追加することを勧める