树莓派IMX415摄像头驱动适配技术指南
适配背景
微雪代工了一个22pin的imx415摄像头(IMX415-98 IR-CUT Camera),我在宣传图中看到了该摄像头连接了树莓派5,于是以为已经适配了,但是买到手后发现并非如此,此摄像头在便利性上较树莓派官方摄像头有较大差距,树莓派官方内核未包含IMX415传感器驱动,经代码审查发现内核上游存在适配版本(drivers/media/i2c/imx415.c)。需要自己手动编译驱动,本指南记录完整适配流程及验证方法。
2025年11月更新:
本文撰写时描述的白平衡问题(图像偏色),实质是IMX415传感器驱动存在的三个耦合性bug:
- 时序计算错误 -
hmax_min参数不正确,导致像素时钟频率偏差- 电源管理泄漏 - 错误处理路径缺少
pm_runtime_put,造成资源未释放- 曝光控制缺陷 - VBLANK到EXPOSURE控制流错误,设置错误的曝光值
这些问题通过以下三个关联补丁在主线Linux内核中修复:
- media: i2c: imx415: Link frequencies are not exclusive to num lanes - 修复链路频率计算
- media: i2c: imx415: Make HBLANK controllable and in consistent units - 修复HBLANK控制
- media: i2c: imx415: Add read/write control of VBLANK - 修复VBLANK控制
树莓派维护的Linux内核于4月合并这些补丁。
当前不需要手动编译模块,直接参考微雪官方教程即可。
请注意,本次编辑发现
libcamera-*命令已被树莓派弃用,请使用rpicam-*系列命令。保留以下原文作为技术探索见证,其中的模块编译流程仍有参考价值。
环境准备
-
硬件要求:
-
树莓派5(BCM2712芯片)
-
IMX415摄像头模组
-
可用存储空间≥2GB
-
-
系统要求:
-
Raspberry Pi OS (Bookworm) 64-bit
-
安装构建工具链:
-
sudo apt install build-essential git bc bison flex libssl-dev
驱动适配流程
1. 内核源码获取
git clone --depth=1 https://github.com/raspberrypi/linux
cd linux
2. 内核配置
make bcm2712_defconfig
make menuconfig
配置路径:
Device Drivers
→ Multimedia support
→ Media ancillary drivers
→ Camera sensor devices
→ <M> Sony IMX415 sensor
3. 设备树编译
make -j$(nproc) dtbs
sudo cp arch/arm64/boot/dts/overlays/imx415*.dtb* /boot/firmware/overlays/
sudo cp arch/arm64/boot/dts/overlays/README /boot/firmware/overlays/
4. 驱动模块编译
make -C /home/rpi/linux modules_prepare
sudo make CONFIG_VIDEO_IMX415=m -C /lib/modules/$(uname -r)/build M=$(pwd) modules_install
sudo cp /home/rpi/linux/drivers/media/i2c/imx415.ko /lib/modules/$(uname -r)/kernel/drivers/media/i2c/
sudo xz -z /lib/modules/$(uname -r)/kernel/drivers/media/i2c/imx415.ko
sudo depmod -a
5. 驱动加载配置
编辑/boot/firmware/config.txt:
dtoverlay=imx415
camera_auto_detect=0
6. 依赖模块加载
echo -e "v4l2-async\nv4l2-fwnode\nregmap-i2c" | sudo tee /etc/modules-load.d/imx415.conf
驱动验证
1. 系统重启
sudo reboot
2. 驱动状态检查
# 模块加载验证
lsmod | grep imx415
# 内核日志检查
dmesg | grep -i imx415
# 设备节点检测
v4l2-ctl --list-devices
3. 功能测试
# 静态图像捕获
libcamera-still -o test.jpg
# 视频流测试
libcamera-vid -t 10000 -o test.h264
调用以上命令拍照时,默认白平衡设置可能错误,可参考以下文章配置 DIY相机(一)libcamera库 DIY相机(二)picamera2库
Comments
Leave a comment