O que causa o erro ENOSPC ao usar o módulo de câmera Raspberry Pi?

33

Recebi a mensagem de erro abaixo ao tentar usar a câmera 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

Ao pesquisar isso, há várias razões que podem levar a uma mensagem do ENOSPC. Pensei em criar uma pergunta aqui para catalogar as possíveis causas.

TomG
fonte
Você também o está usando com um sensor de temperatura? Eu encontrei esse problema sempre que executei o comando modprobe ao configurar o sensor de temperatura. Veja github.com/raspberrypi/linux/issues/435
Anconia
Obtendo esse problema também nas imagens do OctoPi
GuySoft
É 2019 e não posso postar uma nova resposta (fechada), mas eu já havia instalado o raspimjpeg, que tive a sorte de detectar usando 'ps -ef'. "sudo pkill raspimjpeg" resolveu o problema.
Gavin Simpson

Respostas:

19

A página do projeto GitHub para o software da câmera menciona

Erro: ENOSPC exibido. A câmera provavelmente está ficando sem memória da GPU. Verifique o arquivo config.txt na pasta / boot /. A opção gpu_mem deve ser pelo menos 128.

Esse problema informa que esse erro pode ocorrer devido a um conflito com os drivers dos módulos 1-Wire (W1) se os módulos não estiverem carregados na ordem correta.

Esta postagem nos fóruns da RPi diz que o problema pode ser resolvido trocando o pino usado pelo 1-Wire pelo pino 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

Em maio de 2016, o GPU_MEM = 128 não é mais suficiente. Aumentar de 128 para 144 fez com que o erro desaparecesse.

TomG
fonte
Eu acho que você quer dizer gpu_mem, não gpio_mem.
precisa saber é o seguinte
14

Eu uso movimento no pi, se eu quiser executar raspistill, tenho que parar o movimento (que também usa a câmera para detectar 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.
esquemas
fonte
Embora isso possa ser uma resposta, definitivamente seria melhorado com alguma elaboração.
Bex
Não era um movimento que eu estava executando, mas eu tinha outro daemon usando a câmera e, quando parei, parei de receber o erro.
Richard Wiseman
Sim, a câmera parece que só pode ser controlada por um processo.
schemacs
10

"Em circunstâncias normais, NUNCA é necessário executar o rpi-update, pois ele sempre leva ao firmware e ao kernel de ponta e, porque essa pode ser uma versão de teste, pode deixar o seu RPi não inicializável". https://www.raspberrypi.org/forums/viewtopic.php?p=916911#p916911 Até a documentação rpi-update agora alerta "Mesmo no Raspbian, você deve usar isso apenas por um bom motivo. Isso proporciona a você a mais recente vantagem kernel / firmware ".

Eu tive o mesmo problema. Uma atualização de firmware resolveu.

sudo rpi-update
user49119
fonte
Isso resolveu o problema para mim e parecia necessário fazer o Raspicam 2.1 funcionar para mim (usei o Rapicam 1.3 com sucesso antes da atualização); a atualização me atualizou de 4.1.7-v7+para 4.9.25-v7+, o que fez o modelo mais recente funcionar. Mudar de GPIO_MEM=128para GPIO_MEM=144não era necessário para mim neste caso.
NH2
9

Eu tive o mesmo problema. Comparando-o a várias outras postagens, a resposta mais provável é que dois processos / aplicativos estão tentando acessar a PiCam ao mesmo tempo. Pode ser streaming ffmpeg, movimento, raspivid, raspistill etc.

Meus US $ 0,02

Frank
fonte
verdade :)) perdeu uma certa quantidade de tempo, eu esqueci que eu instalei o processo de movimento é de backend, impedindo a câmera acesso
Sofield
2
Ou octoprint (como foi para mim)
Saran
Eu estava tentando executar o script raspivid e python que utilizam a biblioteca picamera. Eles não podem correr juntos
Dante
Muito obrigado Eu também estava cometendo o mesmo erro, mas outros posts me ajudaram a atualizar meu firmware, pacotes dist etc. etc. o problema ainda estava lá até eu fazer isso sudo service motion stop. E a câmera começou a funcionar novamente.
Amit Ray #
Apenas oferecendo minha situação e solução também. Eu havia importado picameraum script python, mas não estava funcionando, então decidi usar a raspistillpartir de uma chamada de linha de comando dentro do script. Não o removi, import picamerapois estava ocupando o recurso da câmera antes de poder usá-lo raspistill.
Kimberly W
6

Recentemente, experimentei o mesmo problema de um erro do ENOSPEC. No meu caso, tudo estava funcionando perfeitamente até eu colocar minha câmera em uma caixa PiCam. Achei que essa caixa (mesmo que projetada para a PiCamera) empurra o chip na medida em que o conector entre a câmera e a placa foi afrouxado. Empurrá-lo de volta no lugar resolveu meu problema. Talvez não seja tão fácil verificar se o conector está no lugar correto, o que causa erros de interpretação.

Acho que esse não será o caso usual, mas como o primeiro post sugeriu, isso deve melhorar o catálogo de possíveis causas para esse erro.

Grande B
fonte
2

Eu recebi a mesma mensagem de erro porque não havia atualizado o firmware (via sudo rpi-update) após ativar a câmera raspi-config. Eu já havia atualizado o firmware alguns dias antes e achei que seria suficiente, mas como a câmera não estava habilitada naquela época, não ajudou.

anol
fonte
2

No meu caso, foi apenas que eu não havia reiniciado meu pi depois de conectar a câmera.

Haydon Berrow
fonte
Nunca conecte uma câmera ao pi enquanto estiver ligado!
Dmitry Grigoryev
1

Eu tentei com o último RASPBIAN STRETCH LITE (9.4 - 2018-06-27) em um PI3B v1.2 com um PI CAMERA 2.1, todos totalmente atualizados (atualização apt-get)

Se este comando não detectar a câmera com " detectado = 1 " assim:

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

Depois, há um problema de conexão. Verifique se o cabo nos dois sentidos está do lado positivo dos pinos (e, é claro, conectado ao barramento "camera", não ao barramento "display" que é do mesmo tamanho).

(é claro, depois de ativar a interface da câmera com raspi-config e reiniciar)

Se não funcionou, geralmente é um problema de hardware com a câmera e a opção rápida é trocar a câmera por uma nova.

Se detectado = 1, mas ao tentar usar raspistill mostra esta mensagem:

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

As conexões estão ok, mas o problema com certeza é um problema de hardware com a câmera e você deve mudar a câmera por uma nova. Não perca tempo tentando resolvê-lo porque é uma câmera com defeito. Se você receber um novo, ele funcionará.

Albert Garcia
fonte
Mesmo assim, você não pode dizer que a câmera não está funcionando. Eu tive todos esses problemas e, quando fiz streaming ao vivo usando http: // {my ip}: 8081 /? Action = stream, ele estava funcionando. Isso significa que raspimjpeg estava em execução. Provavelmente isso acontece quando você já tem um ou mais processos usando a câmera, porque detectado = 1 significa que pelo menos ele pode entrar em contato com a câmera.
Amit Ray
0

no meu caso, tive que usar o modprobe para descarregar o driver: sudo modprobe -r bcm2835-v4l2

Em seguida, o LED vermelho na câmera é desligado e eu posso usar o raspivid para reativar a câmera.

user97662
fonte
0

No meu caso, eu precisava recolocar o cabo na câmera. Eu o desconectara para alimentar o cabo através de um estojo; não deve ter feito uma boa conexão.

napertivo
fonte
0

Recebi esse erro no meu AIY Vision Kit (Pi Zero W) porque esqueci de parar o aplicativo de demonstração da câmera:

sudo systemctl stop joy_detection_demo
Navin
fonte
-1

Eu resolvi o meu por chmod 666 / dev / video0

liderbug
fonte