AirPrint con Raspberry pi


Grazie al piccolo ma potente Raspberry pi è possibile trasformare qualsiasi stampante USB in una stampante AirPrint (potrete stampare direttamente dal vostro iPhone, iPad e iPod Touch), ovviamente la stampante sarà visibile e accessibile in rete locale. Per fare questo, esistono varie guide, a mio parere incomplete. Raccolgo in questo articolo tutti passi necessari per configurare il vostro Raspberry pi.

Premessa: per seguire questa guida è necessaria una conoscenza di base dell’ambiente linux, in particolare l’uso del terminale.

  • aggiornare i pacchetti del sistema. Digitare: sudo apt-get update
  • al termine digitare: sudo apt-get upgrade
  • al termine dell’operazione digitare: sudo apt-get install cups
  • al termine dell’operazione digitare: sudo apt-get install python-cups
  • al termine dell’operazione digitare: sudo apt-get install avahi-daemon
  • al termine dell’operazione digitare: sudo apt-get install system-config-printer
  • digitare: sudo usermod -aG lpadmin pi [sostituire pi con la vostra username di sistema, di solito su raspbian è pi]
  • per verificare che l’installazione dei pacchetti sia andata a buon fine, digitare: sudo /etc/init.d/cups start [dovrebbe apparire una scritta del tipo: Starting Common Unix Printing System: cupsd.]
  • digitare: sudo /etc/init.d/avahi-daemon start
  • modificare il file di configurazione di cups digitando: sudo nano /etc/cups/cupsd.conf
  • aprendo il file di configurazione di cups, dovrete aggiungere le righe in grassetto blu ed eliminare quella in rosso:

LogLevel warn
MaxLogSize 0
SystemGroup lpadmin
# Allow remote access
Listen localhost:631
Port 631
Listen /var/run/cups/cups.sock
# Enable printer sharing and shared printers.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseRemoteProtocols CUPS dnssd
BrowseAddress @LOCAL
BrowseLocalProtocols CUPS dnssd
DefaultAuthType Basic
WebInterface Yes
ServerAlias *
<Location />
# Allow shared printing…
Order allow,deny
Allow @LOCAL
</Location>
<Location /admin>
Order allow,deny
Allow @Local
</Location>
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow @Local
</Location>
<Policy default>
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
<Limit Create-Job Print-Job Print-URI Validate-Job>
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Can$
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shut$
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Cancel-Job CUPS-Authenticate-Job>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
<Policy authenticated>
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
<Limit Create-Job Print-Job Print-URI Validate-Job>
AuthType Default
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Can$
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shut$
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Cancel-Job CUPS-Authenticate-Job>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>

  •  dopo aver salvato il file appena modificato, digitare: sudo /etc/init.d/cups restart
  • aprire la pagina su un browser: 192.168.x.x:631 [indirizzo ip del raspberry seguito dalla porta 631. Per verificare l’IP del raspberry digitare ifconfig]
  • apparirà la pagina di amministrazione di CUPS. Selezionare il tab Administration.
  • aggiungere la spunta alle 3 seguenti voci: “Mostra stampanti condivise da altri sistemi”, “Condividi stampanti connesse al sistema”, “Consenti amministrazione Remota”
  • cliccare su Cambia Impostazioni. Inserire i dati di autenticazione, se richiesti (username di sistema, di default pi e password di sistema)
  • cliccare su Aggiungi Stampante
  • selezionare la stampante locale che avete collegato al vostro Raspberry pi tramite porta USB e cliccare su Continua
  • aggiungere la spunta su “Condividi questa stampante” e clicca su Continua
  • seleziona il modello di stampante dall’elenco. Se non dovessi trovare la tua stampante in elenco, scarica i driver della stampante (versione Linux) e cerca all’interno del pacchetto di installazione il file PPD. Una volta scaricato, clicca su Scegli file e seleziona il file PPD. Cliccare su Aggiungi Stampante
  • selezionare le impostazioni generali della stampante e cliccare su Set Default Option
  • Per verificare che la procedura di installazione della stampante sia corretta, selezionare dal menu Maintenance, la voce “Print Test Page”, dovrebbe stampare una pagina di prova.
  • Passiamo adesso alla trasformazione in AirPrint. Digitare sudo mkdir /opt/airprint
  • digitare cd /opt/airprint
  • digitare sudo wget -O airprint-generate.py –no-check-certificate https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py
  • affinché la procedura sia compatibile con iOS 6, è necessario creare due file su /usr/share/cups/mime, digitare: cd /usr/share/cups/mime
  • digitare sudo nano airprint.types e incollare il seguente codice:

#
# “$Id: $”
#
# AirPrint type
image/urf urf string(0,UNIRAST<00>)
#
# End of “$Id: $”.
#

  • salvare il file. Digitare: sudo nano airprint.convs e incollare il seguente codice:

#
# “$Id: $”
#
# AirPrint
# Updated list with minimal set 25 Sept
image/urf application/pdf 100 pdftoraster
#
# End of “$Id: $”.
#

  • salvare il file. Digitare: sudo service cups restart
  • digitare: cd /opt/airprint
  • digitare: sudo chmod 755 airprint-generate.py
  • digitare: sudo ./airprint-generate.py -d /etc/avahi/services
  • riavviare il sistema digitando sudo reboot
  • al riavvio assicurarsi che i servizi cups e avahi-daemon siano avviati digitando: sudo service cups restart e sudo service avahi-daemon restart

Congratulazioni, avete trasformato il vostro Raspberry in un vero e proprio server di stampa con la possibilità di stampare in wifi tramite AirPrint. Non è più necessario che spendiate soldi in stampanti AirPrint!

13 thoughts on “AirPrint con Raspberry pi

  1. Ibbiu ha detto:

    Grazie per l’ottima guida.
    In particolare ho installato una Epson xp-305, e visto che in elenco non
    c’era il driver specifico, e non ho trovato il file ppd, ho selezionato quello
    di una stylus photo 420 (ex stampante).
    Stampa perfettamente da windows via rete.
    L’unica cosa che non riesco a fare è usare lo scanner,
    ci sono altre impostazioni da settare?

    • Ciao Andrea. Per collegare una stampante in ethernet devi servirti di uno switch oppure dovresti collegare la stampante al router. Una volta collegata la stampante fai la ricerca su CUPS. Il procedimento sarà il medesimo delle stampanti USB. Tienimi aggiornato.

  2. Ciao Claudio! guida utilissima, funziona tutto, ma quando arrivo al cups non riconosce la stampante, il problema sta nei driver! Non esistono driver Linux per la mia stampante, solo Windows… Se installo Windows 10 loT pensi che risolvo il problema? i driver esistono per Windows 10, ma vai a vedere se sono compatibili con questa versione di Windows. Secondo te?
    Grazie per l’attenzione.

    • Ciao Nio. Grazie per il commento. In realtà è un problema abbastanza frequente. La prima cosa che ti consiglio di fare è provare ad installare i driver di Windows su Linux. Per farlo è necessario installare un pacchetto Linux, di nome “Ndiswrapper”, che ti permette di utilizzare i driver.
      Su internet trovi tante guide per farlo. Fammi sapere se riscontri dei problemi, in caso cerco di supportarti.
      A presto

  3. Flavio ha detto:

    ciao, a seguito di un crash del rasp ho dovuto reinstallare tutto….purtroppo tra i driver disponibili non trovo quelli per la mia stampante HP OfficeJet 5610 All In One. Ho cercato il file ppd ma non trovo nulla online, ho provato anche vari driver ma senza successo….se lancio una stampa di prova la stampante nn reagisce…..

  4. Flavio ha detto:

    ciao, ho seguito il tutorial ma il problema rimane, oltre al fatto che non trovo la stampante e ne il file ppd ( vedi posto soprastante ) quando lancio una stampa di prova vedo un errore di questo tipo “filter failed”.
    Qualcuno sa come posso risolverlo?
    Grazie
    Flavio

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...