【更新記事】WSL2でWebカメラを使う(usbipd-win v4.0.0)

はじめに

過去にもWebカメラを使用する方法を書いています。

2年ぶりに更新記事を書きました。
touch-sp.hatenablog.com

環境

Windows 11です。
使用したカメラはロジクール C922 Pro Stream Webcamです。

PS C:\> wsl -v
WSL バージョン: 2.0.9.0
カーネル バージョン: 5.15.133.1-1
WSLg バージョン: 1.0.59
MSRDC バージョン: 1.2.4677
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.22631.2861
hoge@NOVA:/mnt/c$ uname -r
5.15.133.1-microsoft-standard-WSL2

方法

カーネルのビルド

まずは必要なものをインストールします。

sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev autoconf libudev-dev libtool bc



ベースとなるカーネルをダウンロードします。

git clone --depth 1 -b linux-msft-wsl-5.15.y https://github.com/microsoft/WSL2-Linux-Kernel.git
cd WSL2-Linux-Kernel



「.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



「.wslconfig」ファイルを読み込むにはWSL2の再起動が必要です。

usbipd-winのインストール

下記サイトから「usbipd-win_4.0.0.msi」をダウンロードして実行します。
Release usbipd-win 4.0.0 · dorssel/usbipd-win · GitHub

Webカメラをアタッチ

ここから先はWLS2を立ち上げておく必要があります。

コマンドプロンプトを管理者で実行して以下のように実行します。

usbipd list

このような結果が返ってきます。

C:\Windows\System32>usbipd list
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
1-7    26ce:0a08  Realtek USB Audio, USB 入力デバイス                           Not shared
1-13   26ce:01a2  USB 入力デバイス                                              Not shared
1-14   8087:0036  Unknown device                                                Not shared
5-1    0411:0374  Realtek Bluetooth 5.0 Adapter                                 Not shared
5-2    046d:085c  c922 Pro Stream Webcam, C922 Pro Stream Webcam                Not shared
6-1    0853:013f  USB 入力デバイス                                              Not shared
6-2    046d:c547  USB 入力デバイス                                              Not shared
6-3    2341:8036  Arduino Leonardo (COM3), USB 入力デバイス                     Not shared
6-4    2341:006d  USB シリアル デバイス (COM4), DFU-RT Port, USB 入力デバイス   Not shared

BUSID 5-2がWebカメラだとわかります。


続いて以下を実行します。

usbipd bind -b 5.2
usbipd attach -b 5.2 --wsl

これで接続完了です。

Webカメラをデタッチ

usbipd detach -b 5-2
usbipd unbind -b 5-2





このエントリーをはてなブックマークに追加