日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WSL2连接调用USB设备

發布時間:2023/12/8 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WSL2连接调用USB设备 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

聲明:本文教程來源于微軟官網WSL教程,鏈接地址:Connect USB devices

????????最近在學OpenCV,發現微軟的WSL是個好東西,結合VS Code編輯器,無論是C++還是Python方式學習,簡直是絕配,Python最好用Anaconda安裝,后續要再學習機器學習、神經網絡之類,甚至再搭配給Cuda,完美!可以這么說,對于只有一臺安裝Win11的電腦的同學而言,WSL2+Anaconda+VS Code+OpenCV+Cuda是最快速、最佳體驗環境搭建方案。ps:GUI(圖形界面)很容易解決,sudo apt install gedit 安裝個有圖形界面的應用即可,wsl會自動配置好GUI。

????????下面進入正題。眾所周知,WSL默認不支持USB設備,學習OpenCV怎能沒有攝像頭!我搜遍全網,發現Google上的教程基本都是教我們從微軟的WSL的Github庫下載代碼,然后在本地自己編譯,使能USB功能。這個方法已經被多次驗證是可行的,但是太繁瑣了,而且要消耗不少校園網流量。最后,我不斷改變檢索關鍵詞,終于訪問到了微軟官方的教程。廢話不多說,下面介紹具體教程,有英語閱讀能力的還是盡量查看官方教程,官方教程比較詳細,而且更新。

提前說明一下,如果想用wsl,實現OpenCV調用攝像機處理視頻,有以下方法:

1. 直接使用錄制好的視頻,完全能夠滿足實驗和測試了;

2. 使用網絡攝像機,或者手機安裝一個IP Camera,局域網內訪問IP地址:端口能夠正常使用的話,那OpenCV也可以直接使用,這個是最優方法,而且實測可行的。相關APP有很多,而且如果校園網開啟了IP隔離,那就筆記本開個熱點就行了。

3. 老老實實的重新編譯WSL內核,使能USB攝像機驅動。

系統配置要求:

  • Win11 (版本號22000及以上,Win10請參考官方教程:Win10連接USB設備官方教程
  • 不支持Arm64設備,僅支持x64/x86架構
  • 系統已經成功安裝好WSL2環境
  • wsl2的linux內核版本號5.10.60.1及以上,查看方法:linux命令行界面輸入 uname -a

步驟:

安裝usbipd-win(Windows環境中)

  • 去Github上下載usbipd-win的release文件
  • 選擇.msi文件下載,如果瀏覽器報錯誤,選擇相信該文件,雙擊運行安裝即可
  • 其它安裝方式及解讀等,請訪問官方教程
  • ?安裝USBIP工具(Linux環境中)

    ????????Windows環境中usbip工具安裝完成后,還需要在Linux環境中進行配置。下面介紹Ubuntu系統中的配置,其它系統請參考官方教程。

    ? ? ? ? 在Ubuntu的bash(命令行)中,運行以下指令:

    sudo apt install linux-tools-5.4.0-77-generic hwdata sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20

    連接一個USB設備

    工具配置好后,USB設備并沒有被自動連接到WSL中,我們還需要手動進行連接。

    注意:在連接USB設備前,需要確認打開的有一個WSL命令行界面,我們需要WSL2的VM環境是激活狀態。

  • 首先以管理員身份運行一個PowerShell命令行界面,然后輸入以下命令: usbipd wsl list

  • 選擇你要連接的USB設備的BUSID值,然后在PowerShell中輸入以下指令:

    usbipd wsl attach --busid <busid> #注意,<busid>是一個整體,直接輸入busid號就行,不要帶<>

    需要注意的是,輸入指令后,Ubuntu的bash命令行可能會提醒需要輸入密碼,因為此操作需要sudo權限。

  • 然后就可以查看USB設備是否成功連接了,Ubuntu的bash中輸入以下命令:

    lsusb ?未連接USB時:連接成功后:?可以看到,Camera已經連接到WSL中了。PowerShell中也顯示Camera已經連接到Ubuntu了。
  • 在 WSL 中使用完設備后,可以直接Windows彈出USB 設備或者直接拔掉,即從物理層面斷開USB設備連接,也可以管理員模式下從 PowerShell 運行此命令: usbipd wsl detach --busid <busid> #記得修改<busid>具體號碼

  • ?注意事項:

  • 每次關閉wsl或者與usb設備斷開連接后,需要重新連接設備,有兩種重新連接USB設備的方法:
  • 上文介紹的,運行管理員模式PowerShell,usbipd命令連接;
  • Ubuntu的bash界面連接,輸入以下指令: usbip list -r $HOSTNAME.local #查看已連接過的設備信息,如記得busid,該命令非必須執行命令 sudo usbip attach -r $HOSTNAME.local -b <busid> #連接USB設備,注意替換<busid>

  • ?更新linux-tools-*-generic最新版本方法:
  • 創建一個腳本文件: #!/usr/bin/env bashrel="$(uname -r)" rel="${rel%%-*}" rel=(${rel//./ })function latest_linux_tools {apt-cache search linux-tools |awk -v cur_ver="${rel[*]}" '/^linux-tools([-\.][0-9]+)+-generic\>/ {ltg_package=$1gsub(/[^0-9]+/," ",$1);gsub(/^\s*/,"",$1);split($1,ltg_ver,/\s*/);split(cur_ver,cmp_ver,/\s*/)if (ltg_ver[1]<=cmp_ver[1] && ltg_ver[2]<=cmp_ver[2] && ltg_ver[3]<=cmp_ver[3]) {print ltg_package;}}' | sort -nr | head -n 1 }# optional ... apt-get install "$@" "$(latest_linux_tools)"
  • ?按照以下命令執行: sudo nano /usr/local/bin/install_linux_tools_generic # 將上面的腳本內容復制到這個install_linux_tools_generic文件中 # 修改文件權限 sudo chmod u+x /usr/local/bin/install_linux_tools_generic# 先預覽一下要最新版本的linux-tools-*-generic版本 sudo install_linux_tools_generic -s# 如果有新版本,可以安裝,執行下面指令 sudo install_linux_tools_generic -y

  • ?參考資料來源:Connecting USB devices to WSL - Windows Command Line (microsoft.com)
  • 由于usbipd-win未做攝像頭支持,或者說wsl內無usb攝像頭驅動,因此目前僅使用usbipd-win方式無法成功使用usb攝像頭。我們需要在wsl中添加usb攝像頭驅動,目前我所知的唯一成功方法是從github上下載wsl代碼,然后本地自行編譯,使能usb功能,然后打包自己所用usb攝像頭的驅動。Built my own kernel, but can't get it to display as a video device · Issue #257 · dorssel/usbipd-win (github.com)OpenCV cannot find camera device in wsl2 · Issue #6211 · microsoft/WSL (github.com)
    ?
  • 總結

    以上是生活随笔為你收集整理的WSL2连接调用USB设备的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。