※注意 まだ実際にWebカメラを使えるようになってませんのでご了承ください
この記事通りにやっても、WSL2でカメラデータを表示することはできません。御免っ!
最近これ関連の新しい記事が投稿されてたので、乞うご期待。
https://qiita.com/ryoma-jp/items/9db6cca5ed10f1aed7ff
→ 使えました(2023/10/27/13/31現在)
対象
WSL使い
環境
ノートPC
- OS: Windows11 Home(22H2)
WSL2- Ubuntu-22.04
-
カーネルのバージョン: 5.15.90.1-microsoft-standard-WSL2
uname -r -v
をWSL側で実行すると確認できます - インストール済み:
linux-tools-generic hwdata opencv-python(Python3)
usbipd
- CPU: 13th Gen Intel(R) Core(TM) i5-13500H 2.60 GHz
- ユーザー名: otogr
※ ご自身のWindowsの方のユーザー名をご確認ください。途中で何度か使います。
準備
-
usbipd
PowerShellで以下を実行。勝手にusbipdというツールの環境設定までやってくれます。winget install usbipd
-
WSL側で以下をインストール(どうやらいらないかもだけど一応)
sudo apt install linux-tools-generic hwdata
wsl2_linux_kernel_usbcam_enable_confのセットアップ
こちらのGithubリポジトリのREADMEに沿って進めていきます。
wsl2_linux_kernel_usbcam_enable_confは、WSL2の内部からUSBIPを使ってホストPCに接続されたUSBカメラにアクセスするためのカーネルをビルドするための設定ファイルだそうな、、、🤪
wsl2_linux_kernel_usbcam_enable_confのセットアップが無事成功したら、usbipdでwsl側へUSBデバイスのIPを追加します。WSL側で/dev/video*へ権限を与えればカメラ情報の表示を実行できるかと思います。
-
USBデバイス情報を一覧表示(Windows PowerShell)
usbipd list
-
一覧から有効にする USB デバイスの BUSID を見つけ、 WSL2 にアタッチする
(例) usbipd wsl attach --busid 2-6
-
もう一度 usbipd list で確認すると アタッチしたデバイスの ”STATE”の表示が変わっていますね!
usbipd list
-
WSL2で確認/権限付与する
増えたね
- カメラデバイスへの権限付与
sudo chmod 777 /dev/video0
- カメラデバイスへの権限付与
-
動作確認
usbtest_cam.pyを実行する。
実行しても何も映らない人は、Xlaunchの設定もした方が良いかもしれません。
以上!
うまくいくことを願います!
過去のこの記事の内容
必要なツールの準備
usbipd-win
Windowsにインストール
-
以下のコマンドを実行
winget install --exact dorssel.usbipd-win
(もしくは、、、)
- ここへアクセス→ https://github.com/dorssel/usbipd-win/releases
- 最新のものを選ぶ(22/1225 現在: usbipd-win_2.4.1.msi)
- ダウンロードして実行する
USBシリアルドライバを有効にしたWSL2 kernelに更新する
usbipをWSL2にインストール
sudo apt install linux-tools-5.4.0-77-generic hwdat
usbipコマンドを有効にする
これやるとsudoコマンドが使えんくなったから慎重にやらなきゃ
-
sudoersを開く
sudo visudo (パスワード入力)
-
secure_pathの最初の方に「/usr/lib/linux-tools/5.4.0-77-generic:」を追加
~ Defaults secure_path="/usr/lib/linux-tools/5.4.0-77-generic:/usr/local/sbin:(以下省略)" ~
-
Ubuntu側のユーザーをvideoグループに含める(USBカメラ/Realsenseのため)
sudo adduser $USER video
-
usbipが2.x以降になってからPowerShellで下記エラーがでるようになったので、
usbipd: error: WSL 'usbip' client not correctly installed. See https://github.com/dorssel/usbipd-win/wiki/WSL-support for the latest instructions.```
以下を実行して修正する
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20
→ WSL, WindowsPowerShell再起動
USBアクセスの手順
1.USBをPCに接続する
このままでは まだWSL2上ではUSBデバイスは認識できていません
- lsusb コマンドで確認してみます
2.Windowsターミナルを起動する
- 「ctrl + x」+「A」
- アクセスを許可する<YES>
3.使いたいUSBデバイスをWSL2にアタッチする
-
USBデバイス情報を一覧表示
usbipd list
-
一覧から有効にする USB デバイスの BUSID を見つけ、 WSL2 にアタッチする
(例) usbipd wsl attach --busid 2-6
-
もう一度 usbipd list で確認すると アタッチしたデバイスの ”STATE”の表示が変わっていますね!
(例) usbipd wsl attach --busid 2-6
4.WSL2で確認/権限付与する
- lsusbで確認
増えたね
- 2DLidarとかKobukiならポート権限付与するといけます。
sudo chmod 666 /dev/ttyUSB0 /dev/ttyACM0
参考記事