PostHeaderIcon Problemas com webcam Syntek no Ubuntu 9.04.

Assim que adquiri meu laptop atual, um Asus F9S, fiquei algum tempo sem poder utilizar a webcam integrada. Estava começando a ministrar um treinamento de segurança de redes com mais de 120 horas e, como o dispositivo não funcionou imediatamente após a instalação do sistema operacional, o Ubuntu Linux 7.10 na época, acabei deixando pra depois. Passadas algumas semanas, descobri um driver, ainda em desenvolvimento, o stk11xx, que a fez funcionar perfeitamente.

Aqui está a identificação da webcam Syntek:

jansen@scadufax:~$ lsusb | grep Syntek
Bus 002 Device 003: ID 174f:6a33 Syntek Web Cam – Asus F3SA, F9J, F9S

Com o Ubuntu Linux 8.04 tudo passou a funcionar “out of the box, sem sequer necessitar da compilação do driver stk11xx. No Ubuntu Linux 8.10, uma nova surpresa: o dispositivo não funcionou após a instalação do sistema operacional. Entretanto, mesmo que essa situação fosse incômoda e representasse uma “volta no tempo”, a simples compilação do stk11xx foi suficiente para dar vida, novamente, à minha webcam.

Acabei de instalar o Ubuntu Linux 9.04, liberado no dia 23 de abril de 2009 e uma nova surpresa: o dispositivo não estava funcionando novamente logo após a instalação do sistema.

Sem pestanejar, fui ao site do stk11xx e procurei pela versão mais atual do driver, a 2.0. Na primeira tentativa de compilá-lo, uma notícia ruim: essa versão do driver é voltada para o kernel 2.6.29 e o Ubuntu 9.04 (Jaunty Jackalope) utiliza, atualmente, o 2.6.28-11. Tentei então utilizar a versão 1.4.0, última antes da 2.0. O processo de compilação foi simples e além de pacotes como gcc, make e build-essential, precisei apenas instalar o ctags. Tudo utilizando o apt-get, obviamente. Feito isso, foi suficiente descompactar o arquivo “tar.gz” e compilar o driver:

root@scadufax:/usr/local/src# tar -xzvf stk11xx-1.4.0.tar.gz

root@scadufax:/usr/local/src# cd stk11xx-1.4.0

root@scadufax:/usr/local/src/stk11xx-1.4.0# make -f Makefile.standalone

Terminada a compilação, que durou apenas alguns poucos segundos, carreguei o módulo de kernel recém gerado:

root@scadufax:/usr/local/src/stk11xx-1.4.0# depmod -a

root@scadufax:/usr/local/src/stk11xx-1.4.0# modprobe stkwebcam

root@scadufax:/usr/local/src/stk11xx-1.4.0# insmod -f stk11xx.ko

Tentei utilizar dois ou três aplicativos para testar e… má notícia: a webcam não estava funcionando. Passados alguns minutos dedicados em buscas em fóruns, encontrei outro problema: o Ubuntu Linux 9.04, em sua instalação, não está incluindo o usuário criado durante a própria instalação no grupo “video”. Era exatamente por conta disso que, após a inserção do driver, nenhum aplicativo estava conseguindo utilizá-la. Para resolver, basta inserir o seu usuário nesse grupo e , depois, reiniciar sua sessão:

jansen@scadufax:/home/jansen$ sudo addgroup jansen video

Passado o susto, estou por aqui com o Ubuntu Linux 9.04 instalado e minha câmera interna funcionando perfeitamente. Que boas notícias e menos surpresas venham nas próximas versões…

Existe uma discussão interessante sobre o tema AQUI (em inglês).

19 Responses to “Problemas com webcam Syntek no Ubuntu 9.04.”

  • Hamilton disse:

    Ola Jansen ..

    Uso aki no meu Asus F9S uma fork do ubuntu ( Linuxmint Gloria 7 ) baseado 100% no jaunty 2.6.28-11 ..
    Tudo funciona perfeitamente , essa distro é linda .. MAS … webcam naum rolou …Gostaria que vc , se possivel , publicasse os comandos passo a passo para instalar pacotes como gcc, make e build-essential e o ctags. Desci aki o stk11xx1.4 desconpactei , mas naum deu certo a compilação ..

    Minha webcam ( ID 174f:6a33 Syntek Web Cam – Asus F3SA, F9J, F9S ) naum ta funcionando ..
    Me ajude ,
    obrigado adiantado ..

    Hamilton

  • admin disse:

    Olá Hamilton,

    para instalar o gcc, o make, o build-essential e o ctags, você pode executar o seguinte comando com o seu computador conectado à Internet:

    $ sudo apt-get install gcc make build-essential ctags

    O comando irá pedir sua senha para poder executar com privilégios do super-usuário (root). Sendo sua distro baseada no Ubuntu Linux, esse comando deve obter esses pacotes nos repositórios e instalá-los em sua máquina.

    Em seguida, tente seguir os passos que descrevi, ok?

    Espero que você consiga sucesso…

    Saudações,

    Jansen

  • Hamilton disse:

    desculpe pela insistencia , mas ão compilou não …

    deu esse erro , e agora ?

    linuxmint@Mint-Asus /usr/local/src $ sudo tar -xzvf stk11xx-1.4.0.tar.gz
    stk11xx-1.4.0/
    stk11xx-1.4.0/stk11xx.txt
    stk11xx-1.4.0/Makefile
    stk11xx-1.4.0/Kbuild
    stk11xx-1.4.0/README
    stk11xx-1.4.0/Makefile.standalone
    stk11xx-1.4.0/stk11xx.h
    stk11xx-1.4.0/doxygen.cfg
    stk11xx-1.4.0/stk11xx-buf.c
    stk11xx-1.4.0/stk11xx-dev.c
    stk11xx-1.4.0/stk11xx-dev.h
    stk11xx-1.4.0/Kconfig
    stk11xx-1.4.0/stk11xx-v4l.c
    stk11xx-1.4.0/stk11xx-usb.c
    stk11xx-1.4.0/stk11xx-dev-6a31.c
    stk11xx-1.4.0/stk11xx-dev-6a33.c
    stk11xx-1.4.0/stk11xx-dev-6a51.c
    stk11xx-1.4.0/stk11xx-dev-6a54.c
    stk11xx-1.4.0/stk11xx-dev-6d51.c
    stk11xx-1.4.0/stk11xx-sysfs.c
    stk11xx-1.4.0/stk11xx-bayer.c
    stk11xx-1.4.0/stk11xx-dev-a311.c
    stk11xx-1.4.0/stk11xx-dev-a821.c
    linuxmint@Mint-Asus /usr/local/src $ ls
    stk11xx-1.4.0 stk11xx-1.4.0.tar.gz
    linuxmint@Mint-Asus /usr/local/src $ cd /usr/local/src/stk11xx-1.4.0
    linuxmint@Mint-Asus /usr/local/src/stk11xx-1.4.0 $ sudo make -f Makefile.standalone
    make -C /lib/modules/2.6.28-11-generic/build SUBDIRS= modules
    make[1]: Entrando no diretório `/usr/src/linux-headers-2.6.28-11-generic’
    CHK include/linux/version.h
    CHK include/linux/utsrelease.h
    SYMLINK include/asm -> include/asm-x86
    make[2]: *** Sem regra para processar o alvo `kernel/bounds.c’, necessário por `kernel/bounds.s’. Pare.
    make[1]: ** [prepare0] Erro 2
    make[1]: Saindo do diretório `/usr/src/linux-headers-2.6.28-11-generic’
    make: ** [driver] Erro 2
    linuxmint@Mint-Asus /usr/local/src/stk11xx-1.4.0 $

    Hamilton

  • Osmario Avila disse:

    Gostaria de usar minha webcam para conversar com imagem em programas como o aMSN. Nunca consegui nas versões até 8.10. Agora instalei a 9.04 do Ubuntu mas não estou conseguindo. Minha webcam é LG. Você já tentou fazer com a sua?
    grato

  • andrius disse:

    está ocorrendo o seguinte erro!

    andrius@andrius-laptop:~$ cd stk11xx-1.4.0
    andrius@andrius-laptop:~/stk11xx-1.4.0$ sudo depmod -a
    andrius@andrius-laptop:~/stk11xx-1.4.0$ sudo modprobe stkwebcam

    [b]andrius@andrius-laptop:~/stk11xx-1.4.0$ sudo insmod -f stk11xx.ko
    insmod: can’t read ‘stk11xx.ko’: No such file or directory
    andrius@andrius-laptop:~/stk11xx-1.4.0$ [/b]

    não existe esse arquivo na pasta
    vc pode ajudar???

  • admin disse:

    Olá Hamilton,

    você instalou os headers do seu kernel para compilar o driver? Acho que você não deve ter o pacote que contém os headers. Caso você, de fato, não o tenha, é só executar o seguinte:

    $ sudo apt-get install linux-headers-$(uname -r)

    Depois, tente compilar novamente o driver da webcam.

    []’s

    Jansen

  • admin disse:

    Andreus,

    você compilou o driver? Não vi em sua mensagem a referência à execução do seguinte comando:

    make -f Makefile.standalone

    Espero que seja apenas isso para você ter acesso na compilação do driver.

    Abraço,

    Jansen

  • Clei disse:

    Cara, na versão 9.10 karmic koala, eu compilei (com insmod -f stk11xx.ko), abri um programa e funcionou normalmente, nem precisou adicionar o meu nome de usuário no grupo de vídeo. Antes que me pergunte, o módulo do meu syntek é (Bus 001 Device 003: ID 174f:5237 Syntek). E tou usando a última versão do driver (2.1.0) Brigadão.

  • J. disse:

    Eu estou a usar o linuxmint 8 64-bit, tentei seguir os passos indicados mas obtive o seguinte erro:

    make -C /lib/modules/2.6.31-14-generic/build SUBDIRS=/usr/local/src/stk11xx-2.1.0 modules
    make[1]: Entrando no diretório `/usr/src/linux-headers-2.6.31-14-generic’
    CC [M] /usr/local/src/stk11xx-2.1.0/stk11xx-v4l.o
    /usr/local/src/stk11xx-2.1.0/stk11xx-v4l.c:1737: error: unknown field ‘compat_ioctl’ specified in initializer
    /usr/local/src/stk11xx-2.1.0/stk11xx-v4l.c:1737: error: ‘v4l_compat_ioctl32’ undeclared here (not in a function)
    make[2]: ** [/usr/local/src/stk11xx-2.1.0/stk11xx-v4l.o] Erro 1
    make[1]: ** [_module_/usr/local/src/stk11xx-2.1.0] Erro 2
    make[1]: Saindo do diretório `/usr/src/linux-headers-2.6.31-14-generic’

    Poderá ter a ver com o facto de ser uma versão de 64 bit?

    Obrigado

    Luís

  • admin disse:

    Olá Luis,

    de fato o problema aparenta ter alguma relação com a questão da sua plataforma estar utilizando código 64 bits. Procurando por esse erro na Internet, pude verificar comentários nesse sentido. Entretanto, por não ter uma plataforma semelhante, não consigo lhe dar uma orientação mais precisa.

    De qualquer maneira, caso você encontre uma solução, poste aqui na parte de comentários para ajudar outras pessoas que estejam com o mesmo problema.

    Encontrando algo, publicarei por aqui, certo?

    Saudações livres!

    Jansen

  • admin disse:

    A propósito, Luis, você tem a bilbioteca libv4l instalada em seu sistema? Eu procurei nos repositórios do Ubuntu, por exemplo, e ela aparece como disponível para instalação.

    Caso negativo, experimente instalá-la e, em seguida, compilar o código do driver novamente.

    Abraço,

    Jansen Sena

  • Luis disse:

    Obrigado pela resposta.
    De facto tenho essas bibliotecas instaladas, quer a libv4l quer lib32v4l.

    Eu vou continuar a procurar alguma solução para este problema partilharei com certeza.

    Abraço

  • Luis disse:

    Entretanto arranjei uma solução que deixou a webcam a funcionar. Talvez não a mais simples.

    Tive que editar o código do ficheiro stk11xx-v4l.c

    Acho que o problema reside na definição da estrutura e de uma das variáveis. Assim tive que trocar a linha que tem
    .compat_ioctl = v4l_compat_ioctl32,
    por,
    .unlocked_ioctl = v4l2_compat_ioctl32,

    Abraço

  • Luis disse:

    Remover o idfef onde essa linha se encontra também permite ter a câmara a funcionar. Não sei qual o risco de retirar mas a primeira solução também não me parece totalmente segura.

  • admin disse:

    Ok, Luis. Meus parabéns por ter resolvido o problema e meus agradecimentos por ter compartilhado sua solução por aqui. Tenho certeza de que isso ajduará outros usuários a resolverem o problema.

    Saudações livres!

    Jansen

  • admin disse:

    Olá Luis. Tentei utilizar suas dicas em um computador com o Ubuntu 9.10 (x86_64) instalado. Entretanto, se compilar trocando a linha “.compat_ioctl = v4l_compat_ioctl32,” por “.unlocked_ioctl = v4l2_compat_ioctl32,” o sistema operacional trava após a inserção do módulo.

    Se tentar compilar o módulo removendo completamente o “ifdef” que contém a definição de “.compat_ioctl = v4l_compat_ioctl32,”, tudo funciona perfeitamente.

    Abraço,

    Jansen

  • Rui Cambraia disse:

    Olá Jansen,
    encontrei seu post quando procurava uma solução para instalar a minha webcam no Ubuntu 10 “Lucid”. Sou novo utilizador de Linux e não domino os códigos de consola, no entanto consegui descarregar o driver stk11xx e ter todo o software necessário para a instalação.
    O driver funciona em modo de teste (modprobe + insmod) mas não consigo ter o driver a funcionar permanentemente, quer dizer: quando encerro o sistema e volto a ligar tenho que fazer tudo de novo caso contrário a câmara não funciona.
    Eu tenho a pasta do driver descarragada em “/home/rui/Transferências/stk11xx-2.1.0 e é a partir dai que executo o comando “make -f Makefile.standalone”. Será que tenho de mover o ficheiro compilado “stk11xx.ko” para outro local manualmente no sistema…? Como se faz isso…? Como utilizador não consigo fazer copy/paste para pastas de sistema e na consola não sei como se faz. Mas será esse o problema…?
    Muito obrigado pelo seu apoio…!
    Cumprimentos,
    Rui Cambraia

  • Jansen Sena disse:

    Olá Rui,

    tudo bom? Bem, creio que no seu caso, você pode resolver o problema inserindo o carregamento do módulo stkwebcam no arquivo /etc/modules e do módulo stk11xx no arquivo /etc/rc.local, por exemplo.

    Outra solução seria copiar o driver stk11xx para o diretório de módulos do seu sistema e carregar ambos os módulos (stkwebcam + stk11xx) pelo arquivo /etc/modules.

    Se isso for suficiente e for possível pra você, compartilhe sua solução por aqui, ok?

    Saudações livres!

    Jansen Sena

  • Jansen Sena disse:

    Rui,

    ainda em tempo, para editar os arquivos /etc/modules e /etc/rc.local você precisa de acesso como super-usuário, da mesma forma que você fez para inserir o driver para testar sua webcam.

    Abraço,

    Jansen

Leave a Reply