LoginSignup
2
3

WSL2へUSBデバイス共有、usbipd-win 4

Posted at

概要

image.png

WSL2ではUSBデバイスの接続をネイティブには使用できないので、Win32とWSL2間でのUSBデバイス共有する必要があります。オープンソースのusbipd-winプロジェクトがその機能を提供するので使い方をまとめます。

シナリオ

USBメモリをWSL2で共有して使ってみることを想定します。

usbipd-win 4

2023年11月、usbipd-winがバージョン4に上がりました。
以前のバージョンと異なる内容として最も変わっていたのがクライアント側のツールをインストールする必要はなくなったことです。

image.png

インストール

msiファイルをダウンロードしてインストールします。

インストール後にコマンドプロンプトで確認できます。

image.png

事前準備

WSL2のLinuxディストリビューションでUSBデバイス種類をサポートできるようにカーネルビルドが必要です。
詳しい手順は以下の記事にまとめておきました。

USB接続前の確認

USBデバイスを接続前にLinuxディストリビューションを起動して確認します。

PS C:\> wsl --distribution Ubuntu-22.04
$ uname -r  # カーネルバージョン
5.15.137.3-microsoft-standard-WSL2+
$ fdisk -l  # USBメモリ接続前のディスク情報確認
fdisk: cannot open /dev/ram0: Permission denied
fdisk: cannot open /dev/ram1: Permission denied
fdisk: cannot open /dev/ram2: Permission denied
fdisk: cannot open /dev/ram3: Permission denied
fdisk: cannot open /dev/ram4: Permission denied
fdisk: cannot open /dev/ram5: Permission denied
fdisk: cannot open /dev/ram6: Permission denied
fdisk: cannot open /dev/ram7: Permission denied
fdisk: cannot open /dev/ram8: Permission denied
fdisk: cannot open /dev/ram9: Permission denied
fdisk: cannot open /dev/ram10: Permission denied
fdisk: cannot open /dev/ram11: Permission denied
fdisk: cannot open /dev/ram12: Permission denied
fdisk: cannot open /dev/ram13: Permission denied
fdisk: cannot open /dev/ram14: Permission denied
fdisk: cannot open /dev/ram15: Permission denied
fdisk: cannot open /dev/sda: Permission denied
fdisk: cannot open /dev/sdb: Permission denied
fdisk: cannot open /dev/sdc: Permission denied
$ lsusb  # USBデバイスの情報表示
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ dmesg | tail  # Linuxカーネル起動時のメッセージ表示
[    2.098437] misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -2
[    2.098719] misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -2
[    2.098977] misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -2
[    2.099239] misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -2
[    2.099638] misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -2
[    2.099948] misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -2
[    2.100232] misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -2
[    2.250171] misc dxg: dxgk: dxgkio_query_adapter_info: Ioctl failed: -2
[    3.428521] WSL (2): Creating login session for user
[   49.066282] hv_balloon: Max. dynamic memory size: 16254 MB

USBデバイス共有設定

USBメモリのデバイスを差し込んでWindows側でUSBデバイスを共有します。
プロンプト実行には管理者権限で開いてください。

PS C:\> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
1-4    1a2c:4325  USB 入力デバイス                                              Not shared
1-10   0411:023a  USB 大容量記憶装置                                            Not shared
1-14   8087:0025  インテル(R) ワイヤレス Bluetooth(R)                           Not shared

Persisted:
GUID                                  DEVICE

USBメモリが1-4のバスIDで登録されているので、共有設定しておきます。

PS C:\> usbipd bind --busid 1-10
PS C:\> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
1-4    1a2c:4325  USB 入力デバイス                                              Not shared
1-10   0411:023a  USB 大容量記憶装置                                            Shared
1-14   8087:0025  インテル(R) ワイヤレス Bluetooth(R)                           Not shared

Persisted:
GUID                                  DEVICE

この状態だとまだWindows側ではUSBメモリが認識されている状態です。

image.png

USBデバイスの接続

PS C:\> usbipd attach --wsl --busid 1-10
usbipd: info: Using WSL distribution 'Ubuntu-22.04' to attach; the device will be available in all WSL 2 distributions.
usbipd: info: Using IP address 192.168.224.1 to reach the host.
PS C:\> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
1-4    1a2c:4325  USB 入力デバイス                                              Not shared
1-10   0411:023a  USB 大容量記憶装置                                            Attached
1-14   8087:0025  インテル(R) ワイヤレス Bluetooth(R)                           Not shared

Persisted:
GUID                                  DEVICE

USBデバイスを接続するとWindows側では表示されなくなります。

image.png

動作確認

Linuxディストリビューションで動作確認します。

$ dmesg | tail  # Linuxカーネル起動時のメッセージ表示
[   50.440096] usb-storage 2-1:1.0: USB Mass Storage device detected
[   50.440479] scsi host1: usb-storage 2-1:1.0
[   51.448117] scsi 1:0:0:0: Direct-Access     BUFFALO  USB Flash Disk   1.00 PQ: 0 ANSI: 6
[   51.448427] sd 1:0:0:0: Attached scsi generic sg3 type 0
[   51.451787] sd 1:0:0:0: [sdd] 60555264 512-byte logical blocks: (31.0 GB/28.9 GiB)
[   51.453022] sd 1:0:0:0: [sdd] Write Protect is off
[   51.453026] sd 1:0:0:0: [sdd] Mode Sense: 45 00 00 00
[   51.454125] sd 1:0:0:0: [sdd] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[   51.462207]  sdd: sdd1
[   51.466229] sd 1:0:0:0: [sdd] Attached SCSI removable disk
$ lsusb  # 接続されたUSBデバイス情報確認
Bus 002 Device 002: ID 0411:023a BUFFALO INC. (formerly MelCo., Inc.) USB Flash Disk
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ fdisk -l  # 接続されたUSBデバイスのディスク確認
fdisk: cannot open /dev/ram0: Permission denied
fdisk: cannot open /dev/ram1: Permission denied
fdisk: cannot open /dev/ram2: Permission denied
fdisk: cannot open /dev/ram3: Permission denied
fdisk: cannot open /dev/ram4: Permission denied
fdisk: cannot open /dev/ram5: Permission denied
fdisk: cannot open /dev/ram6: Permission denied
fdisk: cannot open /dev/ram7: Permission denied
fdisk: cannot open /dev/ram8: Permission denied
fdisk: cannot open /dev/ram9: Permission denied
fdisk: cannot open /dev/ram10: Permission denied
fdisk: cannot open /dev/ram11: Permission denied
fdisk: cannot open /dev/ram12: Permission denied
fdisk: cannot open /dev/ram13: Permission denied
fdisk: cannot open /dev/ram14: Permission denied
fdisk: cannot open /dev/ram15: Permission denied
fdisk: cannot open /dev/sda: Permission denied
fdisk: cannot open /dev/sdb: Permission denied
fdisk: cannot open /dev/sdc: Permission denied
fdisk: cannot open /dev/sdd: Permission denied
$ sudo mkdir -p /mnt/usbfm  # マウントディレクトリ作成
$ sudo mount -t vfat /dev/sdd1 /mnt/usbfm/  # マウント設定

片付け

$ sudo umount /mnt/usbfm/
PS C:\> usbipd detach --busid 1-10
PS C:\> usbipd unbind --busid 1-10
PS C:\> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
1-4    1a2c:4325  USB 入力デバイス                                              Not shared
1-10   0411:023a  USB 大容量記憶装置                                            Not shared
1-14   8087:0025  インテル(R) ワイヤレス Bluetooth(R)                           Not shared

Persisted:
GUID                                  DEVICE
2
3
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
2
3