1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL2で動作しているdevcontainer上で、Raspberry Pi Picoの開発をしたい

Posted at

条件

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部分は各自のデバイス名に変更すること。

devcontainer.json
{
    "name": "dev",
    // 
    "runArgs": [
        "--device=/dev/ttyACM0"
    ],
    // 
}

あとは、開発コンテナを起動するだけ。拡張機能を活用して便利に開発できますし、Gitも使いやすいので便利です。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?