使用Raspberry Pi摄像头模块时,导致ENOSPC错误的原因是什么?


33

尝试使用Raspberry Pi相机时出现以下错误消息

# raspistill -o /tmp/gate_now.jpg
mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
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

在研究此问题时,有多种原因可能导致ENOSPC消息,我想在此创建一个问题以对可能的原因进行分类。


您还将它与温度传感器一起使用吗?设置温度传感器时,只要运行modprobe命令,我都会遇到此问题。见github.com/raspberrypi/linux/issues/435
Anconia 2014年

在OctoPi图像上也获得此问题: github.com/guysoft/OctoPi/issues/31
GuySoft,2014年

它是2019年,无法发布新答案(已关闭),但是我之前安装了raspimjpeg,我很幸运能够使用'ps -ef'进行发现。然后,“ sudo pkill raspimjpeg”解决了该问题。
加文·辛普森

Answers:


19

相机软件GitHub项目页面提到

错误:显示ENOSPC。相机可能耗尽了GPU内存。检查/ boot /文件夹中的config.txt。gpu_mem选项应至少为128。

该问题表明,如果未按正确的顺序加载模块,则与1-Wire(W1)模块的驱动程序发生冲突可能会导致此错误。

RPi论坛上的这篇帖子说,可以通过将1-Wire的引脚切换到18引脚来解决此问题:

/boot/cmdline.txt:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait bcm2708.w1_gpio_pin=18

截至2016年5月,GPU_MEM = 128不再足够。将其从128增加到144可以消除错误。


我认为您的意思是gpu_mem,而不是gpio_mem。
tedder42

14

我在pi上使用运动,如果要运行raspistill,则必须停止运动(这也需要使用相机来检测运动)。

pi@raspberrypi ~ $ sudo /etc/init.d/motion stop
[ ok ] Stopping motion detection daemon: motion.
pi@raspberrypi ~ $ /usr/bin/raspistill -o cam2.jpg
pi@raspberrypi ~ $ sudo /etc/init.d/motion start
[ ok ] Starting motion detection daemon: motion.

虽然这可能是一个答案,但一定会通过一些改进加以改进。
Bex

我没有在跑步,但是我确实有另一个守护进程正在使用相机,而当我停止时,我停止获取错误。
理查德·怀斯曼

是的,相机似乎只能由一个过程控制。
schemacs

10

“在通常情况下,永远不需要运行rpi-update,因为它总是可以带您到领先的固件和内核,并且因为这可能是测试版本,可能会使RPi无法启动”。https://www.raspberrypi.org/forums/viewtopic.php?p=916911#p916911 即使是rpi-update文档现在也警告说:“即使在Raspbian上,您也应该有充分的理由使用它。这为您提供了最新的前沿技术内核/固件。”

我有同样的问题。固件更新解决了该问题。

sudo rpi-update

这为我解决了这一问题,似乎有必要使Raspicam 2.1为我工作(在更新之前,我成功使用了Rapicam 1.3);更新将我从升级4.1.7-v7+4.9.25-v7+,从而使较新的模型正常工作。从改变GPIO_MEM=128GPIO_MEM=144,没有必要让我在这种情况下。
nh2

9

我有同样的问题。将其与其他许多文章进行比较,最可能的答案是两个进程/应用程序试图同时访问PiCam。这可以是ffmpeg流,运动,raspivid,raspistill等。

我的$ 0.02


true :))浪费了一些时间,我忘了我在后端安装了运动过程,从而无法访问相机
soField 2016年

2
或使用octoprint(对我而言)
Saran

我试图同时运行raspivid和利用picamera库的python脚本。他们不能一起跑步
Dante

非常感谢,我也犯了同样的错误,但是其他帖子帮助我更新了固件,dist软件包等。问题仍然存在,直到我这样做为止sudo service motion stop。相机再次开始工作。
阿米特·雷

也提供我的情况和解决方案。我已经导入picamera了python脚本,但无法正常工作,因此我决定raspistill从脚本内部的命令行调用中使用。我没有删除,import picamera因此在将它用于之前占用了相机资源raspistill
金伯利W

6

我最近遇到了ENOSPEC错误的相同问题。就我而言,所有事情都运行良好,直到我将相机放入PiCam机壳中为止。我发现这个外壳(即使是为PiCamera设计)也将芯片推入到松开凸轮和电路板之间的连接器的程度。将其推回原位可以解决我的问题。可能不太容易看到连接器是否正确安装到位,从而导致误解。

我想这不是通常的情况,但是正如第一篇文章所建议的那样,这应该会增强导致此错误的原因的目录。


2

我有相同的错误消息,因为通过启用相机后,我没有更新固件(通过sudo rpi-update)。我已经在几天前更新了固件,我认为这样就足够了,但是由于那时还没有启用相机,所以它没有帮助。raspi-config



1

我已经在带有PI CAMERA 2.1的PI3B v1.2中使用了最后的RASPBIAN STRETCH LITE(9.4-2018-06-27)进行了尝试,所有功能都已完全升级(易于升级)

如果此命令未检测到带有“ detected = 1 ” 的摄像机,则如下所示:

pi@raspberrypi:~ $ vcgencmd get_camera
supported=1 detected=1

然后有一个连接问题。检查两种电缆的插针侧是否都正确(并且当然连接到“相机”总线,而不是相同尺寸的“显示器”总线)。

(当然,在使用raspi-config启用相机接口并重新启动后)

如果不起作用,通常是相机的硬件问题,快速的选择是更换新相机。

如果检测到= 1,但是在尝试使用raspistill时显示以下消息:

pi@raspberrypi:~ $ raspistill -o test.jpg
mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
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

然后连接好,但问题肯定是硬件问题与相机,你必须改变相机的一个新的。不要浪费时间试图解决它,因为它是有缺陷的相机。如果您得到一个新的,它将起作用。


即使那样,您也不能说相机无法正常工作。我遇到了所有这些问题,当我使用http:// {my ip}:8081 /?action = stream进行实时流式传输时,它正在运行。这意味着raspimjpeg正在运行。当您已经有一个或多个进程正在使用相机时,最有可能发生这种情况,因为检测到= 1意味着至少它能够与相机联系。
阿米雷

0

就我而言,我必须使用modprobe卸载驱动程序:sudo modprobe -r bcm2835-v4l2

然后,相机上的红色LED熄灭,我可以使用raspivid重新启用相机。


0

就我而言,我需要重新安装相机上的电缆。我已经断开了它的连接,以便将电缆穿过一个盒子。它一定没有建立良好的联系。


0

我在AIY视觉套件(Pi Zero W)上遇到了该错误,因为我忘记停止了相机演示应用程序:

sudo systemctl stop joy_detection_demo

-1

我通过chmod 666 / dev / video0解决了我的问题

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.