我试图在设备模式下为单个usb设备控制器端口添加uvc和海量存储。我在用configfs做工作。
有人能告诉我怎么做吗。
你好,GBiradar
发布于 2017-11-05 05:15:57
你在做一个可以同时用作相机和拇指驱动器的设备吗?也许你可以上传视频,然后在Skype上播放这些视频?无论哪种方式,这对于configfs来说都是一个很好的练习。
在较高的层次上,这些步骤是:
过早地跳到第三步会使诊断问题变得更加困难。例如,如果用户空间uvc-gadget程序存在问题,可能会阻止这两个小工具枚举。
作为root用户,您可以使用Raspbian 9在Raspberry Pi Zero W上运行以下经过验证的脚本来枚举和流。在步骤1中,您可以删除UVC特有的部分,然后在步骤2中同样使用大量存储行。
#!/bin/bash -xe
modprobe libcomposite
cd /sys/kernel/config/usb_gadget/
mkdir -p stackoverflow
cd stackoverflow
echo 0x1d6b > idVendor # Linux Foundation
echo 0x0104 > idProduct # Multifunction Composite Gadget
echo 239 > bDeviceClass # USB_CLASS_MISC
echo 0x02 > bDeviceSubClass
echo 0x01 > bDeviceProtocol
mkdir -p strings/0x409
mkdir -p configs/c.1/strings/0x409
echo "My Composite Gadget" > strings/0x409/product
###################### mass storage ########################
mkdir -p functions/mass_storage.usb0
echo /dev/mmcblk0p1 > functions/mass_storage.usb0/lun.0/file
ln -s functions/mass_storage.usb0 configs/c.1/
############################################################
########################## UVC #############################
mkdir -p functions/uvc.usb1/control/header/h
cd functions/uvc.usb1/control/
ln -s header/h class/fs
cd ../../../
mkdir -p functions/uvc.usb1/streaming/uncompressed/u/360p
cat <<EOF > functions/uvc.usb1/streaming/uncompressed/u/360p/dwFrameInterval
666666
1000000
5000000
EOF
mkdir functions/uvc.usb1/streaming/header/h
cd functions/uvc.usb1/streaming/header/h
ln -s ../../uncompressed/u
cd ../../class/fs
ln -s ../../header/h
cd ../../class/hs
ln -s ../../header/h
cd ../../../../..
ln -s functions/uvc.usb1 configs/c.1/
############################################################
ls /sys/class/udc > UDC
######################## UVC part 2 ########################
sleep 1 # workaround: if gadget activated too soon, may hit a dmesg error with usb_function_activate [libcomposite]
./uvc-gadget -d
############################################################(作为参考,这是我的带有补丁的uvc-小工具回购。)
简单地指向/dev/mmcblk0p1的引导分区是一种快速和肮脏的方法来测试Pi的SD卡上的大容量存储。运行sudo fdisk -l以查找您可以在特定系统上使用的内容。
由于Pi零是一个USB2.0设备,我不需要包括任何class/ss (上)。我还有意省略了一些字段,如MaxPower、序列号和制造商,您可能在其他示例中找到这些字段。此脚本旨在显示启动和运行所需的最低要求。
在从NXP到TI等平台上,您已经在其他渠道上发布了这方面的信息,我无法预测那里可能会出现什么问题。然而,我看到有人建议尝试在内核版本4.11-rc3中引入的与UVC相关的修复。考虑到Raspbian目前正在4.9版上,也许这些更改是不必要的。
https://stackoverflow.com/questions/42895950
复制相似问题