树莓派Arducam IMX219运行raspistill报mmal组件创建失败
树莓派Arducam IMX219相机mmal报错修复方案
故障基础信息
在树莓派上搭载Arducam IMX219相机开展图像处理工作时,执行命令sudo raspistill -o myImage.jpg触发如下报错:
mmal: camera component couldn't be enabled mmal: main: Failed to create camera component mmal: Failed to run camera app. Please check for firmware updates
已执行的无效排查操作
- 执行
sudo rpi update更新固件 - 在
sudo raspi-config界面启用相机模块 - 将GPU显存分配值提升至144
- 更换相机连接排线
- 尝试安装libcamera
- 尝试在Python环境中调用picamera库
分步修复方案
1. 回滚非稳定版固件
sudo rpi-update会拉取处于测试阶段的未正式发布固件,极易出现相机硬件兼容问题,先执行以下命令回滚到官方稳定版固件:
sudo apt update sudo apt install --reinstall -y raspberrypi-bootloader raspberrypi-kernel
2. 解决相机栈冲突
legacy MMAL相机栈(raspistill、旧版picamera依赖)和libcamera栈默认配置下会抢占设备资源,二者不能同时启用:
- 如果你需要继续使用
raspistill命令,先完全卸载libcamera相关组件:
sudo apt remove -y libcamera* libcamera-apps* sudo apt autoremove -y
- 编辑系统启动配置文件
sudo nano /boot/config.txt,做如下修改:- 注释掉自动检测相机的配置行:
# camera_auto_detect=1 - 确认存在以下配置项,不存在则手动添加:
start_x=1 gpu_mem=128 dtoverlay=imx219 - 保存文件后执行
sudo reboot重启设备
- 注释掉自动检测相机的配置行:
3. 排查硬件安装与权限问题
- 确认排线安装方向:树莓派CSI接口端排线蓝色标识面朝以太网口方向,相机端排线蓝色标识面朝镜头背面方向,装反会完全无法识别硬件;断电状态下重新扣紧CSI接口卡扣,可用橡皮擦拭排线金手指避免氧化接触不良。
- 重启后不要加
sudo执行测试命令:raspistill -o test.jpg,高版本系统下root用户调用raspistill会因为video组权限限制触发组件加载失败。 - 执行
vcgencmd get_camera查看硬件识别状态:- 返回
supported=1 detected=0:说明硬件未被识别,将相机装到其他正常工作的树莓派上交叉验证,排除相机本体损坏问题 - 返回
supported=1 detected=1:说明硬件识别正常,执行sudo usermod -aG video $USER将当前用户加入video用户组,注销重新登录后即可正常调用
- 返回
4. 适配新系统兼容逻辑
如果你使用的是2023年之后发布的Raspberry Pi OS Bookworm及更新版本,系统已经完全废弃MMAL架构的旧相机工具,无需强行适配raspistill:
- 直接使用libcamera栈原生命令测试:
libcamera-still -o test.jpg - Python环境下卸载旧版picamera库,安装适配新栈的
picamera2库调用即可,旧picamera库在新系统下无官方适配,必然触发组件创建失败错误。
内容的提问来源于stack exchange,提问作者Goutham S
相关产品推荐
相关产品推荐

