本教程主要基于工具v4l2-ctl工具,并提供了一个简单的示例来检查 x1300 在 Raspberry Pi 5 上是否正常工作。它不仅是教程,也是您检查 X1300 是否损坏的依据。当然,您也可以考虑使用其他视频工具(例如GStreamer)来获得类似的功能。
在开始以下教程之前,您还必须完成X1300 / X1301的物理连接,并确保有 HDMI 信号传输到X1300 / X1301
现在假设您已经设置了带有 Raspbian12( bookworm ) 的 Raspberry Pi 。如需在 Pi 上安装基于 Debian 的操作系统的帮助,请查看
https://www.raspberrypi.com/
检查内核版本,执行以下命令:(操作系统内核升级往往会带来一些不确定的问题)
uname -a
或许结果如下:
uname -a Linux raspberrypi 6.6.31+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.31-1+rpt1 (2024-05-29) aarch64 GNU/Linux
1. 在/boot/firmware/config.txt 中启用设备树覆盖
须藤纳米 /boot/firmware/config.txt
在文件末尾添加两行内容如下:
dtoverlay=tc358743,4lane=1 dtoverlay=tc358743-音频
按 Ctrl + O 和 Enter 保存
按 Ctrl + X 退出
2. 重启 Raspberry Pi 5 以使设置生效
sudo 重启
3. 查看视频设备列表
v4l2-ctl --列表设备
4. 创建 1920*1080P EDID txt 文件来设置 HDMI 转 CSI 适配器,然后才能将其连接到 HDMI 源。此 EDID 文件将启用支持的视频和音频模式。
sudo nano 1080P60EDID.txt
复制以下 EDID 数据并粘贴到 1080P60EDID.txt,或从https://github.com/6by9/CSI2_device_config/blob/master/1080P60EDID.txt
00ffffffffffff005262888800888888 1c150103800000780aEE91A3544C9926 0F505400000001010101010101010101 010101010101011d007251d01e206e28 5500c48e2100001e8c0ad08a20e02d10 103e9600138e2100001e000000fc0054 6f73686962612d4832430a20000000FD 003b3d0f2e0f1e0a202020202020014f 020322444f841303021211012021223c 3d3e101f2309070766030c00300080E3 007F8c0ad08a20e02d10103e9600c48e 210000188c0ad08a20e02d10103e9600 138e210000188c0aa01451f01600267c 4300138e210000980000000000000000 00000000000000000000000000000000 00000000000000000000000000000015
5. 加载EDID数据
v4l2-ctl -d /dev/v4l-subdev2 --set-edid=file=/home/pi/1080P60EDID.txt --fix-edid-checksums
PS:注意你的edid文件的目录
6、查询当前HDMI输入信号源信息,若分辨率显示0,则表示没有检测到输入源信号,此时需要检查硬件连接情况,然后重复以上步骤排除故障。
v4l2-ctl -d /dev/v4l-subdev2 --query-dv-timings
PS:确保连接 HDMI 源设备以获取 HDMI 信号,如果您在此处无法获得正确的分辨率,请考虑调整源设备的分辨率以匹配 EDID。
7. 将屏幕计时应用于捕获设置
v4l2-ctl -d /dev/v4l-subdev2 --set-dv-bt-timings 查询
8. 初始化/重置媒体
媒体控制-d / dev / media2 -r
请注意,/dev/media 编号可能会发生变化。转到步骤 3 检查媒体编号。如果您的媒体编号为 1,请将/dev/media2更改为/dev/media1,依此类推
9.将CSI2的pad4连接到rp1-cfe-csi2_ch0的pad0。
media-ctl -d /dev/media2 -l ''\''csi2'\'':4 -> '\''rp1-cfe-csi2_ch0'\'':0 [1]'
10.配置媒体节点。
media-ctl -d /dev/media2 -V ''\''csi2'\'':0 [fmt:RGB888_1X24/1920x1080 字段:无色彩空间:srgb]' media-ctl -d /dev/media2 -V ''\''csi2'\'':4 [fmt:RGB888_1X24/1920x1080 字段:无色彩空间:srgb]' media-ctl -d /dev/media2 -V ''\''tc358743 4-000f'\'':0 [fmt:RGB888_1X24/1920x1080 字段:无色彩空间:srgb]'
请注意,/dev/media 编号可能会发生变化。转到步骤 3 检查媒体编号。如果您的媒体编号为 1,请将/dev/media2更改为/dev/media1,依此类推
11.设置输出格式
v4l2-ctl -v 宽度=1920,高度=1080,像素格式=RGB3
12.捕获帧并保存到/home/pi(文件名:csitest.yuv)
v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat='RGB3' --stream-mmap=4 --stream-skip=3 --stream-count=2 --stream-to=csitest.yuv --stream-poll
13.要在 Raspberry Pi OS 桌面上播放 YUV 文件,请使用 FFplay。(在本地终端窗口运行以下命令,如果从 SSH 执行命令则不起作用)。
ffplay -f rawvideo -video_size 1920x1080 -pixel_format bgr24 csitest.yuv