usbipdでWSL2からUSBデバイスを使えるようにする

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シリアルを直接コントロール出来るだけでも用途の幅は広がるのではなかろうか?将来的にカーネルモジュールのバイナリ提供がされれば言うこと無しだろう。

コメント