WSL2からUSBデバイスを使用する
WSL2からUSBデバイスが使えるようになったとのことで、試してみる。
自分用メモなので細部は適当。
【環境】
Windows 10 Home 21H2
WSL2
Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
【作業】
#PowerShell(管理者として実行)
・Linuxディストリビューションのインストール
wsl --install -d Ubuntu-18.04
#PowerShell
・カーネルが古い場合(WSL2 kernel 5.10.60.1 以上なら飛ばしてOK)のみ下記実行
wsl --update
#PowerShell
・WSL1 or 2の確認
wsl -l -v
・WSL1の場合、下記コマンドでWSL2に変更
wsl --set-version Ubuntu-18.04 2
・usbipd-winのインストール
URL:https://github.com/dorssel/usbipd-win/releases
#WSL
$ sudo apt install linux-tools-5.4.0-77-generic hwdata
$ sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20
#PowerShell
USB機器のアタッチと確認
usbipd wsl list
・USBデバイスの確認
usbipd wsl list
・USBデバイスのアタッチ
usbipd wsl attach --busid 2-2*1*2
#WSL
lsusb
ここまででWSLからUSBデバイスが見えるようになっているが、WSLからArduinoを起動してみると下図のようにシリアルポートがグレーアウトされている。
WSL2からArduinoに書き込みができるようにカーネルのリビルドを実行
#WSL
・下準備
$ sudo apt install build-essential flex bison libssl-dev libelf-dev dwarves libncurses-dev
$ git clone https://github.com/microsoft/WSL2-Linux-Kernel.git
$ cd WSL2-Linux-Kernel
・menuconfigの設定
$ make menuconfig KCONFIG_CONFIG=Microsoft/config-wsl
>>>
-> Device Drivers
-> USB support (USB_SUPPORT [=y])
-> USB Serial Converter support (USB_SERIAL [=y]) から
USB CP210X Family of...を有効化する
=>save=>exit
・カーネルのリビルド
$ make -j4 KCONFIG_CONFIG=Microsoft/config-wsl
ビルドイメージをWindowsにコピー(usernameは個々人の環境に合わせること)
$ cp arch/x86/boot/bzImage /mnt/c/Users/username/wsl_kernel
・.wslconfigの編集(usernameは個々人の環境に合わせること)
$ vim /mnt/c/Users/username/.wslconfig
***vimで書き込む内容
[wsl2]
kernel = C:\\Users\\username\\wsl_kernel
***ここまで
・一度WSLをシャットダウン
wsl --shutdown
#WSL
・CONFIG_USB_SERIAL_CP210Xの有効化の確認
$ zcat /proc/config.gz | grep CONFIG_USB_SERIAL_CP210X
>>>
CONFIG_USB_SERIAL_CP210X=y
usbipd wsl attach --busid 2-2でデバイス追加
#WSL
$ ls -l /dev/ttyUSB0
でttyUSB0が表示されればOK
ArduinoIDEのPortも有効化されている
【参考】
https://docs.microsoft.com/ja-jp/windows/wsl/connect-usb