usbipdをインストールすると、WSL2からUSBデバイスが使えるようになる。以下、マイクロソフトによる解説記事。
USB デバイスを接続する
usbipd-win を使用してお使いの WSL 2 Linux ディストリビューションに USB デバイスを接続する方法について説明します。
上記記事の通りに設定したところ、無事Windows11上のWSL2からUSBデバイスが使えるようになった。以下、備忘録も兼ねて手順をまとめておく。
usbipdのインストール
下記GitHubページからインストーラをダウンロードする。
Releases · dorssel/usbipd-win
Windows software for sharing locally connected USB devices to other machines, including Hyper-V guests and WSL 2. - dors...
現時点で最新のusbipd-win_4.3.0.msiをダウンロードしてインストールを行った。
USBデバイスのbindとattach
管理者権限のPowerShellもしくはコマンドプロンプトを開き、”usbipd list”を実行してUSBデバイスの一覧表示する。
> usbipd list
Connected:
BUSID VID:PID DEVICE STATE
1-2 1a86:55d3 USB-Enhanced-SERIAL CH343 (COM5) Not shared
1-5 0c45:6717 Integrated Webcam Not shared
1-7 8087:0a2b インテル(R) ワイヤレス Bluetooth(R) Not shared
1-9 04ca:0061 USB 入力デバイス Not shared
1-10 0a5c:5834 Dell ControlVault w/ Fingerprint Touch Sensor, Microsoft ... Not shared
上記の中でBUSIDの1-2に接続されているUSBシリアルインタフェースを共有するには”usbipd bind”に続けて”usbipd attach”を実行する。
> usbipd bind --busid 1-2
> usbipd attach --wsl --busid 1-2
usbipd: info: Using WSL distribution 'Ubuntu' to attach; the device will be available in all WSL 2 distributions.
usbipd: info: Using IP address 172.20.32.1 to reach the host.
WSL側でdmesgすると、ttyACM0として認識されている
[13629.154415] usb 1-1: New USB device strings: Mfr=0, Product=2, SerialNumber=3
[13629.154417] usb 1-1: Product: USB Single Serial
[13629.154419] usb 1-1: SerialNumber: 5759031498
[13629.157354] cdc_acm 1-1:1.0: ttyACM0: USB ACM device
デフォルトで利用出来るハードウエアには制限あり
現時点のWSLでもmodprobeはサポートされており、ハードウエアに対応したカーネルモジュールをロードする仕組みは存在している。しかしカーネルモジュールのバイナリが提供されていないため、自前でカーネルのビルドする等、追加手順が必要になってしまう。
このためデフォルト状態で使えるのはUSBシリアルインタフェースなど一部のハードウエアに限定されている。
まとめ
割と簡単な手順を踏むだけでWSL上でハードウエアを扱えるようになるのは嬉しい限り。WSLからUSBシリアルを直接コントロール出来るだけでも用途の幅は広がるのではなかろうか?将来的にカーネルモジュールのバイナリ提供がされれば言うこと無しだろう。
コメント