USBデバイスをWSLに接続する方法
1. 「SORACOM Onyx LTE USB ドングル SC-QGLC4-C1」をWSLへ接続
BLEデータの受信・送信用アプリ開発に使います。
1-1. LTE USB ドングル
SORACOM Onyx LTE USBドングルは、LTE Cat.4 / 3G / GSM に対応したUSB型データ通信端末です。対応する Windows / Linux HOSTデバイスのUSBソケットに挿すことで、HOSTデバイスにネットワーク接続を提供します。
USBから給電され、モデムとアンテナが一体になったUSB型データ通信端末は、その他電源やアンテナ接続を必要とせず、それだけで完結したネットワーク接続手段となります。
1-2. WSLとWindows
- Windows11
- WSL 2ディストリビューション:5.10.102.1
uname -a Linux RYZEN-PC 5.10.102.1-microsoft-standard-WSL2 #1 SMP Wed Mar 2 00:30:59 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
- WSL-Linux: Ubuntu 22.04.1 LTS
cat /etc/os-release PRETTY_NAME="Ubuntu 22.04.1 LTS"
1-3. usbipd-win の最新リリースをWindowsにインストール
- usbipd-win_2.3.0.msi
- Windowsにインストールします。
1-4. Ubuntu22.04にインストール
- ディストリブーションによってバージョンが変わりますので注意してください。
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.15.0-47-generic/usbip 20
- この時点で、USB デバイスを共有するサービスが Windows 上で実行され、共有デバイスに接続するために必要なツールが WSL にインストールされています。
1-5. WSL コマンド プロンプトが開いていることを確認します。
まず、WSL コマンド プロンプトが開いていることを確認します。これにより、WSL2VMがアクティブに保たれます。
Windowsのコマンドプロンプト
usbipd wsl list BUSID VID:PID DEVICE STATE ... 3-3 2c7c:0125 EG25-G Not attached ...
WSL に接続するデバイスのバス ID を選択し、このコマンドを実行します。
パスワードを求められたら入力します。
usbipd wsl attach --busid <busid> #今回は「3-3」
デバイスの使用が完了したら、デバイスを物理的に切断するか、Windows の管理者コマンド プロンプトからこのコマンドを実行できます。
usbipd wsl detach --busid <busid> #今回は「3-3」
Ubuntuで確認します。
接続前
lsusb 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
接続後
lsusb Bus 001 Device 002: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem
2. Debianにインストール
LTE通信のためのUSBドングルをセットしてSORACOM Airをセットアップする際、Raspberry PiなどでUSBドングル+SORACOM Airを利用するためのスクリプト setup_air.sh があるので、Raspberry PiのOSであるDebianをWSLにインストールしてみました。
2-1. WSLディストリビューション
- WSLディストリビューションをDebianへ変更
wsl -l
Debian
Ubuntu-20.04 (既定)
Ubuntu22.04-v1
wsl --set-default Debian
wsl -l
Linux 用 Windows サブシステム ディストリビューション:
Debian (既定)
2-2. Debian
- Debianは、簡単にインストールされ認識されました。
sudo apt install usbip hwdata usbutils
- 確認:Dongleを挿していたので認識していました。
(base) PS C:\Users\RYZEN> usbipd list
Connected:
BUSID VID:PID DEVICE STATE
...
2-3 0d8c:013c USB PnP Sound Device, USB 入力デバイス Not shared
3-3 2c7c:0125 EG25-G Shared
...
Persisted:
GUID DEVICE
(base) PS C:\Users\RYZEN> usbipd bind --busid 3-3
usbipd: info: Device with busid '3-3' was already shared.
- WSLで確認
lsusb
Bus 001 Device 002: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem
- Debianは、軽くサクサク動きますね~。
以上