Creiamo il nostro print server
Purtroppo, nell’era digitale, abbiamo ancora spesso bisogno di usare la stampante. Sono ingombranti, pesanti, lente, le potremmo chiamare “perdi inchiostro a tradimento” o “spargi toner da ufficio”. Personalmente, ne installo a decine e girando per gli uffici, vedo questi vecchi ruderi dotati della sola connessione USB… quanta tristezza, quanti limiti: ormai abbiamo computer, tablet, smartphone.. e la stampante? Là da sola, collegata al pc.
E’ ora di farla evolvere!
Rendiamola libera dai vincoli, adeguiamola all’era del IoT, grazie a RaspberryPi, (meglio se Pi Zero W) e Raspbian.
Prima di tutto, installiamo quindi Raspbian sul nostro RaspberryPi ed aggiorniamolo, seguendo la guida sul nostro Blog, non ci serviranno monitor, tastiere o mouse, se facciamo tutto da SSH.
Una volta collegata la stampante alla porta USB del RaspberryPi (se usi il PiZero utilizza un cavo Otg, come quello per smartphone o tablet Android) e aver connesso il RaspberryPi alla nostra rete WiFi (o collegato alla LAN con cavo Ethernet), possiamo proseguire, verificando se la stampante viene rilevata, iniziando prima con il comando
1 |
sudo su |
per avere i pieni diritti di configurare il tutto, poi con
1 |
lsusb |
possiamo verificare, se tra i nomi di tutti i dispositivi usb rilevati, compare la nostra stampante. In caso di problemi, fate riferimento al forum, nella discussione dedicata a questa guida.
Ecco un esempio di output
1 2 3 |
pi@pizero:~ $ lsusb Bus 001 Device 002: ID 04e8:3292 Samsung Electronics Co., Ltd ML-1640 Series <strong>Laser Printer</strong> Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub |
Nel mio caso sto usando una vecchia stampante laser Samsumg ML-1640 collegata ad un RaspberryPi Zero W.
Dopo aver appurato che la parte hardware è regolarmente funzionante e riconosciuta, proseguiamo con la configurazione dei vari software, eseguendo prima l’ormai classico comando
1 |
apt update |
che aggiornerà l’elenco dei pacchetti e successivamente
1 |
apt install -y cups |
il quale installerà il software CUPS, fondamentale per gestire le stampanti su Mac e Gnu/Linux.
Ricordo che, nel caso non conoscessimo il nome preciso di un pacchetto, sarà sufficiente digitare
1 |
apt list InizioNomeDelPacchetto* |
oppure
1 |
apt search ParteDelNomePacchetto |
Consiglio di leggere sempre il manuale dei pacchetti che andremo a utilizzare, digitando il comando man [nome del pacchetto]. Nel nostro caso:
1 2 |
man cups man cupsctl |
Cupsctl è un comando che serve a semplificarci la vita nel configurare il file /etc/cups/cupsd.conf, che è la base per la gestione del demone CUPS, nel quale si possono impostare tutta una serie di permessi: dall’accesso alle stampanti, al pannello web, che di default si trova all’ indirizzo https://ipRaspberryPi:631 .
Come buona norma, Linux limita al massimo i rischi, bloccando l’accesso dai pc remoti. Nel nostro caso, volendo gestire CUPS da un pc secondario o da remoto, dobbiamo abilitarne l’accesso con il semplice comando
1 |
cupsctl --remote-admin --remote-any --share-printers |
Come possiamo vedere qui sotto, ci sono altri parametri utilizzabili, ma ricordo che per una maggiore precisione possiamo sempre modificare il file /etc/cups/cupsd.conf .
Questi invece sono i parametri utilizzabili con cupsctl.
1 2 3 4 5 6 7 |
Uso: cupsctl [opzioni] [param=valore ... paramN=valoreN] Opzioni: --[no-]debug-logging Attiva/disattiva il logging del debug. --[no-]remote-admin Attiva/disattiva l'amministrazione remota. --[no-]remote-any Consente/previene l'accesso da Internet. --[no-]share-printers Attiva/disattiva la condivisione della stampante. --[no-]user-cancel-any Consente/vieta la possibilità agli utenti di eliminazione delle stampe. |
Ora che abbiamo il server CUPS attivo e condiviso, dobbiamo poterlo amministrare. Per farlo sarà necessario assegnare gli utenti al gruppo lpadmin tramite il comando
1 |
usermod -aG lpadmin pi |
in questo caso sto utilizzando l’utente pi di default, ma, se ne utilizzi uno diverso, sarà sufficiente sostituire pi con il tuo.
Riavviamo ora i servizi CUPS tramite il comando
1 |
service cups* restart |
service è un comando generico “wrapper” per gestire il servizi, che accetta le opzioni start/stop/restart/status . Scrivendo un asterisco dopo una parte di nome, si chiede di riavviare tutti i servizi che iniziano per cups. Nel nostro caso i nomi completi sono
1 2 |
cups-browsed.service cups.service |
Finalmente possiamo accedere all’interfaccia di gestione web da qualsiasi computer, usando utente e password del RaspberryPi, tramite il link
https://[ip del RaspberryPi]:631
631 è la porta standard, che può essere modificata nel file /etc/cups/cupsd.conf ed eventualmente essere “nattata” sul router per accedervi dall’esterno, anche se io consiglio sempre di usare PiVpn .
Tramite il menu Administration, premiamo add printer, selezioniamo la stampante locale, procediamo ad assegnargli un nome a nostra scelta e, cosa importante, clicchiamo share this printer per condividerla in rete. Successivamente la scelta dei driver va valutata cosi,
- cerco nel sito della casa madre il file PPD e lo aggiungo col pulsante sottostante;
- cerco con apt search marca_stampante. Nel mio caso c’erano i driver printer-driver-splix;
- alla fine se non c’è nemmeno nella lista predefinita si prova con i driver generici o del modello più simile andando su Select another Manufacter -> Generic -> Generic PCL Laser (laser), Postscript (standard) o Text-Only (Aghi).
Bene, ora che la stampante è installata, per comodità impostiamola come predefinita nel server tramite il menu Printers -> Set as server default.
Finalmente adesso possiamo stampare!
Attualmente solo da RaspberryPi, ma si presta bene all’utilizzo tramite script, magari con una stampante ad etichette o qualche automatismo ancora da inventare: è sufficiente usare il comando
1 |
lp [file_da_stampare] |
Proviamo se funziona tutto correttamente tramite il comando sottostante, che creerà un file di testo e lo stamperà.
1 |
echo prova > prova.txt ; lp prova.txt |
Stampare da Windows
Veniamo alla parte di condivisione Windows, che immagino sarà molto usata. Windows non è in grado di gestire le stampanti linux, ma per fortuna hanno inventato Samba!
Samba ha molte funzioni utili per gestire le risorse delle reti miste, dal domain controller, alle cartelle condivise alle stampanti, il tutto racchiuso nel suo file di configurazione /etc/samba/smb.conf del quale andremo solo a sfiorare le grandi potenzialità.
Samba non è installato di default in Raspbian, quindi installiamolo tramite
1 |
apt install -y samba |
modifichiamo ora la configurazione con
1 |
nano /etc/samba/smb.conf |
e nella sezione printers abilitiamo le condivisioni
1 2 3 4 5 6 7 8 |
[printers] comment = All Printers browseable = <strong>yes</strong> path = /var/spool/samba printable = yes guest ok = <strong>yes</strong> read only = yes create mask = 0700 |
Salviamo e riavviamo i servizi con
1 |
service samba* restart |
Eccellente! Ora abbiamo spiegato a Samba che vogliamo che le stampanti siano condivise anche per i pc Windows. Non resta altro che aprire una qualsiasi cartella in Windows, nella barra del percorso mettere \\nomeDelRapsberry e premere invio, per vedere le stampanti e cartelle che sta condividendo, se chiede nome utente e password, saranno quelle abilitate nel RaspberryPi.
Premendo il tasto destro del mouse sull’icona della stampante e selezionando connetti si avvierà la procedura guidata di installazione, la quale chiederà i driver Windows della stampante, che di sicuro troverai sul sito del costruttore nella sezione driver, facendo attenzione a scaricare quelli per la versione corretta di Windows (32 o 64 bit).
Stampa Android
Siamo nell’era degli smartphone, dobbiamo per forza riuscire a stampare tutti i documenti che ci servono e che abbiamo scaricato dallo smartphone!
Android, solitamente nel menu impostazioni avanzate (dipende dalla versione), ha la sezione dedicata alle stampanti, nella quale potremmo configurare tutti i servizi di stampa online. A noi serve una qualsiasi APP trovata sullo store in grado di supportare le stampanti CUPS.
Per questa prova ho scelto PrinterShare, ma ce ne sono molte altre tra cui scegliere. Scarichiamo l’app ed una volta avviata, con semplicità e in pochi secondi troverà la stampante. Sarà sufficiente selezionarla e inviarle un qualsiasi documento da stampare, niente di più facile.
Potrebbe richiede l’ip o il nome del RaspberryPi, il nome è sempre preferibile, perché l’indirizzo ip di norma è dinamico se non avete fatto configurazioni specifiche per un ip fisso sul router o sulla macchina.
Se vuoi restare aggiornato, seguici anche sui nostri social: Facebook , Twitter, YouTube, Google+, Telegram