Hack para una impresora Samsung de red con job accounting
Escrito por danitxu en /dev/hack, /usr/share/doc, tags: impresora, pcl, pjl, samsungHasta ahora no he hablado de impresión desde GNU/Linux. La arquitectura incluye bastantes conceptos (lenguajes de impresora, rasterizadores, ficheros ppd, spoolers, CUPS, interfaces,…), y a lo largo del tiempo he ido tomando notas que comparto para quien pueda venirle bien.
Al tema: muchas impresoras multifunción (impresora+fotocopiadora+scanner+fax) en red, cuentan con las funcionalidades de Copias controladas y Auditoría de trabajos. La primera permite establecer quiénes pueden imprimir, fotocopiar, escanear,… pidiendo para ello una identificación de usuario (en base a un código, o a identificador y contraseña), de modo que cuando se usa la máquina para fotocopiar se introduce a través del panel físico de la máquina, y cuando se emplea como impresora en red se configura en las opciones del driver de impresión, sea Windows o GNU/Linux. La auditoría de trabajos o job accounting registra, a partir de lo dicho, el uso que hace cada usuario o departamento: nº de fotocopias, impresiones, escaneos, etc.
¿Cómo funciona internamente la impresión en red con identificación? cuando el PC genera el fichero a enviar por red a la impresora mediante algún protocolo de impresión (puertos tcp 514, 515, 631, 9100), algunas líneas del fichero hacen referencia a sentencias de PCL. Si el lenguaje es PJL un ejemplo puede ser:
@PJL JOB NAME="Sin nombre1"
@PJL SET COLORMODE=MONO
...
@PJL SET USERNAME="1234"
...
En la actualidad, la forma más típica de imprimir desde GNU/Linux está basada en ficheros PPD, los cuales sirven entre otras cosas para:
- Definir las características de la impresora.
- A partir de lo anterior, generar automáticamente el GUI para la selección de opciones.
- Enviar determinadas cadenas (ej. PJL) y opciones a la hora de generar el fichero para la impresora.
Yendo al caso, tengo la multifunción Samsung C8385ND de la foto y hay un problema: si se configura para que funcione con identificación y auditoría, el PPD oficial no sirve porque el fichero generado para enviar a la impresora no es correcto.

Vamos con el “hack” para conocer cómo ha de ser ese fichero y que se genere automáticamente:
- En un Windows (en máquina virtual o nativo), se abre el OpenOffice con un fichero cualquiera y se imprime a fichero.
- En un PC con GNU/Linux se imprime por red capturándose lo que envía a la impresora:
tcpdump -i eth0 dst ip_impresora -s0 -w fich
(no vale sólo con imprimir a fichero, pues éste es un postscript sin las sentencias PJL) - Comparándose ambos ficheros, se encuentran estas líneas que no aparecen en el fichero generado desde de GNU/Linux:
@PJL SET ACCOUNTING_INFORMATION_USERID="1234"
@PJL SET ACCOUNTING_INFORMATION_PASSWORD="1234" - Se edita el fichero PPD, y puede modificarse ej. la línea que hace referencia a JLCUser User1:
*JCLUser User1/MiUsuario: "@PJL SET USERNAME = <22>1234<220D0A>@PJL SET ACCOUNTING_INFORMATION_USERID=<22>1234<220D0A>@PJL SET ACCOUNTING_INFORMATION_PASSWORD=<22>1234<220D0A>"(22 es el código ASCII del carácter “)
- Se reinicia CUPS.
Dejo aquí una breve info de ésta y otras multifunción Samsung que vaya encontrando.


















Entradas (RSS)
[...] Ya expliqué qué era el Job Accounting aplicado a una multifunción Samsung, y comento otro caso de posible interés para alguna oficina (la gente no suele tener en casa una máquina así), o didáctico en general: una Ricoh Aficio 2228c que no tiene cartucho de postscript y por tanto hay que usar el PCL5c emulado que sí soporta. [...]