Как лучше решить ошибку идентификации камер IMX378/IMX477 на Raspberry Pi?

Ссылка скопирована
1 ответ

По вводным: к Raspberry Pi5 (ОС Linux 6.12.62+rpt-rpi-2712) подключены две камеры IMX378-79 (родом из Китая). На платах камер чётко указана маркировка IMX378, однако система частично идентифицирует их как IMX477, что приводит к следующим симптомам:

  1. В логахdmesgПо вводным: наблюдается противоречие: DT объявляет устройства какimx477@1aПо вводным:, но драйвер при чтении регистра идентификатора определяет их какimx378;
  2. По вводным: система переключается на универсальный драйверrp1‑cfeПо вводным:, после чего камеры обнаруживаются (rpicam‑helloПо вводным: показывает режимы), но выводят картинку с одной и той же камеры (по отдельности каждая камера работает исправно);
  3. Вv4l2‑ctl --list‑devicesПоявляются устройстваrp1‑cfe, а неimx378‑0/imx378‑1

Что уже сделано

  1. По вводным: проверена физическая маркировка сенсоров — точно IMX378;
  2. Менял камеры местами
  3. Вconfig.txtПо вводным: удалены все упоминания imx477 и rp1‑cfe;
  4. По вводным: добавлены оверлеи для IMX378:
    camera_auto_detect=0 dtoverlay=imx378,cam0,i2c_bus=10,address=0x1a,sensor_model=imx378 dtoverlay=imx378,cam1,i2c_bus=11,address=0x1a,sensor_model=imx378

  5. Прописывал руками вconfig.txt imx477Вместоimx378Сейчас ситуация такая: - камеры не определяются совсем

Актуальные логи
1.dmesg | grep imx

[ 0.032973] /axi/pcie@1000120000/rp1/i2c@80000/imx477@1a: Fixed dependency cycle(s) with /axi/pcie@1000120000/rp1/csi@128000 [ 3.020907] imx477 11-001a: Device found is imx378 [ 3.372901] imx477 10-001a: Device found is imx378 [ 3.374378] rp1-cfe 1f00110000.csi: Using sensor imx477 10-001a for capture

2.v4l2-ctl --list-devices

rp1-cfe (platform:1f00110000.csi): /dev/video8 /dev/video9 ... /dev/media1 rp1-cfe (platform:1f00128000.csi): /dev/video0 /dev/video1 ... /dev/media4

3.rpicam-hello --list-cameras

0 : imx477 [4056x3040 12-bit RGGB] (/base/axi/pcie@1000120000/rp1/i2c@88000/imx477@1a) Modes: 'SRGGB10_CSI2P' : 1332x990 [120.50 fps - (696, 528)/2664x1980 crop] ... 1 : imx477 [4056x3040 12-bit RGGB] (/base/axi/pcie@1000120000/rp1/i2c@80000/imx477@1a) Modes: 'SRGGB10_CSI2P' : 1332x990 [120.50 fps - (696, 528)/2664x1980 crop] ...

4.i2cdetect-y 10 иi2cdetect -y 11

0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --

Нужно понять: в результате вопрос: можно ли что-то сделать с камерой или настройками DT, чтобы камеры стали адекватно восприниматься?

Нужно решить такую задачу?

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

Заказать помощь
Лучший ответ
1
Анна SEO Ответ

В вашем случае конфликт выглядит как несовпадение Device Tree overlay и реального сенсора/драйвера. DT объявляет imx477@1a, драйвер читает ID как IMX378, затем всё уходит через rp1-cfe, и две камеры начинают вести себя как одна. На Raspberry Pi 5 это особенно чувствительно, потому что камера идёт через новую подсистему RP1/CFE и overlays должны точно соответствовать портам.

Сначала проверьте, какие overlays реально применились после загрузки:

sudo vcdbg log msg 2>&1 | grep -i -E "imx|camera|overlay"
dmesg | grep -i -E "imx|cfe|camera|i2c"

sudo vcdbg log msg 2>&1 | grep -i -E "imx|camera|overlay" dmesg | grep -i -E "imx|cfe|camera|i2c"

Затем проверьте I2C-шины и адреса:

i2cdetect -y 10
i2cdetect -y 11

i2cdetect -y 10 i2cdetect -y 11

Если обе камеры отвечают на одинаковом адресе, это нормально для разных шин. Но если overlay фактически вешает обе на один bus или один endpoint, получите одинаковую картинку.

Для Pi 5 убедитесь, что используете overlays, поддерживаемые именно вашей версией Raspberry Pi OS/kernel. Китайские модули IMX378 могут иметь нестандартный EEPROM или вообще быть совместимыми только с кастомным overlay. Маркировка на плате важна, но драйверу нужны корректные DT endpoints, clock, link-frequency, rotation/orientation и port mapping.

Я бы временно упростил конфиг: подключить одну камеру к cam0, добиться стабильного определения как IMX378; затем одну к cam1; только после этого включать две одновременно. Если по одной каждая работает, а вместе дублируется изображение, причина почти точно в overlay/endpoint mapping.

Итог: проверяйте не только строку dtoverlay, а фактически применённое дерево и dmesg. Для двух IMX378 на Pi 5 может понадобиться корректный кастомный overlay от производителя камеры или правка existing overlay, иначе система будет fallback-ить в rp1-cfe и путать источники.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно