WSL2でUSBデバイスを利用する
H716でサンプルプログラムを動かす で購入したlilygoのH716をWSL2で使う際にそのままでは使えなかったのでメモです。
WSL2ではUSBデバイスをそのまま使用することができないので、WinとWSL2の間でデバイスを共有する必要があります。
下記の公式ドキュメント通りではありますが、手順をまとめます。
usbipd-win のインストール
リリースから最新のバージョンをダウンロードします。
インストーラーを実行してインストールします。
https://github.com/dorssel/usbipd-win/releases/
デバイスの共有
以下のコマンドでデバイスの一覧を確認できます。
H716接続前と接続後で比較することでデバイスのバスIDを特定します。
1usbipd list
2BUSID VID:PID DEVICE STATE
39-1 303a:1001 USB シリアル デバイス (COM6), USB JTAG/serial debug unit Not shared
管理者権限でpowershellを開き、以下のコマンドでデバイスを共有します。
デバイスバスIDが 9-1
の場合、以下のように実行します。
1usbipd bind --busid 9-1
再度 list で確認すると、Shared
になっていることを確認します。
1usbipd list
2BUSID VID:PID DEVICE STATE
39-1 303a:1001 USB シリアル デバイス (COM6), USB JTAG/serial debug unit Shared
この手順は一度実施すれば、次回以降は不要です。
デバイスの接続
接続はデバイスがPCに接続される度に行う必要があります。
以下のコマンドでデバイスを接続します。
1usbipd attach --busid 9-1
listで確認すると、Attached
になっていることを確認します。
1usbipd list
2BUSID VID:PID DEVICE STATE
39-1 303a:1001 USB シリアル デバイス (COM6), USB JTAG/serial debug unit Attached
WSL2でデバイスが認識されていることを確認します。
1lsusb
2Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
3Bus 001 Device 011: ID 303a:1001 Espressif USB JTAG/serial debug unit
4Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
デバイスの読み書き権限を付与しておきます。
1sudo chmod 777 /dev/ttyACM0