- Вопрос или проблема
- Ответ или решение
- Шаг 1: Убедитесь, что у вас установлены все необходимые зависимости
- Шаг 2: Установка и компиляция драйверов
- Шаг 3: Установка IPU6 CAMERA HAL и icamera
- Шаг 4: Устранение ошибок компиляции
- Шаг 5: Проверка работы камеры
- Шаг 6: Устранение проблемы с отсутствием прошивки
- Заключение
Вопрос или проблема
Я пытаюсь заставить веб-камеру на 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
-
Клонируйте репозиторий ipu6-camera-hal и icamerasrc:
git clone https://github.com/intel/ipu6-camera-hal git clone -b icamerasrc_slim_api https://github.com/intel/icamerasrc
-
Перейдите в каталог с собранными файлами и выполните команду для сборки:
cp build.sh .. && cd ..
-
Запустите скрипт сборки:
./build.sh
Если у вас по-прежнему возникают ошибки, такие как "gst_video_is_dma_drm_caps not declared", это может указывать на несовместимость используемых версий GStreamer с кодом, который вы пытаетесь скомпилировать. В таком случае проверьте вашу версию GStreamer и убедитесь, что она соответствует инструкциям.
Шаг 4: Устранение ошибок компиляции
Если вы столкнулись с ошибками при компиляции icamerasrc
, попробуйте обновить все пакеты и библиотеки, выполнив команду:
sudo apt update && sudo apt upgrade
Возможно, вам потребуется также очистить старые конструкции:
make clean
Затем повторите процесс сборки для icamerasrc
.
Шаг 5: Проверка работы камеры
После успешной компиляции и установки всех необходимостей, проверьте, работает ли камера:
-
Запустите программу, такую как
cheese
, чтобы проверить видео с веб-камеры:cheese
-
Проверить доступные видео-устройства можно с помощью:
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 для получения поддержки от сообщества.