¿Qué causa el error ENOSPC al usar el módulo de cámara Raspberry Pi?

33

Recibí el siguiente mensaje de error al intentar usar la cámara 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

Al investigar esto, hay una serie de razones que pueden conducir a un mensaje ENOSPC, pensé que crearía una pregunta aquí para catalogar las posibles causas.

TomG
fuente
¿Lo estás usando también con un sensor de temperatura? Encontré este problema cada vez que ejecuté el comando modprobe al configurar el sensor de temperatura. Ver github.com/raspberrypi/linux/issues/435
Anconia
Obteniendo este problema también en las imágenes de OctoPi
GuySoft
Es 2019 y no puedo publicar una nueva respuesta (cerrada), pero anteriormente había instalado raspimjpeg que tuve la suerte de detectar usando 'ps -ef'. "sudo pkill raspimjpeg" resolvió el problema.
Gavin Simpson

Respuestas:

19

La página del proyecto GitHub para el software de la cámara menciona

Error: se muestra ENOSPC. La cámara probablemente se esté quedando sin memoria GPU. Verifique config.txt en la carpeta / boot /. La opción gpu_mem debe ser de al menos 128.

Este problema indica que este error puede ocurrir debido a un conflicto con los controladores de los módulos 1-Wire (W1) si los módulos no se cargan en el orden correcto.

Esta publicación en los foros de RPi dice que el problema se puede solucionar cambiando el pin utilizado para 1-Wire al pin 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

A partir de mayo de 2016, GPU_MEM = 128 ya no es suficiente. Al aumentarlo de 128 a 144, el error desapareció.

TomG
fuente
Creo que te refieres a gpu_mem, no a gpio_mem.
tedder42
14

Uso el movimiento en pi, si quiero ejecutar raspistill, tengo que detener el movimiento (que también usa la cámara para detectar movimiento).

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.
esquemas
fuente
Si bien esto podría ser una respuesta, definitivamente se mejoraría con alguna elaboración.
Bex
No era movimiento lo que tenía corriendo, pero tenía otro demonio usando la cámara, y cuando paré, dejé de recibir el error.
Richard Wiseman
Sí, parece que la cámara solo puede controlarse mediante un proceso.
schemacs
10

"En circunstancias normales, NUNCA hay necesidad de ejecutar rpi-update, ya que siempre te lleva al núcleo y al firmware de vanguardia y debido a que puede ser una versión de prueba, podría dejar tu RPi no arrancable". https://www.raspberrypi.org/forums/viewtopic.php?p=916911#p916911 Incluso la documentación de actualización de rpi ahora advierte "Incluso en Raspbian solo deberías usar esto con una buena razón. Esto te da la última ventaja. kernel / firmware ".

Yo tuve el mismo problema. Una actualización de firmware lo resolvió.

sudo rpi-update
usuario49119
fuente
Esto lo resolvió para mí y me pareció necesario hacer que Raspicam 2.1 funcionara para mí (usé con éxito el Rapicam 1.3 antes de la actualización); la actualización me actualizó de 4.1.7-v7+a 4.9.25-v7+, lo que hizo que el modelo más nuevo funcionara. Cambiar de GPIO_MEM=128a GPIO_MEM=144no fue necesario para mí en este caso.
nh2
9

Yo tuve el mismo problema. Comparándolo con una serie de otras publicaciones, la respuesta más probable es que dos procesos / aplicaciones están intentando acceder a la PiCam al mismo tiempo. Esto puede ser ffmpeg streaming, movimiento, raspivid, raspistill, etc.

Mi $ 0.02

Franco
fuente
cierto :)) perdí algo de tiempo, olvidé que instalé el proceso de movimiento en el backend, evitando el acceso a la cámara
soField
2
O octoprint (como lo fue para mí)
Saran
Intenté ejecutar un script raspivid y python que utilizara la biblioteca picamera. No pueden correr juntos
Dante
Muchas gracias, yo también estaba cometiendo el mismo error, pero otras publicaciones me ayudaron a actualizar mi firmware, paquetes dist, etc. El problema seguía ahí hasta que hice esto sudo service motion stop. Y la cámara comenzó a funcionar de nuevo.
Amit Ray
Solo estoy ofreciendo mi situación y solución también. Había importado picameraen un script de Python, pero no funcionaba, así que decidí usarlo raspistilldesde una llamada de línea de comando dentro del script. No lo quité, import picameraasí que eso estaba ocupando el recurso de la cámara antes de poder usarlo raspistill.
Kimberly W
6

Recientemente experimenté el mismo problema de un error ENOSPEC. En mi caso, todo funcionaba perfectamente hasta que puse mi cámara en una carcasa PiCam. Encontré que esta carcasa (incluso si está diseñada para la PiCamera) empuja el chip tan lejos que el conector entre la leva y la placa se aflojó. Empujarlo de nuevo en su lugar resolvió mi problema. Tal vez no sea tan fácil ver si el conector está correctamente colocado, lo que causa una mala interpretación.

Supongo que este no será el caso habitual, pero como sugirió la primera publicación, esto debería mejorar el catálogo de posibles causas de este error.

B grande
fuente
2

Recibí el mismo mensaje de error porque no había actualizado el firmware (vía sudo rpi-update) después de habilitar la cámara vía raspi-config. Ya había actualizado el firmware unos días antes y pensé que sería suficiente, pero como la cámara no estaba habilitada en ese momento, no ayudó.

anol
fuente
2

En mi caso, era simplemente que no había reiniciado mi pi después de conectar la cámara.

Haydon Berrow
fuente
¡Nunca conecte una cámara al pi mientras esté encendida!
Dmitry Grigoryev
1

He intentado con el último RASPBIAN STRETCH LITE (9.4 - 2018-06-27) en un PI3B v1.2 con una PI CAMERA 2.1, todo completamente actualizado (apt-get upgrade)

Si este comando no detecta la cámara con " detectado = 1 " como este:

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

Entonces hay un problema de conexión. Compruebe si el cable en ambos sentidos está con el lado bueno de los pines (y, por supuesto, conectado al bus de "cámara", no al bus de "pantalla" del mismo tamaño).

(por supuesto, después de habilitar la interfaz de la cámara con raspi-config y reiniciar)

Si no funcionó, generalmente es un problema de hardware con la cámara y la opción rápida es cambiar la cámara por una nueva.

Si se detecta = 1 pero al intentar usar raspistill muestra este mensaje:

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

Entonces las conexiones están bien, pero el problema seguro es un problema de hardware con la cámara y tiene que cambiar la cámara por una nueva. No pierdas el tiempo tratando de resolverlo porque es una cámara defectuosa. Si obtienes uno nuevo, funcionará.

Albert Garcia
fuente
Incluso entonces no puedes decir que la cámara no funciona. Tuve todos estos problemas y cuando realicé la transmisión en vivo usando http: // {my ip}: 8081 /? Action = stream, estaba funcionando. Esto significa que raspimjpeg se estaba ejecutando. Esto probablemente ocurre cuando ya tienes uno o más procesos usando la cámara porque detectado = 1 significa que al menos puede contactar con la cámara.
Amit Ray
0

en mi caso, tuve que usar modprobe para descargar el controlador: sudo modprobe -r bcm2835-v4l2

Luego, el LED rojo de la cámara se apaga, y puedo usar raspivid para volver a habilitar la cámara.

usuario97662
fuente
0

En mi caso, necesitaba volver a colocar el cable en la cámara. Lo había desconectado para pasar el cable a través de una caja; no debe haber hecho una buena conexión.

napertivo
fuente
0

Recibí ese error en mi AIY Vision Kit (Pi Zero W) porque olvidé detener la aplicación de demostración de la cámara:

sudo systemctl stop joy_detection_demo
Navin
fuente
-1

Resolví el mío por chmod 666 / dev / video0

liderbug
fuente