Linux Kernel Driver para captura de vídeo

0

Eu tenho essa coisa de captura de vídeo do EasyCap com um chip USBTV007 e eu realmente gostaria de tê-lo trabalhando no meu laptop linux mint 17 para que eu possa capturar vídeo para o meu material RC.

Mas eu não sei o que fazer com este driver de kernel do Linux. Eu nem sei como obter esses arquivos, suponho que seja algo como git. link

Estou procurando uma explicação amigável para iniciantes sobre o que fazer com isso: link

    
por Stoopkid 12.06.2014 / 05:23

2 respostas

0

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:

link link link

Para assinar seu módulo modificado com certificado autoassinado:

link

    
por 08.08.2017 / 23:54
-1

Copie e cole isto:

p='pwd'
git clone https://github.com/simon3z/usbtv.git
cd usbtv/
cd /usr/src/linux-headers-'uname -r'
make  SUBDIRS=/root/usbtv  modules
cd /usr/src/linux-headers-'uname -r'
cd /lib/modules/'uname -r'/kernel/drivers/media/usb/usbtv/
cp $p/usbtv/usbtv.ko .
    
por 08.07.2014 / 20:00