📷 V4L2 命令速查
设备信息
查询设备能力bash
v4l2-ctl -d /dev/video0 --all列出所有视频设备bash
v4l2-ctl --list-devices查询驱动信息bash
v4l2-ctl -d /dev/video0 -D格式相关
列出支持的所有格式bash
v4l2-ctl -d /dev/video0 --list-formats-ext查看当前格式bash
v4l2-ctl -d /dev/video0 --get-fmt-video设置格式bash
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=YUYV常用像素格式bash
# YUYV422
pixelformat=YUYV
# NV12
pixelformat=NV12
# MJPEG
pixelformat=MJPEG
# H.264
pixelformat=H264采集测试
MMAP 方式采集 10 帧bash
v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=10采集并保存为文件bash
v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=1 --stream-to=output.yuv显示帧率bash
v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=100 --verbose指定缓冲数量bash
v4l2-ctl -d /dev/video0 --stream-mmap --stream-count=10 --buffer-count=4控件 (Controls)
列出所有控件bash
v4l2-ctl -d /dev/video0 --list-ctrls列出所有控件(含菜单)bash
v4l2-ctl -d /dev/video0 --list-ctrls-menus获取控件值bash
v4l2-ctl -d /dev/video0 --get-ctrl=brightness
v4l2-ctl -d /dev/video0 --get-ctrl=exposure设置控件值bash
v4l2-ctl -d /dev/video0 --set-ctrl=brightness=128
v4l2-ctl -d /dev/video0 --set-ctrl=exposure=1000
v4l2-ctl -d /dev/video0 --set-ctrl=auto_exposure=1常用控件bash
brightness # 亮度
contrast # 对比度
saturation # 饱和度
hue # 色调
exposure # 曝光
gain # 增益
auto_exposure # 自动曝光 (0=手动, 1=自动)
white_balance # 白平衡状态与调试
查看设备状态bash
v4l2-ctl -d /dev/video0 --log-status订阅事件bash
v4l2-ctl -d /dev/video0 --subscribe-event=all查看缓冲信息bash
v4l2-ctl -d /dev/video0 --query-buffersMedia Controller
列出 Media 设备拓扑bash
media-ctl -d /dev/media0 --print-topology查看实体信息bash
media-ctl -d /dev/media0 --print-dot配置链路bash
media-ctl -d /dev/media0 --set-link '"imx477 2-001a":0->"rkisp1_isp":0[1]'设置子设备格式bash
media-ctl -d /dev/media0 --set-v4l2 '"imx477 2-001a":0[fmt:YUYV8_2X8/1920x1080]'I2C 工具
扫描 I2C 总线bash
i2cdetect -y 1读取寄存器(16位地址)bash
i2cget -y 1 0x1a 0x00 w写入寄存器bash
i2cset -y 1 0x1a 0x00 0x01常见问题排查
DQBUF 超时 → 先查 Sensor 链路bash
# 1. 检查 I2C
i2cdetect -y 1
# 2. 检查设备树匹配
ls /sys/firmware/devicetree/base/
# 3. 查看驱动日志
dmesg | grep -i "v4l2\|isp\|mipi\|sensor"
# 4. 查看 ISP 状态
v4l2-ctl -d /dev/video0 --log-status💡 更多 V4L2 原理说明 → V4L2 子系统
