🐸

WSL2でArduinoデバイスを認識させる

2023/09/13に公開

前提

  • Windows 11
  • WSL2(Ubuntu)
  • Arduino Uno(COM4)

USBを認識する

接続されているUSBはUbuntu側で以下のコマンドを使用して認識できる

lsusb -t

実行結果

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=vhci_hcd/8p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=vhci_hcd/8p, 480M

上記の時点では接続されていません。WslにUSBを認識させ為にはWindowsからのアタッチが必要です。

Linux(Ubuntu)の操作

下記のコマンドを打ってください。

sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20

これでUSBデバイスをWindowsと共有するためのツールがインストールされます

Windows側の操作

ちょっと長いです。
以下のコマンドを打ちます。

winget install --interactive --exact dorssel.usbipd-win

そしてPowerShellを管理者モードで開いてください。
そこで下記のコマンドを実行してください。もし出力されない場合は再起動してください。

usbipd wsl list

実行結果

BUSID  VID:PID    DEVICE                                                        STATE
2-1    ****:****  USB 入力デバイス                                              Not attached
2-8    ****:****  Arduino Uno (COM4)                                            Not attached
2-14   ****:****  インテル(R) ワイヤレス Bluetooth(R)                           Not attached

接続したいBUSIDをメモし、

usbipd wsl attach --busid <BUSID>

これを打った後にUbuntu側で最初のコマンドを打つとUSBが接続されている事が確認できます。そして最後に

ls /dev/ttyACM0

で出力されるとデバイスが正しく認識されていることがわかります。

https://learn.microsoft.com/ja-jp/windows/wsl/connect-usb

Discussion