gpt4 book ai didi

linux - USB : gadget : device mode : configfs: uvc and mass storage on single configuration?

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:16 26 4
gpt4 key购买 nike

我正在尝试在设备模式下为单个 USB 设备 Controller 端口添加 uvc 和大容量存储。我正在使用 configfs 来完成工作。

谁能告诉我怎么做。

问候,雷达

最佳答案

您正在制作一种既可用作相机又可用作 U 盘的设备?也许是加密狗,您可以在其中上传视频然后在 Skype 中播放它们?无论哪种方式,这听起来都是一个很好的 configfs 练习。

概括地说,这些步骤是:

  1. 让大容量存储自行运作。
  2. 让 UVC 自行工作(将图像流式传输到主机)。
  3. 将两者合并为一个脚本。

过早跳到第 3 步会使诊断问题变得更加困难。例如,如果用户空间 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-gadget repo 和补丁。)

简单地指向位于 /dev/mmcblk0p1 的引导分区是一种快速而肮脏的方法来测试 Pi 的 SD 卡的大容量存储。运行 sudo fdisk -l 以查找您可以在您的特定系统上使用的内容。

由于 Pi Zero 是 USB 2.0 设备,我不需要包含任何 class/ss(超高速)。我还特意省略了您可能会在其他示例中找到的字段,例如 MaxPower、序列号和制造商。此脚本旨在展示启动和运行所需的最低限度。

您已经在其他 channel 发帖询问从 NXP 到 TI 等平台的这个问题,我无法预测那里会出现什么问题。但是,我看到建议尝试在内核版本 4.11-rc3 中引入的与 UVC 相关的修复。鉴于 Raspbian 目前的版本是 4.9,也许没有必要进行这些更改。

关于linux - USB : gadget : device mode : configfs: uvc and mass storage on single configuration?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42895950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com