Что вызывает ошибку 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, я подумал, что создам здесь вопрос для каталогизации возможных причин.

TomG
источник
Вы также используете его с датчиком температуры? Я сталкивался с этой проблемой каждый раз, когда запускал команду modprobe при настройке датчика температуры. См github.com/raspberrypi/linux/issues/435
Anconia
Получение этой проблемы также на изображениях OctoPi: github.com/guysoft/OctoPi/issues/31
GuySoft
Это 2019 год, и я не могу опубликовать новый ответ (закрыто), но я ранее установил raspimjpeg, который мне посчастливилось обнаружить с помощью 'ps -ef'. "sudo pkill raspimjpeg" затем решил проблему.
Гэвин Симпсон

Ответы:

19

На странице проекта GitHub для программного обеспечения камеры упоминается

Ошибка: ENOSPC отображается. Камера, вероятно, не хватает памяти графического процессора. Проверьте файл config.txt в папке / boot /. Опция gpu_mem должна быть не менее 128.

Эта проблема гласит, что эта ошибка может возникать из-за конфликта с драйверами для модулей 1-Wire (W1), если модули загружены не в правильном порядке.

В этом посте на форумах RPi говорится, что проблему можно решить, переключив контакт, используемый для 1-Wire, на контакт 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 сделало ошибку исчезающей.

TomG
источник
Я думаю, что вы имеете в виду gpu_mem, а не gpio_mem.
tedder42
14

Я использую движение на пи, если я хочу запустить 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.
schemacs
источник
Хотя это может быть ответом, он определенно будет улучшен с помощью некоторых разработок.
Bex
У меня не было движения, но у меня был другой демон, использующий камеру, и когда я остановился, я перестал получать сообщение об ошибке.
Ричард Уайзман,
Да, камера, кажется, может управляться только одним процессом.
schemacs
10

«В нормальных условиях НИКОГДА не нужно запускать rpi-update, так как он всегда приводит вас к передовой прошивке и ядру, и, поскольку это может быть тестовая версия, это может привести к тому, что ваш RPi не загрузится». https://www.raspberrypi.org/forums/viewtopic.php?p=916911#p916911 Даже документация об обновлении rpi теперь предупреждает: «Даже на Raspbian вы должны использовать это только по уважительной причине. Это дает вам последнее преимущество» ядро / прошивки «.

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

sudo rpi-update
user49119
источник
Это решило это для меня, и казалось необходимым заставить 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 доллара

Фрэнк
источник
правда :)) потерял некоторое количество времени, я забыл, что установил процесс движения на бэкэнд, мешающий доступу к камере
soField
2
Или octoprint (как это было для меня)
Saran
Я пытался запустить как raspivid, так и скрипт на python, использующий библиотеку picamera. Они не могут бежать вместе
Данте,
Большое спасибо, я тоже делал ту же ошибку, но другие посты помогли мне обновить мою прошивку, пакеты dist и т. Д., Проблема все еще была, пока я не сделал это sudo service motion stop. И камера снова заработала.
Амит Рэй
Просто предлагая мою ситуацию и решение, а также. Я импортировал picameraв скрипт на python, но он не работал, поэтому я решил raspistillвместо этого использовать вызов из командной строки внутри скрипта. Я не удалил, import picameraтак что он занимал ресурс камеры, прежде чем я мог использовать его с raspistill.
Кимберли W
6

Недавно я столкнулся с той же проблемой ошибки ENOSPEC. В моем случае все работало идеально, пока я не поместил свою камеру в корпус PiCam. Я обнаружил, что этот корпус (даже если он предназначен для PiCamera) толкает чип настолько, насколько ослаблен разъем между кулачком и платой. Сдвинув его на место, я решил свою проблему. Может быть, не так легко увидеть, правильно ли установлен разъем, что вызывает неправильную интерпретацию.

Я полагаю, что это не будет обычным случаем, но, как указывалось в первом посте, это должно улучшить каталог возможных причин этой ошибки.

BigB
источник
2

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

Anol
источник
2

В моем случае это было просто потому, что я не перезагружал свой пи после установки камеры.

Хейдон Берроу
источник
Никогда не присоединяйте камеру к пи, пока он включен!
Дмитрий Григорьев
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 для повторного включения камеры.

user97662
источник
0

В моем случае мне нужно было пересаживать кабель на камеру. Я отключил его, чтобы пропустить кабель через чехол; это, должно быть, не установило хорошую связь.

napertivo
источник
0

Я получил эту ошибку на моем AIY Vision Kit (Pi Zero W), потому что я забыл остановить демонстрационное приложение камеры:

sudo systemctl stop joy_detection_demo
Navin
источник
-1

Я решил мой с помощью chmod 666 / dev / video0

liderbug
источник