LilyGo T-Halowボードを動かす3 (AP + STAx2と日本的802.11ah設定)

作成日：2024/11/01

:::note alert
## 注意
本記事で扱っている LilyGo T-Halowの日本での運用パラメータに関しては、現在[2024/11/01]、LilyGo社、販売代理店でもほとんど明確にされていない状況です。
ボードに組込まれている、ESP32-S3, 802.11ahモジュールが技適を取っているという前提で実験を進めていますが、仕様を詳細に調べていくと、少なくとも(1)送信出力、(2)動作帯域幅、(3)Duty、に関して、不安要素の存在がわかってきました。
試用される場合は、上記3項目を含めた他の項目に対しても、ご自身で再三のご確認をされた上での運用をお願いします。
メーカーから推奨パラメータが提示され、ご自身で仕様の確証が得られるまでは、電波暗室、シールドルーム、ダミーアンテナ等の利用で、空中線電力を放出しない手段での評価をお勧めします。
特に、802.11ahのアピールポイントとして1kmの通信距離が確保できる類の実験においては特にご注意ください。
:::

## はじめに
前回の記事の[LilyGo T-Halowボードを動かす2 (ネットワーク・ブリッジを動かす)]( https://qiita.com/furufuru/items/1bbb70490a91f3925371 )では、T-Halowの便利機能のペアリングを使ってAP(Access Point)とSTA(Station)の接続を行った。
今回は、AP 1台とSTA 2台を設定し、各STAはAPに接続するという本来のWi-Fi的(?)方法で接続してみた。
また、ネットワークの動作確認方法として、前回同様GStreamerのスクリプトを使って、2つのUDPストリームを流してみた。
![ T-Halow評価環境-150dpi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33155/49647235-5f7d-cc14-a8f1-1bc5f1908831.png)


通常のIEEE802.11ah利用機能に準じた作法で(SSID、暗号、等のスペックを決めて接続する)ネットワークを繋いでみた。

要点は以下の通り。
1. T-Halownボード3枚にそれぞれPC(Linux) or Macを接続(USB-Serial, 有線Ether)
2. 1個のAPに2個のSTAを接続
3. AP, STA共に同一のSSID, 暗号方式, 鍵データ, 周波数帯域、チャンネルリスト、を設定する
4. APの設定後、各STAの設定をする
5. Duty10％に関してはATコマンドでの設定は見当たらない (送信側のアプリケーションレベルで対応する必要がありそう。【未確認】)

PCのUSB-Serial接続のためのドライバインストール、ターミナルソフトの設定、及び有線Etherの固定IPアドレスの設定はあらかじめ済ましておく必要がある。


## 設定手順 (AP, STA)
最初にAPの設定をし、その後にSTAの設定を行うのが順当の方法の様だ。
APが待期状態になっていれば、STAの設定を行った途端に勝手にコネクションが成立する。

|項目|AP|STA|備考|
|----|----|----|----|
|Factory Data RESET|AT+LOADDEF=1|←(AP同様)||
|LMACデバッグ停止|AT+SYSDBG=LMAC,0|←(AP同様)|
|暗号化モード|AT+KEYMGMT=WPA-PSK|←(AP同様)|
|暗号化パスワード(例)|AT+PSK=3e0c1c0702c9962def3b3c1ec2fc2844391285418f8b493e15636b584b81bc8c|←(AP同様)|
|動作帯域幅（MHz）|AT+BSS_BW=2|←(AP同様)|帯域幅2MHz
|MODE設定|AT+MODE=AP|【設定不要】|STAは設定不要|
|周波数帯域|AT+FREQ_RANGE=9205,9281|←(AP同様)|帯域920.5〜928.1MHz(但し何に有効なのかは不明)|
|チャンネルリスト|9235, 9245, 9255, 9265|←(AP同様)|サイレックス社SX-NEWAH(JP)情報に基づく|
|最大送信電力|AT+TXPOWER=13|←(AP同様)|最大送信電力は日本基準の20.0mWに設定。|
|SSID(例)|AT+SSID=TEST_AP1|←(AP同様)|
|接続ステータス|AT+CONN_STATE|←(AP同様)|
|設定値確認|AT+WNBCFG|←(AP同様)|
|LMACデバッグ開始|AT+SYSDBG=LMAC,1|←(AP同様)|

※最大送信電力設定はデフォルト設定の20だと100.0mW出るとのことで現状では規定の20mWを大幅に超え電波法違反となるため注意が必要。

## GStreamerの設定
前回の記事を参考に、GStreamerを受信したいPC上で **受信Port番号** を正しく設定した受信スクリプトを実行後、 **送信IPアドレス** 、 **Port番号** を指定の上実行することで、GStreamerの送信→受信ができるようになる。

## 結果
普通にネットワークがつながっている状態なので、ちょと線が細いと感じるぐらいで特に何の変わりもない。
ただ、「はじめに」に記載したように、現状の設定では他社の802.11ah機器の様なDuty10%制限の対応はされていないので、いわゆるDuty100%、すなわち制限無しに送信ができてしまうみたいだ。
Duty10%はドライバで制限するのではなく、アプリケーションレベルで自己責任で設定するという事だろうと推測されるので、当面は、「6分実験して54分間は電波を停止して待つ」という **Duty10%手動制約** で運用するのが良いと思われる。

### チャンネルリストについて
ATコマンドにチャンネルリストの設定はあるのだが、APにチャンネルどう設定するのかがわからなかった。
推測ですが、APはチャンネルリストの空いてそうなところを適当に選んで、STAはチャンネルリストの周波数をスキャンして、帯域、SSID, 暗号方式、暗号鍵、等の設定が合致するAPを見つけたら接続してしまうのかもしれない。

### 最大送信電力について
ATコマンドでは「最大送信電力」の設定があり、最大100mWまでが設定可能となっている。今回は日本の802.11ahで許される最大20.0mWの設定を行ったが、出力実測値との誤差、ばらつきは認識していないため、なんらかの検証で設定の正当性を担保するか、誤差、ばらつきマージンを考慮した最大送信出力設定が必要かもしれない。

## 所感
LilyGO T-Halowですが使い方や設定の方法、稼動実績情報とかまだ多くはないのですが、これまで使っていて、ハードウェア系(電源、RF系)のトラブルも無く、なかなかの完成度ではないかと思っている。

ただ、ボードレベルではアンテナの固定もできないバラック状態なので、 **実際に実験、評価を行いたい場合は、技術的、電波法的なバックグラウンドもあるという前提で、腰を据えて進めて行く必要がある** と考える。


## 今後の予定
T-Halowの802.11ahは設定、運用により、日本の電波法制限も守りながら安定に使える思われるため、今後はT-Halowに本来託された機能である、①ESP32-S3 + カメラ、②18650リチウムイオン電池、の実装で、「バッテリー駆動の802.11ah遠隔監視システム」を試していく予定。


## 参考
(1) サイレックス社技術文書「IEEE 802.11ahの細かなはなし」　https://www.silex.jp/library/blog/20221028-1 
(2) サイレックス社カタログ　 IEEE 802.11ah(Wi-Fi HaLow™) 920MHzで広域をカバーする無線LAN SX-NEWAH 日本モデル https://www.silex.jp/products/catalog/sxnewah_jp.pdf