Що викликає помилку ENOSPC при використанні модуля камери Raspberry Pi?


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/isissue/435
Анконія

Отримання цієї проблеми також на зображеннях OctoPi
GuySoft

Настав 2019 рік, і я не можу опублікувати нову відповідь (закрито), але я раніше встановив raspimjpeg, який мені пощастило помітити за допомогою 'ps -ef'. Тоді "sudo pkill raspimjpeg" вирішив проблему.
Гевін Сімпсон

Відповіді:


19

Сторінка проекту GitHub згадує програмне забезпечення для камери

Помилка: відображається ENOSPC. Камера, ймовірно, не має пам’яті GPU. Перевірте config.txt у папці / boot /. Параметр gpu_mem має бути не менше 128.

У цьому питанні зазначено, що ця помилка може виникнути через конфлікт з драйверами для модулів 1-Wire (W1), якщо модулі не завантажуються в потрібному порядку.

У цій публікації на форумах RPi йдеться про те, що проблему можна усунути , переключивши штифт, який використовується для 1-дроту на штифт 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 року, 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.

Хоча це може бути відповіддю, воно, безумовно, буде покращене певним опрацюванням.
Бекс

У мене не був рух, але я мав ще одного демона за допомогою камери, і коли я зупинився, я перестав отримувати помилку.
Річард Вісман

Так, камеру, здається, можна керувати лише одним процесом.
схеми

10

"У звичайних обставинах НІКОЛИ не потрібно запускати rpi-оновлення, оскільки це завжди приводить вас до передового програмного забезпечення та ядра, і тому, що це може бути тестова версія, вона може залишити ваш RPi незавантаженим". https://www.raspberrypi.org/forums/viewtopic.php?p=916911#p916911 Навіть документація про оновлення rpi тепер попереджає "Навіть на Raspbian ви повинні використовувати це лише з поважної причини. Це дає вам останню перевагу кровотоку ядро / прошивка. "

У мене була така ж проблема. Оновлення прошивки вирішило це.

sudo rpi-update

Це вирішило це для мене, і здавалося, що необхідно, щоб Raspicam 2.1 працював для мене (я успішно використовував Rapicam 1.3 перед оновленням); оновлення оновило мене 4.1.7-v7+до 4.9.25-v7+, завдяки чому новіша модель працювала. Перехід від GPIO_MEM=128на GPIO_MEM=144мені в цьому випадку не був необхідним.
nh2

9

У мене була така ж проблема. Порівнюючи це з низкою інших публікацій, найімовірнішою відповіддю є те, що два процеси / програми намагаються отримати доступ до PiCam одночасно. Це може бути ffmpeg потокове, рух, raspivid, raspistill тощо.

Мої 0,02 долара


правда :)) втратив деяку кількість часу, я забув, що я встановив процес руху на
бекенді

2
Або октопринт (як це було для мене)
Саран

Я намагався запустити і raspivid, і сценарій python, який використовує бібліотеку picamera. Вони не можуть бігати разом
Данте,

Дуже дякую, я теж робив ту саму помилку, але інші пости допомогли мені оновити свою прошивку, розіграти пакунки тощо. Проблема все ще була, поки я цього не зробив sudo service motion stop. І знову почала працювати камера.
Аміт Рей

Просто пропоную і мою ситуацію, і рішення. Я імпортував picameraсценарій python, але він не працював, тому я вирішив raspistillзамість цього виклик командного рядка всередині сценарію. Я не видалив import picameraтак, що зайнявся ресурсом камери, перш ніж я міг ним користуватися raspistill.
Кімберлі W

6

Нещодавно у мене виникла та сама проблема помилки ENOSPEC. У моєму випадку все працювало ідеально, поки я не поставив камеру в корпус PiCam. Я виявив, що цей корпус (навіть якщо він призначений для PiCamera) підштовхує мікросхему так далеко, що роз'єм між кулачком і платою був розпущений. Натиснувши на місце, вирішив мою проблему. Можливо, не так просто зрозуміти, чи правильно роз'єднаний роз'єм, що спричинить неправильне тлумачення.

Я думаю, це не буде звичайним випадком, але, як запропонував перший пост, це повинно посилити каталогію можливих причин цієї помилки.


2

У мене було те саме повідомлення про помилку, оскільки я не оновлював прошивку (через sudo rpi-update) після ввімкнення камери через raspi-config. Я вже оновлював прошивку за кілька днів до цього, і думав, що цього буде достатньо, але оскільки камера не була включена тоді, це не допомогло.



1

Я спробував з останнім RASPBIAN STRETCH LITE (9.4 - 2018-06-27) в PI3B v1.2 з PI CAMERA 2.1, всі повністю оновлені (apt-get upgrade)

Якщо ця команда не виявляє камеру з " виявлено = 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

Потім червоний світлодіод на камері вимикається, і я можу використовувати raspivid для повторного включення камери.


0

У моєму випадку мені потрібно було знову встановити кабель на камеру. Я відключив його, щоб подати кабель через корпус; він, мабуть, не мав хорошого зв’язку.


0

Я отримав цю помилку в своєму комплекті AIY Vision (Pi Zero W), оскільки забув зупинити демонстраційну програму камери:

sudo systemctl stop joy_detection_demo

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.