LilyGo T-Halowボードを動かす (ATコマンド確認・通信未確認)

作成日：2024/10/19　修正日：2024/10/22

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

## はじめに
キャリアとか関わらずに長距離(1km)の通信ができると言われいるIEEE 802.aa1h (Wi-Fi HaLow™)がここ数年言われていたが、やっと身近に使えそうなデバイスが出てきた。
LilyGo社のT-Halowが、技適対応となり購入できるようになり、日本の業者も予約を取り始めたが、LILYGO®のショップで直接購入してみた。
今回は、まずは起動させることに注力してみた。

## 送られて来たモノ
2024年9月26日に注文したところ、1ヶ月弱後の10月17日に届いた。
割と立派なプラスチックケースに、ボード(基板)、SPI-Flash-Memory、アンテナ、その他部品、が入っていた。
![IMG_6382.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33155/08713f78-b9a0-4c31-23bf-1045bab52bf5.jpeg)

もちろん、説明書は無くて、詳しくはGithub見てって感じ。
https://github.com/Xinyuan-LilyGO/T-Halow

## ボードのバージョン識別
Githubによると、T-Halowのボードは2種類あるとのこと。
| - | TIME | LINK | 備考 |
| ---- | ---- | ---- | ---- |
| VER1 | V1.0 24-08-23 | VERSION1 | |
| VER2 | V1.0 24-04-16 | VERSION2 | ←入手分 |

ボードには、"T-Halow V1.0 24-05-31" とシルクがあったが、Githubの識別とは合致しない。
付属しているSPI-Flash-Memoryの袋の印字とか、GithubのVERSION毎のボードの端子違いとかの説明を総合して、"VER2 (VERSION2)"と特定した。
とにかく、"V1.0", "VER2", "VERSION2"と、事前説明の無いバージョン表記が複数個あり、ボードのタイムスタンプ(かな？)とバージョンの数の進み方が合っていないので、非常にわかりにくい。

### VERSIONの違いについて
GitHubには説明が書いてあるが、どちらのバージョンも同じATコマンドが使えるそうだが、使えるモードが違うとのこと。
VERSION1 は普通の802.11ahの機能仕様に基づいてモードが設定されているようだが、VERSION2は、ESP32-S3を使う場合と、有線Etherを繋ぐという用途主体でモードが設定されている様だ。
今回のボードはVERSION2なので、そのバージョンを主体として取り上げる。

## VERSION2
VERSION2のボードは、装着するSPI-Flash-Memoryのファームウェアで2つのMODEが稼動するようだ。
![Version2-MODEs.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33155/b14af4ab-652d-a414-c3e5-ed74a334222e.png)

"MODE1"は、ボードに内蔵しているESP32-S3をコントローラとして動くモードで、"MODE2"は、ボードのRJ45のEtherコネクタにPCを繋いで802.11ah無線通信路をブリッジとして繋ぐ方法の様だ。

今回は手っ取り早く動かして見たかったので、"MODE2"で稼動させることにした。

出荷後のボードに装着されているSPI-Flash-Memoryは未確認だが、"MODE1"の様で、付属のSPI-Flash-Memoryのファームが"MODE2"っぽかったので、Flash-Memoryの向きを間違えないように入れ替えてみた。

GitHubに下記の記載がある。
```
MODE1: Send AT command control to TX-AH via ESP32
    TX-AH: Download huge-ic-ah_xxxxxxxxx_TAIXIN-usb.bin
    ESP32: Download AP or STA
    Notice：Debug using Type-C

MODE2: Send AT command control via micro-USB
    TX-AH: download huge-ic-ah_xxxxxxxxx_TAIXIN-WNB.bin
    ESP32: No firmware download required
    Notice：Debug using Micro-USB
```

要は、MODE2の場合は、ESP32のファームウェアはいらないけど、デバッグはMicro-USB (電源はUSB-C)。
MODE1はデバッグはUSB-Cということらしく、ほんと、ややこしい。

## CH340K USB-Serial Driverのインストール
T-Halowボードを制御するためのPC(今回はMac)のために、USB-Serialのドライバをインストールする必要がある。
T-Halowボードには、激安シリアル変換ICのCH340Kが使われているそうで、新規にインストールした。
Macでは、ドライバのZIPファイルをダウンロード、展開して、dmgファイルを開けて中のインストーラーアプリを取り出し、起動して、ドライバーインストールする。

## T-Halowボードの接続
とりあえず、最初はボードの動作を確認してみる事に注力してみた。
![IMG_6386-sm2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33155/26d51de2-374f-3236-c02b-4aae01e3412c.jpeg)
### 接続
接続は、①電源 (USB-C)、②USB-Serial (Micor-USB)、③アンテナ、④有線Ether(RJ45：写真ではまだ繋いでいない)で大丈夫。

### 電源投入＆TTYの確認
電源を投入し、Macの"ターミナル"で、先ほどインストールしたCH340K Driverで見える様になったTTYを "ls /dev/tty*"で確認する。
私の場合は、"/dev/tty.wchusbserial14120"だった。

### シリアルコンソールで接続
本来は、Windowsのシリアルデバッガソフトで接続するのかもしれないが、今回PCに相当するマシンがMacだったので、Macのシリアルコンソールで接続した。
```
$ screen /dev/tty.wchusbserial14120 115200
```
(screenコマンドから抜けるのは、"Ctrl-a k")

約5秒毎に内部情報が表示される。
```
LMAC STATUS:
local: 4a:06:59:72:93:c0 AID= 0
freq= 908.0 bw=8 chn=3 bgr=-60 iq=0:50:-1:0 dc=0:0(17:-10) tx=*5 dly=0:0:0 sif:rsp=0:0(0)
chn:  908.0  916.0  924.0 
bgr:    -60    -60    -60 
buf: free=78 tq=0 sq=0 ac=0:0:0:0 agg=0:0:0:0 statq=0 rxq=0:0 skb=0:0 rxb=120K
irq: ac=0 bkn=0 bo(rts:frm)=0:0:0:0:0 to(rts:frm)=0:0 rx=0
tx : cnt=0 dly=0:0ms mcast(bw:mcs)=2:0 agg=0(6017,0:0) data=0KB(0kbps) dur=0ms cca=0 per=0% est_rate=0kbps fail=0 drop=0
rx : cnt=0 bus=0ms cts_bm=0:0 pks=0 data=0KB(0kbps) dur= 0ms err(phy:fcs)=0:0 ecode=0x0 rssie= 0:0 cache_rxq= 0:0
dbg: dtmd=0:0:0 stamap=0x0 sleepmap=0x0 flag=0x0 rxdp=0 kerr=0 mic=0 lerr=0 kick=0 csc=0 rst=12 ovf=0 nob=0 tsnr=0 rssi=0 rxdut=0% txp=0 rxg=5    
cca: 4s st12= 0:0 mid1224= 0:0:0:0 ed1224= 0:0:0:0 ch_bz= 0
chip-temperature:42, vcc:3.30, vdd13b:1.32, vdd13c:1.31
sta_list: no sta
[147768]
```

シリアルコンソール実行時に、キーボードのエコーバック設定をしていないので、ATコマンドを打ち込んでも表示されないが、一応レスポンスはしている様だ。
```
入力: AT+MODE?
+MODE:sta
OK
```
それ以外のATコマンドを入れてみたらレスポンスが返ってきたので表にしてみた。

|COMMAND NAME|COMMAND|RESPONSE|備考|
| ---- | ---- | ---- | ---- |
|MODE|AT+MODE?|+MODE:sta| STAモード|
|SSID|AT+SSID?|+SSID:|SSIDは設定されていない？|
|KEYMGMT|AT+KEYMGMT?|+KEYMGMT:WPA-PSK|セキュリティはWPA-PSKが設定されている|
|PSK|AT+PSK?|+PSK:0000000000000000000000000000000000000000000000000000000000000000|PSKの暗号化パスワード|
|BSS_BW|AT+BSS_BW?|+BSS_BW:8MHz|BBS帯域幅|
|FREQ_RANGE|AT+FREQ_RANGE?|+FREQ_RANGE:0-0|動作周波数範囲の設定はされていない？|
|CHAN_LIST|AT+CHAN_LIST?|+CHAN_LIST:9080,9160,9240|動作周波数リストの設定値|
|RSSI|AT+RSSI?|+RSSI:0|デバイスの信号品質の確認。まだ電波が出ていない？|
|CONN_STATE|AT+CONN_STATE|+DISCONNECT|接続ステータスの表示|
|WNBCFG|AT+WNBCFG|-|デバイスのパラメータの表示|
|TXPOWER|AT+TXPOWER?|+TXPOWER:20dbm|最大送信電力表示。設定できる範囲は6〜20|
|ACKTMO|AT+ACKTMO?|+ACKTMO:0|ACKタイムアウト期間を設定します；AT+ACKTMO=0；デフォルト値。単位はマイクロ秒。|
|TX_MCS|AT+TX_MCS?|+TX_MCS:255|TX MCSの設定。デフォルト値は255、自動MCS；値の範囲は[0, 7]|
|HEART_INT|AT+HEART_INT?|+HEART_INT:500|ハートビートのパケット間隔の設定|


## ここまでの結果
とりあえず、ボードに電源を入れると、USB-Serialでログが表示され、ATコマンドもそれなりに受け付ける様だ。ただ、5秒ぐらいに1回表示されるログを止める方法は不明。
(注：LMACデバッグメッセージは、"AT+SYSDBG=LMAC,0"コマンドを投げることで停止できる [2024/10/22]）
IEEE 802.11ahの電波が出ているかどうか、つながるかどうかまでは至っていない。

## 補足
手元にMorseMicro社のChipを使ったIEEE 802.11ah機器があったので、AP, STA共にT-Halowと接続を試みたが、下記の理由で結局断念した。

- MorseMicro機器とT-Halowのセキュリティ設定が異なる (MorseMicro機器は、WPA3ベースのSAE,OWE,WPA3-EAPだが、T-HalowはWPA-PSKの一択)
- STAに設定したT-Halowの帯域幅、周波数帯域、をMorseMicro機器に合わせて、T-HalowにSSIDを設定してみたが、スキャンするだけで、MorseMicro機器のAPを見つけられなかった

また、この後の2台のT-Halowでのブリッジ接続も、今のところどうやら成功事例が見当たらないし、Githubのissuesにも「ブリッジモードが動かん」って上がっているので、継続的に調査する予定。
また、MorseMicroデバイスでも動かんってissueが上がっているので、巨大迷路にはまった感じ。

~~おそらく、アップデートされたファームが出てきて、SPI-Flash-Memoryに書込んで使ってねって感じになるのだろう。~~
(注：推奨パラメータの確証はないが、通信できる目処が立ちそうなので消した。 [2024/10/22])

## 続編
[LilyGo T-Halowボードを動かす2 (ネットワーク・ブリッジを動かす)]( https://qiita.com/furufuru/items/1bbb70490a91f3925371 )を公開しています。 [2024/10/22]
## 参考
(1) T-Halow Githubサイト https://github.com/Xinyuan-LilyGO/T-Halow
(2) CH340K の macOS 用ドライバ https://qiita.com/Saqoosha/items/1b5a72317a817bdd680c
(3) Lilygo T-halow issue video https://www.youtube.com/watch?v=vkS0jmfi6N0
「ブリッジモードでつながらないから、動くチップ寄こせ！」