LoginSignup
7
3

More than 1 year has passed since last update.

WSLでUSB認識をしよう

Last updated at Posted at 2022-11-25

この記事で結局使うコマンド

powershell:administrator
#wsl起動済み
usbipd wsl attach --busid 2-1
WSL
sudo chmod 777 /dev/ttyACM0

この記事の主題

  • WSLでUSBを認識するための手順
  • WSLがうまくいかなくなった場合の処置

環境

windows11 22H2
WSL2

最近はWSLのインストールもずいぶん簡単になり、powershellでwsl --installするだけでできるようになりました。Microsoft StoreでUbuntuをインストールしても同じ動作をするようです。

USBを認識させる手順

上記ページを参照してください。以下に簡単に解釈、要約したものを書きます。
まずwindowsにusbipdをインストールします。

powershell
winget install --interactive --exact dorssel.usbipd-win

その後WSLにusbipdの設定をしてあげます。ここでUnable to locateとか出た人はとにかく動かないWSL-Ubuntuをどうにかするを参照してください。僕はここでエラーが出ました。

WSL
sudo apt update
sudo apt upgrade
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デバイスの接続をしてあげましょう。powershellを管理者モードで開きます。現在接続されているUSBデバイスをまず確認します。

powershell:administrator
usbipd wsl list

以下のようにデバイスの一覧が表示されます。

レスポンス
BUSID  VID:PID    DEVICE                                                        STATE
2-1    2341:0043  Arduino Uno (COM5)                                            Not attached
2-5    13d3:56eb  USB2.0 HD UVC WebCam, USB2.0 IR UVC WebCam, Camera DFU De...  Not attached
2-10   8087:0026  インテル(R) ワイヤレス Bluetooth(R)                           Not attached

今回はArduino Uno (COM5) というデバイスをWSLに認識させます。このデバイスのBUSIDである2-1を使います。

powershell:administrator
usbipd wsl attach --busid 2-1

これで接続が完了しました。確認してみましょう。

WSL
lsusb
レスポンス
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

二番目に認識されているようです。
更に確認をします。

WSL
dmesg | grep tty
レスポンス
[    9.861989] cdc_acm 1-1:1.0: ttyACM0: USB ACM device

これでWSL上でttyACM0として認識されていることがわかりました。
アクセス権限も与えておきましょう。

WSL
sudo chmod 777 /dev/ttyACM0

これでデバイスが扱えるようになりました。切断時は

WSL
usbipd wsl detach --busid 2-1

を実行してくださいね。

とにかく動かないWSL-Ubuntuをどうにかする

さて、ここまででWSL-Ubuntuが動かなくなった人には2つの救済策があります。

  1. WSL-Ubuntuをリセットする
  2. 別のdistributionをセットする

まず簡単な1からやってみます。
設定>アプリ>インストールされているアプリ>Ubuntu を開き、詳細オプション内のリセットを選択します。
image.png

これで修復できれば万々歳です。

それでも何かしらの不具合がある場合は2の別のdistributionをセットするをやってみましょう。

powershell
wsl --install

を実行すると、

Linux 用 Windows サブシステムは既にインストールされています。
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。

NAME               FRIENDLY NAME
Ubuntu             Ubuntu
Debian             Debian GNU/Linux
kali-linux         Kali Linux Rolling
SLES-12            SUSE Linux Enterprise Server v12
SLES-15            SUSE Linux Enterprise Server v15
Ubuntu-18.04       Ubuntu 18.04 LTS
Ubuntu-20.04       Ubuntu 20.04 LTS
OracleLinux_8_5    Oracle Linux 8.5
OracleLinux_7_9    Oracle Linux 7.9

と返ってくると思います。このNAMEにあるものがインストールできるdistoributionです。wsl --installコマンドでは、デフォルトでUbuntuがインストールされます。なのでここではUbuntu-20.04をインストールしてみましょう。

powershell
wsl.exe --install Ubuntu-20.04

最初にUbuntuをインストールしたときと同様、UNIX usernamepasswordの設定を済ませます。

powershell
wsl --list

を実行すると現在インストールされているdistoributionが表示されます。

Linux 用 Windows サブシステム ディストリビューション:
Ubuntu (既定)
docker-desktop-data
Ubuntu-20.04
docker-desktop

UbuntuUbuntu-20.04が確認でき、現在Ubuntuが既定となっています。
ではUbuntu-20.04を既定に設定しましょう。

powershell
wsl --set-default Ubuntu-20.04

最後にwsl --listで変更を確認しましょう

Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-20.04 (既定)
docker-desktop-data
docker-desktop
Ubuntu

既定のdistoributionが変わっています。これで完了です。

7
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
7
3