No mercado atual, vários modelos idênticos do dispositivo de captura de vídeo Easy Cap com um chip USBTV007 estão disponíveis com o ID do fornecedor / produto estampado na ID do dispositivo USB. Então, antes de compilar outro driver, o uso de módulos 'usbtv' embutidos vem com o pacote de imagem linux por padrão. Emitir comando abaixo em um terminal
>sudo lsusb
Você provavelmente receberia algo como:
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
Procure ID 1d71: 3002 em algum lugar na saída do comando lsusb. Se você tiver sorte, seu sistema poderá ter um driver para o seu dispositivo. Se não, não seja desesperado. Vamos ver o ID único que você tem?
ID eb1a:2861 eMPIA Technology, Inc.
ID 1c88:0007 Somagic, Inc.
ID 1c88:003c Somagic, Inc.
ID 1c88:003f Somagic, Inc.
Qualquer uma das quatro combinações de ID acima terá outro driver deferente já disponível por padrão na sua versão do kernel. Por favor, leia atentamente a página de TV do Linux que você mencionou.
Eu costumava ter um dispositivo muito incomum e recém-lançado (até onde eu sabia da fonte do mercado)
ID 1d71:3002 USB TV
O que precisava era adicionar uma única linha no nome do arquivo usbtv driver souce usbtv-core.c e recompilá-lo em tempo real. Para fazer isso você precisa ter o código-fonte usbtv com vários componentes do projeto v4l linux. Eu recomendo que você baixe e trabalhe com a fonte completa do kernel, mas apenas recompilando a fonte do módulo depois de adicionar uma única linha para adicionar o ID do seu dispositivo na base do driver. Eu estou dando o comando passo a passo abaixo. Eu estou ignorando a descrição das etapas para finalizar rapidamente. Deixe-me saber se você tem dificuldade em entender. Vou editar para adicionar detalhes mais tarde.
Instale todo o utilitário e aplicativo e arquivo de biblioteca para o processo Linux Kernel Compile. Poucos pacotes são
make, gcc, autoconf, binutils, build-essential, libncurses-dev junto com o arquivo headers do seu kernel.
Depois de ter todo o pacote necessasry instalado, tente:
>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
Se as etapas acima forem concluídas sem nenhum erro, parabéns. O tempo difícil acabou. Agora vá para o arquivo fonte usbtv por:
cd /usr/src/linux-source-X.XX.X/drivers/media/usb/usbtv/
Lá você encontrará o nome dos arquivos: Kconfig Makefile usbtv-audio.c usbtv-core.c usbtv.h usbtv-video.c
Abra o arquivo usbtv-core.c para modificação com seu editor de texto favorito e modifique o código com:
static struct usb_device_id usbtv_id_table[] = {
{ USB_DEVICE(0x1b71, 0x3002) },
{}
};
Com o código exibido abaixo.
static struct usb_device_id usbtv_id_table[] = {
{ USB_DEVICE(0x1b71, 0x3002) },
{ USB_DEVICE(0x1f71, 0x3301) },
{}
};
Com a linha 0x1f71 como identificação do fornecedor e 0x3301 como ID do produto, você está instruindo o driver a carregar, assim que qualquer dispositivo com a tag de ID correspondente inserido na porta USB. Tente alterar outro ID de Produto / Fornecedor se tiver certeza do conjunto de chips UTV007 em seu dispositivo. O ponto é ter seu próprio produto / ID de fornecedor compatível com um dos drivers. Agora tente compilar os módulos por:
>sudo make -C /usr/src/linux-headers-'uname -r'/ M=$PWD prepare modules install
>sudo depmod -a
Se este ponto terminar sem erro, descarregue / recarregue o módulo usbtv com o comando
>sudo rmmod usbtv && sudo modprobe usbtv
ao conectar seu dispositivo na porta USB, tente monitorar a atividade do UDEV com o comando
> udevadm monitor
A exibição da unidade / dev / vedio0 logo após a inserção do dispositivo resultará em sucesso. Se não nos deixar saber para uma discussão mais aprofundada.
Fonte adicional:
Para assinar seu módulo modificado com certificado autoassinado: