Como resolver esta instalação do driver? Barramento 001 Dispositivo 007: ID 05e1: 0b01 Syntek Semiconductor Co., Ltd

0

Eu tenho uma câmera, mas não tenho um driver para Linux. Então, eu estou tentando instalar o driver para 05e1: 0b01 . Mas ainda está falhando.

A conexão / desconexão do dispositivo é exibida corretamente em /var/log/messages

Aug 19 19:15:47 example kernel: [39339.374902] usb 1-3: USB disconnect, device number 16
Aug 19 19:16:52 example kernel: [39404.464068] usb 1-3: new high speed USB device number 17 using ehci_hcd
Aug 19 19:16:55 example kernel: [39407.152965] usb 1-3: New USB device found, idVendor=05e1, idProduct=0b01
Aug 19 19:16:55 example kernel: [39407.152976] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Aug 19 19:16:55 example kernel: [39407.152984] usb 1-3: Product: USB Camera
Aug 19 19:16:55 example kernel: [39407.152990] usb 1-3: Manufacturer: Syntek
Aug 19 19:16:55 example kernel: [39407.152997] usb 1-3: SerialNumber: 0123456789AC
Aug 19 19:16:55 example mtp-probe: checking bus 1, device 17: "/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-3"
Aug 19 19:16:55 example mtp-probe: bus: 1, device: 17 was not an MTP device

Passo 1: Eu baixei este driver da câmera do link

Etapa 2: arquivo README solicitado a fazer isso.

stk11xx-2.1.0]# make -f Makefile.standalone
make -C /lib/modules/2.6.40.3-0.fc15.i686/build SUBDIRS=/home/sun/Downloads/stk11xx-2.1.0 modules
make[1]: Entering directory '/usr/src/kernels/2.6.40.3-0.fc15.i686'
  CC [M]  /home/sun/Downloads/stk11xx-2.1.0/stk11xx-usb.o
/home/sun/Downloads/stk11xx-2.1.0/stk11xx-usb.c: In function ‘usb_stk11xx_probe’:
/home/sun/Downloads/stk11xx-2.1.0/stk11xx-usb.c:803:2: error: implicit declaration of function ‘init_MUTEX’ [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors

make[2]: *** [/home/sun/Downloads/stk11xx-2.1.0/stk11xx-usb.o] Error 1
make[1]: *** [_module_/home/sun/Downloads/stk11xx-2.1.0] Error 2
make[1]: Leaving directory '/usr/src/kernels/2.6.40.3-0.fc15.i686'
make: *** [driver] Error 2

Etapa 3: Pesquisando na Internet, descobri que preciso adicionar a stk11xx-usb. c essas novas linhas:

#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26) 
#include <linux/semaphore.h> 
#else 
#include <asm/semaphore.h> 
#endif 
#define init_MUTEX(LOCKNAME) sema_init(LOCKNAME,1);

Etapa 4: Tente criar novamente falhar.

stk11xx-2.1.0]# make -f Makefile.standalone
make -C /lib/modules/2.6.40.3-0.fc15.i686/build SUBDIRS=/home/sun/Downloads/stk11xx-2.1.0 modules
make[1]: Entering directory '/usr/src/kernels/2.6.40.3-0.fc15.i686'
  CC [M]  /home/sun/Downloads/stk11xx-2.1.0/stk11xx-usb.o
  CC [M]  /home/sun/Downloads/stk11xx-2.1.0/stk11xx-v4l.o
/home/sun/Downloads/stk11xx-2.1.0/stk11xx-v4l.c:43:28: fatal error: linux/videodev.h: No such file or directory
compilation terminated.
make[2]: *** [/home/sun/Downloads/stk11xx-2.1.0/stk11xx-v4l.o] Error 1
make[1]: *** [_module_/home/sun/Downloads/stk11xx-2.1.0] Error 2
make[1]: Leaving directory '/usr/src/kernels/2.6.40.3-0.fc15.i686'
make: *** [driver] Error 2
stk11xx-2.1.0]# 

Alguém pode me aconselhar como resolver isso agora? Eu estou bloqueado. Mais detalhes estão disponíveis no fórum do SourceForge .

    
por YumYumYum 19.08.2011 / 16:26

3 respostas

1

A mensagem de erro que você tem na etapa 4 diz que o compilador não consegue localizar o arquivo videodev.h em seu sistema. O arquivo videodev.h vem com o código-fonte do kernel (no meu sistema ele é linux-2.6.37.3/include/kernel/videodev.h e deve estar em um local comparável em qualquer versão de origem do kernel). Quando você instala os cabeçalhos do kernel, este arquivo será instalado em /usr/include/linux/videodev.h - e é isso que você está perdendo.

Então, (1) instale o RPM kernel-devel fornecido pelo Fedora ou (2) você pode ter o download da versão apropriada do kernel (veja uname -r mas parece que você tem linux- 2.6.40.3) código fonte e depois instalar os cabeçalhos do kernel (leia o código fonte do kernel README e então execute make headers_install - você pode ter que configurar a fonte do kernel, mas você provavelmente não deve ter make e% co_de O objetivo é obter uma cópia de make install e quaisquer arquivos de cabeçalho de suporte da origem do kernel para o local utilizável em seu disco (provavelmente videodev.h e /usr/include ).

Se você já tiver /usr/include/linux em seu disco, verifique se a variável de ambiente /usr/include/linux/videodev.h aponta para INCLUDE .

Agora, olhando mais de perto, parece que o pessoal do kernel.org tem obsoleto /usr/include e removê-lo do código-fonte antes da versão 2.6.39.3 (e o substituiu por videodev.h ? - não está claro neste momento) e parece que você tem o linux-2.6 .40.3. Sugiro que você obtenha uma cópia mais antiga da origem do kernel e copie manualmente videodev2.h para videodev.h (ou onde quer que você tenha /usr/include/linux ).

    
por 19.08.2011 / 20:40
1

Se ainda for real, coloque esse arquivo para /usr/src/(uname -a)/include/linux .

Ele me ajudou no Arch e no kernel 3.9.2-1

    
por 12.05.2013 / 17:52
0

O videodev.h é do v4l1, que mudou muito em termos de suporte em novos kernels, mesmo que o cabeçalho (agora é v4l1-videodev.h) não conserte seu problema.

É melhor tirar todo o suporte da v4l1 do driver que você está compilando. Eu fiz isso e está tudo bem para mim agora.

a maior parte do código está em stk11xx-v4l.c no

static long v4l_stk11xx_do_ioctl(struct file *fp,
    unsigned int cmd, void __user *arg)
função

. Apenas se livre de todas as declarações de casos até você ver o comentário da v4l2.

Em seguida, elimine as referências às inclusões de videodev.h

    
por 20.06.2014 / 04:12