Ir al contenido

IDEAS PRÁCTICAS · ASIMOV INGENIERÍA

Instalar servicio de impresión en raspberry pi

Creando un punto de venta con rasberry pi

Table of contents

No titles in the blog post

Instalación de un servicio de impresión Bluetooth en Raspberry Pi 4: guía paso a paso

Convierte tu Raspberry Pi 4 en un servidor de impresión Bluetooth confiable para impresoras térmicas ESC/POS o modelos compatibles con CUPS. En esta guía aprenderás a instalar, configurar y mantener un servicio de impresión seguro y estable.

Computadora portátil con código en un escritorio
Imagen ilustrativa · Christopher Gower / Unsplash.
Raspberry Pi 4 Bluetooth (SPP) CUPS
Clientes PC / Móvil CUPS Raspberry Pi Impresora Bluetooth RFCOMM IPP
Introducción

Bluetooth sigue siendo el estándar más práctico para impresoras portátiles y térmicas. Al montar un servicio de impresión en tu Raspberry Pi 4 con CUPS y BlueZ, puedes aceptar trabajos desde dispositivos en red (PC o móviles) y enviarlos a una impresora Bluetooth ya sea mediante el backend nativo de CUPS o creando un enlace serial (RFCOMM). Esta guía cubre ambos enfoques, con especial atención a impresoras térmicas ESC/POS.

Requisitos
Hardware
  • Raspberry Pi 4 con alimentación estable
  • Tarjeta microSD (16 GB o más)
  • Impresora Bluetooth (ESC/POS o compatible con CUPS)
  • Conectividad de red (Ethernet o Wi‑Fi)
Software
  • Raspberry Pi OS Bookworm/Bullseye actualizado
  • CUPS servidor de impresión
  • BlueZ pila Bluetooth y utilidades

Nota: Para impresoras no soportadas por CUPS, usa cola “Raw” y deja que la aplicación genere el formato (p. ej., ESC/POS).

1) Instalar y preparar el sistema
1
Actualizar el sistema
sudo apt update && sudo apt full-upgrade -y
sudo reboot
2
Instalar CUPS y Bluetooth
sudo apt install -y cups cups-client cups-bsd avahi-daemon \
  bluez bluez-tools bluez-cups \
  printer-driver-gutenprint

Habilita y arranca los servicios principales:

sudo systemctl enable --now cups
sudo systemctl enable --now bluetooth

Da permisos de administración de CUPS a tu usuario (sustituye $USER si procede) y permite administración remota:

sudo usermod -aG lpadmin $USER
sudo cupsctl --remote-admin --remote-any --share-printers
Consejo: Avahi permite que los clientes descubran la impresora vía mDNS/Bonjour. Mantén avahi-daemon activo si compartirás en red.
2) Emparejar y confiar la impresora Bluetooth

Usaremos bluetoothctl, la utilidad interactiva de BlueZ.

bluetoothctl
# En el prompt de bluetoothctl:
power on
agent on
default-agent
scan on     # Observa la MAC de tu impresora (ej. 00:11:22:33:44:55)
pair 00:11:22:33:44:55
trust 00:11:22:33:44:55
connect 00:11:22:33:44:55
quit
PIN/Clave: Muchas térmicas usan 0000 o 1234. Consulta el manual de tu impresora.
3) Configurar CUPS: backend Bluetooth o cola Raw

Tienes dos opciones principales para enviar trabajos a la impresora:

Opción A — Backend Bluetooth de CUPS

Si instalaste bluez-cups, puedes crear una cola que use el URI bluetooth://MAC.

sudo lpadmin -p BT_Printer -E \
  -v bluetooth://00:11:22:33:44:55 \
  -m raw
sudo cupsenable BT_Printer
sudo cupsaccept BT_Printer

Usamos raw para máxima compatibilidad. Si tu modelo tiene PPD/driver en Gutenprint u otro paquete, sustitúyelo con -m apropiado.

Opción B — Enlace serial RFCOMM

Crea un dispositivo /dev/rfcomm0 y usa el backend serial: de CUPS.

sudo rfcomm bind 0 00:11:22:33:44:55 1
ls -l /dev/rfcomm0
sudo lpadmin -p BT_Serial -E \
  -v serial:/dev/rfcomm0?baud=9600+bits=8+parity=none+flow=soft \
  -m raw
sudo cupsenable BT_Serial
sudo cupsaccept BT_Serial

Ajusta baud y flow según el manual de tu impresora.

GUI opcional: También puedes añadir la impresora desde https://localhost:631 → Administración → Añadir impresora. Busca “Dispositivos Bluetooth” o “Serial”.
4) Pruebas rápidas

Envía una página de prueba simple:

# Con backend Bluetooth
echo -e "Prueba de impresión desde Raspberry Pi\n" | lp -d BT_Printer
# Con RFCOMM/Serial
echo -e "Prueba de impresión (serial)\n" | lp -d BT_Serial

Para impresoras ESC/POS en cola Raw, tus aplicaciones deben generar comandos ESC/POS (por ejemplo, usando librerías como python-escpos). La cola Raw enviará los bytes tal cual.

5) Automatizar el enlace Bluetooth (servicio systemd)

Para reconectar el enlace RFCOMM al arrancar o tras desconexiones, crea un servicio de systemd:

sudo tee /etc/systemd/system/rfcomm0.service >/dev/null <<'EOF'
[Unit]
Description=Bluetooth RFCOMM para impresora
After=bluetooth.target
Requires=bluetooth.service
[Service]
Type=simple
ExecStart=/usr/bin/rfcomm bind 0 00:11:22:33:44:55 1
ExecStop=/usr/bin/rfcomm release 0
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now rfcomm0

Si CUPS no puede abrir /dev/rfcomm0 por permisos, crea una regla udev para asignar el dispositivo al grupo lp:

echo 'KERNEL=="rfcomm0", MODE="0660", GROUP="lp"' | sudo tee /etc/udev/rules.d/99-rfcomm.rules
sudo udevadm control --reload-rules && sudo udevadm trigger
6) Seguridad y buenas prácticas
  • Cambia el PIN/clave por defecto de la impresora si es posible.
  • Limita el acceso de CUPS a tu subred y usa cuentas con contraseña fuerte si expones la administración remota.
  • Fija la impresora como “trusted” y evita modo visible permanente tras el emparejamiento.
  • Para producción, alimenta la Pi con fuente certificada y usa tmux/systemd para procesos persistentes.

Sí. La forma más compatible es crear una cola Raw y generar los comandos ESC/POS desde tu aplicación. Alternativamente, busca un PPD/driver específico del fabricante o proyectos como filtros raster para ESC/POS compatibles con CUPS.

El backend Bluetooth de CUPS simplifica la configuración y evita manejar dispositivos seriales. RFCOMM ofrece control fino de parámetros (baud, flow) y puede ser más estable en modelos que exponen solo SPP. Prueba primero el backend Bluetooth; si falla, usa RFCOMM con servicio systemd.

Sí. Si compartes la cola de CUPS en red, Android e iOS pueden imprimir vía Wi‑Fi usando plugins/airprint. Para enviar directamente por Bluetooth desde el móvil, la app debe soportar ESC/POS u otro protocolo compatible con tu impresora.
Solución de problemas
Diagnóstico rápido
# Estado de servicios
systemctl status bluetooth cups rfcomm0
# Logs
journalctl -u bluetooth -u cups -u rfcomm0 -e
# Información BT
bluetoothctl info 00:11:22:33:44:55
rfcomm
Problemas comunes
  • No aparece la impresora: asegura scan on y que la impresora esté en modo emparejamiento.
  • Errores de permiso en /dev/rfcomm0: aplica la regla udev anterior.
  • Cortes aleatorios: usa Restart=always en el servicio y evita interferencias RF.
  • Caracteres raros: revisa baud/paridad o el encoding de tu aplicación ESC/POS.
Conclusión

Con CUPS y BlueZ, tu Raspberry Pi 4 puede actuar como un hub de impresión Bluetooth robusto, tanto para entornos de punto de venta con térmicas ESC/POS como para impresoras compatibles con drivers de CUPS. Empieza con el backend Bluetooth por simplicidad y recurre a RFCOMM con servicio systemd para una conexión más controlada y resiliente.

¿Listo para desplegarlo en producción?
Documenta tu configuración y automatiza backups de /etc/cups y servicios.

Si quieres generar tu propio servicio de impresion con una rasberry pi escríbenos 

Contáctanos