当前位置: 首页 > news >正文

OpenHarmony5.0.2 USB摄像头适配

开发环境

OpenHarmony5.0.2 RK3568

USB摄像头

遇到问题

编译后插上USB摄像头后打开相机无图像

解决思路

5.0.2版本是支持USB摄像头的,需要修改默认的板载相机配置即可。

修改代码
1、修改配配置

文件地址:vendor/hihope/rk3568/hdf_config/uhdf/camera/hdi_impl/camera_host_config.hcs

删除ability_01 :: ability {}

2、删除缓存后编译

修改hcs后编译时可能会有缓存,最后先在代码根目录下执行下面的命令后再编译。
find ./out -type f -name "*.hcb" -exec rm -v {} \;
find ./out -type f -name "*.cfg" -exec rm -v {} \;

3、调试排查步骤

;linux安装v4l2-ctl查看USB摄像头支持的格式

/dev$ sudo v4l2-ctl -d video0 --list-formats
ioctl: VIDIOC_ENUM_FMT
	Index       : 0
	Type        : Video Capture
	Pixel Format: 'MJPG' (compressed)
	Name        : Motion-JPEG

	Index       : 1
	Type        : Video Capture
	Pixel Format: 'YUYV'
	Name        : YUYV 4:2:2

Windows 环境安装AMCap查看摄像头支持格式

查看插入的串口日志包含USB Camera

插入串口日志[ 4245.564927] usb 5-1.3: new high-speed USB device number 13 using xhci-hcd
[ 4245.685701] usb 5-1.3: New USB device found, idVendor=0bda, idProduct=5b05, bcdDevice= 0.00
[ 4245.685741] usb 5-1.3: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[ 4245.685751] usb 5-1.3: Product: USB Camera
[ 4245.685759] usb 5-1.3: Manufacturer: Generic
[ 4245.685767] usb 5-1.3: SerialNumber: 200901010001
[ 4245.687188] [AUTH_CTRL] no auth data for this pid = 578
[ 4245.687188] , tgid
[ 4245.687199] [QOS_CTRL] do_qos_ctrl_ioctl: pid not authorized
[ 4245.745061] uvcvideo: Found UVC 1.00 device USB Camera (0bda:5b05)
[ 4245.757268] [I/USB_PNP_NOTIFY] UsbPnpNotifyCallback: action=0x1
[ 4245.757323] [I/USB_PNP_NOTIFY] UsbPnpNotifyAddInitInfo:209 i=0, interfaceInfo=0xe-0x1-0x0-0x0
[ 4245.757335] [I/USB_PNP_NOTIFY] UsbPnpNotifyAddInitInfo:209 i=1, interfaceInfo=0xe-0x2-0x0-0x1
[ 4245.757377] [I/USB_PNP_NOTIFY] UsbPnpNotifyReportThread: UsbPnpNotifyReportThread start!
[ 4245.757409] [I/USB_PNP_NOTIFY] UsbPnpNotifyHdfSendEvent:375 device information, 3 usbDevAddr=18446743525960148992, devNum=13, busNum=5, infoTable=2-0xbda-0x5b05!
[ 4245.777467] [AUTH_CTRL] no auth data for this pid = 643

确定Linux 内核UVC协议已生效以及USB UVC camera被识别

# lsusb
Bus 005 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0001
Bus 001 Device 001: ID 1d6b:0002
Bus 005 Device 013: ID 0bda:5b05
Bus 005 Device 007: ID 34d1:0608
Bus 006 Device 001: ID 1d6b:0003
Bus 004 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0002
Bus 005 Device 008: ID 0000:3825
Bus 003 Device 002: ID 34d1:0608

查看USB设备信息

cat /sys/kernel/debug/usb/devices

T:  Bus=05 Lev=02 Prnt=07 Port=02 Cnt=01 Dev#= 13 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0bda ProdID=5b05 Rev= 0.00
S:  Manufacturer=Generic
S:  Product=USB Camera
S:  SerialNumber=200901010001
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
A:  FirstIf#= 0 IfCount= 2 Cls=0e(video) Sub=03 Prot=00
I:* If#= 0 Alt= 0 #EPs= 1 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo
E:  Ad=83(I) Atr=03(Int.) MxPS=  16 Ivl=4ms
I:* If#= 1 Alt= 0 #EPs= 0 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
I:  If#= 1 Alt= 1 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS= 128 Ivl=125us
I:  If#= 1 Alt= 2 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS= 512 Ivl=125us
I:  If#= 1 Alt= 3 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=1024 Ivl=125us
I:  If#= 1 Alt= 4 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=1536 Ivl=125us
I:  If#= 1 Alt= 5 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=2048 Ivl=125us
I:  If#= 1 Alt= 6 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=2688 Ivl=125us
I:  If#= 1 Alt= 7 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
E:  Ad=81(I) Atr=05(Isoc) MxPS=3072 Ivl=125u

查看节点信息是否新增video9和video10

# ls -l /dev/video*
crw-rw---- 1 camera_host camera_host 81,   0 2017-08-05 17:03 /dev/video0
crw-rw---- 1 camera_host camera_host 81,   1 2017-08-05 17:03 /dev/video1
crw-rw---- 1 camera_host camera_host 81,  13 2017-08-05 17:04 /dev/video10
crw-rw---- 1 camera_host camera_host 81,   2 2017-08-05 17:03 /dev/video2
crw-rw---- 1 camera_host camera_host 81,   3 2017-08-05 17:03 /dev/video3
crw-rw---- 1 camera_host camera_host 81,   4 2017-08-05 17:03 /dev/video4
crw-rw---- 1 camera_host camera_host 81,   5 2017-08-05 17:03 /dev/video5
crw-rw---- 1 camera_host camera_host 81,   6 2017-08-05 17:03 /dev/video6
crw-rw---- 1 camera_host camera_host 81,   7 2017-08-05 17:03 /dev/video7
crw-rw---- 1 camera_host camera_host 81,   8 2017-08-05 17:03 /dev/video8
crw-rw---- 1 camera_host camera_host 81,  12 2017-08-05 17:04 /dev/video9

开启CameraDumper排查采集的数据格式

参考网站:

Camera HDI调试工具 - CameraDumper_DarkKnight888-Laval社区

其他板载相机适配可参考

OpenHarmony USB UVC camera 适配说明_kgduwu-Laval社区

相关文章:

  • win11安装更新报错:我们无法更新系统保留分区
  • 【频域分析】包络分析
  • 【Scratch编程系列】程序积木-声音类
  • 【响应式编程】Reactor 常用操作符与使用指南
  • 资深词源学家提示词
  • VirtualBox虚拟机转换到VMware
  • 波束形成(BF)从算法仿真到工程源码实现-第六节-广义旁瓣消除算法(GSC)
  • Android Compose 权限申请完整指南
  • Embracing your shadows reveals the wholeness of your light.
  • Spring Cloud-负载均衡
  • docker进行打包
  • Vue3+Element Plus如何实现左树右表页面案例:即根据左边的树筛选右侧表功能实现
  • DIP支付方式改革下各种疾病医疗费用的影响以及分析方法研究综述
  • 【XCP实战】AUTOSAR架构下XCP从0到1开发配置实践
  • SDHC接口协议底层传输数据是安全的
  • Git 远程仓库
  • 设计模式(8)——SOLID原则之依赖倒置原则
  • 39.[前端开发-JavaScript高级]Day04-函数增强-argument-额外知识-对象增强
  • docker创建容器添加启动--restart选项
  • 复刻系列-星穹铁道 3.2 版本先行展示页
  • 广西鹿寨一水文站“倒刺扶手”存安全隐患,官方通报处理情况
  • 阿里上财年营收增6%,蒋凡:会积极投资,把更多淘宝用户转变成即时零售用户
  • 病重老人取钱在银行门口去世,家属:已协商一致
  • 不是10点!乌克兰官员称尚未就俄乌谈判开始时间达成一致
  • 押井守在30年前创造的虚拟世界何以比当下更超前?
  • 30平米的无障碍酒吧里,我们将偏见折叠又摊开