1. 程式人生 > >usb免驅動之UVC

usb免驅動之UVC

  在買一些usb裝置的時候,很多商家都有標出“免驅動,即插即用”的字樣,大家都知道有一些usb裝置,如滑鼠等,只要插上不用安裝驅動就可以用了,但是有的就需要安裝驅動之後才可以用,這是為什麼呢?因為一種協議標準-------UVC

  

圖片為網上引用

  UVC,全稱是USB video class或者USB video device class。它是幾家裝置廠商聯合推出的USB視訊捕獲裝置定義的協議標準,目前已成為USB標準之一,目前的主流作業系統都已提供UVC裝置驅動,如:windows xp sp2、linux 2.4.6、macos10.5,這些系統及之後的版本。所以在這些作業系統上並支援UVC協議的裝置,不用安裝驅動就可以使用。

  這幾天在網上買了一個免驅動的攝像頭,想要用在android5.1上,在買之前還看了一下這個系統是否支援UVC協議,發現是可以的,但是買回來後,悲催了,插上後完全沒有反應,明明支援UVC協議,可是為什麼不能用呢,於是各種找原因。

  首先,要做的第一件事就是,這個攝像頭是不是好的,在windows上裝了一個相機,然後連上攝像頭,試了一下可以出影象,說明攝像頭沒有問題。

  另一種驗證攝像頭是否滿足UVC協議的方法,那就是通過命令檢視,接上ubuntu系統的電腦:

  adb root

        adb shell

  進入裝置後執行:

  cat /sys/kernel/debug/usb/devices

  可以看到下面的內容:

  

  看到Product=USB 2.0 PC Camera就說明攝像頭已經列舉成功了。

  接著執行:

  lsusb -d 058f:0362 -v | grep "14 Video"

     其中Vendor=058f, ProdID=0362, "14 Video"代表UVC規範,如果看到下面內容,說明攝像頭遵循UVC協議,

  

  那接下來,再次確認自己的作業系統是否支援UVC協議。

  在kernel/arm64/configs/下面的msm_defconfig和msm-perf_defconfig裡面檢視是否有下面的巨集,並進行了如下定義,這些巨集用來配置開啟UVC

  CONFIG_MEDIA_SUPPORT=y

        CONFIG_MEDIA_CAMERA_SUPPORT=y

     CONFIG_VIDEO_DEV=y

  CONFIG_VIDEO_V4L2=y

  CONFIG_VIDEOBUF2_CORE=y

  CONFIG_VIDEOBUF2_MEMOPS=y

  CONFIG_VIDEOBUF2_VMALLOC=y

  CONFIG_MEDIA_USB_SUPPORT=y

  CONFIG_USB_VIDEO_CLASS=y

  這些都有的話,那就說明作業系統支援UVC協議。