Actualizado el jueves, 23 abril, 2020
Cómo compartir una impresora en Ubuntu con CUPS.
Hoy vemos cómo compartir una impresora conectada a un sistema Ubuntu con clientes de Windows, macOS ó iOS en la misma red, algo que han solicitado varios usuarios a través de email.
CUPS (Common Unix Printing System) es el sistema de impresión predeterminado en Linux, y otros sistemas UNIX. Tal vez no lo sabes, pero CUPS se instala por defecto en todas las distribuciones linux.
Antes de comenzar con el articulo, debemos saber que una impresora CUPS se puede compartir en red usando varios protocolos, enumeramos los más habituales:
- Bonjour + IPP : Bonjour, también conocido como mDNS / DNS-SD (servicios DNS / DNS de multidifusión), permite que un sistema encuentre servicios en la red local. IPP (Protocolo de impresión de Internet) es el protocolo de transporte.
- SMB : también conocido como Samba, es utilizado para compartir archivos e impresoras con clientes de Windows.
- AirPrint : permite a los clientes de iPhone, iPad y macOS imprimir a través de la Wi-Fi.
Cada protocolo tiene sus ventajas y desventajas. Pero lo primero que debemos conocer es cómo instalar y configurar CUPS. Después compartiremos nuestra impresora CUPS a través de los 3 protocolos que hemos mencionado anteriormente.
Cómo compartir una impresora en Ubuntu con CUPS
Comenzamos instalando CUPS (normalmente ya está instalado).
Instalar CUPS
sudo apt install cups
Una vez instalado cups, lo iniciamos y habilitamos con el inicio del sistema.
sudo systemctl start cups sudo systemctl enable cups
Podemos ver su estado con el siguiente comando…
systemctl status cups
Ahora editamos el archivo de configuracion de CUPS.
sudo nano /etc/cups/cupsd.conf
Busca la línea….
Browsing Off
y la sustituyes por….
Browsing On
Si no quieres tener problemas posteriores también debes buscar…
Listen localhost:631
y lo sustituyes por…
Port 631
Por defecto CUPS escucha todas las peticiones de impresión locales de tu sistema, esto lo tenemos que solucionar. Localiza el siguiente código.
<Location /> Order allow,deny </Location>
Para poder imprimir desde toda la red local, independientemente de tu PC; modificas lo anterior por…
<Location /> Order allow,deny Allow @LOCAL </Location>
Guarda el archivo y cierra el editor. Tenemos que reiniciar CUPS.
sudo systemctl restart cups
Concedemos permisos en el firewall de Ubuntu (si tu ip es diferente la modificas).
sudo ufw allow in from 192.168.0.0/24 to port 631
Instalar los drivers de la impresora en Ubuntu
Instalamos los drivers genericos.
sudo apt install hplip sudo apt install printer-driver-gutenprint
Si tienes algún problema visita la pagina donde la comunidad aporta drivers open.
Compartir a través de Bonjour/IPP Protocol
Sigue los pasos indicados.
sudo apt install avahi-daemon sudo systemctl start avahi-daemon sudo systemctl enable avahi-daemon sudo ufw allow 5353/udp sudo apt install cups-ipp-utils sudo systemctl restart cups
Listo, ya tienes trabajando el nuevo protocolo.
Compartir impresora con Samba
Instalamos samba.
sudo apt install samba samba-common-bin
Verificamos e iniciamos los servicios.
systemctl status smbd systemctl status nmbd
sudo systemctl start smbd sudo systemctl start nmbd
Editamos el archivo de configuración de samba.
sudo nano /etc/samba/smb.conf
Habilita la cola de impresión como te indico.
rpc_server:spoolss = external rpc_daemon:spoolssd = fork
Al final del archivo busca lo siguiente…
browseable = no guest ok = no
Lo modificas por…
browseable = yes guest ok = yes
Guarda el archivo y cierra el editor, Reiniciamos Samba.
sudo systemctl restart smbd nmbd
Compartir impresora con AirPrint
AirPrint permite a clientes de iPhone, iPad y macOS imprimir a través de Wi-Fi sin instalar el software del controlador en los dispositivos del cliente. El proceso es bastante simple, observa. (sustituye por tu impresora)
# Inserta tu modelo de impresora sudo nano /etc/avahi/services/AirPrint-DeskJet-5510-series.service
Agrega lo siguiente (con tu modelo de impresora).
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name replace-wildcards="yes">AirPrint DeskJet-5510-series @ %h</name> <service> <type>_ipp._tcp</type> <subtype>_universal._sub._ipp._tcp</subtype> <port>631</port> <txt-record>txtvers=1</txt-record> <txt-record>qtotal=1</txt-record> <txt-record>Transparent=T</txt-record> <txt-record>URF=none</txt-record> <txt-record>rp=printers/DeskJet-5510-series</txt-record> <txt-record>note=HP DeskJet 5510 series</txt-record> <txt-record>product=(GPL Ghostscript)</txt-record> <txt-record>printer-state=3</txt-record> <txt-record>printer-type=0x2900c</txt-record> <txt-record>pdl=application/octet-stream,application/pdf,application/postscript,application/vnd.cups-raster,image/gif,image/jpeg,image/png,image/tiff,image/urf,text/html,text/plain,application/vnd.adobe-reader-postscript,application/vnd.cups-pdf</txt-record> </service> </service-group>
Guarda el archivo y cierra el editor. Nos falta reiniciar Avahi.
sudo systemctl restart avahi-daemon
Nota final
Independientemente del protocolo seleccionado, tan solo necesitas buscar a través de tu dispositivo la impresora que tenemos en el servidor Ubuntu. Cualquier duda será aclarada en la zona de comentarios.
[sc name=»final» ]