Co powoduje błąd ENOSPC podczas korzystania z modułu kamery Raspberry Pi?

33

Podczas próby użycia aparatu Raspberry Pi pojawia się poniższy komunikat o błędzie

# 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

Badając to, istnieje wiele powodów, które mogą prowadzić do komunikatu ENOSPC, pomyślałem, że utworzę tutaj pytanie, aby skatalogować możliwe przyczyny.

TomG
źródło
Czy używasz go również z czujnikiem temperatury? Ten problem napotkałem za każdym razem, gdy uruchomiłem polecenie modprobe podczas konfigurowania czujnika temp. Zobacz github.com/raspberrypi/linux/issues/435
Anconia
Uzyskiwanie tego problemu również na zdjęciach OctoPi: github.com/guysoft/OctoPi/issues/31
GuySoft
Jest rok 2019 i nie mogę opublikować nowej odpowiedzi (zamkniętej), ale wcześniej zainstalowałem raspimjpeg, który miałem szczęście dostrzec za pomocą 'ps -ef'. „sudo pkill raspimjpeg” następnie rozwiązał problem.
Gavin Simpson

Odpowiedzi:

19

Strona projektu GitHub dla oprogramowania aparatu wspomina

Błąd: wyświetlany ENOSPC. W aparacie prawdopodobnie brakuje pamięci GPU. Sprawdź config.txt w folderze / boot /. Opcja gpu_mem powinna mieć co najmniej 128.

Ten problem wskazuje, że ten błąd może wystąpić z powodu konfliktu ze sterownikami dla modułów 1-Wire (W1), jeśli moduły nie zostaną załadowane we właściwej kolejności.

Ten post na forach RPi mówi, że problem można rozwiązać, przełączając pin używany dla 1-Wire na 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

Od maja 2016 r. GPU_MEM = 128 już nie wystarcza. Zwiększenie go ze 128 do 144 sprawiło, że błąd zniknął.

TomG
źródło
Myślę, że masz na myśli gpu_mem, a nie gpio_mem.
tedder42
14

Używam ruchu na pi, jeśli chcę uruchomić Raspistill, muszę zatrzymać ruch (który również używa kamery do wykrywania ruchu).

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.
schemacs
źródło
Chociaż może to być odpowiedź, na pewno poprawiłaby się ona poprzez pewne rozwinięcie.
Bex
To nie był ruch, który miałem uruchomiony, ale miałem innego demona korzystającego z kamery, a kiedy przestałem, przestałem otrzymywać błąd.
Richard Wiseman
Tak, kamera może być kontrolowana tylko przez jeden proces.
schemacs
10

„W normalnych okolicznościach NIGDY nie trzeba uruchamiać aktualizacji rpi, ponieważ zawsze prowadzi to do najnowocześniejszego oprogramowania układowego i jądra, a ponieważ może to być wersja testowa, nie można uruchomić RPi”. https://www.raspberrypi.org/forums/viewtopic.php?p=916911#p916911 Nawet dokumentacja aktualizacji rpi teraz ostrzega: „Nawet na Raspbian powinieneś używać tego tylko z uzasadnionego powodu. Dzięki temu uzyskasz najnowszą przewagę kernel / firmware. ”

Miałem ten sam problem. Aktualizacja oprogramowania rozwiązała to.

sudo rpi-update
użytkownik49119
źródło
To rozwiązało dla mnie i wydawało się konieczne, aby Raspicam 2.1 działał dla mnie (z powodzeniem korzystałem z Rapicam 1.3 przed aktualizacją); aktualizacja zaktualizowała mnie od 4.1.7-v7+do 4.9.25-v7+, dzięki czemu nowszy model działał. W tym przypadku zmiana z GPIO_MEM=128na GPIO_MEM=144nie była dla mnie konieczna.
nh2
9

Miałem ten sam problem. Porównując to do wielu innych postów, najbardziej prawdopodobną odpowiedzią jest to, że dwa procesy / aplikacje próbują uzyskać dostęp do PiCam jednocześnie. Może to być streaming ffmpeg, motion, raspivid, raspistill itp.

Moje 0,02 $

Szczery
źródło
prawda :)) straciłem trochę czasu, zapomniałem, że zainstalowałem proces ruchu jest na zapleczu, uniemożliwiając dostęp do kamery
soField 28.08.16
2
Lub octoprint (jak dla mnie)
Saran
Próbowałem uruchomić zarówno skrypt Raspivid, jak i Python, który wykorzystuje bibliotekę Picamera. Nie mogą biec razem
Dante
Wielkie dzięki, ja również popełniłem ten sam błąd, ale inne posty pomogły mi zaktualizować oprogramowanie układowe, pakiety dist itp. Problem był nadal obecny, dopóki tego nie zrobiłem sudo service motion stop. Aparat znów zaczął działać.
Amit Ray
Po prostu oferuję moją sytuację i rozwiązanie. Zaimportowałem picameraw skrypcie python, ale to nie działało, więc raspistillzamiast tego zdecydowałem się użyć wywołania z wiersza poleceń w skrypcie. Nie usunąłem, import picamerawięc zajmowałem zasób kamery, zanim mogłem go używać raspistill.
Kimberly W
6

Ostatnio doświadczyłem tego samego problemu z błędem ENOSPEC. W moim przypadku wszystko działało idealnie, dopóki nie włożyłem aparatu do obudowy PiCam. Odkryłem, że ta obudowa (nawet zaprojektowana dla PiCamera) popycha układ tak daleko, że złącze między kamerą a płytką zostało poluzowane. Przesunięcie go z powrotem na miejsce rozwiązało mój problem. Być może nie jest tak łatwo sprawdzić, czy złącze jest prawidłowo umieszczone, co powoduje błędną interpretację.

Myślę, że nie będzie to zwykły przypadek, ale jak sugeruje pierwszy post, powinno to poprawić katalog możliwych przyczyn tego błędu.

Duże B
źródło
2

Miałem ten sam komunikat o błędzie, ponieważ nie zaktualizowałem oprogramowania układowego (przez sudo rpi-update) po włączeniu aparatu przez raspi-config. Kilka dni wcześniej zaktualizowałem oprogramowanie i pomyślałem, że to wystarczy, ale ponieważ aparat nie był wtedy włączony, nie pomogło.

anol
źródło
2

W moim przypadku było to po prostu to, że nie zrestartowałem mojego pi po podłączeniu aparatu.

Haydon Berrow
źródło
Nigdy nie podłączaj aparatu do pi, gdy jest zasilany!
Dmitrij Grigoriew
1

Próbowałem z ostatnim RASPBIAN STRETCH LITE (9.4 - 2018-06-27) w PI3B v1.2 z PI CAMERA 2.1, wszystkie w pełni zaktualizowane (apt-get upgrade)

Jeśli to polecenie nie wykrywa kamery z „ wykrytym = 1 ” w ten sposób:

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

Następnie występuje problem z połączeniem. Sprawdź, czy kabel w obie strony jest po dobrej stronie styków (i oczywiście podłączony do szyny „kamery”, a nie szyny „wyświetlania” o tym samym rozmiarze).

(oczywiście po włączeniu interfejsu kamery z raspi-config i ponownym uruchomieniu)

Jeśli to nie zadziałało, zwykle jest to problem sprzętowy z aparatem, a szybką opcją jest zmiana kamery na nową.

Jeśli wykryto = 1, ale podczas próby użycia raspistill pokazuje ten komunikat:

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

Wtedy połączenia są w porządku, ale na pewno problemem jest problem sprzętowy z kamerą i trzeba wymienić kamerę na nową. Nie marnuj czasu na próby jego rozwiązania, ponieważ jest to uszkodzony aparat. Jeśli dostaniesz nowy, zadziała.

Albert Garcia
źródło
Nawet wtedy nie można powiedzieć, że aparat nie działa. Miałem wszystkie te problemy i kiedy transmitowałem na żywo za pomocą http: // {mój ip}: 8081 /? Action = stream, działało. Oznacza to, że raspimjpeg był uruchomiony. Dzieje się tak najprawdopodobniej, gdy jeden lub więcej procesów już korzysta z kamery, ponieważ wykryta wartość = 1 oznacza, że ​​przynajmniej może ona skontaktować się z kamerą.
Amit Ray,
0

w moim przypadku musiałem użyć modprobe do rozładowania sterownika: sudo modprobe -r bcm2835-v4l2

Następnie czerwona dioda LED na aparacie jest wyłączona i mogę użyć raspivid do ponownego włączenia aparatu.

użytkownik97662
źródło
0

W moim przypadku musiałem ponownie osadzić kabel w aparacie. Odłączyłem go, aby poprowadzić kabel przez skrzynkę; nie mogło mieć dobrego połączenia.

napertivo
źródło
0

Wystąpił ten błąd w moim zestawie AIY Vision Kit (Pi Zero W), ponieważ zapomniałem zatrzymać aplikację demonstracyjną aparatu:

sudo systemctl stop joy_detection_demo
Navin
źródło
-1

Rozwiązałem mój przez chmod 666 / dev / video0

liderbug
źródło