Acabei de comprar um Acer Aspire 3830TG, ele vem com uma webcam integrada de 1.3M HD. Antes de comprá-lo eu tentei com um stick usb Lubuntu inicializável, tudo funcionou bem, exceto para a webcam, que eu pensei que eu tinha que ajustar.
A coisa é que parece que a câmera deve funcionar sem problemas no Ubuntu. O driver é detectado, eu tentei
dmesg | grep uvcvideo
e a saída é
[ 12.226174] uvcvideo: Found UVC 1.00 device 1.3M HD WebCam (058f:b002)
[ 12.245553] usbcore: registered new interface driver uvcvideo
Eu também tentei usar software diferente (o guvcview é preto quando a saída da câmera é MJPG e se transforma em cores engraçadas quando YU12 ou YV12, o queijo é sempre preto, o camorama está sempre com cores engraçadas).
Eu deveria ter verificado se estava funcionando corretamente com o sistema operacional padrão (windows), mas agora é tarde demais para isso. Eu até inicializei com uma distribuição oficial do Ubuntu Quantal da caneta usb, e os resultados são os mesmos.
Existe alguma maneira de verificar se a câmera está direita ou quebrada? Então, se estiver quebrado, pelo menos eu posso ir à loja, mostrar a eles que está realmente quebrado e ter uma webcam externa de graça, ou algo assim.
UPDATE 1
Eu corri sudo lsinput
e as informações de saída sobre o meu vídeo são as seguintes:
/dev/input/event6
bustype : BUS_USB
vendor : 0x58f
product : 0xb002
version : 2
name : "1.3M HD WebCam"
phys : "usb-0000:00:1a.0-1.3/button"
bits ev : EV_SYN EV_KEY
/dev/input/event7
bustype : BUS_HOST
vendor : 0x0
product : 0x6
version : 0
name : "Video Bus"
phys : "LNXVIDEO/video/input0"
bits ev : EV_SYN EV_KEY
Com essa informação, não tenho certeza sobre a execução do comando luvcview
. Quando executo luvcview -d /dev/video0 -L
, a saída é a seguinte:
SDL information:
Video driver: x11
A window manager is available
Device information:
Device path: /dev/video0
{ pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' }
{ discrete: width = 640, height = 480 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 160, height = 120 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 176, height = 144 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 320, height = 240 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 352, height = 288 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 720 }
Time interval between frame: 1/7, 1/5,
{ discrete: width = 1280, height = 800 }
Time interval between frame: 1/7, 1/5,
{ discrete: width = 1280, height = 960 }
Time interval between frame: 1/7, 1/5,
{ discrete: width = 1280, height = 1024 }
Time interval between frame: 1/7, 1/5,
{ pixelformat = 'MJPG', description = 'MJPEG' }
{ discrete: width = 640, height = 480 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 160, height = 120 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 176, height = 144 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 320, height = 240 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 352, height = 288 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 720 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 800 }
Time interval between frame: 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 960 }
Time interval between frame: 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 1024 }
Time interval between frame: 1/15, 1/10, 1/5,
{ pixelformat = 'RGB3', description = 'RGB3' }
{ discrete: width = 640, height = 480 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 160, height = 120 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 176, height = 144 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 320, height = 240 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 352, height = 288 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 720 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 800 }
Time interval between frame: 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 960 }
Time interval between frame: 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 1024 }
Time interval between frame: 1/15, 1/10, 1/5,
{ pixelformat = 'BGR3', description = 'BGR3' }
{ discrete: width = 640, height = 480 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 160, height = 120 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 176, height = 144 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 320, height = 240 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 352, height = 288 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 720 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 800 }
Time interval between frame: 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 960 }
Time interval between frame: 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 1024 }
Time interval between frame: 1/15, 1/10, 1/5,
{ pixelformat = 'YU12', description = 'YU12' }
{ discrete: width = 640, height = 480 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 160, height = 120 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 176, height = 144 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 320, height = 240 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 352, height = 288 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 720 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 800 }
Time interval between frame: 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 960 }
Time interval between frame: 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 1024 }
Time interval between frame: 1/15, 1/10, 1/5,
{ pixelformat = 'YV12', description = 'YV12' }
{ discrete: width = 640, height = 480 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 160, height = 120 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 176, height = 144 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 320, height = 240 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 352, height = 288 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 720 }
Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 800 }
Time interval between frame: 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 960 }
Time interval between frame: 1/15, 1/10, 1/5,
{ discrete: width = 1280, height = 1024 }
Time interval between frame: 1/15, 1/10, 1/5,
Se eu executo luvcview por si só, a imagem é engraçada (cores azul e vermelha, principalmente eu mesmo em estado negativo).