27 fevereiro 2006
Configurando sua Webcam no Linux Ubuntu
Se você é um feliz usuário de uma webcam mas não esta conseguindo faze-la funcionar no Linux Ubuntu (ou em qualquer distro), leia esse tópico, se não for leia também (é sempre bom aprender coisas novas :-p).
O suporte a webcam ainda é um ponto que precisa ser mais bem visto pelos desenvolvedores de IM (instant messenger), pois com isso muitas pessoas migraram para o Linux com maior facilidade. Vou fazer um relato dos passos a seguir para instalar sua webcam.
Verificando o drive certo para sua Webcam
Esse é um passo fundamental, errando aqui tenha certeza que você não vai ter êxito nos outros passos.
Para poder ver qual o modelo da sua webcam, ou você pode ver diretamente no manual (jeito mais fácil), mas se você é uma pessoa 'relaxada' e perdeu o manual (como eu :-p), não precisar ameaçar a mulher que te vendeu a camera a te dar outro :-p, basta ir ao terminal e digitar:
$ lsusb | grep Camera
Vai aparecer algo parecido com isso:
lnas90@adiltom:~$ lsusb | grep Camera
Bus 001 Device 003: ID 2770:9120 NHJ, Ltd Che-ez! Snap / iClick Tiny VGA Digital Camera
lnas90@adiltom:~$
Não se assuste não essa minha camera é uma velharia mesmo :-p, feito isso você procura pelo ID do fabricante da placa e pelo modelo especifico dela (quem mandou ser tão cabeça de vento e perder o manual :-p), o google ajuda muito nessas horas, é relativamente fácil descobrir tendo essas informações na mão.
Depois de saber o fabricante e o modelo da camera veja no google qual pacote que dá suporte a ela. Vou citar aqui os prováveis: Spca5xx, Sn9c102 (a minha foi essa) é so procurar que vai achar.
Preparativos
Antes de começar a compilar qualquer coisa vamos precisar de alguns programas instalados, algumas configurações a fazer (supondo que você esteja usando o Ubuntu 5.10) e umas coisas mais, mãos a obra.
1)Precisaremos dos pacotes kernel-source e kernel-headers, vamos instalar com o comando.
$ sudo apt-get install linux-headers-2.6.12-10-386
2)Instalando o source do kernel vamos agora instalar os compiladores
$ sudo apt-get install build-essential
3)Uma coisa MUITO IMPORTANTE, por causa de problemas com incompatibilidade entre as versões do gcc, so poderemos compilar qualquer drive se estivermos usando a mesma versão que foi compilado o nosso kernel, no caso do Ubuntu 5.10 a versão do gcc foi a 3.4(para saber basta rodar o comando less /proc/version a versão do gcc vai aparecer nas ultimas linhas), vamos ter que instalar.
$ sudo apt-get install gcc-3.4
4)Agora vamos definir essa versão como padrão, para que na hora de compilar seja ela usada.
$ CC=gcc-3.4
$ export CC
5)Por precaução execute o comando(ele vai criar um link para a fonte do kernel, alguns instaladores usam localizações diferentes).
$ sudo ln -s /usr/include/linux /usr/src/linux
6) Pronto nossos preparativos terminaram vamos agora instalar realmente esse drive (antes que você acabe com suas unhas de tanta ansiedade :-p).
Spca5xx
Esse modelo é como se fosse o coringa, atualmente tem suporte a mais de 170 cameras, você pode baixa-lo em http://mxhaard.free.fr/download.html e para ver a lista de cameras que ele tem suporte é so ir no link http://mxhaard.free.fr/spca5xx.html
Baixe o drive e descompacte ele na sua pasta com o comando:
$tar -zxvf mais o nome do arquivo
Entre na pasta que ele gerou e la dentro execute os comandos.
$ make clean
$ make
$ sudo make install
Que são para limpar uma possível instalação anterior, configurar e instalar o drive respectivamente.
Por um erro no instalador (creio eu) ele instala o drive no local errado, teremos que concertar agora.
$ sudo rm /lib/modules/2.6.12-10-386/kernel/drivers/usb/media/spca5xx/spca5xx.ko
$ sudo ln -s /lib/modules/2.6.12-10-386/kernel/drivers/usb/media/spca5xx.ko /lib/modules/2.6.12-10-386/kernel/drivers/usb/media/spca5xx/spca5xx.ko
São comandos enormes eu sei, mas não mordem não :-p, o que eles fazem é simplesmente remover o drive antigo (o primeiro) e criar um link para o novo (segundo).
Depois de tudo feito so nos resta agora ativar o modulo, isso pode ser feito com o comando:
$ modprobe spca5xx
Se sua webcam for suportada por esse drive ele funcionará imediantamente (nem se preocupe em ter que reiniciar ;-p).
Logitech QuickCam
Segundo o desenvolvedor, este driver suporta as câmeras Logitech Quickcam Express (o modelo antigo), Logitech Quickcam Web, LegoCam, Dexxa Webcam, Labtec Webcam e alguns modelos da Logitech QuickCam Notebook.
Vamos instala-lo:
1)Baixe o drive no site do desenvolvedor http://qce-ga.sourceforge.net/
2)Descompacte ele com o comando:
$tar -zxvf mais o nome do arquivo
3)Entre na pasta que ele gerou e lá dentro execute o comando para criar o modulo:
$ make all
4)Ative o módulo com o comando:
# insmod mod_quickcam.ko
5)E para finalizar rode o script, que instalará o resto para você (a final de contas também temos que descansar :-p)
# ./quickcam.sh
6)Terminada a instalação entre em algum programa que use a webcam e faça o teste.
Sempre olhe a pasta dos módulos
Sim isso mesmo, no meu caso eu instalei corretamente o spca5xx e mesmo assim não funcionou(eu pensava que seria esse módulo, mas um reforço para verificar o primeiro item corretamente), fui dar uma 'bisoiada' (olhada ;-p) na pasta /lib/modules/2.6.12-10-386/kernel/drivers/usb/media/ é la que ficam os módulos responsáveis pelas webcans (coitado deles ), como já estava sem idéias resolve ir ativando modulo por modulo (pura preguiça de pesquisar ) foi nessas tentativas que achei o modulo ideal para minha webcam, o modulo sn9c102, ativei ele com o comando:
$ sudo modprobe sn9c102 force_munmap=1
Para verificar se o sistema reconheceu dei o comando:
$ dmesg | grep Camera
e o resultado
lnas90@adiltom:~$ dmesg | grep Camera
[4294838.768000] sn9c102: V4L2 driver for SN9C10x PC Camera Controllers v1:1.24
lnas90@adiltom:~$
O sistema reconheceu a webcam, bom galera é so uma dica para vocês não cairem na mesma pegadinha que eu.
Assinar:
Postar comentários (Atom)
7 comentários:
Olá amigo,
Seu tutorial é muito bom. Fácil de seguir. Só que não consegui fazer minha webcam funcionar, o pc trava quando coloco pra usá-la. Tem algum idéia do seja. Obrigado.
meu e-mail é psico.indie@gmail.com
Cara, tenho uma webcam que usa o mesmo driver. No entanto a imagem fica muito escura quando a iluminação não é natural. Sabe se tem algum parâmetro que se passe para o driver e deixar a imagem mais clara?
podes fazer um 'sistema de iluminação' com LED's de IV (infravermelhos)...
eu gostei muito da dica mas essa tb serve p XP SP 2 ?
eu fiquei em duvida e resolvi perguntar antes de fazer , né muito obrigado
LUANA
Opa, fala velhão...
Meu, seguinte, tenho o Debian Etch instalado, kernel 2.6.18-6-486 e uma CAM (Lixo) Aiptek PocketDV...
Segui exatamente os passos descritos por você aqui, adaptando a minha Distro/Kernel e si liga no Erro que me retornou quando Setei o Comando "make":
matrix:/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye# make
Building SPCA5XX driver for 2.5/2.6 kernel.
Remember: you must have read/write access to your kernel source tree.
make -C /lib/modules/`uname -r`/build SUBDIRS=/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye CC=cc modules
make[1]: Entrando no diretório `/usr/src/linux-headers-2.6.18-6-486'
CC [M] /home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.o
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c: In function ‘spca5xx_open’:
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:2394: warning: implicit declaration of function ‘video_devdata’
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:2394: warning: initialization makes pointer from integer without a cast
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:2399: warning: implicit declaration of function ‘video_get_drvdata’
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:2399: warning: initialization makes pointer from integer without a cast
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c: In function ‘spca5xx_close’:
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:2489: warning: initialization makes pointer from integer without a cast
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c: In function ‘spca5xx_do_ioctl’:
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:2549: warning: initialization makes pointer from integer without a cast
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c: In function ‘spca5xx_ioctl’:
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3093: warning: implicit declaration of function ‘video_usercopy’
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c: In function ‘spca5xx_read’:
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3112: warning: initialization makes pointer from integer without a cast
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c: In function ‘spca5xx_mmap’:
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3211: warning: initialization makes pointer from integer without a cast
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c: At top level:
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3263: error: variable ‘spca50x_template’ has initializer but incomplete type
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3264: error: unknown field ‘owner’ specified in initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3264: warning: excess elements in struct initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3264: warning: (near initialization for ‘spca50x_template’)
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3265: error: unknown field ‘name’ specified in initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3265: warning: excess elements in struct initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3265: warning: (near initialization for ‘spca50x_template’)
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3266: error: unknown field ‘type’ specified in initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3266: warning: excess elements in struct initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3266: warning: (near initialization for ‘spca50x_template’)
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3267: error: unknown field ‘hardware’ specified in initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3267: warning: excess elements in struct initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3267: warning: (near initialization for ‘spca50x_template’)
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3268: error: unknown field ‘fops’ specified in initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3268: warning: excess elements in struct initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3268: warning: (near initialization for ‘spca50x_template’)
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3270: error: unknown field ‘release’ specified in initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3270: error: ‘video_device_release’ undeclared here (not in a function)
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3270: warning: excess elements in struct initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3270: warning: (near initialization for ‘spca50x_template’)
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3272: error: unknown field ‘minor’ specified in initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3272: warning: excess elements in struct initializer
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3272: warning: (near initialization for ‘spca50x_template’)
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c: In function ‘cd_to_spca50x’:
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3340: warning: implicit declaration of function ‘to_video_device’
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3340: warning: initialization makes pointer from integer without a cast
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3341: warning: return makes pointer from integer without a cast
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c: In function ‘spca50x_create_sysfs’:
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:3450: warning: implicit declaration of function ‘video_device_create_file’
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c: In function ‘spca5xx_probe’:
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5509: warning: implicit declaration of function ‘video_device_alloc’
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5509: warning: assignment makes pointer from integer without a cast
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5512: error: invalid application of ‘sizeof’ to incomplete type ‘struct video_device’
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5512: error: invalid application of ‘sizeof’ to incomplete type ‘struct video_device’
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5512: error: invalid application of ‘sizeof’ to incomplete type ‘struct video_device’
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5514: error: dereferencing pointer to incomplete type
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5516: warning: implicit declaration of function ‘video_set_drvdata’
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5521: warning: implicit declaration of function ‘video_register_device’
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5521: error: ‘VFL_TYPE_GRABBER’ undeclared (first use in this function)
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5521: error: (Each undeclared identifier is reported only once
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5521: error: for each function it appears in.)
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5550: error: dereferencing pointer to incomplete type
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5551: warning: implicit declaration of function ‘video_device_release’
/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.c:5553: warning: implicit declaration of function ‘video_unregister_device’
make[2]: ** [/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye/drivers/usb/spca5xx.o] Erro 1
make[1]: ** [_module_/home/alcarrolikis/Drivers/Aiptek/spca5xx-v4l1goodbye] Erro 2
make[1]: Saindo do diretório `/usr/src/linux-headers-2.6.18-6-486'
make: ** [default] Erro 2
Tem idéia de como resolver isso?
ps: Estava fazendo tudo com root pra não ter zica..
Vlw Velhão!!!
Oi Lucas, agradeço a dica.. mas nossa chegou na parte da configuração, me embananei toda... não sei como fazer isso pelo terminal, tem uma outra forma mais fácil?
Agradeço desde já,
deusefielblogk@hotmail.com
Postar um comentário