На текущем рынке доступны различные идентичные модели устройства видеозахвата Easy Cap с микросхемой USBTV007 с разными идентификаторами поставщика / продукта, указанными внутри идентификатора устройства USB. Поэтому, прежде чем приступить к компиляции другого драйвера, использующего встроенные модули 'usbtv', по умолчанию поставляется пакет изображений linux.
Выполните команду ниже на терминале
>sudo lsusb
Вы, вероятно, получите что-то вроде:
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d71:3002 USB TV
Найдите идентификатор 1d71:3002 где-нибудь в выходных данных команды lsusb, если она совпадает, вам повезло, в вашей системе может быть драйвер для вашего устройства. Если нет, не будь безнадежным. Посмотрим, какой у вас уникальный идентификатор?
ID eb1a:2861 eMPIA Technology, Inc.
ID 1c88:0007 Somagic, Inc.
ID 1c88:003c Somagic, Inc.
ID 1c88:003f Somagic, Inc.
Любой из вышеуказанных четырех идентификаторов будет иметь другой защищенный драйвер, уже доступный по умолчанию в вашей версии ядра. Пожалуйста, внимательно прочитайте на странице Linux TV, которую вы упоминаете.
Раньше у меня было очень необычное и недавно выпущенное устройство (насколько я знаю из рыночного источника)
ID 1d71:3002 USB TV
Для этого нужно было добавить одну строку в файл с именем драйвера usbtv usbtv-core.c и перекомпилировать его на лету.
Для этого вам нужно иметь исходный код usbtv с различным компонентом проекта Linux v4l. Я бы порекомендовал вам загружать и работать с полным исходным кодом ядра, но только перекомпилировать исходный код модуля после добавления одной строки для добавления идентификатора вашего устройства в базе драйверов. Я даю ниже шаг за шагом команду. Я игнорирую описание шагов для быстрого завершения. Дайте мне знать, если вам трудно понять. Я отредактирую, чтобы добавить детали позже.
Установите все утилиты, файлы приложений и библиотек для процесса компиляции ядра Linux. Мало что из пакета
make, gcc, autoconf, binutils, build-essential, libncurses-dev вместе с файлом заголовков вашего ядра.
После установки всех необходимых пакетов попробуйте:
>cd /usr/src/linux-source-X.XX.X
>sudo cp /usr/src/linux-headers-`uname -r`/Module.symvers .
>sudo make -C /usr/src/linux-headers-`uname -r`/ oldconfig
>sudo cp /boot/config-X.xx.x-xx-YYYY .config
>sudo make -C /usr/src/linux-headers-`uname -r`/ prepare
Если вышеуказанные шаги выполнены без ошибок, поздравляю. Трудное время прошло. Теперь перейдите к исходному файлу usbtv:
cd /usr/src/linux-source-X.XX.X/drivers/media/usb/usbtv/
Там вы найдете имя файла: Kconfig Makefile usbtv-audio.c usbtv-core.c usbtv.h usbtv-video.c
Откройте файл usbtv-core.c для модификации в вашем любимом текстовом редакторе и измените код, имеющий:
static struct usb_device_id usbtv_id_table[] = {
{ USB_DEVICE(0x1b71, 0x3002) },
{}
};
С кодом, показанным ниже.
static struct usb_device_id usbtv_id_table[] = {
{ USB_DEVICE(0x1b71, 0x3002) },
{ USB_DEVICE(0x1f71, 0x3301) },
{}
};
Используя строку 0x1f71 в качестве идентификатора поставщика и 0x3301 в качестве идентификатора продукта, вы указываете драйверу, что нужно как можно быстрее загрузить любое устройство с соответствующим тегом ID, вставленным в порт USB. Попробуйте изменить другой идентификатор продукта / поставщика, если вы уверены в наличии набора микросхем UTV007 на вашем устройстве. Суть в том, чтобы ваш собственный идентификатор продукта / поставщика совпадал с драйвером. Теперь попробуйте скомпилировать модули:
>sudo make -C /usr/src/linux-headers-`uname -r`/ M=$PWD prepare modules install
>sudo depmod -a
Если эта точка завершается без ошибок, выгрузите / перезагрузите модуль usbtv с помощью команды
>sudo rmmod usbtv && sudo modprobe usbtv
при подключении устройства через USB-порт попробуйте отслеживать активность UDEV с помощью команды
> udevadm monitor
Показ диска /dev /vedio0 сразу после установки устройства приведет к успеху. Если нет, дайте нам знать для дальнейшего обсуждения.
Дополнительный источник:
https://linuxtv.org/wiki/index.php/Gadmei_USB_TVBox_UTV382_(id_0x1f71:0x3301) https://askubuntu.com/questions/168279/how-do-i-build-a-single-in-tree-kernel- модуль https://askubuntu.com/questions/17944/what-is-the-minimum-requirement-to-compile-kernel-modules
Чтобы подписать ваш измененный модуль самозаверяющим сертификатом:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-signing-kernel-modules-for-secure-boot.html