T113 usb Gadget UVC,pc上没有枚举
-
硬件:T113开发板;
目标:想要在otg-usb口上模拟出uvc 摄像头设备;
测试:-
1,系统默认otg-usb是ADB devce,在内核和tina linux上关闭了adb相关,otg-usb给Gadget uvc;
-
2,参考如下官方资料
#!/bin/sh mount -t configfs none /sys/kernel/config mkdir /sys/kernel/config/usb_gadget/g1 echo "0x1f3a" > /sys/kernel/config/usb_gadget/g1/idVendor echo "0x100d" > /sys/kernel/config/usb_gadget/g1/idProduct #添加设备字符串 mkdir /sys/kernel/config/usb_gadget/g1/strings/0x409 echo "Tina" > /sys/kernel/config/usb_gadget/g1/strings/0x409/manufacturer echo "UVC Cam" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product echo "0123456789" > /sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber #添加 UVC function(最小化配置) mkdir -p /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0 #添加最简单的一组 MJPEG 配置(测试用) mkdir -p /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p echo 1280 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/wWidth echo 720 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/wHeight echo 333333 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/dwFrameInterval echo 333333 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/dwDefaultFrameInterval echo 442368000 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/dwMinBitRate echo 442368000 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/dwMaxBitRate echo 1843200 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/720p/dwMaxVideoFrameBufferSize mkdir /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/header/h ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m/ /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/header/h/ ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/header/h/ /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/class/fs ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/header/h/ /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/class/hs mkdir /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/control/header/h ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/control/header/h/ /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/control/class/fs/ ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/control/header/h/ /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/control/class/ss/ mkdir /sys/kernel/config/usb_gadget/g1/configs/c.1 echo 0xc0 > /sys/kernel/config/usb_gadget/g1/configs/c.1/bmAttributes echo 500 > /sys/kernel/config/usb_gadget/g1/configs/c.1/MaxPower echo 0xc0 > /sys/kernel/config/usb_gadget/g1/configs/c.1/bmAttributes echo 500 > /sys/kernel/config/usb_gadget/g1/configs/c.1/MaxPower mkdir /sys/kernel/config/usb_gadget/g1/configs/c.1/strings/0x409 echo "UVC Config" > /sys/kernel/config/usb_gadget/g1/configs/c.1/strings/0x409/configuration ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/ ls /sys/class/udc/ | xargs echo > /sys/kernel/config/usb_gadget/g1/UDC
- 4,在T113开发板上执行如上脚本,没有任何报错,但是pc上看不到设备枚举动作;
root@TinaLinux:/opt# ./uvc.sh [INFO] Mounting configfs... [INFO] Creating gadget... [INFO] Setting device descriptors... [INFO] Creating UVC function... [INFO] Setting MJPEG 720p... [INFO] Creating headers... [INFO] Linking UVC function to configuration... [INFO] Enabling gadget... [ 53.291067] configfs-gadget gadget: uvc: uvc_function_bind() [OK] UVC gadget created and enabled successfully!
敬请指点。
另外,参考小机做HID的例子,可以成功的枚举出hid keyboard 设备;用类似的方法做uvc却不行,为什么?
有参考过如下帖子,没有找到答案....,先谢过,折腾了好久没有解决,期待指点迷津....
链接文本 -
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号