Cosa causa l'errore ENOSPC quando si utilizza il modulo videocamera Raspberry Pi?


33

Ho ricevuto il seguente messaggio di errore quando ho tentato di utilizzare la fotocamera 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

Nella ricerca di questo, ci sono una serie di ragioni che possono portare a un messaggio ENOSPC, ho pensato che avrei creato una domanda qui per catalogare le possibili cause.


Lo stai usando anche con un sensore di temperatura? Ho riscontrato questo problema ogni volta che ho eseguito il comando modprobe durante l'impostazione del sensore di temperatura. Vedi github.com/raspberrypi/linux/issues/435
Anconia

Ottenere questo problema anche sulle immagini OctoPi: github.com/guysoft/OctoPi/issues/31
GuySoft,

È il 2019 e non posso pubblicare una nuova risposta (chiusa), ma in precedenza avevo installato raspimjpeg che ho avuto la fortuna di individuare usando 'ps -ef'. "sudo pkill raspimjpeg" ha quindi risolto il problema.
Gavin Simpson,

Risposte:


19

La pagina del progetto GitHub per il software della fotocamera menziona

Errore: ENOSPC visualizzato. Probabilmente la fotocamera sta esaurendo la memoria della GPU. Controlla config.txt nella cartella / boot /. L'opzione gpu_mem dovrebbe essere almeno 128.

Questo problema indica che questo errore può verificarsi a causa di un conflitto con i driver per i moduli a 1 filo (W1) se i moduli non sono caricati nell'ordine giusto.

Questo post sui forum RPi dice che il problema può essere risolto commutando il pin utilizzato per 1-Wire sul 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 partire da maggio 2016, GPU_MEM = 128 non è più sufficiente. Aumentandolo da 128 a 144, l'errore è scomparso.


Penso che intendi gpu_mem, non gpio_mem.
tedder42

14

Uso il movimento su pi, se voglio eseguire raspistill, devo interrompere il movimento (che utilizza anche la fotocamera per rilevare il movimento).

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.

Mentre questa potrebbe essere una risposta, sarebbe sicuramente migliorata da qualche elaborazione.
Bex,

Non era il movimento che avevo in esecuzione, ma avevo un altro demone che utilizzava la videocamera e quando ho smesso ho smesso di ottenere l'errore.
Richard Wiseman,

Sì, sembra che la telecamera possa essere controllata da un solo processo.
schemacs,

10

"In circostanze normali non c'è MAI la necessità di eseguire rpi-update in quanto ti porta sempre al firmware e al kernel all'avanguardia e poiché quella potrebbe essere una versione di prova potrebbe rendere il tuo RPi non avviabile". https://www.raspberrypi.org/forums/viewtopic.php?p=916911#p916911 Anche la documentazione di rpi-update ora avverte "Anche su Raspbian dovresti usarlo solo con una buona ragione. kernel / firmware."

Ho avuto lo stesso problema. Un aggiornamento del firmware lo ha risolto.

sudo rpi-update

Questo mi ha risolto e mi è sembrato necessario per far funzionare Raspicam 2.1 (ho usato con successo Rapicam 1.3 prima dell'aggiornamento); l'aggiornamento mi ha aggiornato da 4.1.7-v7+a 4.9.25-v7+, il che ha fatto funzionare il modello più recente. In questo caso non è stato necessario cambiare da GPIO_MEM=128a GPIO_MEM=144.
nh2,

9

Ho avuto lo stesso problema. Confrontandolo con una serie di altri post, la risposta più probabile è che due processi / applicazioni stanno provando ad accedere a PiCam contemporaneamente. Questo può essere streaming ffmpeg, motion, raspivid, raspistill, ecc.

I miei $ 0,02


vero :)) ho perso un po 'di tempo, ho dimenticato che ho installato il processo di movimento sul back-end, impedendo l'accesso alla telecamera
soField

2
O octoprint (com'era per me)
Saran,

Stavo cercando di eseguire sia raspivid che uno script Python che utilizzavano la libreria Picamera. Non possono correre insieme
Dante,

Grazie mille anche io stavo facendo lo stesso errore ma altri post mi hanno aiutato ad aggiornare il mio firmware, i pacchetti di dist, ecc. Il problema era ancora lì fino a quando non l'ho fatto sudo service motion stop. E la fotocamera ha ripreso a funzionare.
Amit Ray,

Offrendo anche la mia situazione e soluzione. Avevo importato picamerain uno script Python, ma non funzionava, quindi ho deciso di utilizzare raspistilluna chiamata da riga di comando all'interno dello script. Non l'ho rimosso in import picameramodo da occupare la risorsa della fotocamera prima di poterla utilizzare raspistill.
Kimberly W,

6

Di recente ho riscontrato lo stesso problema di un errore ENOSPEC. Nel mio caso tutto funzionava perfettamente fino a quando non ho inserito la mia fotocamera in un alloggiamento PiCam. Ho trovato questo alloggiamento (anche se progettato per la PiCamera) che spinge il chip fino a quando il connettore tra cam e scheda è stato allentato. Spingerlo al suo posto ha risolto il mio problema. Forse non è così facile vedere se il connettore è correttamente in posizione che causa un'interpretazione errata.

Immagino che questo non sarà il solito caso, ma come suggerito dal primo post questo dovrebbe migliorare il catalogo delle possibili cause di questo errore.


2

Ho ricevuto lo stesso messaggio di errore perché non avevo aggiornato il firmware (via sudo rpi-update) dopo aver abilitato la fotocamera tramite raspi-config. Avevo già aggiornato il firmware qualche giorno prima e pensavo che sarebbe bastato, ma dal momento che la fotocamera non era abilitata allora, non ha aiutato.


2

Nel mio caso era semplicemente che non avevo riavviato il mio pi dopo aver collegato la fotocamera.


Non collegare mai una fotocamera al pi mentre è alimentato!
Dmitry Grigoryev il

1

Ho provato con l'ultimo RASPBIAN STRETCH LITE (9.4 - 2018-06-27) in un PI3B v1.2 con un PI CAMERA 2.1, tutto completamente aggiornato (apt-get upgrade)

Se questo comando non rileva la telecamera con "detect = 1 " in questo modo:

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

Quindi c'è un problema di connessione. Verificare che il cavo sia in entrambi i modi con il lato positivo dei pin (e ovviamente collegato al bus "camera", non al bus "display" che abbia le stesse dimensioni).

(ovviamente, dopo aver abilitato l'interfaccia della videocamera con raspi-config e il riavvio)

Se non ha funzionato, di solito si tratta di un problema hardware con la fotocamera e l'opzione rapida è quella di cambiare la fotocamera con una nuova.

Se rilevato = 1 ma quando si tenta di utilizzare raspistill mostra questo messaggio:

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

Quindi le connessioni sono ok, ma il problema è sicuramente un problema hardware con la fotocamera e devi cambiarla con una nuova. Non perdere tempo a cercare di risolverlo perché è una fotocamera difettosa. Se ne ottieni uno nuovo funzionerà.


Anche allora non puoi dire che la fotocamera non funziona. Ho avuto tutti questi problemi e quando ho fatto streaming live usando http: // {il mio ip}: 8081 /? Action = stream funzionava. Ciò significa che raspimjpeg era in esecuzione. Questo molto probabilmente accade quando hai già uno o più processi che utilizzano la fotocamera perché rilevati = 1 significa che almeno è in grado di contattare la fotocamera.
Amit Ray,

0

nel mio caso, ho dovuto usare modprobe per scaricare il driver: sudo modprobe -r bcm2835-v4l2

Quindi il LED rosso sulla fotocamera si spegne e posso utilizzare raspivid per riattivare la fotocamera.


0

Nel mio caso, dovevo riposizionare il cavo sulla fotocamera. L'avevo disconnesso per alimentare il cavo attraverso una custodia; non deve aver fatto una buona connessione.


0

Ho riscontrato quell'errore sul mio AIY Vision Kit (Pi Zero W) perché ho dimenticato di interrompere l'app demo della fotocamera:

sudo systemctl stop joy_detection_demo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.