Home Welcome 107.20.109.52 - Suggested View 1024x768 - Last Update 20/02/2004 Back Forward



S A N E


Metto a disposizione un mini HOWTO sugli scanner CanoScan FB630P, FB330P, N640P e N340P su porta parallela, inviatomi da Daniele Niccolai. Lo trovate qui in formato testo.


NOTA: Finalmente è stata inserita nel kernel 2.4.21 la patch di cui si fa uso in questa guida. Ciò significa che, se avete un distribuzione Linux con una versione di kernel pari o superiore a questa, non sarà più necessario seguire l'intera guida qui esposta. Ora il vostro sistema Linux è in grado, senza alcuna operazione particolare, di lavorare con scanner (o altri dispositivi) collegati ad una porta parallela. Saltate al punto 4 per vedere come verificare il funzionamento del vostro dispositivo.



Questa guida mostra come è possibile configurare il proprio sistema Linux per l'uso di uno scanner collegato alla porta parallela del PC. Oggi questi tipi di scanner vengono considerati un po' obsoleti (la maggior parte degli scanner in vendita prevedono il collegamento alla porta USB) ma comunque offrono prestazioni più che sufficienti per un impiego domestico. Infatti la velocità di acquisizione dell'immagine non è vincolata tanto dal tipo di collegamento scanner-PC (ricordo comunque che la velocità teorica di una porta parallela tipo EPP è al massimo di 2Mbit/s contro i 12Mbit/s di quella USB), ma piuttosto dalla meccanica e l'elettronica dello scanner stesso.
Quindi se avete uno scanner USB questa guida non vi servirà: è infatti sufficiente installare il programma SANE e se avete un kernel della serie 2.4, funzionerà facilmente.

Veniamo ora al dunque: prenderò in esame lo scanner Microtek Phantom 330 CX su di un sistema Linux Mandrake 8.0 con kernel 2.4.3, SANE backends 1.0.7 e XSANE 0.84.
Innanzitutto diciamo che SANE (Scanner Access Now Easy) backends rappresenta i driver che sono necessari al funzionamento dello scanner (verificate se il vostro modello è supportato) mentre XSANE fornisce l'interfaccia grafica che vi permette di utilizzare facilmente lo scanner nel desktop environment (KDE, Gnome, etc.); molto probabilmente tali software sono già inclusi nella distribuzione Linux in vostro possesso.
Nel caso, SANE potete trovarlo a http://panda.mostang.com/sane/ mentre XSANE sul sito ufficiale del progetto http://xsane.org.

Non è tutto però, manca ancora la cosa più importante: la patch da applicare al kernel che permette al sistema di rilevare lo scanner sulla porta parallela. Infatti, semplificando, si può dire che all'interno dello scanner è integrata una interfaccia SCSI che però comunicherà con il PC attraverso la porta parallela. La patch aggiornerà il kernel permettendogli di caricare un modulo esterno che abiliterà questo nuovo tipo di comunicazione su porta parallela.
Se vi state chiedendo perchè tale patch non sia stata ancora inclusa in kernel recenti, la risposta è prevedibile: aspettiamo Linus ;-)




Dunque procediamo:

1) Molti scanner su porta parallela (tra cui il Phantom 330) funzionano grazie ai moduli ppSCSI e onscsi. Scarichiamo quindi la patch in base alla versione del nostro kernel. Io userò la linux-ppscsi.patch, che potete scaricare localmente.
Per altre versioni andare a http://people.redhat.com/twaugh/parport.

2) Applichiamo la patch, da superutente, dopo averla copiata in /usr/src/linux. Nel caso non trovaste tale directory, vuol dire che NON avete installato i pacchetti RPM che contengono i sorgenti del kernel della vostra distribuzione. Fatelo ORA. In genere hanno un nome del tipo "kernel-source.versione.rpm"; puo' tornare utile installare anche la documentazione "kernel-doc.versione.rpm".

Date il seguente comando: patch -p1 -b -z OLD < linux-ppscsi.patch

Dovreste vedere qualcosa del tipo:

[root@localhost linux]# patch -p1 -b -z OLD < linux-ppscsi.patch
patching file drivers/scsi/Config.in
Hunk #1 succeeded at 115 with fuzz 2 (offset 5 lines).
patching file drivers/scsi/Makefile
Hunk #1 succeeded at 128 with fuzz 2 (offset -3 lines).
patching file drivers/scsi/epsa2.c
patching file drivers/scsi/epst.c
patching file drivers/scsi/onscsi.c
patching file drivers/scsi/ppscsi.c
patching file drivers/scsi/ppscsi.h
patching file drivers/scsi/sparcsi.c
patching file drivers/scsi/t348.c
patching file drivers/scsi/t358.c
patching file drivers/scsi/vpi0.c
patching file drivers/scsi/vpi2.c

Cosa è successo: i files elencati sono stati patchati e gli originali, se modificati, rinominati aggiungendo la parola OLD alla fine.

NOTA: applicare patch è un'operazione tediosa che in alcuni casi può portare a diversi errori; se il sorgente del nostro kernel differisce troppo da quello sul quale è stata sviluppata la patch, questa non può essere applicata correttamente. E' quindi molto importante fare attenzione ad eventuali messaggi di errore. Un esempio tipico è il seguente:
8 out of 8 hunks FAILED -- saving rejects to file include/asm-i386/atomic.h.rej.
In questo caso è possibile esaminare il file di estensione rej (sta per reject) che riporta le parti della patch che sono state rifiutate. Consulate le man pages di patch per avere maggiori informazioni e date un'occhiata al punto 4 della mia guida alla compilazione del kernel.

In definitiva scegliere con cura la patch in base alla versione del proprio kernel rimane la cosa più importante da fare. Eventualmente visitate http://www.torque.net/parport/ppscsi.html per un'ulteriore patch (a me ha dato problemi).

AGGIORNAMENTO MANDRAKE 9.0:

La patch qui descritta è ancora necessaria anche con kernel recenti, come il 2.4.19 che si trova sulla Mandrake 9.0. In questo caso, l'operazione di patching fallisce sui files Config.in e Makefile, rendendone la compilazione impossibile. Comunque è piuttosto semplice modificarli manualmente inserendovi le differenze trovate e memorizzate nei files reject. Per comodità metto in locale entrambi i files sopracitati già patchati; in questo modo, è possibile copiarli direttamente in /usr/src/linux/drivers/scsi/ dopo aver applicato la patch. Ricordate di farvi una copia di backup degli originali prima di procedere.

Makefile  Config.in

3) Ora che il kernel è stato patchato a dovere, deve essere compilato avendo cura di abilitare:

- il supporto SCSI scsi_mod e quello generico sg
- i moduli per la porta parallela parport e parport_pc
- i moduli ppscsi e onscsi

Compilate quindi kernel e moduli, installateli e riavviate il sistema.

NOTA: se non sapete come eseguire queste operazioni, potete consultare la guida che ho approntato appositamente per la compilazione del kernel. E' piuttosto essenziale e sicuramente potete trovarne di più esaustive, ma è stata pensata per principianti che cercano semplicità e rapidità nel raggiungere lo scopo. La trovate nel menù principale, sotto la voce Linux naturalmente! Anche la vostra distribuzione conterrà sicuramente una guida in proposito, consultatela.

4) Accendete lo scanner e caricate i seguenti moduli (di norma i primi 3 vengono caricati all'avvio):

insmod sg
insmod parport
insmod parport_pc
insmod ppscsi
insmod onscsi

oppure date semplicemente modprobe onscsi che automaticamente caricherà tutti i moduli necessari.

Verificate il riconoscimento dello scanner con:

cat /proc/scsi/scsi oppure sane-find-scanner

Dovreste vedere qualcosa del tipo:

Host: scsi1 Channel: 00 Id: 05 Lun: 00
   Vendor:         Model: Scanner 300A4   Rev: 4.11
   Type:   Scanner                        ANSI SCSI revision: 02

Ciò significa che il kernel è in grado di comunicare con lo scanner!
Ora è possibile avviare XSANE che cercherà automaticamente lo scanner mettendo a disposizione un sofisticato e completo ambiente di lavoro.




Anti-Spam button. Before you click, please write down my e-mail address. Thanks!