Configurar impresora en OpenBSD usando LPD

Configurar impresora en OpenBSD usando LPD§

Escrito por Adrian Ali el 15 de octubre de 2019, usando OpenBSD Release 6.5 contacto: adrianali arroba fortix.com.ar

Índice§

1. Introducción
2. Detectar impresora USB
3. Configurar al demonio LPD para que arranque en boottime
4. Instalacion de paquetes necesarios
5. Configurar filtro de impresión
6. Creamos el directorio de spool
7. Creamos el script de filtro
8. Creamos el archivo /etc/printcap
9. Probar impresión de una imagen de Puffy
10. Referencias

1. Introducción§

Voy a explicar como configurar una impresora en OpenBSD usando el demonio LPD (Line Printer Daemon). Una ventaja de usar LPD es que ya viene en la base del sistema, por consiguente no vamos a necesitar del demonio CUPS. Quizas si consultamos los paquetes instalados veamos alguna dependencia de CUPS, en mi caso es una dependencia que viene del navegador chrome:

puffy ~ # pkg_info -a | grep -i cups
cups-libs-2.2.8p0   CUPS libraries and headers
gtk+3-cups-3.22.30p0 gtk+3 CUPS print backend
puffy ~ #

2. Detectar impresora USB§

Consultamos los mensajes del kernel con el comando dmesg para mirar si se detecta que esta enchufada la impresora USB:

puffy ~ # dmesg | grep ulpt
ulpt0 at uhub3 port 2 configuration 1 interface 0 "Brother HL-1210W series" rev 2.00/1.00 addr 3
ulpt0: using bi-directional mode
puffy ~ #

con otro comando consultamos de forma similar:

puffy ~ # usbdevs -d /dev/usb1
Controller /dev/usb1:
addr 01: 8086:0000 Intel, EHCI root hub
addr 02: 8087:0024 Intel, Rate Matching Hub
addr 03: 04f9:006a Brother, HL-1210W series
addr 04: 090c:37c0 vendor 0x090c, USB Video Device
puffy ~ #

y otro comando más:

puffy ~ # lsusb | grep -i brother
Bus 001 Device 003: ID 04f9:006a Brother Industries, Ltd
puffy ~ #

Configuramos los permisos correctos en el dispositivo USB usado para imprimir:

puffy ~ # chmod 666 /dev/ulpt0
puffy ~ # ls -la /dev/ulpt0
crw-rw-rw-  1 root  wheel   64,   0 Mar  9 15:05 /dev/ulpt0
puffy ~ #

3. Configurar al demonio LPD para que arranque en boottime§

Generamos el archivo de log si es que no existe:

puffy ~ # touch /var/log/lpd-errs
puffy ~ # chown daemon:daemon /var/log/lpd-errs
puffy ~ # ls -la /var/log/lpd-errs
-rw-r--r--  1 daemon  daemon  0 Mar  9 16:49 /var/log/lpd-errs
puffy ~ #

ahora configurar que el demonio LPD arranque en el boottime:

puffy ~ # rcctl enable lpd

verificar si esta cargado:

puffy ~ # ps xa | grep lpd
13105 p4  S+p     0:00.00 grep lpd
puffy ~ #

si no lo esta lo iniciamos:

puffy ~ # rcctl start lpd
lpd(ok)
puffy ~

comprobamos si cargo:

puffy ~ # ps xau | grep lpd
daemon   20813  0.0  0.0   752  1376 ??  S       7:58AM    0:00.07 /usr/sbin/lpd
root     74336  0.0  0.0   192   728 p7  R+/1    9:49AM    0:00.00 grep lpd
puffy ~ #

4. Instalación de paquetes necesarios§

Vamos a configurar la impresora con los drivers provistos por:

Gimp-Print

Gimp-Print tambien llamado Gutenprint es una colección de controladores de impresora de software libre para usar con los sistemas de cola de impresión UNIX, como CUPS, lpr y LPRng.

Primero instalamos:

puffy ~ #
puffy ~ # pkg_add -mv gutenprint
quirks-3.16 signed on 2018-10-12T15:26:25Z
File /etc/cups/cups-browsed.conf could not be installed:
        No such file or directory
gutenprint-5.2.14:cups-filters-1.21.3: ok
File /etc/cups/command.types could not be installed:
        No such file or directory
gutenprint-5.2.14: ok
The following new rcscripts were installed: /etc/rc.d/cups_browsed
See rcctl(8) for details.
New and changed readme(s):
        /usr/local/share/doc/pkg-readmes/cups-filters
puffy ~ #

Ahora instalamos:

puffy ~ #
puffy ~ # pkg_add -mv a2ps
quirks-3.16 signed on 2018-10-12T15:26:25Z
a2ps-4.14p14: ok
New and changed readme(s):
        /usr/local/share/doc/pkg-readmes/a2ps
puffy ~ #

5. Configurar filtro de impresión§

Creamos directorio:

puffy ~ # mkdir -p /etc/foomatic/direct/
puffy ~ # cd /etc/foomatic/direct/
puffy /etc/foomatic/direct #

buscamos drivers de impresión, si no hay uno del modelo justo de la impresora con uno similar debería funcionar:

puffy /etc/foomatic/direct # foomatic-ppdfile -P HL-1250
Brother HL-1250 Id='Brother-HL-1250' Driver='hl1250' CompatibleDrivers='gutenprint hpijs-pcl5e lj4dith lj5gray ljet4 omni hl1250 pxlmono '
puffy /etc/foomatic/direct #

Creamos el archivo ppd:

puffy /etc/foomatic/direct # foomatic-ppdfile -p Brother-HL-1250 -d hl1250 > Brother-HL-1250.ppd
puffy /etc/foomatic/direct # l
total 36
drwxr-xr-x  2 root  wheel    512 Mar  9 16:41 .
drwxr-xr-x  3 root  wheel    512 Mar  9 16:38 ..
-rw-r--r--  1 root  wheel  13158 Mar  9 16:41 Brother-HL-1250.ppd
puffy /etc/foomatic/direct #

6. Creamos el directorio de spool§

puffy ~ # mkdir -p /var/spool/output/Brother-HL-1250

le seteamos los permisos correctos:

puffy ~ # cd /var/spool/
puffy /var/spool # chmod -R 775 output
puffy /var/spool #

7. Creamos el script de filtro§

Vamos a crear un script para filtrar el job de impresión que viene del demonio LPD con ayuda del filtro ppd, creamos el archivo:

puffy ~ # vi /etc/foomatic/direct/printconv.sh

con el siguiente contenido:

#!/bin/sh

/usr/local/bin/a2ps -BRq --columns=1 -o - | /usr/local/bin/foomatic-rip -P Brother-HL-1250 --ppd /etc/foomatic/direct/Brother-HL-1250.ppd

le configuramos los permisos correctos:

puffy ~ # chmod 755 /etc/foomatic/direct/printconv.sh

8. Creamos el archivo /etc/printcap§

Si es que no existe creamos el nuevo archivo:

puffy ~ # vi /etc/printcap

con el siguiente contenido:

lp|lp1|Brother-HL-1250:\
        :lp=/dev/ulpt0:\
        :if=/etc/foomatic/direct/printconv.sh:\
        :sd=/var/spool/output/Brother-HL-1250:\
        :lf=/var/log/lpd-errs:\
        :sh:

NOTA: Recordar dejar al final del archivo una linea en blanco.

9. Probar impresión de una imagen de Puffy§

Con el comando lpr mandamos a imprimir un archivo de imagen jpg:

puffy ~ # lpr openbsd_puffy.jpg

10. Referencias§

man lpd

man lpr

man printcap