Premessa:
Questo non vuole essere un documento Ufficiale ne tanto meno ha la pretesa di essere un HowTo, non sono un tecnico e quindi puo' succedere che utilizzero' termini non corretti. Questa pagina vuole solo essere un aiuto alla configurazione dello scanner Epson Perfection 640U.

In questo modo il mio Scanner Epson 640U funziona bene sotto Linux.
Non sono responsabile di eventuali danni causati dal seguire le indicazioni di questo documento.
Segui le indicazioni di questo documento a tuo rischio e pericolo :-)
By GneGne

Requisiti:
Saper utilizzare un editor sotto Linux
Saper ricompilare un kernel
Avere pazienza

Assicurati di aver installato una versione abbastanza recente di SANE io ho usato la versione 1.0.3 che viene distribuita con la Mandrake 7.2.
sane-config --version

or
scanimage --version

Se possiedi questa versione o una successiva non c'e' problema.
Poiche' il 640U e' dotato di porta USB bisogna utilizzare un kernel che supporti l'USB. Se usi un Kernel 2.4.x non c'e' problema, se usi un kernel 2.2.x devi assicurarti che abbia il supporto per USB (dalla 2.2.18 mi sembra).
Al momento il kernel che utilizzo ( 2.4.4 ) non riconosce il 640U e pur riconoscendo le porte USB, lo scanner non viene riconosciuto.
Tutte le periferiche per farsi riconoscere dal kernel hanno due "codici" il vendorID ed il productID che visualizzeremo (se e' gia' abilitato il supporto USB) con il comando:
cat /proc/bus/usb/devices

...omissis
T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
D: Ver=1.00 Cls=ff(vend.) Sub=00 Prot=ff MxPS= 8 #Cfgs= 1
P:Vendor=04b8 ProdID=010c Rev= 0.01
C:*#Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 2mA
I: If#=0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=usbscanner
E: Ad=81(I)Atr=02(Bulk) MxPS= 64 Ivl= 0ms
E: Ad=02(O)Atr=02(Bulk) MxPS= 64 Ivl= 0ms
...omissis

Ti aiuto un po', se possiedi uno scanner Epson 640U questi sono i codici:
Vendor=04b8
ProdID=010c

Assicurati di aver Installato i sorgenti del kernel .
Apri il file /usr/src/linux/drivers/usb/scanner.h ( se si dispone di un kernel piu' vecchio come ad esempio il 2.4.2 si deve modificare non il file scanner.h ma il file scanner.c) :

...omissis
/*Seiko/Epson Corp. */
{ USB_DEVICE(0x04b8, 0x0101) }, /* Perfection 636U and 636Photo */
{ USB_DEVICE(0x04b8, 0x010c) }, /* Perfection 640U */
{USB_DEVICE(0x04b8,0x0103) }, /* Perfection 610 */
{USB_DEVICE(0x04b8,0x0104) }, /* Perfection 1200U and 1200Photo*/
{USB_DEVICE(0x04b8,0x0106) }, /* Stylus Scan 2500 */
{USB_DEVICE(0x04b8,0x0107) }, /* Expression 1600 */
...omissis

ed inserisci la riga in rosso ( poiche' e' quella che serve a far capire al kernel che i codici 0x04b e 0x010c rappresentano uno scanner ) , anche se non capisci quello che stai facendo assicurati pero' di scrivere in C correttamente :-)
Salva.
Ricompila il kernel.
Accertati che esista il device /dev/usbscanner0 solitamente un link a /dev/usb/scanner0
Riavvia: all'avvio dovrebbe apparirti il messaggio che e' stato trovato un "Perfection 640U"
Sei a buon punto.

Passiamo alla configurazione di Sane:
modifica il file /etc/sane.d/epson.conf decommenta la riga usb /dev/usbscanner0
commenta le altre.
Modifica il file /etc/sane.d/dll.conf lascia decommentata la riga in rosso

..omissis
#dc210
#dmc
epson
#hp
#m3096g
#microtek
...omissis

Avvia xcam e buon divertimento.

Contattami