1
0

【メモ】WSL2でUSB・USBカメラ📸 を使えるようにする環境構築

Last updated at Posted at 2024-06-25

※注意 まだ実際にWebカメラを使えるようになってませんのでご了承ください

この記事通りにやっても、WSL2でカメラデータを表示することはできません。御免っ!
最近これ関連の新しい記事が投稿されてたので、乞うご期待。
https://qiita.com/ryoma-jp/items/9db6cca5ed10f1aed7ff

→ 使えました:poop:(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
    
    image.png (390.4 kB)
  • 一覧から有効にする USB デバイスの BUSID を見つけ、 WSL2 にアタッチする

    (例)
    usbipd wsl attach --busid 2-6
    
    image.png (40.4 kB)
  • もう一度 usbipd list で確認すると アタッチしたデバイスの ”STATE”の表示が変わっていますね!

    usbipd list
    
    image.png (377.1 kB)
  • WSL2で確認/権限付与する

    • lsusbコマンドでUSBデバイスの認識を確認
      lsusb
      
      image.png (86.3 kB)

     増えたね

    • カメラデバイスへの権限付与
      sudo chmod 777 /dev/video0
      
  • 動作確認
    usbtest_cam.pyを実行する。
    実行しても何も映らない人は、Xlaunchの設定もした方が良いかもしれません。

以上!

うまくいくことを願います!

:page_facing_up: 過去のこの記事の内容

必要なツールの準備

usbipd-win

Windowsにインストール

  • 以下のコマンドを実行

    winget install --exact dorssel.usbipd-win
    

(もしくは、、、)

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 コマンドで確認してみます
image.png (56.9 kB) USB2.0/3.0のルートハブしか表示されませんね

2.Windowsターミナルを起動する

  • 「ctrl + x」+「A」
image.png (135.5 kB)
  • アクセスを許可する<YES>
image.png (50.1 kB) image.png (439.7 kB)

3.使いたいUSBデバイスをWSL2にアタッチする

  • USBデバイス情報を一覧表示

    usbipd list
    
    image.png (390.4 kB)
  • 一覧から有効にする USB デバイスの BUSID を見つけ、 WSL2 にアタッチする

    (例)
    usbipd wsl attach --busid 2-6
    
    image.png (40.4 kB)
  • もう一度 usbipd list で確認すると アタッチしたデバイスの ”STATE”の表示が変わっていますね!

    (例)
    usbipd wsl attach --busid 2-6
    
    image.png (377.1 kB)

4.WSL2で確認/権限付与する

  • lsusbで確認
image.png (86.3 kB)

増えたね

  • 2DLidarとかKobukiならポート権限付与するといけます。
    sudo chmod 666 /dev/ttyUSB0 /dev/ttyACM0

参考記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0