7.6 Scanner di immagini

Scritto da Marc Fonvieille.

7.6.1 Introduzione

In FreeBSD, l'accesso agli scanner è fornito dalle API di SANE (Scanner Access Now Easy) disponibili nella collezione dei port di FreeBSD. SANE usa anche alcuni driver dei dispositivi di FreeBSD per accedere all'hardware dello scanner.

FreeBSD supporta sia scanner SCSI che USB. Verifica che il tuo scanner sia supportato da SANE prima di effettuare ogni configurazione. SANE ha una lista di dispositivi supportati, che può fornire informazioni riguardo il supporto per uno scanner ed il suo stato. La pagina man uscanner(4) fornisce una lista di scanner USB supportati.

7.6.2 Configurazione del Kernel

Come già menzionato, sono supportati sia scanner USB che SCSI. A seconda dell'interfaccia del tuo scanner, sono richiesti diversi driver dei dispositivi.

7.6.2.1 Interfaccia USB

Il kernel GENERIC di default include i driver dei dispositivi necessari per il funzionamento degli scanner USB. In caso tu voglia usare un kernel custom, accertati che le linee seguenti siano presenti nel tuo file di configurazione del kernel:

device usb
device uhci
device ohci
device uscanner

A seconda del tipo di chipset USB sulla tua scheda madre, hai bisogno solo di una fra le opzioni device uhci e device ohci, comunque avere entrambe le linee nel proprio file di configurazione del kernel non crea problemi.

Se non intendi ricompilare un kernel custom ed il tuo kernel non è il GENERIC, puoi direttamente caricare il modulo del driver del dispositivo di uscanner(4) con il comando kldload(8):

# kldload uscanner

Per caricare il modulo ad ogni avvio di sistema, aggiungi la seguente linea al file /boot/loader.conf:

uscanner_load="YES"

Dopo aver riavviato con il kernel corretto, o dopo aver caricato il modulo necessario, attacca il tuo scanner USB. Nel buffer dei messaggi di sistema (dmesg(8)) dovrebbe apparire una riga che mostra il riconoscimento dello scanner:

uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2

Questo mostra che il nostro scanner usa il nodo del dispositivo /dev/uscanner0.

7.6.2.2 Interfaccia SCSI

Se il tuo scanner possiede un'interfaccia SCSI, è importante sapere quale controller SCSI usi. A seconda del chipset SCSI usato, dovrai modificare il tuo file di configurazione del kernel. Il kernel GENERIC supporta i più comuni controller SCSI. Accertati di leggere il file di NOTES e aggiungi la linea corretta al tuo file di configurazione del kernel. Oltre al driver dell'interfaccia SCSI, devi avere le seguenti linee nel tuo file di configurazione del kernel:

device scbus
device pass

Una volta che il kernel è stato correttamente compilato ed installato, dovresti vedere i dispositivi nel buffer dei messaggi di sistema, al momento del boot:

pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfers

Se il tuo scanner non era acceso al momento dell'avvio, è ancora possibile forzare manualmente il riconoscimento attraverso uno scan del bus SCSI con il comando camcontrol(8):

# camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successful

A questo punto lo scanner apparirà nella lista dei device SCSI:

# camcontrol devlist
<IBM DDRS-34560 S97B>              at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B>              at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10>           at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00>     at scbus2 target 0 lun 0 (pass2,cd0)

Ulteriori dettagli sui dispositivi SCSI sono disponibili nelle pagine man scsi(4) e camcontrol(8).

7.6.3 Configurazione di SANE

Il sistema SANE è diviso in due parti: il backend ( graphics/sane-backends) ed il frontend ( graphics/sane-frontends). La parte backend fornisce accesso allo scanner. La lista dei dispositivi supportati da SANE specifica quale backend supporta il tuo scanner di immagini. È necessario determinare il corretto backend per il tuo scanner se intendi usare il tuo dispositivo. La parte frontend fornisce l'interfaccia grafica allo scanning (xscanimage).

La prima cosa da fare è installare il port o il pacchetto graphics/sane-backends. Quindi, usa il comando sane-find-scanner per verificare il riconoscimento dello scanner da parte del sistema SANE:

# sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3

L'output mostrerà il tipo di interfaccia dello scanner ed il nodo del dispositivo usato per connettere lo scanner al sistema. La marca ed il nome del modello potrebbero non comparire, non è importante.

Nota: Alcuni scanner USB richiedono il caricamento di un firmware, ciò è spiegato nella pagina man del backend. È utile anche leggere le pagine man di sane-find-scanner(1) e di sane(7).

Adesso dobbiamo verificare se lo scanner sarà identificato da un frontend di scanning. Di default, il backend di SANE fornisce un programma da linea di comando chiamato scanimage(1). Questo comando ti permette di elencare i dispositivi ed effettuare un'acquisizione di immagini da linea di comando. L'opzione -L è usata per ottenere una lista di scanner:

# scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner

Nessun output o un messaggio che dice che nessuno scanner è stato identificato indica che scanimage(1) non è in grado di identificare lo scanner. Se ciò succede, dovrai editare il file di configurazione del backend ed indicare il driver del dispositivo usato dallo scanner. La directory /usr/local/etc/sane.d/ contiene tutti i file di configurazione del backend. Questo problema di identificazione avviene con alcuni scanner USB.

Ad esempio, usando Sezione 7.6.2.1, sane-find-scanner su uno scanner USB otteniamo la seguente informazione:

# sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device
/dev/uscanner0

Lo scanner è stato riconosciuto correttamente, usa l'interfaccia USB ed è attaccato al nodo del dispositivo /dev/uscanner0. Ora possiamo testare se lo scanner è correttamente identificato:

# scanimage -L

Nessun scanner è stato identificato. Se ti aspettavi qualcosa di diverso,
verifica che lo scanner sia collegato, accendilo e avvia il tool di
riconoscimento degli scanner di sane (se adatto). Per cortesia leggi la
documentazione fornita con questo software (README, FAQ, pagine man).

Dato che lo scanner non è stato identificato, dovremo editare il file /usr/local/etc/sane.d/epson.conf. Il modello di scanner usato è l'EPSON Perfection® 1650, così sappiamo che userà il backend epson. Accertati di leggere i commenti di aiuto nei file di configurazione del backend. Le modifiche alle linee sono abbastanza semplici: commenta tutte le linee che hanno un'interfaccia non adatta al tuo scanner (nel nostro caso, commenteremo tutte le linee che iniziano con la parola scsi dato che il nostro scanner usa l'interfaccia USB), quindi aggiungi alla fine del file una linea che specifica l'interfaccia ed il nodo di dispositivo usato. In questo caso, aggiungiamo la seguente linea:

usb /dev/uscanner0

Sei invitato a leggere i commenti presenti nel file di configurazione del backend così come le pagine man del backend per più dettagli e per la corretta sintassi da usare. Ora possiamo verificare se lo scanner è identificato:

# scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner

Il nostro scanner USB è stato riconosciuto. Non è importante se la marca ed il modello non coincidono con il proprio scanner. Il punto principale a cui prestare attenzione è il campo `epson:/dev/uscanner0', che ci dà il corretto nome del backend ed il corretto nodo del dispositvo.

Una volta che il comando scanimage -L è in grado di vedere lo scanner, la configurazione è completa. Il dispositivo ora è in grado di scannerizzare.

Mentre scanimage(1) ci permette di effettuare l'acquisizione di un'immagine dalla linea di comando, è preferibile usare un'interfaccia grafica per effettuare scansioni di immagini. SANE offre una semplice ma efficace interfaccia grafica: xscanimage ( graphics/sane-frontends).

Xsane (graphics/xsane) è un altro comune frontend grafico di scanning. Questo frontend offre caratteristiche avanzate come varie tecniche di scanning (fotocopia, fax, etc.), correzione del colore, scans multipli, etc. Entrambe queste applicazioni sono fruibili come plugin di GIMP.

7.6.4 Permettere ad Altri Utenti l'Accesso allo Scanner

Tutte le operazioni precedenti sono state compiute con privilegi di root. Tuttavia potresti aver bisogno che altri utenti abbiano accesso allo scanner. L'utente necessiterà permessi di lettura e scrittura sul nodo di dispositivo usato dallo scanner. Per esempio, il nostro scanner USB usa il nodo di dispositivo /dev/uscanner0 che appartiene al gruppo operator. Aggiungendo l'utente joe al gruppo operator gli permetterà di usare lo scanner:

# pw groupmod operator -m joe

Per maggiori informazioni consulta la pagina man di pw(8). Inoltre devi settare corretamente i permessi di scrittura (0660 o 0664) per il nodo del dispositivo /dev/uscanner0; di default il gruppo operator può solo leggere questo nodo di dispositivo. Tale operazione può essere realizzata aggiungendo la seguente riga al file /etc/devfs.rules:

[system=5]
add path uscanner0 mode 660

Quindi aggiungi la seguente riga al file /etc/rc.conf e riavvia la macchina:

devfs_system_ruleset="system"

Ulteriori informazioni riguardo queste righe possono essere trovate nella pagina man di devfs(8).

Nota: Chiaramente, per ragioni di sicurezza, dovresti pensarci due volte prima di aggiungere un utente a qualsiasi gruppo, specialmente al gruppo operator.

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.