Вопрос или проблема
Недавно я купил ACER Aspire 5 с встроенной веб-камерой и установил Ubuntu 24.04 LTS, но хотя веб-камера и обнаружена, драйвер не загружается. Я прочитал, что версия 24.10 с ядром 6.11.0.9 содержала исправление для веб-камеры 0408-4035, поэтому решил установить эту бета-версию вместо этого.
Хотя исправление для 0408-4035 действительно включено, к сожалению, исправление для 0408-4033 отсутствует.
Итак, я скачал исходный код ядра, внес необходимые изменения в код и пересобрал, как уже описывалось в другом месте.
Встроенная веб-камера не работает – Acer Aspire A515-57G – Ubuntu 24.04 LTS
Однако модули также сжимаются и подписываются, поэтому я попробовал следующее:
-
сгенерировал открытые/закрытые ключи
openssl req -new -x509 -newkey rsa:2048 -keyout key.priv -outform DER -out key.der -nodes -days 36500
-
подписал сгенерированный uvcvideo.ko
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ~/key.priv ~/key.der uvcvideo.ko
-
сжал подписанный драйвер
zstd –ultra -22 uvcvideo.ko
-
скопировал сжатый драйвер
sudo cp uvcvideo.ko.zst /lib/modules/$(uname -r)/kernel/drivers/media/usb/uvc/
-
зарегистрировал открытый ключ в системе MOK
sudo mokutil –import ~/key.der
После перезагрузки modinfo uvcvideo показал изменения подписи (подписывающее лицо: cedric), но modprobe указывает, что модуль не может быть загружен:
modprobe: INFO: ../libkmod/libkmod.c:405 kmod_set_log_fn() пользовательская функция логирования 0x5bdec2fa7f40 зарегистрирована
insmod /lib/modules/6.11.0-9-generic/kernel/drivers/media/usb/uvc/uvcvideo.ko.zst
modprobe: INFO: ../libkmod/libkmod-module.c:985 kmod_module_insert_module() Не удалось вставить модуль ‘/lib/modules/6.11.0-9-generic/kernel/drivers/media/usb/uvc/uvcvideo.ko.zst’: Нет такого файла или каталога
modprobe: ERROR: не удалось вставить ‘uvcvideo’: Неизвестный символ в модуле или неизвестный параметр (см. dmesg)
modprobe: INFO: ../libkmod/libkmod.c:372 kmod_unref() контекст 0x5bded6ff83e0 освобожден
и dmesg указывает следующее:
[ 351.589525] uvcvideo: загрузка модуля вне дерева загрязняет ядро.
[ 351.589559] uvcvideo: Неизвестный символ vb2_queue_init (ошибка -2)
[ 351.589589] uvcvideo: Неизвестный символ vb2_streamoff (ошибка -2)
[ 351.589594] uvcvideo: Неизвестный символ vb2_queue_release (ошибка -2)
[ 351.589600] uvcvideo: Неизвестный символ vb2_ioctl_streamoff (ошибка -2)
[ 351.589609] uvcvideo: Неизвестный символ vb2_poll (ошибка -2)
[ 351.589618] uvcvideo: Неизвестный символ vb2_ops_wait_finish (ошибка -2)
[ 351.589625] uvcvideo: Неизвестный символ uvc_format_by_guid (ошибка -2)
[ 351.589631] uvcvideo: Неизвестный символ vb2_dqbuf (ошибка -2)
[ 351.589641] uvcvideo: Неизвестный символ vb2_ioctl_querybuf (ошибка -2)
[ 351.589651] uvcvideo: Неизвестный символ vb2_reqbufs (ошибка -2)
[ 351.589665] uvcvideo: Неизвестный символ vb2_expbuf (ошибка -2)
[ 351.589672] uvcvideo: Неизвестный символ vb2_fop_release (ошибка -2)
[ 351.589677] uvcvideo: Неизвестный символ vb2_streamon (ошибка -2)
[ 351.589690] uvcvideo: Неизвестный символ vb2_ioctl_dqbuf (ошибка -2)
[ 351.589694] uvcvideo: Неизвестный символ vb2_querybuf (ошибка -2)
[ 351.589697] uvcvideo: Неизвестный символ vb2_ioctl_create_bufs (ошибка -2)
[ 351.589700] uvcvideo: Неизвестный символ vb2_ioctl_prepare_buf (ошибка -2)
[ 351.589704] uvcvideo: Неизвестный символ vb2_qbuf (ошибка -2)
[ 351.589712] uvcvideo: Неизвестный символ vb2_buffer_done (ошибка -2)
[ 351.589715] uvcvideo: Неизвестный символ vb2_plane_vaddr (ошибка -2)
[ 351.589734] uvcvideo: Неизвестный символ vb2_ioctl_qbuf (ошибка -2)
[ 351.589737] uvcvideo: Неизвестный символ vb2_fop_mmap (ошибка -2)
[ 351.589741] uvcvideo: Неизвестный символ vb2_vmalloc_memops (ошибка -2)
[ 351.589775] uvcvideo: Неизвестный символ vb2_ops_wait_prepare (ошибка -2)
[ 351.589781] uvcvideo: Неизвестный символ vb2_ioctl_streamon (ошибка -2)
[ 351.589784] uvcvideo: Неизвестный символ vb2_fop_poll (ошибка -2)
[ 351.589787] uvcvideo: Неизвестный символ vb2_create_bufs (ошибка -2)
[ 351.589794] uvcvideo: Неизвестный символ vb2_mmap (ошибка -2)
[ 351.589807] uvcvideo: Неизвестный символ vb2_ioctl_reqbufs (ошибка -2)
Есть ли какие-либо предложения, как исправить эту проблему? Что я делаю не так?
Заранее спасибо,
Cédric
Ответ или решение
Здравствуйте, Седрик!
Проблема, с которой вы столкнулись, действительно непростая, и я постараюсь помочь вам разобраться с ней. Учитывая, что ваша встроенная веб-камера Quanta 0408-4033 не работает в Ubuntu 24.10, в то время как вы сделали все необходимые шаги для работы модуля uvcvideo
, есть несколько аспектов, на которые стоит обратить внимание.
1. Проверка совместимости и зависимости
Первым шагом вам следует убедиться, что у вас установлены все необходимые зависимые модули и программы. Ошибки, которые вы видите, указывают на то, что недостает некоторых символов, необходимых для работы модуля. Эти символы могут быть частью других модулей видеоподсистемы, которые должны быть загружены до uvcvideo
. Проверьте, загружены ли следующие модули:
lsmod | grep vb2
Если они не загружены, попробуйте загрузить их вручную:
sudo modprobe videodev
sudo modprobe videobuf2-core
sudo modprobe videobuf2-vmalloc
sudo modprobe videobuf2-dma-sg
2. Пересборка модуля с учетом зависимостей
Убедитесь, что при выполнении пересборки модуля uvcvideo
вы используете правильные заголовки ядра, соответствующие вашей версии ядра (6.11.0-9). Выполните команды:
sudo apt-get install linux-headers-$(uname -r)
После этого попробуйте снова пересобрать модуль, чтобы быть уверенным, что все зависимости учтены и модули правильно связаны.
3. Проверка ошибок в dmesg
Ошибки, которые вы видите в выводе dmesg, указывают на проблемы с символами. Чтобы понять, какой модуль отсутствует, выполните:
dmesg | grep vb2
Если вывод покажет, какие именно символы отсутствуют, это поможет вам понять, какие модули нужно установить или загрузить.
4. Использование обновленных драйверов
Пока вы пытаетесь внедрить модификации, возможно, стоит проверить, есть ли более новые версии драйверов в официальных репозиториях Ubuntu или в сторонних источниках, таких как PPA, которые могут быть полезными. Иногда проблема с совместимостью может быть решена установкой более новейшего ядра:
sudo apt-get install linux-generic-hwe-20.04
5. Дальнейшие действия
Если перечисленные шаги не помогли, вам стоит проверить обсуждения на форумах Ubuntu и в репозиториях GitHub на предмет известных проблем с вашей веб-камерой (0408-4033) и аналогичными ситуациями с модулями uvcvideo
и vb2
.
Заключение
Проблемы с драйверами могут быть сложными, особенно когда речь идет о встроенной аппаратуре. Убедитесь, что все модули и зависимости загружены, а также рассмотрите возможность использования большей поддержки со стороны сообщества.
Если у вас есть дополнительные вопросы или нужна помощь с одной из предложенных рекомендаций, не стесняйтесь обращаться! Надеюсь, эти советы помогут вам преодолеть трудности и успешно запустить вашу веб-камеру.
Удачи,
[Ваше имя]