amazon-dashトラブルシューティング

# 概要

本稿は、Nekmo/amazon-dash を用いて、Amazon Dash Button を工作用途で使っている人向けです。
トラブルシューティングのためのいくつかの方法を示します。

# 前提

拙稿 [2021年でも最強IoT物理ボタンなAmazonDashButtonで遊ぼう 〜セットアップ方法と、Pixela APIを叩く実例〜](https://qiita.com/watahari/items/968e1898ec8ff257e16e)で紹介した構成を前提としています。

* Amazon Dash Button を持っている
    * 自宅の Wi-Fi に接続設定済
* Nekmo/amazon-dash を Raspberry Pi にインストールして動作させている
* Amazon Dash Button が brick (文鎮化) しないように、いくつかのホストへの接続を遮断している

# トラブルシューティング

順不同で紹介します。
テキトーに参考にしてください。

## 困ったら再起動

```
sudo service amazon-dash restart
```

たまーーーに、これで解決する。

# とりあえず Amazon Dash Button を交換する

複数個買っておけば、復旧ファーストしつつ原因切り分けできてオトク。

## ログ調査

```
sudo journalctl -r -u amazon-dash
```

↓こんな感じで正規起動していることを確認できればOK。
```
...
Listening for events. Amazon-dash will execute the events associated with the registered buttons.
...
Welcome to Amazon-dash vX.X.X using Python X.X.X
raspberrypi systemd[1]: Started Amazon Dash service.
```

## amazon-dash の設定ファイルが正しいか確認する

```
sudo amazon-dash check-config --config /etc/amazon-dash.yml
```

`--config`に渡すパスはご自身の場合に合わせて。

大丈夫なら↓こんな感じで表示される（少し時間かかる）。

```
Welcome to Amazon-dash vX.X.X using Python X.X.X
December 31 is the last day to block requests from your Amazon-dash buttons to Amazon servers. In 2020 your buttons can be bricked in an update from Amazon servers.
The configuration file "/etc/amazon-dash.yml" is correct
```

## 特定の Amazon Dash Button を押したことにして、amazon-dash が意図した通りに動くか試してみる

以下のようにすることで、Amazon Dash Button を押さずに、Amazon Dash Button を押したときの動作をさせることができる。

```
sudo amazon-dash test-device --config <設定ファイルのパス> '押したことにする Amazon Dash Button の Mac アドレス'
```

具体例

```
sudo amazon-dash test-device --config /etc/amazon-dash.yml '00:00:5E:00:53:AA'
※Macアドレスは例示です
```


## Amazon Dash Button からのパケットを観測する

Wireshark とかを使ってパケット観測する。

記録開始 -> Amazon Dash Button を押す -> 記録停止 -> Amazon Dash Button の Mac アドレスで検索する

![wireshark_amazondashbutton.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602340/5dbc95e3-ca33-1b78-02d4-b86c26367b65.png)

Amazon Dash Button を押したのに、期待したパケットが飛んでないなら、Amazon Dash Button 側に原因を切り分けられる。

## Amazon Dash Button をリセットして再設定する

### リセット

https://blog.christophermullins.com/2019/12/20/rescue-your-amazon-dash-buttons/
の `this .wav file` から、`audio_exploit_write_customer_secret.s.wav` をダウンロードする。

Amazon Dash Button のボタンを長押しし、青色点滅状態とする。
表面の小さな穴に向けて、大音量で(と言ってもかなり小さい音)、上記の wav ファイルの音を流す。
スマホを押し付けて再生でもいいし、パソコンにイヤホンを差してイヤホンを押し付けて再生でもいい。

うまくいくと、LEDが緑に光って反応する。（物理ハックで毎度笑ってしまう）

### 再度 Wi-Fi 設定する

[拙稿の(1-2) Amazon Dash Button にWi-Fi設定をセットアップする](https://qiita.com/watahari/items/968e1898ec8ff257e16e#1-2-amazon-dash-button-%E3%81%ABwi-fi%E8%A8%AD%E5%AE%9A%E3%82%92%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%81%99%E3%82%8B)を参考にしてください。

## Amazon Dash Button の電池を交換する

押したときの赤点滅が短い、押しても期待したパケットが観測されない、Wi-Fi設定しようとしても青点滅しないor続かない、そもそも長押ししても電源がつかない、などは、だいたい電池交換が必要。

熱圧着されているので、無理やりこじ開ける必要がある。

不要なマイナスドライバーを用意する。
サイドの溝に沿ってマイナスドライバーを擦ると（安全のため手袋をしましょう）、そのうち開く。
少し開いたら、マイナスドライバーかピック的なものを差し込んで開ける。

基盤は表面側（ボタン側）に付いている。電池ボックスも基盤に付いている。
つまり、こじ開けのときにマイナスドライバーを深く差し込みすぎると、基盤と電池ボックスの間にマイナスドライバーを差し込むことになり、壊してしまう。注意。

![31FC06B8-191A-4485-A908-EDF4C99B36D5_1_102_o.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602340/a566e18b-822d-ba21-5802-534faed5d4cd.jpeg)


中には単4電池1本が入っているので、交換する。

無理やりこじ開けた後はハマらないので、マスキングテープとかで止めておけば良い。


# 結論

2024年になっても、[Amazon-dash is still alive!](https://docs.nekmo.org/amazon-dash/readme.html)