Impresora de tickets ITP-91+ S+U+L
imagen
Un cliente ha comprado un TPV con esta impresora para trabajar con FacturaScripts, y lo que parecía un juego de niños, se está alargando ya dos días.
Lo primero es el TPV, que llevaba Windows 7 instalado, pero la licencia brillaba por su ausencia, así que me pongo y le instalo la Xubuntu 13.10, que recomiendo enormemente para entornos de trabajo. Las pegas que he encontrado, es que al iniciar el instalador he tenido que pulsar F6 y desactivar el modeset para que funcionase correctamente. Luego la pantalla táctil estaba mal calibrada, pero instalas el xinput-calibrator, lo ejecutas y sigues los pasos, salvo por el problema de que te invierte los ejes. Si te dice que pongas está línea en el archivo de configuración:
Option "SwapAxes" "1"
No la pongas. Y si no te lo dice entonces ponla.
Con esto ya hemos solucionado los problemas de la pantalla, ahora vamos con la impresora:
Conectas la impresora por USB al PC, te vas a configuración del sistema, impresoras, añadir impresora, y esperas a que aparezca, como cualquier impresora bixolon, pero no, no va a aparecer. Te pones a buscar en /dev/usb/ esperando encontrarla, pero no, no aparece. Ejecutas lsusb para comprobar que realmente está conectada, pero lo único que encuentras es esto:
Bus 004 Device 003: ID 1cbe:0002 Luminary Micro Inc.
Buscas en google ITP-91+ linux, y lo único que obtienes son un montón de tiendas online que venden la susodicha impresora. Por cierto ¿Cuál es la marca de la impresora? Cualquier cacharro electrónico tiene el logotipo del fabricante bien grande en un sitio muy visible, cualquiera menos esta impresora. Puedes mirar tooodas esas webs que venden esta impresora y no vas a encontrar un puto enlace a la web oficial del fabricante, pero si buscas un poco más encuentras
esta. Y por si no sabes inglés, lo que tienes en esa web son piezas para montarte una impresora, repito, piezas. Así que el asunto cambia radicalmente, porque no tenemos una impresora como una Bixolon, sino una serie de piezas que forman una impresora hasta cierto punto compatible.
Una vez entendido esto ¿Qué coño es ese dispositivo Luminary Micro Inc? Pues un emulador de puerto serie para USB, es decir, ya no estamos buscando una impresora USB, sino una impresora por puerto serie. En Linux tenemos los puertos serie a partir del /dev/ttyS0, pero muchos emuladores de puerto serie los muestran como /dev/ttyUSB0. Eschamos un vistazo y nada, ni rastro del puerto. Pero podemos hacer una búsqueda de todos los puertos serie:
dmesg | grep tty
Y nos encontramos esto:
[ 0.000000] console [tty0] enabled
[ 1.893255] 00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 1.915583] 0000:04:05.0: ttyS4 at I/O 0xc030 (irq = 20) is a ST16650V2
[ 1.936708] 0000:04:05.1: ttyS5 at I/O 0xc020 (irq = 21) is a ST16650V2
[ 101.993986] cdc_acm 4-2:1.0: ttyACM0: USB ACM device
Es decir, que este emulador expone el puerto serie en /dev/ttyACM0.
Podemos hacer una prueba enviando texto a ese puerto a ver si lo imprime, pero primero tenemos que dar permisos a nuestro usuario y al puerto:
sudo adduser carlos dialout
sudo chmod a+rw /dev/ttyACM0
Ahora ya podemos probar a mandar texto:
echo "caca\n" > /dev/ttyACM0
Y el resultado es que la impresora imprime el texto, así que lo único que falta es añadirla a cups. Para eso nos vamos a configuración del sistema, impresoras, añadir, y escribimos la siguiente URI:
serial:/dev/ttyACM0
Ahora probamos a imprimir algo y NADA. No sucede NADA. Miras en las propiedades de la impresora y ves que en estado pone que no puede escribir en el puerto serie, permiso denegado ¿Por qué? Pues el culpable es AppArmor, un sistema de seguridad que controla que las aplicaciones no toquen lo que no deben ¿Cómo lo sé? Si despúes de intentar imprimir, ejecutas:
dmesg | tail
Verás que apparmor informa de que le ha denegado el acceso a cups a /dev/ttyACM0.
¿Cómo soluciono el problema? Editas el archivo /etc/apparmor.d/usr.sbin.cupsd y añades /dev/ttyA* rm. Reinicias apparmor y listo, por fin puedes imprimir.
Nota: Escribo esto porque cuando se trata de impresoras de tickets, la documentación en internet brilla por su ausencia.