LINUX.ORG.RU

Слетел драйвер вебкамеры после установки linuxtv

 , ,


0

1

Приветствую.

Как-то нашел в кладовке старый стик DVB-T2 тюнер и решил заставить его работать под линухом.

В числе прочих рекомендаций, устанавливал набор модулей linuxtv. Тюнер не заработал, но перестала определяться вебкамера :(

Камера Logitech C920, много лет работала исправно под всеми осями. Под виндой до сих пор работает.

Ось - Xubuntu 16.04. Ядро 4.4.0.72

Гуглением выяснил, что драйвером для этой модели должен служить uvcvideo. Именно этот драйвер не хочет грузиться.

modprobe uvcvideo modprobe: ERROR: could not insert 'uvcvideo': Unknown symbol in module, or unknown parameter (see dmesg)

[157889.133443] videobuf2_common: Unknown symbol media_request_object_init (err 0)
[157889.133464] videobuf2_common: Unknown symbol media_request_object_unbind (err 0)
[157889.133496] videobuf2_common: Unknown symbol media_request_object_put (err 0)
[157889.133510] videobuf2_common: Unknown symbol v4l_vb2q_enable_media_source (err 0)
[157889.133520] videobuf2_common: Unknown symbol media_request_put (err 0)
[157889.133536] videobuf2_common: Unknown symbol media_request_object_bind (err 0)

Пробовал делать такие заклинания, для переустановки apt-get install --reinstall linux-image-extra-`uname -r` ( и других ананлогичных пакетов).

Пробовал скачивать пакеты вручную, доставать из них нужные бинарники .ko и класть в соотв каталог /lib/modules/...

Вот modprobe -D uvcvideo:

insmod /lib/modules/4.4.0-72-generic/kernel/drivers/media/common/videobuf2/videobuf2-common.ko
insmod /lib/modules/4.4.0-72-generic/kernel/drivers/media/common/videobuf2_new/videobuf2-core.ko
insmod /lib/modules/4.4.0-72-generic/kernel/drivers/media/media.ko
insmod /lib/modules/4.4.0-72-generic/kernel/drivers/media/v4l2-core/videodev.ko
insmod /lib/modules/4.4.0-72-generic/kernel/drivers/media/common/videobuf2/videobuf2-v4l2.ko
insmod /lib/modules/4.4.0-72-generic/kernel/drivers/media/common/videobuf2/videobuf2-memops.ko
insmod /lib/modules/4.4.0-72-generic/kernel/drivers/media/common/videobuf2/videobuf2-vmalloc.ko
insmod /lib/modules/4.4.0-72-generic/kernel/drivers/media/usb/uvc/uvcvideo.ko

Файл videobuf2-common.ko не смог найти в пакетах. Теоретически «оригинальные» драйверы из состава дистрибутива не должны на него ссылаться, он появляется в ядре более поздних версий. Не пойму, как от него избавиться.

Я так понимаю, что linuxtv поддерживает только последнее ядро, а на остальные плюет. От версии к версии меняется API, состав импортируемых и экспортируемых функций, поэтому мое ядро с новым linuxtv не работает. Портировать эту библиотеку под старое ядро мне не осилить. Если только собрать старую версию из гита, соответствующую этому ядру. Не знаю, как к этому подступиться. Наверно проще отвязать uvcvideo.ko от videobuf2-common.ko ? Тоже не знаю как это сделать...

Прошу помощи.
ЗЫ. Обновляться до новой версии убунты нежелательно.



Последнее исправление: Bill_Baklushi (всего исправлений: 1)

В числе прочих рекомендаций, устанавливал набор модулей linuxtv

Как ставил?

Deleted
()
Ответ на: комментарий от Deleted

Как бы кроме тюнера больше ничего не сломалось... Может быть можно в реаинимацию?

Я думал так надо, и поставил из исходников.

Что теперь делать?

Bill_Baklushi
() автор топика
Ответ на: комментарий от Bill_Baklushi

Ну, в идеале - открыть Makefile и посмотреиь, куда что положилось при make install и удалить, затем переставить модули из дистрибутива.

Очень может помочь переменная типа INSTALL_ROOT или более распространённая - DESTDIR.

Deleted
()
Ответ на: комментарий от Deleted

Я практически так и сделал, о чем написал в корневом посте. Достал старые модули из пакетов и разложил в /lib/modules нужные в подкаталоги. это не удалось сделать полностью за отсутствием ideobuf2-common.ko

Поправка: не тюнер сломался, а камера.

Bill_Baklushi
() автор топика
Ответ на: комментарий от Bill_Baklushi

Ну если что-то грузилось, а теперь не грузится с ошибкой - явно, что не всё вернулось на дистрибутивное. Через пару часов у себя проверю, сейчас с телефона.

Deleted
()
Ответ на: комментарий от Deleted

Я подумываю над этим... А прикладной софт после этого не нужно будет обновлять? VMWare и VirtualBox не слетят? Вмварь довольно капризная штука, долго ее реанимировал после апгрейда убунты.

Это команда apt-get upgrade linux-image-generic? Как сделать, чтобы не обновилось до 5, а осталось в рамках 4.4?

Не люблю я обновления...

Bill_Baklushi
() автор топика
Ответ на: комментарий от Bill_Baklushi

VMWare и VirtualBox не слетят?

Эти могут а зачем их использовать, когда есть божественнейший kvm и libvirt?

Deleted
()
Ответ на: комментарий от Deleted

Как по мне, так приятней на десктопе виртуалбокс, нежели гуи к kvm.

Deleted
()
Ответ на: комментарий от Deleted

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

Deleted
()
Ответ на: комментарий от Bill_Baklushi

Это команда apt-get upgrade linux-image-generic?

linux-generic.

Как сделать, чтобы не обновилось до 5, а осталось в рамках 4.4?

Не ставить руками 5-е ядро :)

Deleted
()
Ответ на: комментарий от Bill_Baklushi

Скачал linux-media-2019-06-05-edadd68031e5.tar.bz2. Там нет Makefile'а, а файлы, которые, видимо, надо разложить в подкаталоги с сорцами ядра :) Можно всё-таки подробностей установки?

P.S. VBox лучше ставить и обновлять так: https://www.virtualbox.org/wiki/Linux_Downloads

Deleted
()
Ответ на: комментарий от Bill_Baklushi

Понятно. Ну, в общем, сделать реинсталл пакетов с ядром и модулями и удостовериться, что все файлы заменились и не осталось лишних. А проще - обновить систему до последних пакетов и поставить актуальное ядро (4.4.0-151)

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Не в обиду будет сказано, это совет в духе капитана Очевидность. Реинсталл тоже делал (об этом есть в первом посте). Видимо неправильно, т.к. файлы реально не заменяются, судя по дате изменения. Может быть есть есть такие ключи, чтобы перезаписывать файлы (--force не помог)...

Всё равно спасибо за участие.

Проблема вот в чем. При инсталляции или пакетов или либы linuxtv модифицируется список зависимостей пакетов ядра, который хранится где-то в настройках. Ручная замена файлов и --reinstall видимо этот список не трогают. Как бы этот список пересобрать?.. Список зависиостей модулей ядра - это моя догадка, может быть я ошибаюсь...

Bill_Baklushi
() автор топика
Ответ на: комментарий от Bill_Baklushi

Как бы этот список пересобрать?

Обычно это

depmod -a
, но он вроде должен выполняться при установке/обновлении модулей из post-install-скриптов.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.