T5实现一路uvc预览输出视频
-
我需要利用T5的usb0输出视频图像,脚本参考run_otg,应用层demo来自uvc-gadget,应用层启动指令为./uvc-gadget -i /root/images.jpg -f 1 -s 1 -r 1。
在设备树中CONFIG_USB_F_UVC和CONFIG_USB_LIBCOMPOSITE都已经打开,接入Ubuntu之后也能识别出video设备,但是无法通过VLC或者cheese打开,想问下大佬们这是什么问题导致的,是应用层还是脚本的问题。几个打印信息的报错都找过,没能找到解决方法。。。在ubuntu中使用v4l-utils查看打印信息如下
❯ v4l2-ctl -d /dev/video0 --all Driver Info (not using libv4l2): Driver name : uvcvideo Card type : UVC Camera (1f3a:100d): UVC Cam Bus info : usb-0000:02:03.0-1 Driver version: 5.4.218 Capabilities : 0x84A00001 Video Capture Metadata Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04200001 Video Capture Streaming Extended Pix Format Priority: 2 Video input : 0 (Camera 1: ok) Format Video Capture: Width/Height : 1280/720 Pixel Format : 'MJPG' Field : None Bytes per Line : 0 Size Image : 460800 Colorspace : sRGB Transfer Function : Default (maps to sRGB) YCbCr/HSV Encoding: Default (maps to ITU-R 601) Quantization : Default (maps to Full Range) Flags : Crop Capability Video Capture: Bounds : Left 0, Top 0, Width 1280, Height 720 Default : Left 0, Top 0, Width 1280, Height 720 Pixel Aspect: 1/1 Selection: crop_default, Left 0, Top 0, Width 1280, Height 720 Selection: crop_bounds, Left 0, Top 0, Width 1280, Height 720 Streaming Parameters Video Capture: Capabilities : timeperframe Frames per second: 15.000 (15/1) Read buffers : 0 brightness 0x00980900 (int) : min=0 max=255 step=1 default=127 value=0 exposure_auto 0x009a0901 (menu) : min=0 max=3 default=0 value=0
VLC 报错日志
main debug: looking for art finder module matching "any": 2 candidates v4l2 debug: opening device '/dev/video0' v4l2 error: cannot open device '/dev/video0': Operation not permitted v4l2 debug: opening device '/dev/video0' v4l2 error: cannot open device '/dev/video0': Operation not permitted main debug: no access_demux modules matched main debug: creating access: v4l2:///dev/video0 main debug: (path: /dev/video0) main debug: looking for access module matching "v4l2": 29 candidates v4l2 debug: opening device '/dev/video0' v4l2 error: cannot open device '/dev/video0': Operation not permitted main debug: no access modules matched
Ubuntu dmesg在插入设备时候的信息
[18491.358318] usb 1-1: new high-speed USB device number 23 using ehci-pci [18491.710832] usb 1-1: New USB device found, idVendor=1f3a, idProduct=100d, bcdDevice= 4.09 [18491.710834] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [18491.710834] usb 1-1: Product: 123 [18491.710835] usb 1-1: Manufacturer: Test [18491.710835] usb 1-1: SerialNumber: 20080411 [18491.754885] uvcvideo: Found UVC 1.00 device 123(1f3a:100d) [18496.942618] uvcvideo: Failed to query (GET_INFO) UVC control 2 on unit 1: -110 (exp. 1). [18497.056143] uvcvideo: Failed to query (GET_INFO) UVC control 2 on unit 2: -32 (exp. 1). [18502.318681] uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround. [18507.439217] uvcvideo: Failed to query (129) UVC probe control : -110 (exp. 26). [18507.439221] uvcvideo: Failed to initialize the device (-5).
-
uvc脚本如下
#!/bin/sh # now using this scripts # MODULES_DIR="/lib/modules/`uname -r`" #insmod $MODULES_DIR/sunxi_usb_udc.ko #insmod $MODULES_DIR/sunxi_usbc.ko mount -t configfs none /sys/kernel/config mkdir /sys/kernel/config/usb_gadget/g1 echo "0x1f3a" > /sys/kernel/config/usb_gadget/g1/idVendor echo "0x100f" > /sys/kernel/config/usb_gadget/g1/idProduct mkdir /sys/kernel/config/usb_gadget/g1/strings/0x409 echo "20080411" > /sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber echo "Test" > /sys/kernel/config/usb_gadget/g1/strings/0x409/manufacturer mkdir /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0 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/functions/ffs.adb 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 mkdir /sys/kernel/config/usb_gadget/g1/configs/c.1/strings/0x409 mkdir /sys/kernel/config/usb_gadget/g1/functions/mass_storage.usb0 ln -s /sys/kernel/config/usb_gadget/g1/functions/mass_storage.usb0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/mass_storage.usb0 mkdir /dev/usb-ffs mkdir /dev/usb-ffs/adb mount -o uid=2000,gid=2000 -t functionfs adb /dev/usb-ffs/adb/ udc=`ls /sys/class/udc` isudc=0 start(){ while [ 1 ] do sleep 1 otg_role=`cat /sys/devices/platform/soc/usbc0/otg_role` if [ "$otg_role" = "usb_device" ] then if [ $isudc == 0 ] then echo $udc > /sys/kernel/config/usb_gadget/g1/UDC isudc=1 fi else isudc=0 fi done } start & echo > /sys/kernel/config/usb_gadget/g1/UDC echo 0x100d > /sys/kernel/config/usb_gadget/g1/idProduct rm /sys/kernel/config/usb_gadget/g1/configs/c.1/mass_storage.usb0 rm /sys/kernel/config/usb_gadget/g1/configs/c.1/uvc.usb0 ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/uvc.usb0 ls /sys/class/udc | xargs echo > /sys/kernel/config/usb_gadget/g1/UDC
-
插入usb后板子的打印
[ 142.870690] android_work: sent uevent USB_STATE=CONNECTED [ 143.444380] nf_conntrack: default automatic helper assignment has been turned off for security reasons and CT-based firewall rule not found. Use the iptables CT target to attach helpers instead. [ 143.698733] configfs-gadget gadget: high-speed config #1: c [ 143.704992] configfs-gadget gadget: uvc_function_set_alt(0, 0) [ 143.711516] configfs-gadget gadget: reset UVC Control [ 143.717185] configfs-gadget gadget: uvc_function_set_alt(1, 0) [ 143.723808] configfs-gadget gadget: uvc_function_set_alt(1, 0) [ 143.730450] android_work: sent uevent USB_STATE=CONFIGURED [ 148.773269] handle_ep0: ep0 setup end [ 148.816828] handle_ep0: ep0 setup end [ 148.838899] configfs-gadget gadget: uvc_function_set_alt(1, 0) [ 153.874769] handle_ep0: ep0 setup end [ 153.936786] handle_ep0: ep0 setup end [ 158.963752] handle_ep0: ep0 setup end [ 159.054766] handle_ep0: ep0 setup end [ 584.116224] ERR: Operation not supported
-
lsusb的输出如下
❯ sudo lsusb -v -d 1f3a:100d Bus 001 Device 023: ID 1f3a:100d Onda (unverified) Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x1f3a Onda (unverified) idProduct 0x100d bcdDevice 4.09 iManufacturer 1 Test iProduct 2 123 iSerial 3 20080411 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 175 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 4 bmAttributes 0xc0 Self Powered MaxPower 500mA Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 0 bInterfaceCount 2 bFunctionClass 14 Video bFunctionSubClass 3 Video Interface Collection bFunctionProtocol 0 iFunction 5 UVC Camera Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 1 Video Control bInterfaceProtocol 0 iInterface 5 UVC Camera VideoControl Interface Descriptor: bLength 13 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdUVC 1.00 wTotalLength 51 dwClockFrequency 48.000000MHz bInCollection 1 baInterfaceNr( 0) 1 VideoControl Interface Descriptor: bLength 18 bDescriptorType 36 bDescriptorSubtype 2 (INPUT_TERMINAL) bTerminalID 1 wTerminalType 0x0201 Camera Sensor bAssocTerminal 0 iTerminal 0 wObjectiveFocalLengthMin 0 wObjectiveFocalLengthMax 0 wOcularFocalLength 0 bControlSize 3 bmControls 0x00000002 Auto-Exposure Mode VideoControl Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 5 (PROCESSING_UNIT) Warning: Descriptor too short bUnitID 2 bSourceID 1 wMaxMultiplier 16384 bControlSize 2 bmControls 0x00000001 Brightness iProcessing 0 bmVideoStandards 0x 9 None SECAM - 625/50 VideoControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 3 wTerminalType 0x0101 USB Streaming bAssocTerminal 0 bSourceID 2 iTerminal 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0010 1x 16 bytes bInterval 8 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 6 Video Streaming VideoStreaming Interface Descriptor: bLength 14 bDescriptorType 36 bDescriptorSubtype 1 (INPUT_HEADER) bNumFormats 1 wTotalLength 61 bEndPointAddress 131 bmInfo 0 bTerminalLink 3 bStillCaptureMethod 0 bTriggerSupport 0 bTriggerUsage 0 bControlSize 1 bmaControls( 0) 11 VideoStreaming Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 6 (FORMAT_MJPEG) bFormatIndex 1 bNumFrameDescriptors 1 bFlags 0 Fixed-size samples: No bDefaultFrameIndex 1 bAspectRatioX 0 bAspectRatioY 0 bmInterlaceFlags 0x00 Interlaced stream or variable: No Fields per frame: 1 fields Field 1 first: No Field pattern: Field 1 only bCopyProtect 0 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 7 (FRAME_MJPEG) bFrameIndex 1 bmCapabilities 0x00 Still image unsupported wWidth 1280 wHeight 720 dwMinBitRate 442368000 dwMaxBitRate 442368000 dwMaxVideoFrameBufferSize 1843200 dwDefaultFrameInterval 333333 bFrameIntervalType 1 dwFrameInterval( 0) 333333 VideoStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 13 (COLORFORMAT) bColorPrimaries 1 (BT.709,sRGB) bTransferCharacteristics 1 (BT.709) bMatrixCoefficients 4 (SMPTE 170M (BT.601)) Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 14 Video bInterfaceSubClass 2 Video Streaming bInterfaceProtocol 0 iInterface 6 Video Streaming Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 5 Transfer Type Isochronous Synch Type Asynchronous Usage Type Data wMaxPacketSize 0x0400 1x 1024 bytes bInterval 1 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0001 Self Powered
-
emmmm 论坛玩T5芯片的人比较少,大家都不熟悉,插不上手
-
好吧~谢谢
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号