条件
Raspberry Pi Picoで遊びたいけど、、、
- WSL2(Ubuntu)上に構築したい
- VScode(というかdevcontainer)を利用したい
という条件で環境構築しました。
この条件だと、Picoを接続するのに一苦労だったので備忘録として。
Windows上での準備
1. usbipd-winのインストール
winget install --interactive --exact dorssel.usbipd-win
2. Picoを接続
BOOTSELボタンは押さなくてOKです。
USBケーブルでRaspberry Pi PicoとPCを接続します。
3. BUSIDの確認
以下のコマンドでBUSIDを確認する。
usbipd list
どのデバイスかわからない場合は、デバイス抜き差しして前後にusbipd list
をして増えてるものがどれかを確認すれば特定できます。
4. デバイスをバインドする
この手順は管理者権限のコマンドプロンプトから実行してください。
usbipd bind --busid <BUSID>
5. デバイスをアタッチする
usbipd attach --wsl --busid <BUSID>
これでUbuntu側からもUSBデバイスが認識できるようになります。
WSL2(Ubuntu)上での準備
1. Windows側の設定がうまくいっているか確認
まずは、ここまでの手順がうまくいっているか確認します。
lsusb
うまくいっていれば、以下のようにPicoらしきデバイスが表示されます。
(下記でいうとMicroPython Boardですね。)
# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 2e8a:0005 MicroPython Board in FS mode
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
2. WSL2(Ubuntu)上でのデバイス名を確認
WSL2(Ubuntu)上で認識されているPicoのデバイス名を確認します
dmesg | grep cdc_acm |grep tty
以下のように接続情報が確認できます。
私の場合はttyACM0
として接続されていることが確認できました。
# dmesg | grep cdc_acm |grep tty
[ 675.390443] cdc_acm 1-1:1.0: ttyACM0: USB ACM device
3. devcontainer.jsonの編集
devcontainer.json
に開発コンテナ起動時の追加の引数として、先ほど確認したデバイス名を渡します。
※ttyACM0
部分は各自のデバイス名に変更すること。
{
"name": "dev",
// 略
"runArgs": [
"--device=/dev/ttyACM0"
],
// 略
}
あとは、開発コンテナを起動するだけ。拡張機能を活用して便利に開発できますし、Gitも使いやすいので便利です。