← ThreadMapper

ThreadMapperプローブを作る

プローブは、Wi-Fiにつないでおく小さなボードで、スマートホームが共有している電波を測定します。各Threadチャンネルがどのくらい混んでいるか、そこにどのWi-Fiネットワークがあるか、そしてThreadメッシュに参加できる場合は、メッシュ自身のルーターが報告するとおりのメッシュの姿です。ThreadMapperは、あなた自身のネットワークを通じてプローブを読み取ります。

部品は1つ、時間は10分ほど、はんだ付けは不要です。プローブはThreadMapper Proに含まれます。


ボードを買う前に読んでください

必要なもの

部品補足
Seeed Studio XIAO ESP32C6約$5–8。ファームウェアはこのボードのために作られており、ほかのボードには対応していません: このボードのアンテナスイッチ、ランプ、ボタンを制御します。
データ通信に対応したUSB-Cケーブル充電器に付属するケーブルには、給電専用のものが多くあります。パソコンがボードを認識しない場合は、まず別のケーブルを試してください。
Chrome、Edge、Firefoxのいずれかが入ったパソコンインストールのときだけ使います。SafariはUSBシリアルポートにアクセスできず、iPhoneやiPadもできません。
2.4 GHzのWi-Fiボードには5 GHzの無線がありません。両方の帯域を1つの名前で提供しているネットワークなら問題ありません。
USB充電器どれでもかまいません。セットアップが済んだプローブは、そこに挿したままにします。

あなたの家で読み取れるもの

測定はどの家でも機能します。メッシュを読み取るには、プローブがThreadネットワークに「参加」する必要があり、参加できるかどうかは、そのネットワークを何が動かしているかで決まります。

あなたの家チャンネルのノイズと、各チャンネルにあるWi-FiThreadメッシュそのもの
ボーダールーターがAppleかGoogleのものだけで、ほかに何もないはいいいえ。 どちらも、Threadネットワークの認証情報を取り出させてくれません。Appleがアプリに認証情報を読み取る権利を与えるのは、そのアプリの開発元が認定済みのボーダールーターも作っている場合だけで、ThreadMapperの開発元は作っていません。
上と同じで、Home Assistantがあるはいはい。 Home AssistantのCompanionアプリが認証情報を取り込めるので、そこからプローブにコピーします(ステップ5)。
自前のOpenThreadボーダールーターがあるはいはい。 そのボーダールーターから読み出します(ステップ5)。

最初の行があなたの家に当てはまる場合、プローブはメッシュを描きません。 それでも、どのスマートフォンにもできない測定をします: 16あるThreadチャンネルそれぞれのノイズを5分ごとに測定し、その背後にどのWi-Fiネットワークがあるかも調べます。買う前に、この点を踏まえて判断してください。


ステップ1 — ファームウェアをインストールする

  1. ボードをパソコンに接続します。
  2. 下のプローブのファームウェアをインストールを押し、USB JTAG/serial debug unitという名前のポートを選びます。
  3. Install ThreadMapper Probeを押します。デバイスを消去するかどうかを尋ねられます: 新しいボードの場合は、Erase deviceにチェックを入れてください。続いてNext、Installの順に押します。

新しいボードの場合だけです。消去すると、プローブに教えた内容がすべて一緒に失われます: Wi-Fi、キー、Threadネットワークです。すでに動いているプローブは、消去せずにアップデートします(アップデートを参照)。そのようなプローブについてインストーラがこれを尋ねてきたら、チェックボックスは空のままにしてください。

このブラウザはUSBシリアルポートにアクセスできません。パソコンのChrome、Edge、Firefoxのいずれかでこのページを開いてください。 インストーラは、HTTPSで開いたページでのみ動作します。

1〜2分かかり、Installation complete!と表示されて終わります。Nextを押してください。インストーラ自体のウィンドウは英語です。

ポートが一覧にない場合、原因はほぼ決まってケーブルです。それでもだめなら、ボードのBボタンを押したまま接続して、もう一度試してください。

これらのブラウザがどれもない場合は、Espressifのesptoolで同じことができます。初回のインストールでは、ボードにあった内容がすべて消去されます:

esptool.py --chip esp32c6 write_flash 0x0 threadmapper-probe-full.bin

アップデートでは、プローブに教えた内容はそのまま残ります:

esptool.py --chip esp32c6 write_flash 0x20000 threadmapper-probe.bin

2つのイメージはthreadmapper-probe-full.binとthreadmapper-probe.binです。そのあと、任意のターミナルソフトでボードのシリアルポートを開き、文字を入力してプローブにWi-Fiを教えます(ステップ2、一覧を使わない場合)。


ステップ2 — プローブにWi-Fiを教える

Erase deviceにチェックを入れた初回のインストールのあとは、インストーラが自動的にConfigure Wi-Fiへ進みます。代わりにインストーラの選択肢の一覧が表示されている場合は、そこでConnect to Wi-Fiを押してください。

プローブが、受信しているネットワークを一覧表示します。

  1. Networkで自分のネットワークを選びます。
  2. そのパスワードを入力します。
  3. Connectを押します。

インストーラにTrying to connectと表示され、これには1分近くかかることがあります。続いてDevice connected to the network!と表示されます。このときプローブのランプが点灯し、点いたままになります。Continueを押してください。

プローブがネットワークを保持するのは、そのネットワークに接続できてからです。Unable to connectは、試したものの接続できなかったという意味です: 原因はほぼ決まってパスワードで、ルーターが遠すぎることもあります。この試行では何も変わっていません: それまでネットワークを持っていたプローブは今もそれを持っていて、そのネットワークに戻ります。もう一度試してください。

自分のネットワークが一覧にありませんか? プローブには5 GHzの無線がないため、5 GHzだけのネットワークは一覧に出ません。名前を隠しているネットワークも同じです: Join other…を選んで、名前を入力してください。

パスワード欄は、入力した内容を隠します。名前とパスワードはケーブルを通ってボードに送られ、ボードはそれを自身のメモリに保持し、パスワードをどのログにも書き込みません。

一覧を使わない場合

インストーラにConnect to Wi-Fiが表示されない場合は、プローブの応答がインストーラに届いていません: インストーラのウィンドウを閉じ、インストールボタンをもう一度押して、ポートを選んでください。

プローブには、コンソールからネットワークを教えることもできます。Logs & Consoleか、そのポートにつないだ任意のターミナルソフトを使います。wifiと入力してReturnキーを押してください。>で始まる行が、あなたが入力する内容です:

> wifi
Network name? Type it and press Return.
> My network
Password? The probe does not write it back. Return alone for a network without one.
> my password
stored: "My network", with a password of 11 characters.
Restarting to join it. The light stays on once it has.

引用符は不要で、å、ä、öのような文字も問題ありません。プローブはパスワードを書き戻しません。ただし、ページには入力中のパスワードが表示され、ウィンドウを閉じるまでページのログに残ります: 画面はあなた自身のものですから、まず背後に人がいないか確かめてください。

この方法でネットワークを教えた場合、プローブは接続のために再起動しますが、事前にそのネットワークを試してはいません。ランプが2秒に1回の短い点滅に戻ったら、10回試して接続できず、そのネットワークを忘れたということです。


ステップ3 — アプリを接続する

ランプが点灯したままになるまで待ちます。iPhoneでThreadMapperを開き、設定 → ThreadMapperプローブに進みます。iPhoneが同じWi-Fiにつながっていれば、プローブがこのネットワーク上の欄に表示されます: それを選んでください。そのあと接続をテストで、プローブが何であるか、どういう状態にあるかがわかります。

アプリの一覧にプローブが出ない場合は、プローブに居場所を尋ねます: インストーラのウィンドウを閉じ、インストールボタンをもう一度押してポートを選び、Logs & Consoleを開いてstatusと入力してください。表示される行の1つが、アプリに入力するアドレスです:

in the app: http://192.168.1.50:8099

ルーターがいつか、プローブに別のアドレスを割り当てるかもしれません。アプリは、アドレス以外の情報でもプローブを見分けています: アプリを開いていて、iPhoneが同じWi-Fiにつながっていれば、アプリが自分でプローブを見つけ直します。

ケーブルの役目はここまでです。ボードを抜いて充電器に挿し、ルーターの裏ではなく、家の中ほどのどこかに置いてください: プローブが受信するのは、近くにあるものです。


ステップ4 — iPhoneにキーを渡す

キーのないプローブは、Wi-Fi上の誰にでも応答します。それには、プローブが受信しているWi-Fiネットワークの名前も、プローブの無線を一度に数秒間メッシュのチャンネルから離れさせる要求も含まれます。

ボードのBボタンを、間を置かずに続けて2回押します。(Rではありません: そちらはプローブを再起動します。)ランプが1秒に2回点滅します。これは3分間、またはiPhoneがキーを受け取るまで続きます。アプリの設定 → ThreadMapperプローブで、キーを取得をタップしてください。

それ以降、プローブは、無線の時間を使う処理を、キーを持つiPhoneのためにだけ行います。キーは誰が要求しているかを証明するもので、何も隠しません。応答はこれまでどおり暗号化されずにWi-Fi上を流れ、キー自体も、iPhoneに渡されるときに一度、暗号化されずに流れます。

キーを持つのは、一度に1台のiPhoneだけです。2台目のiPhoneにキーが渡されると、1台目はキーを失います。


ステップ5 — プローブにThreadネットワークを教える

あなたの家が上の表の最初の行に当てはまる場合は、このステップを飛ばしてください。

プローブがThreadネットワークに参加するには、アクティブデータセット(active dataset)を使います。そのネットワークのもので、ネットワークのキーを含む、16進数で200桁ほどの文字列です。

プローブをもう一度パソコンに接続し、上のインストールボタンを押してポートを選び、何もインストールせずにLogs & Consoleを開きます。thread datasetと入力してReturnキーを押し、プローブに尋ねられたらデータセットを貼り付けます:

> thread dataset
Dataset, as hex? The probe does not write it back.
> 0e080000000000010000000300001935060004001fffe0...
stored: "MyHome", channel 25. Restarting to join it.

数分以内に、アプリの設定 → ThreadMapperプローブに、プローブが自身のThreadメッシュ上にあると表示されます。

データセットは、あなたのThreadネットワークに入るためのキーです。プローブはそれを書き戻しませんが、貼り付け先のページには表示され、ウィンドウを閉じるまでページのログに残ります。プローブはデータセットを自身のメモリに保持しますが、このメモリは暗号化されていません: ボードを持ち去った人は、それを読み出せます。


得られるもの

アプリ内Wi-Fiだけの場合Threadネットワークも教えた場合
チャンネルスキャナ: Threadの全16チャンネルの実測ノイズはいはい
ノイズの背後にあるWi-Fiネットワーク(名前とチャンネル)はいはい
アプリを閉じていた間に5分ごとに記録した、1日分のノイズの測定値はいはい
プローブの測定値: メッシュ内のすべてのルーター、プローブが受信しているノードとその実測の信号、メッシュがノード間でどう経路を選んでいるかいいえはい
デバイスのページ: どれがそのデバイスをどのくらいよく受信しているか、そのデバイスが応答するかどうかいいえはい
ネットワークドクター(Apple Homeから到達できないコンセント給電のThreadデバイスについて): それでもメッシュ上で応答するかどうか、Matterデバイスの場合は、ボーダールーターがそのデバイスの登録を今も保持しているかどうかいいえはい

Wi-Fiネットワークの名前はiPhone上に表示され、どこにも保存されません。


ランプの意味

ランプ意味
2秒に1回の短い点滅まだWi-Fiネットワークがありません。ステップ2へ。
ゆっくり点滅ネットワークを持っていて、接続しようとしています。
点灯Wi-Fiにつながっています。これが正常な状態です。
1秒に2回の点滅ボタンを2回押しました: 3分間、またはiPhoneがキーを受け取るまで、iPhoneにキーを渡します。
速い点滅ボタンを1回押しました。これで3分間の受付時間が開きますが、このバージョンのアプリはそれを使いません。自動的に閉じてプローブが再起動し、1日分の測定値は最初からやり直しになります。
ちらつきボタンを3秒間押し続けています。10秒に達すると、プローブに教えた内容がすべて消去されます。

アップデート

新しいファームウェアは、このページで公開されます。プローブをパソコンに接続し、インストールボタンを押してポートを選びます。インストーラが、プローブで動いているファームウェアを伝え、Update ThreadMapper Probeを表示します: それを押し、続いてInstallを押してください。アップデートでは何も消去されません: プローブはWi-Fi、キー、Threadネットワークを保持します。

0.8.0より前のファームウェアのプローブは、自分が何であるかをインストーラに伝えません。その場合、インストーラはInstall ThreadMapper Probeを表示し、デバイスを消去するかどうかを尋ねます: Erase deviceのチェックは外したままにしてください。

プローブがすでに最新のファームウェアで動いている場合、インストーラは代わりにErase User Dataを表示します。これは、ボタンを10秒間押し続けたときと同じように、プローブに教えた内容をすべて消去します。


うまくいかないとき

状況原因・対処
インストールボタンに、ブラウザが対応していないと表示されるパソコンでChrome、Edge、Firefoxのいずれかを使ってください。
ポートが一覧にないケーブルが給電専用か、別のソフトがそのポートを開いています。
インストーラにUnable to connectと表示されるパスワードが間違っているか、プローブがルーターから遠すぎるか、ネットワークが5 GHzだけです。何も変更されていません。もう一度試してください。
インストーラにConnect to Wi-Fiが表示されないプローブの応答がインストーラに届いていません。インストーラのウィンドウを閉じ、インストールボタンをもう一度押して、ポートを選んでください。
ランプが2秒に1回の短い点滅に戻ったコンソールで入力したネットワークに接続できませんでした: パスワードが間違っているか、ネットワークが5 GHzだけです。10回試したあと、プローブはそのネットワークを忘れました。もう一度ネットワークを教えてください(ステップ2)。
ランプがゆっくり点滅し続けるプローブは以前このネットワークに接続したことがありますが、今は到達できません: ルーターの電源が切れているか遠すぎるか、パスワードが変更されています。パスワードが変更された場合は、もう一度ネットワークを教えてください(ステップ2)。
プローブが、データセットが途中で切れている、または長さが違うと伝える長い貼り付けは、途中で一部が欠けることがあります。もう一度貼り付けてください。
アプリの一覧にプローブが出ないiPhoneが別のWi-Fiにつながっているか、デバイス同士を隔てるゲストネットワークにつながっています。statusで表示されたアドレスを入力してください。
アプリに、このプローブにはこのiPhoneが持っていないキーがあると表示される別のiPhoneがキーを受け取ったか、プローブが一から始め直されました。Bを2回押し、もう一度キーを取得をタップしてください。
アプリに、プローブが自身のThreadメッシュから外れていると表示されるデータセットは持っていますが、ネットワークを見つけられません: データセットが別のネットワークのものか、電波の届く範囲にルーターがありません。
最初からやり直したいBボタンを10秒間押し続けてください。

知っておくこと