【更新記事】WSL2でカメラを使うには(3)

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*