您尚未登录。

楼主 # 2025-07-22 23:31:42

Gavin_he
会员
注册时间: 2025-07-20
已发帖子: 1
积分: 16

T113 usb Gadget UVC,pc上没有枚举

硬件:T113开发板;
目标:想要在otg-usb口上模拟出uvc 摄像头设备;
测试:

1,系统默认otg-usb是ADB devce,在内核和tina linux上关闭了adb相关,otg-usb给Gadget uvc;

2,参考官方资料 “小机做UVC”
3,将官方命令整合成如下脚本uvc.sh

#!/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却不行,为什么?

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn