usbipd-win v1.3を使った記事になります。
v4.0を使った記事を別に書いていますのでよかったら読んでみて下さい。
touch-sp.hatenablog.com
はじめに
過去2回WSL2でWebカメラを使用する方法を書きました。WSL2でカメラを使うには - パソコン関連もろもろWSL2でカメラを使うには(2) - パソコン関連もろもろ
usbipd-winが新しくなったりWSL2のKernelが新しくなったりしているので改めてトライしました。というよりPCを新調したのでやらざるを得なかったです。
方法を備忘録として残しておきます。
参考にさせて頂いたサイト
zenn.dev環境
Windows 11です。使用したカメラはロジクール C920nです。
C:\>wsl -v WSL バージョン: 1.0.0.0 カーネル バージョン: 5.15.74.2 WSLg バージョン: 1.0.47 MSRDC バージョン: 1.2.3575 Direct3D バージョン: 1.606.4 DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windowsバージョン: 10.0.22621.819
方法
カーネルのビルド
まずは必要なものをインストールします。
sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev autoconf libudev-dev libtool
ベースとなるカーネルをダウンロードします。
git clone https://github.com/microsoft/WSL2-Linux-Kernel.git cd WSL2-Linux-Kernel git checkout linux-msft-wsl-5.15.74.2
「.config」ファイルを作ります。(解凍してリネームするだけ)
cp /proc/config.gz config.gz gunzip config.gz mv config .config
「.config」の中身を変更します。
sudo make menuconfig
このコマンドでGUIを使って書き換えができます。
変更したのは5か所です。
- 「Kernel hacking > Compile-time checks and compiler options > General BTF typeinfo」のチェックをはずす
- 「Device Drivers > Multimedia support」にチェックを付ける
- 「Device Drivers > Multimedia support > Video4Linux options」内の3つすべてにチェックを付ける
- 「Device Drivers > Multimedia support > Media drivers > Media USB Adapters」にチェックを付ける
- 「Device Drivers > Multimedia support > Media drivers > Media USB Adapters > USB Video Class(UVC)」にチェックを付ける
カーネルをビルドします。
sudo make -j$(nproc) && sudo make modules_install -j$(nproc) && sudo make install -j$(nproc)
作成された「vmlinux」をWindwos Cドライブの「C:\Users\ユーザー名 」内に移動させます。
ユーザー名(username)は適宜自分の環境に合わせて下さい。cp vmlinux /mnt/c/Users/<username>/vmlinux
「.wslconfig」ファイルを作成します
「C:\Users\ユーザー名 」内に「.wslconfig」という名前のテキストファイルを作ります。メモ帳などで作れます。中身は以下の2行です。ユーザー名(username)は適宜自分の環境に合わせて下さい。
[wsl2] kernel=C:\\Users\\<username>\\vmlinux
usbipd-winのインストール
Windows側でやること
最新版はバージョン2.0ですが自分の環境ではうまく動作しませんでした。バージョン1.3を使用します。
下記サイトから「usbipd-win_1.3.0.msi」をダウンロードして実行します。
Release usbipd-win 1.3.0 · dorssel/usbipd-win · GitHub
WSL2側でやること
詳細はこちらを見てください。サイト内のバージョンは1.2ですがその通りに実行しました。- 必要なものをインストール
sudo apt install linux-tools-5.4.0-132-generic hwdata
- 「sudoers」のDefaults secure_pathに「/usr/lib/linux-tools/5.4.0-132-generic」を追加する。
sudo visudo
Webカメラをアタッチ
こちらを参照して下さい。touch-sp.hatenablog.com
注意
PythonでOpenCVを使ってWebカメラを使おうと思うとスクリプトをsudoで実行する必要があります。以下を実行すると回避できます。
sudo chmod 777 /dev/video*