Re: [Driver] [HOW TO] UVCVIDEO : come risolvere il problema della webcam ribaltata
Inviato: mercoledì 4 novembre 2009, 15:00
aggiungo su skype funziona regolarmente
Il forum della comunità italiana di Ubuntu.
https://forum.ubuntu-it.org/
Analoga procedura se siete passati al kernel 2.6.31-15 sempre su karmicrainboww ha scritto:Per chi è passato a karmic è possibile installare ugualmente le patch, ma prima bisogna aggirare un problema in fase di compilazione di v4l-dvb.rainboww ha scritto:Ciao, anche io sono passato a karmic e il problema della webcam ribaltata si è ripresentato.basettoni ha scritto: Buon giorno a tutti, sto provando la beta di ubuntu 9.10, non riesco a drizzare la webcam, sapreste dirmi se la guida è valida o meno?
Sembra che ci siano problemi con il kernel in fase di compilazione come si capisce da questo post
http://www.mail-archive.com/ubuntu-deve ... 09422.html
Vengono proposte due soluzioni:
"So a quick work around is to disable the firedtv driver by modifying the
./v4l/.config file and changing '=m' to '=n' on the firedtv line.
The longer solution is to install the kernel source and then modify the
makefile configuration options to use that instead of the headers (it will
default to using the headers still if not configured correctly). If you're
not using firedtv, this is not worth it."
Faccio dei test.
Quando finisco faccio sapere. :)
Mi sono rifatto a questo post
http://www.mail-archive.com/ubuntu-deve ... 09367.html
Dopo aver applicato la patch preferita, prima del make va utilizzato sudo make menuconfig in modo da disattivare FireDTV and FloppyDTV
In pratica dando da terminale il comando sudo make menuconfig dovete navigare nel pannello di configurazione che appare seguendo questo percorso:
Multimedia support --->DVB/ATSC adapters --->FireDTV and FloppyDTV
quando avete selezionato la voce FireDTV and FloppyDTV la disattivate col tasto N quindi premete sempre Esc e prima di uscire dalla configurazione confermate salvando la modifica.
Dopo questo potete procedere normalmente con make e continuare come indicato su questa guida.
Ragacci! Io ho installato Karmic ieri, e dopo gli aggiornamenti, con cheese, l'immagine è dritta e non a specchio... Direi che è stato risolto no??rainboww ha scritto: Bah! Quello che posso dire è che ogni giorno ci sono piccoli aggiornamenti da scaricare che dovrebbero sistemare il tutto.
Ci vuole pazienza e la collaborazione di tutti.![]()
beato te, a me se non faccio tutta la procedura non è dritta e poi soprattutto dopo le patch cheese è bloccata >:(bobotti ha scritto:Ragacci! Io ho installato Karmic ieri, e dopo gli aggiornamenti, con cheese, l'immagine è dritta e non a specchio... Direi che è stato risolto no??rainboww ha scritto: Bah! Quello che posso dire è che ogni giorno ci sono piccoli aggiornamenti da scaricare che dovrebbero sistemare il tutto.
Ci vuole pazienza e la collaborazione di tutti.![]()
allora ti riassumo come faccio io, anche se mi rimane il problema di cheese, ma la webcam è ok con questo metodo.donPi ha scritto: Ovviamente ho problemi con la webcam anche io. Dopo aver letto le 13 pagine mi metto a provare le indicazioni che avete fornito. Do qualche specifica del mio pc, magari può essere utile.
Ubuntu 9.10 2.6.31-15-generic
04f2:b071 Chicony Electronics Co., Ltd 2.0M UVC WebCam / CNF7129
@Tizianub: Come procede?
Codice: Seleziona tutto
Vai su http://linuxtv.org/hg/v4l-dvb
Se guardi in alto a sinistra, troverai i link gz e bz2 che contengono tutto il malloppo.
Scarica uno dei due e scompattalo
La directory principale nel mio caso si trova in v4l-dvb-83712d149893 (ma i numeri possono essere diversi, non cambia nulla)
I sorgenti uvc si trovano in v4l-dvb-83712d149893/linux/drivers/media/video/uvc ed è qui che andrà collocato il solito file di patch.
Dentro la directory v4l-dvb-83712d149893/linux/drivers/media/video/uvc c'è un file, uvc_video.c
1: apritelo con gedit
2: col comando cerca trovate questo punto del file: static void uvc_video_decode_data (semplicemente cercate questa frase, ce n'è solo una).
La funzione si sviluppa da questa riga all'ultima parentesi graffa prima che inizi "static void uvc_video_decode_end".
Voi dovete sostituire (con un copia incolla) la suddetta funzione del vostro file con questa postata da me (vedrete che la prima e l'ultima parte della funzione sono identiche), cioè:
---
static void uvc_video_decode_data(struct uvc_streaming *stream,
struct uvc_buffer *buf, const __u8 *data, int len)
{
struct uvc_video_queue *queue = &stream->queue;
unsigned int maxlen, nbytes, row_size, to_be_copied, shift_right;
void *mem;
if (len <= 0)
return;
/* Copy the video data to the buffer. */
maxlen = buf->buf.length - buf->buf.bytesused;
mem = queue->mem + buf->buf.m.offset + buf->buf.bytesused;
nbytes = min((unsigned int)len, maxlen);
row_size = stream->cur_frame->wWidth *
stream->format->bpp / 8;
/* Each loop "nbytes" is decremented of the number of bytes just copied.
* So are there any other bytes to be copied?
*/
while (nbytes > 0) {
/* As the rows of modified frames have to be fulfilled from
* bottom-left to top-right, each cycle tries to complete a
* single row.
* In this cycle where is it needed to start to store bytes
* within the selected row? From the beginning or shifted
* right? Because other bytes could have been already stored in
* that row without completing it, so it could be needed a right
* shift.
*/
shift_right = buf->buf.bytesused % row_size;
/* In this cycle how many byte can we copy in the selected row?
*/
if (nbytes > row_size - shift_right)
to_be_copied = row_size - shift_right ;
else
to_be_copied = nbytes;
/* "queue->mem + buf->buf.m.offset" is the base-address where to
* start to store the current frame. This address refers to a
* preallocated area (just for a sigle frame) taking part in a
* circular buffer, where to store a fixed number of sequent
* frames.
*/
memcpy(queue->mem + buf->buf.m.offset
/* Go to the end of this frame. */
+ row_size * stream->cur_frame->wHeight
/* Go back for the number of bytes corrisponding to the
* already fully completed rows.
*/
- (buf->buf.bytesused - shift_right)
/* Go back at the starting point of the upper row. */
- row_size
/* Shift right on this row if it is needed. */
+ shift_right,
data,
to_be_copied );
/* Update "data", "byteused" and "nbytes" values. */
data += to_be_copied;
buf->buf.bytesused += to_be_copied ;
nbytes -= to_be_copied;
}
/* Complete the current frame if the buffer size was exceeded. */
if (len > maxlen) {
uvc_trace(UVC_TRACE_FRAME, "Frame complete (overflow).\n");
buf->state = UVC_BUF_STATE_DONE;
}
}
---
Poi salvate il file.
Dopo aver applicato la patch, prima del make va utilizzato sudo make menuconfig in modo da disattivare FireDTV and FloppyDTV
In pratica dando da terminale il comando sudo make menuconfig dovete navigare nel pannello di configurazione che appare seguendo questo percorso:
Multimedia support --->DVB/ATSC adapters --->FireDTV and FloppyDTV
quando avete selezionato la voce FireDTV and FloppyDTV la disattivate col tasto N quindi premete sempre Esc e prima di uscire dalla configurazione confermate salvando la modifica.
Dopo questo potete procedere normalmente, dal terminale, posizionato nella cartella /v4l-dvb-83712d149893, lanciare
make
sudo make install
sudo make unload
sudo modprobe uvcvideo
Codice: Seleziona tutto
-------------------------------- WARNING ---------------------------------------
The USB Video Class driver has moved to http://linuxtv.org/.
Using the Berlios SVN repository is now deprecated.
Please check http://linux-uvc.berlios.de/ for download instructions.
If you really want to compile this historical version, run 'make uvcvideo'.
da dove scarichi il trunk?tenente_colombo ha scritto: scusate mo anche io il problema della webcam: 04f2:b106 Chicony Electronics Co., Ltd... ho ubuntu karmic e quando faccio cd trunk e poi mak mi da:
Codice: Seleziona tutto
-------------------------------- WARNING --------------------------------------- The USB Video Class driver has moved to http://linuxtv.org/. Using the Berlios SVN repository is now deprecated. Please check http://linux-uvc.berlios.de/ for download instructions. If you really want to compile this historical version, run 'make uvcvideo'.
Codice: Seleziona tutto
make
make -C /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l
make[1]: Entering directory `/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l'
creating symbolic links...
make -C firmware prep
make[2]: Entering directory `/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/firmware'
make[2]: Leaving directory `/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/firmware'
make -C firmware
make[2]: Entering directory `/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/firmware'
make[2]: Nothing to be done for `default'.
make[2]: Leaving directory `/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/firmware'
Kernel build directory is /lib/modules/2.6.31-15-generic/build
make -C /lib/modules/2.6.31-15-generic/build SUBDIRS=/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l modules
make[2]: Entering directory `/usr/src/linux-headers-2.6.31-15-generic'
CC [M] /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.o
/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '-' token
/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:1:21: error: too many decimal points in number
/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:2:16: error: too many decimal points in number
/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:3:48: error: invalid digit "9" in octal constant
/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:4: error: stray '@' in program
/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:4: error: stray '@' in program
/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:4: error: stray '@' in program
/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:4: error: stray '@' in program
/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:6: error: expected identifier or '(' before '}' token
/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:8: error: expected identifier or '(' before '+' token
make[3]: *** [/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.o] Error 1
make[2]: *** [_module_/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l] Error 2
make[2]: Leaving directory `/usr/src/linux-headers-2.6.31-15-generic'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l'
make: *** [all] Error 2
root@andrea-laptop:~/Downloads/v4l-dvb-e0cd9a337600#
hai applicato la patch e dato prima del maketenente_colombo ha scritto: quando do make mi da questi erroriCodice: Seleziona tutto
make make -C /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l make[1]: Entering directory `/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l' creating symbolic links... make -C firmware prep make[2]: Entering directory `/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/firmware' make[2]: Leaving directory `/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/firmware' make -C firmware make[2]: Entering directory `/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/firmware' make[2]: Nothing to be done for `default'. make[2]: Leaving directory `/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/firmware' Kernel build directory is /lib/modules/2.6.31-15-generic/build make -C /lib/modules/2.6.31-15-generic/build SUBDIRS=/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l modules make[2]: Entering directory `/usr/src/linux-headers-2.6.31-15-generic' CC [M] /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.o /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '-' token /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:1:21: error: too many decimal points in number /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:2:16: error: too many decimal points in number /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:3:48: error: invalid digit "9" in octal constant /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:4: error: stray '@' in program /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:4: error: stray '@' in program /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:4: error: stray '@' in program /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:4: error: stray '@' in program /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:6: error: expected identifier or '(' before '}' token /home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.c:8: error: expected identifier or '(' before '+' token make[3]: *** [/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l/uvc_video.o] Error 1 make[2]: *** [_module_/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l] Error 2 make[2]: Leaving directory `/usr/src/linux-headers-2.6.31-15-generic' make[1]: *** [default] Error 2 make[1]: Leaving directory `/home/andrea/Downloads/v4l-dvb-e0cd9a337600/v4l' make: *** [all] Error 2 root@andrea-laptop:~/Downloads/v4l-dvb-e0cd9a337600#
Codice: Seleziona tutto
sudo make menuconfig