Как заставить веб-камеру ipu6 (XPS 14 9440) работать на платформе Meteor Lake?

Вопрос или проблема

Я пытаюсь заставить веб-камеру на XPS 14 9440 работать под Ubuntu 23.10. Поскольку ноутбук основан на Meteor Lake, мне нужно использовать современное ядро (>= 6.7), чтобы получить правильную поддержку Meteor Lake. Я использую основное ядро 6.8.

$ uname -a
Linux christoph-XPS-14-9440 6.8.1-060801-generic #202403151937 SMP PREEMPT_DYNAMIC Fri Mar 15 19:52:22 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

К сожалению, в настоящее время нет заранее собранных драйверов IPU6 для ядер >= 6.7, потому что на данный момент (29 марта 2024 года) есть открытые PR (https://github.com/intel/ivsc-driver/pull/44, https://github.com/intel/ipu6-drivers/pull/213), которые необходимы для того, чтобы они работали на современных ядрах.

Как я могу правильно заставить драйверы работать?
Меня совершенно путает, что делают все эти вещи и как они взаимодействуют, чтобы веб-камера заработала. Я в основном просто следовал README без особых знаний о том, как всё связано. Итак, если ipu6 — это фактические драйверы, то что такое icamera, IPU6 HAL и как всё это связано с Gstreamer, чтобы веб-камера работала в приложениях?

Я попытался скомпилировать это самостоятельно, и это успешно сработало с ipu6-drivers (включая ivsc-driver). Они были успешно скомпилированы и загружены, насколько я вижу.

$ sudo dmesg | grep ipu6
[    2.930531] intel_ipu6: loading out-of-tree module taints kernel.
[    2.930538] intel_ipu6: module verification failed: signature and/or required key missing - tainting kernel
[    2.952118] intel-ipu6 0000:00:05.0: enabling device (0000 -> 0002)
[    2.953006] intel-ipu6 0000:00:05.0: Device 0x7d19 (rev: 0x4)
[    2.953039] intel-ipu6 0000:00:05.0: physical base address 0x5a2c000000
[    2.953043] intel-ipu6 0000:00:05.0: mapped as: 0x00000000dd7e4357
[    2.953110] intel-ipu6 0000:00:05.0: IPU in secure mode
[    2.953114] intel-ipu6 0000:00:05.0: IPU secure touch = 0x80000000
[    2.953115] intel-ipu6 0000:00:05.0: IPU camera mask = 0x0
[    2.964890] intel-ipu6 0000:00:05.0: IPC reset done
[    2.964895] intel-ipu6 0000:00:05.0: cpd file name: intel/ipu6epmtl_fw.bin
[    3.029032] intel-ipu6 0000:00:05.0: FW version: 20230925
[    3.053964] intel-ipu6 0000:00:05.0: Found supported sensor OVTI02C1:00
[    3.054199] intel-ipu6 0000:00:05.0: Connected 1 cameras
[    3.055424] intel-ipu6 0000:00:05.0: Sending BOOT_LOAD to CSE
[    3.090594] intel-ipu6 0000:00:05.0: Sending AUTHENTICATE_RUN to CSE
[    3.137096] intel-ipu6 0000:00:05.0: CSE authenticate_run done
[    3.137135] intel-ipu6 0000:00:05.0: IPU6-v4 driver version 1.0
[    4.221346] intel-ipu6-psys intel-ipu6-psys0: pkg_dir entry count:8
[    4.223677] intel-ipu6-psys intel-ipu6-psys0: psys probe minor: 0
$ lsmod | grep ipu6
intel_ipu6_isys       159744  0
videobuf2_dma_contig    24576  1 intel_ipu6_isys
videobuf2_v4l2         40960  1 intel_ipu6_isys
videobuf2_common       86016  4 videobuf2_dma_contig,videobuf2_v4l2,intel_ipu6_isys,videobuf2_memops
intel_ipu6_psys       110592  0
v4l2_fwnode            40960  2 ov02c10,intel_ipu6_isys
v4l2_async             28672  3 v4l2_fwnode,ov02c10,intel_ipu6_isys
videodev              364544  5 v4l2_async,v4l2_fwnode,videobuf2_v4l2,ov02c10,intel_ipu6_isys
intel_ipu6            122880  2 intel_ipu6_isys,intel_ipu6_psys
mc                     86016  7 v4l2_async,videodev,snd_usb_audio,videobuf2_v4l2,ov02c10,intel_ipu6_isys,videobuf2_common

Однако, насколько я понимаю, мне нужно дополнительно скомпилировать ipu6-camera-hal, включая icamerasrc (https://github.com/intel/ipu6-drivers), чтобы веб-камера действительно работала в приложениях (Google Chrome был бы для меня наиболее важным).
Я склонировал https://github.com/intel/ipu6-camera-hal и разместил его рядом с веткой icamerasrc_slim_api репозитория icamera, как указано в README.

#из readme https://github.com/intel/ipu6-camera-hal?tab=readme-ov-file#build-instructions

cp build.sh .. && cd ..
# work
# ├── build.sh
# ├── icamerasrc
# ├── ipu6-camera-hal
# └── out
$ ls
build.sh  icamerasrc  ipu6-camera-hal  out

Когда я теперь пытаюсь запустить build.sh, кажется, что он успешно собирает ipu6-camera-hal, но не удается на icamerasrc.

mv -f .deps/libgsticamerasrc_la-gstcampushsrc.Tpo .deps/libgsticamerasrc_la-gstcampushsrc.Plo
utils.cpp: In function 'gboolean CameraSrcUtils::gst_video_info_from_dma_drm_caps(GstVideoInfo*, const GstCaps*)':
utils.cpp:361:8: error: 'gst_video_is_dma_drm_caps' was not declared in this scope; did you mean 'gst_video_info_from_caps'?
  361 |   if (!gst_video_is_dma_drm_caps(caps)) {
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~
      |        gst_video_info_from_caps
utils.cpp:366:5: error: 'GstVideoInfoDmaDrm' was not declared in this scope; did you mean 'GstVideoInfo'?
  366 |     GstVideoInfoDmaDrm drm_info;
      |     ^~~~~~~~~~~~~~~~~~
      |     GstVideoInfo
utils.cpp:367:44: error: 'drm_info' was not declared in this scope; did you mean 'g_info'?
  367 |     if (!gst_video_info_dma_drm_from_caps(&drm_info, caps)) {
      |                                            ^~~~~~~~
      |                                            g_info

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

Сегодня столкнулся с тем же самым. Убедитесь, что вы сделали то, что указано в инструкциях (по крайней мере, на сегодня)

sudo apt install libexpat-dev automake libtool libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libdrm-dev

Мне пришлось добавить

sudo apt install libva-dev libgstreamer-plugins-bad1.0-dev 

также (не указано в инструкциях) Я смог всё скомпилировать нормально (Ubuntu 24.04 с установленным основным и ядром 6.9.2, скомпилированным под это ядро)

Я на Ubuntu 24.10 с 6.11.0-9, и не могу заставить свою камеру работать: “Прямой загрузки прошивки для intel/ipu6epmtl_fw.bin не удалось с ошибкой -2” Полагаю, это та же проблема, верно?

Ответ или решение

Для того чтобы настроить веб-камеру IPU6 на вашем ноутбуке Dell XPS 14 9440 с платформой Meteor Lake под управлением Ubuntu 23.10, выполните следующие шаги. Этот процесс включает компиляцию необходимых драйверов и компонентов, а также их конфигурацию для совместной работы.

Шаг 1: Убедитесь, что у вас установлены все необходимые зависимости

Для начала вам понадобятся библиотеки, необходимые для компиляции драйверов и камеры. Выполните следующую команду в терминале:

sudo apt install libexpat-dev automake libtool libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libdrm-dev libva-dev libgstreamer-plugins-bad1.0-dev

Эти пакеты обеспечивают поддержку разработки GStreamer и других необходимых инструментов.

Шаг 2: Установка и компиляция драйверов

Поскольку вы уже скомпилировали ipu6-drivers и ivsc-driver, убедитесь, что их версия актуальна и загружена в ваше ядро. Проверьте загруженные модули:

lsmod | grep ipu6

При успешной загрузке должны отображаться модули, касающиеся IPU6. Если все в порядке, перейдите к компиляции IPU6 CAMERA HAL и icamera.

Шаг 3: Установка IPU6 CAMERA HAL и icamera

  1. Клонируйте репозиторий ipu6-camera-hal и icamerasrc:

    git clone https://github.com/intel/ipu6-camera-hal
    git clone -b icamerasrc_slim_api https://github.com/intel/icamerasrc
  2. Перейдите в каталог с собранными файлами и выполните команду для сборки:

    cp build.sh .. && cd ..
  3. Запустите скрипт сборки:

    ./build.sh

Если у вас по-прежнему возникают ошибки, такие как "gst_video_is_dma_drm_caps not declared", это может указывать на несовместимость используемых версий GStreamer с кодом, который вы пытаетесь скомпилировать. В таком случае проверьте вашу версию GStreamer и убедитесь, что она соответствует инструкциям.

Шаг 4: Устранение ошибок компиляции

Если вы столкнулись с ошибками при компиляции icamerasrc, попробуйте обновить все пакеты и библиотеки, выполнив команду:

sudo apt update && sudo apt upgrade

Возможно, вам потребуется также очистить старые конструкции:

make clean

Затем повторите процесс сборки для icamerasrc.

Шаг 5: Проверка работы камеры

После успешной компиляции и установки всех необходимостей, проверьте, работает ли камера:

  1. Запустите программу, такую как cheese, чтобы проверить видео с веб-камеры:

    cheese
  2. Проверить доступные видео-устройства можно с помощью:

    v4l2-ctl --list-devices

Шаг 6: Устранение проблемы с отсутствием прошивки

Если вы видите ошибку "Direct firmware load for intel/ipu6epmtl_fw.bin failed with error -2", это означает, что ваш драйвер не может найти необходимый файл прошивки. Вам нужно будет найти и установить данный файл. Обычно он доступен в репозиториях поддержки вашего дистрибутива или на GitHub у Intel.

Заключение

Порядок действий, описанный выше, должен помочь вам настроить работу веб-камеры IPU6 на вашем ноутбуке Dell XPS 14 9440 с платформой Meteor Lake под управлением Ubuntu 23.10. Если вы столкнулись с дальнейшими трудностями, рекомендую обратиться на специализированные форумы или GitHub для получения поддержки от сообщества.

Оцените материал
Добавить комментарий

Капча загружается...