🔌
WSL2でUSBデバイスを使う
概要
WSL2で作った開発環境でUSBデバイスと通信を行うには、ホストとゲストのどちらにもUSB/IPツールをインストールする必要がある
2023/09/14 追記:USBデバイスを接続するbatファイルを作成しました
環境
環境 | 情報 |
---|---|
PC | HP デスクトップ |
OS(Host) | Windows 11 Home 22H2 |
WSL2 | 1.2.5.0 |
OS(WSL2) | Ubuntu 22.04.3 LTS |
USB/IPとは
ネットワークIPを経由してUSBデバイスを共有することを目的としたプロジェクト
USB I/OメッセージをTCP/IPペイロードにカプセル化して通信する
usbipd-win
をインストールする
ホスト(Windows11)に
winget
を使ってインストールする場合は
PowerShell
winget install --interactive --exact dorssel.usbipd-win
WSL2へUSBIPツールとハードウェアデータベースをインストールする
Bash
sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20
USBデバイスを接続する
- PowerShellを管理者として開き、次のコマンドを入力することで、接続されているUSB デバイスの一覧を表示する
PowerShell
usbipd wsl list
- WSL2で接続したいデバイスのbusidを<busid>と置き換えて次のコマンドを実行する
PoserShell
usbipd wsl attach --busid <busid>
- WSL2でコマンドラインを開き、次のコマンドで接続されたUSB デバイスが接続されているか確認する
Bash
lsusb
- USBデバイスの接続を解除するには
PowerShell
usbipd wsl detach --busid <busid>
躓いたこと
上の手順2のコマンドを実行したとき以下のようなエラーを吐いた
PowerShell
usbipd: warning: A third-party firewall may be blocking the connection; ensure TCP port 3240 is allowed.
これは、私の環境にはMcAfeeがインストールされており、それによってportの割り当てをブロックされていることが原因だった
McAfeeのfirewallを一時的に無効にすることで解決した
追記(2023/09/14)
USBデバイスの一覧表示を表示し、任意のbusidを指定して接続するbatファイルを作成しました(2023/09/14)
usb_wsl.bat
@echo off
usbipd wsl list
set /p device="busid >> "
usbipd wsl attach --busid %device%
usbipd wsl list
参考
Discussion