К содержимому
  1. Главная
  2. Документация
  3. Камеры для Raspberry Pi
  4. Устранение неполадок

Устранение неполадок

Документация Arducam · перевод arducam-russia.ru

Перед обращением в поддержку

ВажноПрежде чем писать нам на quote@arducam-russia.ru, проверьте основное и подготовьте сведения, перечисленные ниже, — так проблему удастся решить быстрее.

Проверьте:

  • шлейф подключён правильно и надёжно;
  • у вас обычная версия камеры, а не специальная версия для платы Camarray;
  • установлена подходящая версия ОС Bullseye (устаревшую Buster использовать не рекомендуется);
  • драйвер, нужные пакеты libcamera-dev и libcamera-apps установлены без ошибок по руководству по установке libcamera.

Дополнительные проверки:

  1. Проверьте, правильно ли загружен драйвер:
dmesg | grep -E "imx477|imx219|arducam"
Вывод dmesg: сообщения драйвера камеры
  1. Проверьте, найден ли узел video0:
ls /dev/video0
Вывод команды ls /dev/video0

Какие сведения подготовить:

  • Оборудование: модель модуля камеры (например, артикул) или ссылка на товар, схема подключения.
  • Скриншот выполненных команд.
  • Сведения о системе — их выводят команды uname -a, cat /etc/os-release, cat /proc/meminfo, cat /boot/config.txt.
  • Системный журнал: dmesg | grep -E "imx477|imx219|arducam"
  • Журнал программы.
  • Сообщения об ошибках или скриншоты ошибок, которые выдаёт программа.

Устранение неполадок

1. Ошибка Cannot Allocate Memory

Сообщение об ошибке

[3:45:35.833744413] [6019] INFO RPI raspberrypi.cpp:611 Sensor: / base/soc/i2c0mux/i2c@1/arducam@0c – Selected mode: 5344×4012-pRAA
[3:45:35.948442507] [6019] ERROR V4L2 v4l2_videodevice.cpp:1126 /dev/video14[17:cap]: Unable to request 4 buffers: Cannot allocate memory
[3:45:35.948551358] [6019] ERROR RPI raspberrypi.cpp:808 Failed to allocate buffers
ERROR: failed to start camera

Решение

Откройте /boot/cmdline.txt и добавьте в конец строки cma=400M.

Параметр CMA=400M в конце строки параметров ядра

2. Цветные точки на изображении

Сообщение об ошибке

Цветные точки на изображении с камеры

Решение

Добавьте в конец команды параметр --denoise cdn_off:

Add code --denoise cdn_off at the end of command.
rpicam-still -t 5000 -o test.jpg --denoise cdn_off

3. Не удаётся установить драйвер

Сообщение об ошибке

Ошибка при установке драйвера

Решение

Проверьте версию ядра: Arducam выпускает драйвер только для последней официальной версии ядра на момент выхода камеры Pivariety.

4. Ошибка Failed to import fd 19

Сообщение об ошибке

Сообщение об ошибке импорта fd 19

Если у вас такая же ошибка, возможно, выбран неправильный графический драйвер.

Решение

СоветДля Raspbian Bullseye на Pi Zero — Pi 3 выполните следующее:
  1. Откройте терминал.
  2. Выполните sudo raspi-config.
  3. Перейдите в Advanced Options.
  4. Включите Glamor graphic acceleration.
  5. Перезагрузите Pi.

Кроме того, выполните ещё эти шаги:

  1. Откройте терминал.
  2. Выполните sudo raspi-config.
  3. Перейдите в Advanced Options.
  4. Перейдите в GL Driver.
  5. Выберите GL (Full KMS).
  6. Перезагрузите Pi.

Подробнее — в руководстве по настройке модуля камеры на официальном форуме Raspberry Pi.

Для Raspberry Pi Compute Module 3/4

Установите последнюю версию системы Raspberry Pi (выпуск после 28.01.2022) и не выполняйте rpi-update. После установки системы и драйверов (по инструкциям выше) добавьте в /boot/config.txt:

[cm4]
dtoverlay=imx519
dtoverlay=imx519,cam0
sudo reboot

Затем выведите список всех камер:

rpicam-still -–list-cameras

Укажите камеру:

rpicam-still -t 0 –camera 0
rpicam-still -t 0 –camera 1

Обратите внимание: в командах выше перед list-cameras и camera должны стоять два дефиса: --list-cameras, --camera.

5. Ошибка открытия шины I2C

Сообщение об ошибке

Ошибка открытия шины I2C

Решение

Выполните sudo raspi-config → Interface Options → I2C.

6. Переход на штатную камеру (raspistill и др.)

Решение

Чтобы использовать другие камеры, которым нужен штатный драйвер, откройте файл /boot/config.txt, найдите строку dtoverlay=arducam и закомментируйте её: # dtoverlay=arducam.

Закомментированная строка оверлея Arducam

После изменения перезагрузите Raspberry Pi.

sudo reboot

7. Ошибка выделения памяти на камере Arducam 64MP Hawkeye с автофокусом

Описание

Сейчас при съёмке камерой Arducam 64MP в максимальном разрешении на Raspberry Pi возникает проблема с выделением памяти. Выглядит это так:

Ошибка выделения памяти при съёмке камерой 64MP

Полного решения пока нет, но Arducam предлагает несколько способов обойти проблему.

Используйте Raspberry Pi OS Lite

В Arducam провели длительные испытания на Pi4B-8G, Pi4B-1G и Pi3B-1G. По их результатам, при съёмке камерой Arducam 64MP в максимальном разрешении Raspberry Pi OS Lite работает стабильнее (сбоев пока не выявлено).

Уменьшите разрешение предпросмотра

Если уменьшить разрешение предпросмотра, снимки 64 Мп тоже будут получаться чаще. Пример команды:

rpicam-still -t 5000 --viewfinder-width 2312 --viewfinder-height 1736 -o 64mp.jpg

Снимайте в разрешении 16 Мп

Пример команды:

rpicam-still -t 5000 --width 4624 --height 3472 --mode 4624:3472 -o 16mp.jpg

Измените порог выделения cma

Добавьте alloc_in_cma_threshold=16 в /boot/cmdline.txt:

Adding "alloc_in_cma_threshold=16" in /boot/cmdline.txt
ПримечаниеВо всех тестах значение cma — 512M (строка dtoverlay=vc4-kms-v3d,cma-512 в /boot/config.txt).

Для стабильной съёмки в 64 Мп Arducam рекомендует Raspberry Pi OS Lite; поиск других решений продолжается.

8. Максимальная скорость съёмки в полном разрешении камерой Arducam 64MP Hawkeye AF

Описание

Сохранение снимков с камеры Arducam 64MP занимает много времени из-за кодирования:

Время сохранения снимка 64 Мп

Как видно, сохранение снимка занимает больше двух секунд.

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

Пример

Пример на GitHub: «Fastest Capture Time for Arducam 64MP Camera».

Код:

#!/usr/bin/python3

import time

from picamera2 import Picamera2, Preview

i = 0
FrameRate = 2.7
frame_time = 1000000 // FrameRate 

start = time.time()

picam2 = Picamera2()
# picam2.start_preview(Preview.QTGL)

capture_config = picam2.create_still_configuration(main={"format": 'RGB888', "size": (9152, 6944)})
picam2.configure(capture_config)

# picam2.set_controls({"FrameDurationLimits":(frame_time, frame_time)})
picam2.start()

open_camera_time = time.time()
print("open time:" + str(open_camera_time -start))

while True:
    last_photo_time = time.time()
    picam2.capture_array("main")
    photo_time = time.time()
    print("picture {} take time: {}".format(i, photo_time - last_photo_time))

    i += 1

9. Горизонтальные полосы на снимках в максимальном разрешении с камерами 64MP Hawkeye

Описание

При съёмке в максимальном разрешении камерой Arducam 64MP с автофокусом на снимках могут возникать горизонтальные полосы:

Горизонтальные полосы на снимке 64 Мп

Решение

Проблема может быть связана с функцией шумоподавления ISP платформы Raspberry Pi. Решение:

При съёмке добавьте параметр --denoise cdn_off, например:

rpicam-still -t 5000 --denoise cdn_off --viewfinder-width 2312 --viewfinder-height 1736 --width 9152 --height 6944 -o arducam_64mp.jpg

10. picam2.switch_mode_and_capture_file «замораживает» программу и камеру

Описание

Некоторые пользователи сообщают, что при запуске capture_full_res.py (одного из примеров picamera в репозитории Raspberry Pi на GitHub) камера и программа зависают, и выйти можно только по Ctrl + C. Подробности — в обсуждении этой проблемы на GitHub. У Arducam есть временное решение: напишите нам на quote@arducam-russia.ru и укажите версию ядра Raspberry Pi, например 6.1.21.

Решение

Вам пришлют по электронной почте драйвер, собранный под ваше ядро. Перенесите архив на Raspberry Pi и выполните шаги:

  1. Закомментируйте строку dtoverlay=arducam-64mp в файле конфигурации (выполните sudo nano /boot/config.txt и прокрутите файл до конца — строка будет там).
  2. Выполните команды ниже, чтобы распаковать архив и установить драйвер камеры.
tar -xvf arducam_64mp_kernel_driver_6.1.21.tar.gz Release/
cd Release/
./install_driver.sh

Затем перезагрузите Raspberry Pi, чтобы изменения вступили в силу, и снова запустите capture_full_res.py, чтобы проверить, решена ли проблема.

Результат после установки драйвера

Учтите, что специальный драйвер может подойти не ко всем модулям камер Raspberry Pi и не ко всем версиям ядра. Этот драйвер для 64MP Arducam планирует в будущем передать в основное ядро Raspberry Pi.

11. Не работает PDAF у Arducam 64MP Hawkeye в Raspberry Pi OS Bookworm

Подготовка

Сначала убедитесь, что версия ядра — 6.1.63 или новее:

+'uname -v | grep -oP '\d+\.\d+\.\d+'
Проверка версии ядра

Если ядро старше 6.1.63, обновите его командами ниже и перезагрузите систему.

sudo apt-get update
sudo apt-get upgrade

Не используйте sudo rpi-update для обновления ядра до самой свежей версии.

Arducam поддерживает только стабильные версии ядра. Сейчас для камеры Arducam 64MP Hawkeye в Bookworm поддерживается ядро:

6.1.63

Шаг 1. Установите bash-скрипт
wget -O install_pivariety_pkgs.sh https://github.com/ArduCAM/Arducam-Pivariety-V4L2-Driver/releases/download/install_script/install_pivariety_pkgs.sh
chmod +x install_pivariety_pkgs.sh
Шаг 2. Установите драйвер камеры
./install_pivariety_pkgs.sh -p 64mp_pi_hawk_eye_kernel_driver

12. Ошибка тайм-аута при работе с платой-адаптером для нескольких камер на Pi 5

Сейчас при работе с платой-адаптером Arducam для нескольких камер (B012001) и камерой OV5647 на Raspberry Pi 5 может возникать ошибка тайм-аута.

pi@raspberrypi:~ $ rpicam-hello
WARNING: v3d support for hw version 71 is neither a complete nor a conformant OpenGL implementation. Testing use only.
Made X/EGL preview window
[0:09:41.969731058] [2860] INFO Camera camera_manager.cpp:284 libcamera v0.1.0+52-a858d20b
[0:09:41.988400159] [2865] INFO RPI pisp.cpp:657 libpisp version v0.0.1 2d39f8bff17b 22-08-2023 (09:04:26)
[0:09:42.024679523] [2865] WARN RPI pisp.cpp:1062 Mismatch between CFE and CamHelper for embedded data usage!
[0:09:42.025537897] [2865] INFO RPI pisp.cpp:1132 Registered camera /base/axi/pcie@120000/rp1/i2c@88000/ov5647@36 to CFE device /dev/media2 and ISP device /dev/media0 using PiSP variant BCM2712_C0
[0:09:42.025993380] [2860] WARN V4L2 v4l2_pixelformat.cpp:336 Unsupported V4L2 pixel format YM42
Stream configuration adjusted
[0:09:42.026329308] [2860] INFO Camera camera.cpp:1213 configuring streams: (0) 1296x972-YUV420
[0:09:42.026521179] [2865] INFO RPI pisp.cpp:1428 Sensor: /base/axi/pcie@120000/rp1/i2c@88000/ov5647@36 - Selected sensor format: 1296x972-SGBRG10_1X10 - Selected CFE format: 1296x972-PC1g
[0:09:43.101598515] [2865] WARN V4L2 v4l2_videodevice.cpp:2007 /dev/video4[21:cap]: Dequeue timer of 1000000.00us has expired!
[0:09:43.101730608] [2865] ERROR RPI pipeline_base.cpp:1337 Camera frontend has timed out!
[0:09:43.101756590] [2865] ERROR RPI pipeline_base.cpp:1338 Please check that your camera sensor connector is attached securely.
[0:09:43.101769034] [2865] ERROR RPI pipeline_base.cpp:1339 Alternatively, try another cable and/or sensor.
ERROR: Device timeout detected, attempting a restart!!!
[0:09:44.165689894] [2865] WARN V4L2 v4l2_videodevice.cpp:2007 /dev/video4[21:cap]: Dequeue timer of 1000000.00us has expired!
[0:09:44.165783117] [2865] ERROR RPI pipeline_base.cpp:1337 Camera frontend has timed out!
АртикулСенсорРазрешениеРазъём (контакты, сторона)ОсобенностиОбъективУгол обзора (Г × В)ФокусировкаЧувствительность к ИК
B012001———Плата-адаптер для четырёх камер————

Чтобы решить проблему, нужно заменить драйвер фронтенда камеры.

Скачайте файл драйвера

rp1-cfe.ko.xz

Переключитесь на нужную ветку

Сначала переключите систему на ветку 5744. После выполнения команды перезагрузите Raspberry Pi, чтобы изменения вступили в силу.

sudo rpi-update pulls/5744
sudo reboot
Переключение системы на ветку 5744

Замените драйвер фронтенда камеры RP1

Узнайте, где находится драйвер:

modinfo rp1-cfe
Расположение драйвера в выводе modinfo

Сделайте резервную копию исходного драйвера:

sudo mv /lib/modules/6.1.63-v8-16k+/kernel/drivers/media/platform/raspberrypi/rp1_cfe/rp1-cfe.ko.xz /lib/modules/6.1.63-v8-16k+/kernel/drivers/media/platform/raspberrypi/rp1_cfe/rp1-cfe.ko.xz.bak
Резервная копия исходного драйвера

Скопируйте модифицированный драйвер в каталог платформы:

sudo cp ./rp1-cfe.ko.xz /lib/modules/6.1.63-v8-16k+/kernel/drivers/media/platform/raspberrypi/rp1_cfe/
Копирование модифицированного драйвера

Обновите список модулей:

sudo depmod -a

Перезагрузите систему:

sudo reboot

Предпросмотр

rpicam-still -t 0
Предпросмотр с камеры после замены драйвера, шаг 1
Предпросмотр с камеры после замены драйвера, шаг 2

13. Ошибка установки libcamera

Ошибка при установке libcamera

Если при установке libcamera возникает такая ошибка, обновите пакет командой ./install_pivariety_pkgs.sh -l — это решит проблему.

14. Не удаётся обновить ядро после команды rpi-update

Если после обновления ядра Raspberry Pi OS и прошивки VideoCore до последней предварительной версии командой rpi-update возникает ошибка и обновление не проходит, решите проблему так.

Проявление ошибки:

Обновление не применяется командами:

sudo apt-get update 
sudo apt-get upgrade

Решение:

Обойдите ошибку командой:

sudo apt-get dist-upgrade

15. Искажённое изображение с камеры IMX477

ОписаниеЕсли при работе с камерой IMX477 первый кадр получается искажённым, решите проблему обновлением прошивки.
Пример искажённых изображений
Искажение цветового фильтраСнимок белой сцены
Скачайте пакет обновления прошивки:

Обновление прошивки (tar.gz)

Распакуйте архив и выполните:
chmod +x firmware_update
./firmware_update -i 10 -m imx477_m 
Обновление прошивки камеры IMX477

16. Камера OV9281 не работает в новой версии системы Raspberry Pi

Описание проблемы

При запуске камеры OV9281 в новой версии системы Raspberry Pi могут возникать ошибки. Чаще всего встречаются такие:

Ошибка libcamera
Ошибка в выводе dmesg
  1. Ошибка libcamera.
  2. Ошибка dmesg.

Решение

Чтобы решить проблему, обновите device tree:

  1. Скачайте обновлённый пакет device tree.
  2. Распакуйте скачанный архив: unzip update_ov9281.zip
  3. Перейдите в распакованную папку: cd update_ov9281
  4. Запустите скрипт обновления: ./update_ov9281_dtbo.sh
  5. Перезагрузите Raspberry Pi: sudo reboot

После этого камера OV9281 должна работать на вашем Raspberry Pi правильно.

Дополнительно

Перед тем как применять это решение, обновите операционную систему Raspberry Pi. Если после этих шагов проблема осталась, проверьте подключение камеры и обратитесь к официальной документации Raspberry Pi по устранению неполадок.

17. Затенение объектива на камере OV9281

Описание проблемы

С файлом конфигурации по умолчанию камера OV9281 при предпросмотре даёт виньетирование (тёмные углы), как на снимке ниже:

Снимок OV9281 до калибровки: тёмные углы кадра

Решение

Чтобы решить проблему, используйте файлы коррекции затенения объектива:

  • Для Raspberry Pi 5: pi5_ov9281_mono.json
  • Для Raspberry Pi 4: pi4_ov9281_mono.json

Порядок действий

  1. Скачайте файл коррекции затенения для своей модели Raspberry Pi.
  2. Перенесите файл на Raspberry Pi.
  3. Примените коррекцию затенения командой:

Для Raspberry Pi 4:

rpicam-still -t 5000 --tuning-file ./pi4_ov9281_mono.json -o ov9281_lens.jpg

Для Raspberry Pi 5:

rpicam-still -t 5000 --tuning-file ./pi5_ov9281_mono.json -o ov9281_lens.jpg

Эта команда:

  • делает снимок после 5-секундного предпросмотра;
  • применяет коррекцию затенения с указанным файлом настроек;
  • сохраняет результат в файл ov9281_lens.jpg.

Проверьте полученный снимок и убедитесь, что затенения больше нет.

После коррекции затенения виньетирование должно исчезнуть. Пример снимка с исправленным затенением:

Снимок OV9281 после калибровки затенения

Как видно, тёмных углов больше нет: изображение равномернее и качественнее по всему кадру.

18. Ошибка No camera available

Здесь описано, как найти и устранить причину ошибки No camera available при работе с камерой на Raspberry Pi.

1. Описание проблемы

При запуске команд rpicam может возникнуть ошибка No camera available. Обычно ей сопутствуют такие признаки:

Ошибка No camera available
  • Команда ls /dev/video0 возвращает no such file or directory — система не видит камеру.
  • Команда dmesg | grep -E "imx|arducam" (например, для модуля камеры imx519) выводит ошибки, как на скриншоте. Обычно это говорит о сбое инициализации модуля камеры.

2. Возможные причины

Как правило, ошибка возникает по одной из причин:

  1. Неправильно подключён шлейф FFC. Гибкий плоский шлейф (FFC), соединяющий модуль камеры с Raspberry Pi, вставлен не до конца или с перекосом.
  2. Нет нужных настроек в config.txt или они неверны. В файле конфигурации Raspberry Pi config.txt нет нужного оверлея камеры, или настройки не подходят к вашему модулю камеры.
  3. Неисправен шлейф FFC. Если подключение выглядит правильным и настройки на месте, возможно, повреждён сам шлейф.

3. Порядок проверки

Чтобы найти и устранить причину ошибки No camera available, выполните шаги:

  1. Проверьте подключение шлейфа FFC. Внимательно осмотрите оба конца шлейфа: металлические контакты должны быть чистыми и целыми. Убедитесь, что шлейф плотно вставлен в разъёмы CSI и на Raspberry Pi, и на модуле камеры. Особое внимание — ориентации металлических контактов: они должны быть повёрнуты правильной стороной и надёжно касаться контактов разъёма.
  2. Проверьте настройки в config.txt. Откройте файл config.txt — обычно он находится в каталоге /boot/ (Bullseye) или /boot/firmware (Bookworm). Прокрутите файл до конца и найдите раздел [all]. Например, для модуля камеры imx519 под [all] должна быть строка dtoverlay=imx519. Если её нет, добавьте. Если есть, проверьте, нет ли опечаток или ошибок в записи. Важно: после любых изменений в config.txt перезагрузите Raspberry Pi, чтобы они вступили в силу.
  3. Проверьте с заведомо исправным шлейфом FFC. Если есть запасной шлейф, который точно работает, замените им текущий. Так станет понятно, неисправен ли исходный шлейф.

Последовательно проверив эти три возможные причины, вы сможете найти и устранить ошибку No camera available с камерой Raspberry Pi.

19. Объектив M12 не вращается (кажется заклинившим или закреплённым)

Описание

Иногда объектив M12 не удаётся повернуть вручную, чтобы настроить фокус, — кажется, что он закреплён намертво.

Причина

Чтобы объектив не раскрутился при транспортировке или от вибрации, Arducam перед отгрузкой с завода наносит на резьбу крепления M12 немного фиксирующего клея. Фокус остаётся стабильным, но первая настройка может быть затруднена.

Решение

Прежде чем вращать объектив, размягчите клей.

  1. Прогрейте. Аккуратно прогрейте основание держателя объектива феном или термофеном — клей размягчится.
  2. Осторожно поверните. Когда клей размягчится, крепко возьмитесь за объектив и поверните его, чтобы сорвать клеевой шов.
  3. Настройте фокус. Теперь объектив должен свободно вращаться, и фокус можно точно настроить.
Примечание. Не перегрейте сенсор и плату камеры. Прогревайте короткими интервалами, пока объектив не сдвинется.

20. Проблема: не удаётся снимать в 64 Мп на Pi Zero

Признак. При запуске съёмки (например, libcamera-still или rpicam-still) в полном разрешении на Raspberry Pi Zero или Zero 2 W процесс падает, зависает или выдаёт ошибку "Out of Memory" / "CMA allocation" error".

Причина. У плат серии Pi Zero мало оперативной памяти. Обработка сырых данных 64 Мп требует большого непрерывного объёма памяти. Графическая оболочка (GUI) занимает слишком много системной памяти, и драйверу камеры её не хватает.

Решение. Чтобы снимать в полном разрешении 64 Мп на Pi Zero, нужна система без графической оболочки (headless).

  • Смените ОС. Запишите Raspberry Pi OS Lite (в ней нет графической оболочки).
  • Отключите GUI. Если без настольной версии ОС не обойтись, перед съёмкой загрузитесь в консоль или остановите службу lightdm, чтобы освободить память:
sudo systemctl stop lightdm

Запросить цену

Укажите количество — пришлём коммерческое предложение.