PDA

Visualizza la versione completa : [USB] Scanner e webcam


cacao74
07-08-2005, 18:35
Ciao a tutti.

Vi è mai capitato di utilizzare contemporanemente uno scanner usb ed una webcam usb? Avete mai avuto problemi? Parliamone... :D

Attualmente se voglio utilizzare la webcam, e lo scanner è in uno stato di riposo, il sistema mi informa della sua disconnessione e vengono registrati una serie di errori di vario tipo. Anche togliendo e reinserendo il connettore dello scanner non viene connesso al sistema, continuando ad ottenere altri errori nei log di sistema. Non usando la webcam, lo scanner, va a gonfie vele.

I principali attori di questa tragedia (da me diretta):
Epson Scanner Perfection 1670
Philips Webcam ToUCam II 820k
=== co-starring ===
Debian Testing 3.1
Linux Kernel 2.6.11-1-k7

Mi sarebbe sufficiente sapere se da voi funziona tutto regolarmente o meno, in quanto per ora ho provato solo con un sistema, ma posso provarne anche altri da domani.

Grazie. ciao :ciauz:

gio14
07-08-2005, 21:12
Probabilmente hai qualche problema nella tua configurazione, io ho dei componenti quasi come i tuoi (solo leggermente più datati) scanner : Epson Perfection 1660 , webcam : Philips TouCam Pro 740k , Debian Sid kernel 2.6.12.2 e onestamente non ho nessun problema ad usarli contemporaneamente (o provato ha scannerizzare avendo in esecuzione gnomemeeting oppure con camorama e problemi nessuno) dimenticavo io per la webcam utilizzo il driver compilato da sorgenti. presi da http://www.saillard.org/linux/pwc/ perche quello interno al kernel mi dava problemi(in pratica non dava nessun errore ma non si vedeva una mazza) :ciauz:

gio14
07-08-2005, 21:54
Mi sono ricordato che tempo fa avevo avuto dei problemi simili ai tuoi ed erano dati dal fatto che il programma di scannerizzazione no sò per quale motivo becca sempre per default il device webcam, allora io per scannerizzare utilizzo Xsane con Gimp e vado su acqisizione -> Xsane -> device dialog e da li scelgo lo scanner Epson (perchè tra i device trovi anche la webcam e tra l'altro te la mette di default e se cerchi di usarla cone scanner chiaramente ti da degli errori) non vorrei che il tuo problema sia questo

cacao74
08-08-2005, 05:34
Originariamente inviato da gio14
Probabilmente hai qualche problema nella tua configurazione, io ho dei componenti quasi come i tuoi (solo leggermente più datati) scanner : Epson Perfection 1660 , webcam : Philips TouCam Pro 740k
Innanzitutto, grazie per il tuo intervento. :)

Dubito (:D) che ci sia qualche problema di configurazione, ma nel dubbio, farò le verifiche del caso. Sono più propenso all'ipotesi che ci sia qualche bisticcio a livello hardware o con i moduli della webcam compilati ed installati.

Aggiungo che la tua webcam può utilizzare i driver pwc, per la mia sono necessari i driver ov511 più recenti, che comprendono anche il modulo ov518. Purtroppo la webcam è stato un 'incauto' acquisto da parte mia; ricordavo un modello supportato (ToUCam), ho preso una ToUCam II.. :dhò:

Grazie anche per i consigli circa i software per la scansione, anche se ne sono già sufficientemente a conoscenza dell'utilizzo/configurazione. :)

Ma veniamo al dunque. Ho fatto una semplice prova collegando sia lo scanner che la webcam al portatile, configurando l'hardware al meglio ed installando il software necessario. Un piccolo successo, entrambi funzionano egragiamente: ovviamente questo dovrebbe essere un comportamento normale...

Visto che la 'pezza' da applicare ai moduli installati su Debian, non mi ha convinto dei risultati ottenuti, dopo aver sbirciato in rete, ho tirato fuori una 'patch' che permette la compilazione dei driver ov511-2.28 con kernel 2.6.12-2. Probabilmente funzionerà anche con altre versioni, ma posso solamente confermare quanto fatto sulla mia macchina.

Il passo successivo sarà quello di analizzare meglio il comportamento anomalo che ho avuto sull'altra macchina con Debian.

Nel post seguente allego la procedura che ho seguito per installare ed utilizzare i recenti driver ov511-2.28, sperando che questo possa servire anche ad altri. :zizi:

continua...

cacao74
08-08-2005, 05:35
compilazione_driver_webcam
==========================

### scompattazione sorgenti


cacao74@tweety:~/sources$ tar jxf ov511-2.28.tar.bz2

### applicazione patch


cacao74@tweety:~/sources$ patch -p0 ov511-2.28_kernel-2.6.12.2.patch

### entrare nella directory dei sorgenti


cacao74@tweety:~/sources$ cd ov511-2.28


### compilare i sorgenti
# NOTA: è stato necessario avere i sorgenti del kernel
# installati e compilato (basta "make && make modules")
# verificare anche l'esistenza del seguente link simbolico
# /lib/modules/$(uname -r)/build -> /dir/sorgenti/kernel/$(uname -r)


cacao74@tweety:~/sources/ov511-2.28$ make
Building OVCam drivers for 2.6 kernel.
PLEASE IGNORE THE "Overriding SUBDIRS" WARNING
make -C /lib/modules/2.6.12.2-AcerTM800LCi/build SUBDIRS=/home/cacao74/sources/ov511-2.28 modules
make[1]: Entering directory `/usr/src/linux-2.6.12.2'
CC [M] /home/cacao74/sources/ov511-2.28/ov511_core.o
CC [M] /home/cacao74/sources/ov511-2.28/ov511_decomp.o
CC [M] /home/cacao74/sources/ov511-2.28/ov518_decomp.o
CC [M] /home/cacao74/sources/ov511-2.28/ovcamchip_core.o
CC [M] /home/cacao74/sources/ov511-2.28/ov6x20.o
CC [M] /home/cacao74/sources/ov511-2.28/ov6x30.o
CC [M] /home/cacao74/sources/ov511-2.28/ov7x10.o
CC [M] /home/cacao74/sources/ov511-2.28/ov7x20.o
CC [M] /home/cacao74/sources/ov511-2.28/ov76be.o
LD [M] /home/cacao74/sources/ov511-2.28/ovcamchip.o
LD [M] /home/cacao74/sources/ov511-2.28/ov511.o
CC [M] /home/cacao74/sources/ov511-2.28/ovfx2.o
CC [M] /home/cacao74/sources/ov511-2.28/saa7111-new.o
CC [M] /home/cacao74/sources/ov511-2.28/tuner.o
CC [M] /home/cacao74/sources/ov511-2.28/tda7313.o
Building modules, stage 2.
MODPOST
CC /home/cacao74/sources/ov511-2.28/ov511.mod.o
LD [M] /home/cacao74/sources/ov511-2.28/ov511.ko
CC /home/cacao74/sources/ov511-2.28/ovcamchip.mod.o
LD [M] /home/cacao74/sources/ov511-2.28/ovcamchip.ko
CC /home/cacao74/sources/ov511-2.28/ovfx2.mod.o
LD [M] /home/cacao74/sources/ov511-2.28/ovfx2.ko
CC /home/cacao74/sources/ov511-2.28/saa7111-new.mod.o
LD [M] /home/cacao74/sources/ov511-2.28/saa7111-new.ko
CC /home/cacao74/sources/ov511-2.28/tda7313.mod.o
LD [M] /home/cacao74/sources/ov511-2.28/tda7313.ko
CC /home/cacao74/sources/ov511-2.28/tuner.mod.o
LD [M] /home/cacao74/sources/ov511-2.28/tuner.ko
make[1]: Leaving directory `/usr/src/linux-2.6.12.2'

### installazione dei moduli compilati


cacao74@tweety:~/sources/ov511-2.28$ su -c "make install"
Password:
./do_install.sh *.ko
Detected 2.6 kernel
Creating install path: /lib/modules/2.6.12.2-AcerTM800LCi/kernel/drivers/usb/media/
Installing ov511.ko to /lib/modules/2.6.12.2-AcerTM800LCi/kernel/drivers/usb/media/
Installing ovcamchip.ko to /lib/modules/2.6.12.2-AcerTM800LCi/kernel/drivers/usb/media/
Installing ovfx2.ko to /lib/modules/2.6.12.2-AcerTM800LCi/kernel/drivers/usb/media/
Installing saa7111-new.ko to /lib/modules/2.6.12.2-AcerTM800LCi/kernel/drivers/usb/media/
Installing tda7313.ko to /lib/modules/2.6.12.2-AcerTM800LCi/kernel/drivers/usb/media/
Installing tuner.ko to /lib/modules/2.6.12.2-AcerTM800LCi/kernel/drivers/usb/media/
Finding module dependencies
All done!

### caricamento moduli per la webcam


cacao74@tweety:~/sources/ov511-2.28$ su -c "modprobe ovcamchip"
Password:
cacao74@tweety:~/sources/ov511-2.28$ su -c "modprobe ovcamchip"
Password:
cacao74@tweety:~/sources/ov511-2.28$ lsmod | grep ov
ov511 97664 0
videodev 7424 1 ov511
v4l2_common 4864 1 ov511
ovcamchip 22408 0

### verifica messaggi del kernel


cacao74@tweety:~/sources/ov511-2.28$ dmesg
ovcamchip: v2.27 for Linux 2.6 : OV camera chip I2C driver
Linux video capture interface: v1.00
/home/cacao74/sources/ov511-2.28/ov511_core.c: USB OV518 video device found
/home/cacao74/sources/ov511-2.28/ov511_core.c: Device revision 1
/home/cacao74/sources/ov511-2.28/ov511_core.c: Compression required with OV518...enabling
ovcamchip: Camera chip is an OV6630AF
/home/cacao74/sources/ov511-2.28/ov511_core.c: Device at usb-0000:00:1d.1-1 registered to minor 0
usbcore: registered new driver ov511
/home/cacao74/sources/ov511-2.28/ov511_core.c: v2.28 : ov511 USB Camera Driver (V4L2 disabled)

### fine
a questo punto utilizzare il tool preferito per gestire la webcam



@@@ ALLEGATI @@@
ov511_kernel-2.6.12.2.patch


diff -c ov511-2.28/ov511_core.c ov511-2.28-patched/ov511_core.c
*** ov511-2.28/ov511_core.c 2004-07-13 13:54:22.000000000 +0200
--- ov511-2.28-patched/ov511_core.c 2005-08-08 02:37:42.000000000 +0200
***************
*** 4881,4886 ****
--- 4881,4891 ----

pos = (unsigned long)ov->fbuf;
while (size > 0) {
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11)
+ page = vmalloc_to_pfn((void *)pos);
+ if (remap_pfn_range(vma, start, page, PAGE_SIZE,
+ PAGE_SHARED)) {
+ #else
page = kvirt_to_pa(pos);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 3) || defined(RH9_REMAP)
if (remap_page_range(vma, start, page, PAGE_SIZE,
***************
*** 4888,4893 ****
--- 4893,4899 ----
#else
if (remap_page_range(start, page, PAGE_SIZE, PAGE_SHARED)) {
#endif
+ #endif
up(&ov->lock);
return -EAGAIN;
}
diff -c ov511-2.28/ovcamchip_core.c ov511-2.28-patched/ovcamchip_core.c
*** ov511-2.28/ovcamchip_core.c 2004-07-16 12:58:25.000000000 +0200
--- ov511-2.28-patched/ovcamchip_core.c 2005-08-08 02:20:31.000000000 +0200
***************
*** 582,588 ****

static struct i2c_client client_template = {
I2C_DEVNAME("(unset)"),
! .id = -1,
.driver = &driver,
};

--- 582,588 ----

static struct i2c_client client_template = {
I2C_DEVNAME("(unset)"),
! //.id = -1,
.driver = &driver,
};

diff -c ov511-2.28/ovfx2.c ov511-2.28-patched/ovfx2.c
*** ov511-2.28/ovfx2.c 2004-07-16 01:32:08.000000000 +0200
--- ov511-2.28-patched/ovfx2.c 2005-08-08 02:37:51.000000000 +0200
***************
*** 2502,2507 ****
--- 2502,2512 ----

pos = (unsigned long)ov->fbuf;
while (size > 0) {
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11)
+ page = vmalloc_to_pfn((void *)pos);
+ if (remap_pfn_range(vma, start, page, PAGE_SIZE,
+ PAGE_SHARED)) {
+ #else
page = kvirt_to_pa(pos);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 3) || defined(RH9_REMAP)
if (remap_page_range(vma, start, page, PAGE_SIZE,
***************
*** 2509,2514 ****
--- 2514,2520 ----
#else
if (remap_page_range(start, page, PAGE_SIZE, PAGE_SHARED)) {
#endif
+ #endif
up(&ov->lock);
return -EAGAIN;
}
diff -c ov511-2.28/saa7111-new.c ov511-2.28-patched/saa7111-new.c
*** ov511-2.28/saa7111-new.c 2004-07-13 14:04:46.000000000 +0200
--- ov511-2.28-patched/saa7111-new.c 2005-08-08 02:21:41.000000000 +0200
***************
*** 520,526 ****

static struct i2c_client client_template = {
I2C_DEVNAME("(unset)"),
! .id = -1,
.driver = &driver
};

--- 520,526 ----

static struct i2c_client client_template = {
I2C_DEVNAME("(unset)"),
! //.id = -1,
.driver = &driver
};

diff -c ov511-2.28/tda7313.c ov511-2.28-patched/tda7313.c
*** ov511-2.28/tda7313.c 2004-07-15 12:06:44.000000000 +0200
--- ov511-2.28-patched/tda7313.c 2005-08-08 02:22:49.000000000 +0200
***************
*** 202,208 ****

static struct i2c_client client_template = {
I2C_DEVNAME("tda7313"),
! .id = -1,
.driver = &driver,
};

--- 202,208 ----

static struct i2c_client client_template = {
I2C_DEVNAME("tda7313"),
! //.id = -1,
.driver = &driver,
};

ciao :ciauz:

Loading