Translation(s): English - Français - Italiano


Condividere e usare uno scanner connesso via USB o rete attraverso una rete usando SANE e un'introduzione alla scansione senza driver con i backend sane-airscan e sane-escl.

Introduzione

      SCANNER                                 CLIENT
+-----------------+                +--------------------------+
|   Dispositivo   |                | libsane                  |
|    autonomo o   |  cavo/wireless | Pacchetti specifici per  |
|  multifunzione  |<-------------->|        produttore        |
| con uso di rete |                | eSCL/WSD                 |       
+-----------------+                +--------------------------+

Ad uno scanner che è abilitato all'uso della rete con una connessione cablata o wireless (uno scanner di rete) si accede grazie all'aiuto del pacchetto libsane e una delle raccolte di backend nel sistema. Due backend nuovi in Debian 11 (bullseye), sane-airscan e sane-escl, forniscono la scansione senza driver nella rete. Consultare il manuale di un backend per informazioni sul fatto che supporti la scansione via rete. Ad esempio i backend epson2, pixma, escl e airscan lo fanno. libsane funziona con il backend non-SANE hpaio fornito da HP. Anche altri produttori forniscono mezzi per accedere ad uno scanner di rete, ma generalmente c'è una qualche parte del materiale offerto che non è libera perciò la configurazione dei loro dispositivi non viene trattata in questa pagina.

Un dispositivo connesso via USB che gestisce e usa il protocolloIPP-over-USB può essere esportato ed essere visto come dispositivo di rete. Altrimenti, su USB, il dispositivo dovrà essere esportato ad un client via saned.

Condivisione di uno scanner connesso via USB: le basi

       SCANNER                       SERVER                                       CLIENT
 +-----------------+       +------------------------+                +-----------------------------+
 |   Dispositivo   |       | libsane + sane-utils   |                | libsane                     |
 |    autonomo o   |  USB  |                        |  cavo/wireless |                             |
 |  multifunzione  |<----->| saned.conf: connessioni|<-------------->| dll.conf: decommentare net  |
 |   non di rete   |       |             permesse   |                | net.conf: indiriz.IP server |
 +-----------------+       +------------------------+                +-----------------------------+

Questa sezione è scritta principalmente per gli utenti con installata Debian 8 (jessie), Debian 9 (stretch), Debian 10 (buster) o Debian 11 (bullseye). Queste distribuzioni hanno un sistema init (il primo processo lanciato durante l'avvio del computer che governa il suo successivo comportamento) basato su systemd. Su una macchina con uno scanner connesso ad una porta USB (il server), SANE con systemd può essere attivato via socket (controllare che il servizio sia abilitato). Il demone saned viene avviato quando viene ricevuta una richiesta sul server da un client e viene fermato quando la richiesta è stata soddisfatta. Ciò forma la base con cui uno scanner condiviso dal server serve un'immagine di un documento ad un'applicazione su un client.

Essenzialmente saned sul server e il backend net sul client vengono usati per convertire uno scanner non collegato alla rete o non abilitato all'uso della rete in uno di rete.

Configurazione del server

$ groups saned
saned : saned scanner

192.168.0.1/24

$ sudo systemctl enable saned.socket
Created symlink from /etc/systemd/system/sockets.target.wants/saned.socket to /lib/systemd/system/saned.socket.$ sudo systemctl start saned.socket
$ sudo systemctl status saned.socket

Una prima installazione di libsane ha il servizio socket disabilitato, perciò è necessario abilitarlo e avviarlo come descritto sopra.

Configurazione del client

% scanimage -L
device `net:192.168.0.100:plustek:libusb:002:006' is a Canon N670U/N676U/LiDE20 USB flatbed scanner

Notare che il backend net non è per accedere a scanner arbitrari in rete. Lo scopo per cui è pensato è quello di permettere al server (che ha uno scanner con supporto SANE) di esportare tale scanner ai client nella rete attraverso un unico protocollo specifico di SANE e indifferente al produttore.

Risoluzione dei problemi

Assicurarsi che l'utente saned possa accedere allo scanner da locale, sul server. scanimage -L dovrebbe rilevare lo scanner se nel sistema c'è un backend per esso e se l'utente saned ha i permessi d'accesso al bus USB; sane-find-scanner indica se l'utente saned non ha i permessi. Per eseguirlo come utente saned diventare root con su e usare

su -s /bin/bash saned
sane-find-scanner
scanimage -L

oppure usare sudo:

sudo -u saned sane-find-scanner
sudo -u saned scanimage -L

Inoltre vedere come impostare uno scanner USB per maggiori informazioni sulla configurazione in locale.

Avere un utente ordinario con o senza permessi sul bus USB (libpam-systemd potrebbe non essere installato) è di poca importanza. È l'utente saned che necessita dei permessi.

Tenere a mente che sane-find-scanner fa una scansione USB generica; il successo indica che un utente ha privilegi sufficienti per accedere ai dispositivi USB. D'altro canto, una risposta negativa a scanimage -L significa che nessuno dei backend SANE o forniti dal produttore conosce questo modello di scanner perciò non potrà comunicare con esso.

Se lo scanner funziona sul server ma non da remoto, assicurarsi che il servizio saned.socket sia in esecuzione correttamente sul server. systemctl dovrebbe riportare:

$ systemctl status saned.socket
● saned.socket - saned incoming socket
   Loaded: loaded (/lib/systemd/system/saned.socket; enabled)
   Active: active (listening) since Wed 2017-11-15 22:28:05 UTC; 1s ago
   Listen: [::]:6566 (Stream)
 Accepted: 0; Connected: 0

Nov 15 22:28:05 mafalda systemd[1]: Listening on saned incoming socket.

Si dovrebbe anche poter fare ping sull'host configurato:

$ ping -c1 mafalda
PING mafalda.anarc.at (192.168.0.6) 56(84) bytes of data.
64 bytes from mafalda.anarc.at (192.168.0.6): icmp_seq=1 ttl=64 time=0.400 ms

--- mafalda.anarc.at ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.400/0.400/0.400/0.000 ms

Si può anche cercare di connettersi direttamente allo scanner con:

xsane net:192.168.0.6

Se si hanno problemi a connettere più computer allo scanner, systemctl status saned.socket potrebbe mostrare

saned.socket: Too many incoming connections (1), dropping connection.

Questo è un bug noto nel componente systemd. Per una soluzione che aggira il problema in jessie o stretch:

In stretch è probabilmente più comodo usare:

Condivisione in Debian 11 (bullseye)

Debian 11 introduce ipp-usb come pacchetto installato in modo predefinito. Quando ipp-usb è attivo, che è quando viene fatta una connessione USB ad un dispositivo, impedisce l'impostazione di una relazione server e client come descritta precedentemente. Una soluzione è rimuovere ipp-usb dal sistema, perdendo tutti i suoi benefici.

Tuttavia un modo alternativo per ottenere accesso allo scanner sul server è di far sì che ipp-usb sul server esponga il dispositivo su tutte le interfacce, non solo su loopback. Modificare /etc/ipp-usb/ipp-usb.conf in modo da avere

interface = all

Il client dovrà fornire uno dei backendsane-escl o sane-airscane per abilitare il frontend scelto per la scansione.

Scansione con il protocollo eSCL

Molti MFD e scanner moderni gestiscono il protocollo eSCL. Il protocollo è un protocollo di rete indipendente dal produttore che permette la "scansione senza driver" con backend SANE adatti tramite dispositivi con connessione Ethernet, senza cavi e USB. In altre parole, il protocollo funziona non solo con i dispositivi connessi via rete che si pubblicizzano tramite DNS-SD, ma anche con dispositivi USB che usano IPP-over-USB. La scansione è senza driver perché, dal punto di vista del client, un driver specifico per il produttore non è necessario per usare ciò che è incorporato nel firmware del dispositivo.

Due backend SANE adatti inclusi in Debian 11 (bullseye) sono sane-escl, che è un prodotto del SANE Project e incluso in libsane1, e l'indipendente sane-airscan, che è sviluppato e mantenuto da Alexander Pevzner e che funziona anche con il protocollo WSD protocol.

Agli utenti di Debian 11 (bullseye) si consiglia di averli installati entrambi nel sistema per un'esperienza di scansione moderna di successo.

eSCL è noto anche come scansione Apple AirScan o AirPrint. È stato promosso da Apple come metodo per scansione da dispositivi mobili e qualsiasi dispositivo che supporta AirPrint versione 1.4 dovrebbe supportare eSCL. La documentazione ufficiale del protocollo non è pubblicamente disponibile, ma si è rivelato relativamente facile farne l'ingegneria inversa, dato che è un semplice protocollo basato su XML e HTTP. SCL sta per Scanner Control Language, il significato della e è sconosciuto.

Un dispositivo che gestisce il protocollo eSCL fornisce per uno qualsiasi dei comandi seguenti un output che descrive le funzionalità del dispositivo scanner. il significato di uscan non è certo, ma potrebbe essere universal scan.

avahi-browse -rt _uscan._tcp
avahi-browse -rt _uscans._tcp

Moltissimi dispositivi scanner moderni ora stanno diventando in grado di funzionare con SANE e i suoi frontends. Un esempio è la situazione relativi ai dispositivi Canon. I frontend SANE possono ora accedere a tali dispositivi.

Scansione con il protocollo WSD

Un altro protocollo di rete indipendente dal produttore che permette la scansione senza driver con un backend SANE adatto è basato sull'infrastruttura Web Services for Devices di Microsoft. WSD è un insieme di specifiche mirate a gestire la comunicazione di rete tra dispositivi che offrono un qualche tipo di funzionalità, come gli scanner. Co sì come con eSCL c'è un protocollo di rilevazione, un modo per recuperare un elenco di attributi del servizio da uno scanner e un insieme di regole per segnalare comandi o eventi.

WSD è una tecnologia simile ad eSCL per il fatto di basarsi su connessioni via HTTP e su XML. Tuttavia, a differenza di eSCL, che usa lo standard DNS-SD per la rilevazione dei dispositivi, WSD usa il proprio protocollo basato sull'invio di multcast XML via UDP. La parte di rilevamento di WSD è nota come WS-Discovery e la parte di scansione come WS-Scan.

I dispositivi scanner possono offrire:

Dei due backend precedentemente menzionati solo sane-airscan lavora con il protocollo WSD. Il suo backend implementa escl oltre a WSD, scegliendo automaticamente tra i due; vedere /etc/sane.d/airscan.conf e il manuale di sane-airscan. L'uso di questo backend ovviamente porta più dispositivi scanner a funzionare con SANE. Per usare la modalità eSCL o la modalità ESD un utente solitamente non deve fare nulla. Tuttavia alcuni dispositivi con gestione di WSD ed eSCL richiedono l'attivazione esplicita di un protocollo da un EWS. Vedere il sito web di sane-airscan per i dettagli.

Dopo un intenso sforzo tecnico, l'opinione attuale è che il protocollo WSD non sia gestito su una connessione IPP-over-USB.

Può essere difficile capire dal manuale di una stampante se un dispositivo gestisce eSCL o WSD. Con sane-airscan nel sistema, uno qualsiasi del due comandi seguenti dovrebbe indicare quali protocolli sono gestiti:

scanimage -L
airscan-discover

Configurazioni di scanner di rete

Uso dello scanner con un HP all-in-one di rete (aio)-1

Per usare lo scanner in una rete da uno scanner con HP aio (uno che non è connesso ad un computer via USB) è necessario solamente installare libsane-hpaio (senza i suoi pacchetti raccomandati) e passare l' URI dello scanner al frontend. Potrebbe essere necessario un plugin non libero per la funzione di scansione. Il formato dell'URI è:

hpaio:/net/<nome_modello_aio>?ip=<indirizzo_IP_dell_aio>

Questo URI può essere fornito direttamente al frontend. Può anche essere fornito automaticamente al frontend se viene impostata una coda di stampa con il backend hp:/... io se i broadcast mDNS per lo scanner vengono fatti dall'aio. Il rilevamento automatico avviene attraverso la coda di stampa se essa e mDNS sono entrambi disponibili come metodi di rilevamento.

L'indirizzo IP può essere noto dal modo in cui è stata configurata la rete per l'aio o può essere ottenuto dal pannello di controllo dell'aio o dedotto dall'output di:

/usr/bin/lpinfo -v

Ogni modello di stampante gestito dalla versione installata di libsane-hpaio viene elencato in /usr/share/hplip/data/models/models.dat. I nomi di modello sono racchiusi tra parentesi quadre, così: [envy_4500_series].

Un frontend può essere avviato con (ad esempio):

simple-scan <URI>

Si può evitare di dover digitare ogni volta l'URI esplorando le funzioni offerte dal proprio ambiente desktop (DE, desktop environment) o gestore di finestre (WM, window manager) per la personalizzazione dei comandi. Per il comando in un terminale può essere sufficiente un semplice alias.

L'installazione di hplip richiama libsane-hpaio come dipendenza e hplip fornisce l'utilità hp-makeuri. Può essere usata al posto della tecnica precedente per trovare un URI. Un plugin necessario può anche essere installato con hp-plugin.

Uso dello scanner con un HP all-in-one di rete (aio)-2

Molti utenti configurano una macchina aio HP installando hplip o hplip-gui e impostando il lato di stampa del dispositivo con hp-setup. La scansione dovrebbe essere così automaticamente disponibile, come spiegato da un utente su sane-devel e da una pagina sulla risoluzione di problemi di hplipopensource. Semplicemente digitare il nome del frontend preferito o fare clic su una voce di menu dovrebbe essere sufficiente per eseguire l'applicazione:

simple-scan
xsane
xscanimage

L'URI da passare al frontend si ottiene a partire dall'URI della stampante sostituendo hp:/.... con hpaio:/.....

Impostare una stampante con altri URI di dispositivo, socket://..., ipp://... ecc., non permette questa rilevazione automatica dell'URI dello scanner.

Usare uno scanner HP all-in-one di rete (aio)-3

      SCANNER                               ClIENT 
+------------------+                  +---------------+
|   Dispositivo    |                  | libsane       |
|    autonomo o    |   cavo/wireless  |               |
|  multifunzione   |<---------------->| pacchetto     |
|   con AirPrint   | pacchetti mDNS-->| libsane-hpaio |
+---------------- -+                  +---------------+

Gli aio HP recenti (dal 2010) probabilmente sono forniti con AirPrint. Quando attivato sull'aio l'URI dello scanner viene formato dal broadcast mDNS dell'aio in cooperazione con /usr/share/hplip/data/models/models.dat. Senza impostare la funzione di stampa dell'aio, lo scanner dovrebbe essere rilevato con

scanimage -L

e il frontend dovrebbe essere eseguito automaticamente dopo

xsane
simple-scan
xscanimage

La condivisione di uno scanner aio HP di rete non è possibile a causa dei bug 807427 e 838212. Gli scanner di rete di altri produttori potrebbero però funzionare in modalità condivisa.

Scansione attraverso la rete con stampanti Canon multifunzione e scanner CanonScan

Se, secondo il progetto SANE, il proprio scanner usa sane-pixma.5 come backend, as a backend è necessario assicurarsi che:

Aprire le porte

In modo predefinito Debian 10 (buster) usa nftables come implementazione di firewall, configurato per permettere tutto il traffico. Ma, se si hanno problemi a rilevare lo scanner si dovrebbero probabilmente controllare che le porte UDP 8610 e 8612 siano aperte.

Se si usa firewalld, un'altra implentazione popolare di firewall, si deve:

controllare quale zona si usa:

sudo firewall-cmd --get-active-zones

ottenendo un output simile a:

public
  interfaces: eth0 eth1

Nell'esempio si usa la zona "public", perciò si possono aprire le porte 8610 e 8612 in questo modo:

sudo firewall-cmd --permanent --zone=public --add-port=8610/udp
sudo firewall-cmd --permanent --zone=public --add-port=8612/udp

Poi si deve riavviare il firewall per far sì che le modifiche abbiano effetto:

sudo systemctl restart firewalld

Se lo scanner e il computer sono in sottoreti diverse

In questo caso si deve aggiungere lo scanner con il corrispondente IP a /etc/sane.d/pixma.conf. Normalmente solo gli scanner che non possono essere rilevati automaticamente perché sono in una sottorete diversa devono essere elencati lì.

Gli scanner vengono elencati nel file di configurazione in questo modo:

<metodo>://<host>[:porta][/timeout=<valore>]

Ad esempio:

Il numero di porta è opzionale ed è normalmente implicito nel metodo. La porta standard è 8610 per mfnp e 8612 per bjnp.

Un valore di tempo di attesa massimo specifico per uno scanner per il protocollo di rete può essere impostato usando il parametro bjnp-timeout. Il valore è in millisecondi. Definire gli scanner ciascuno su una nuova riga.

Configurazione di inetd

Un'alternativa all'attivazione via socket di systemd è l'uso di openbsd-inetd. Installarlo, guardare bene /etc/default/saned ed eseguire

update-inetd --enable sane-port

Vedere anche