Dash Buttonサービス終了との闘い(敗北)

2020-02-17


要約

  • Amazon Dash Button をハックして IoT ボタンにしてた
  • 2020 年に入ってから使えなくなってた
  • 自爆ファームウェアの配信によって文鎮化されてた


昔々…

実家暮らしなので母親にご飯を作っていただいているので,ご飯ができると「ご飯できたよ~」と呼ばれます.それがお互いにストレスだったので,キッチンには,押すとPush Bulletというサービスからスマホや PC に通知が行くボタンが置いてありました.
仕組みとしては,

  1. 商品発注をオフにした Amazon Dash Button が押される
  2. 自宅のサーバで検知(ボタンからの ARP リクエストをキャッチ)
  3. IFTTT を通して Push Bullet に通知

といったものでした.


ところが

動かなくなってました.とりあえず初期化しようと思って Amazon アプリから設定しようとしたのですが,設定項目がありませんでした.もしやと思って調べてみたら…

Dash Button 端末を使用した商品の注文は、2019 年 8 月 31 日で終了しています。
端末は 2019 年 12 月 31 日に自動的に登録解除およびリセットされるため、お客様による操作は必要ありません。なお、Dash Button 端末を廃棄する前に手動での登録解除をご希望の場合は、コンテンツと端末の管理にアクセスして、端末タブから登録を解除できます。お使いの Dash Button を選択し、登録の解除をクリックしてください。最後に、Dash Button 端末を 1 回押します。ライトが白く点滅した後、赤く点灯します。

https://www.amazon.co.jp/gp/help/customer/display.html?nodeId=201706050
とのこと.
サービス終了…


自爆とは

どうやら 2020 年になってからボタンを押してアマゾンのサーバにリクエストを送ると,文鎮化するファームウェアアップデートが実行される模様. スパイ映画でよく見た「なお,このメッセージは自動的に消滅する.」ってやつだ…


ネットワークから遮断

とりあえず Dash Button Hack ライブラリの Nekmo/amazon-dash によると,dash-button-na-aws-opf.amazon.com0.amazon.pool.ntp.org1.amazon.pool.ntp.org2.amazon.pool.ntp.org3.amazon.pool.ntp .orgからのパケットをブロックすればよいとのこと.
ちなみに ntp.org ってなんだろうと思ったら Network Time Protocol プロトコルというものっぽい.ネットワーク機器の時間同期に用いるとか.
→ まだだめ


Wi-Fi の設定

再設定を試みます.Amazon のアプリには存在しないため,非公式のスクリプトを用いて設定します. fffonion/setup-dashbutton.py
スクリプトの中身自体は,

  • Dash ボタン長押しで設定モードにする
  • Amazon ConfigureMe という SSID に接続
  • http://192.168.0.1/?amzn_ssid=SSID&amzn_pw=PASS にアクセス

て感じでシンプルです.
→ でもだめ


最後の手段

https://blog.christophermullins.com/2019/12/20/rescue-your-amazon-dash-buttons/によると,

  • ファームウェアアップデートを一度でもしてしまったら終わり
  • 一度 Wi-Fi の設定をしたことがあるボタンのみ Wi-Fi の再設定が可能
  • ただし古いボタンなら特定の音声を流すことで初期設定が可能

特定の音声っていうのは,ボタンにはマイクがついていて,それによって設定が可能らしい.で,それでバッファの長さチェックがされていないので,オーバーフローさせていい感じにできるらしいです. ふわふわしてますね. その音声ファイルはここ .wav fileにあるそうです.
てな感じで, 詰みました.完全に.


おわりに

やらかしました.ちゃんと情報を仕入れていれば… 便利だったのになあ…
とりあえずスマホかなんかで仮想ボタンみたいなものを作ろうと思います…