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.
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
Actualizar el sistema
sudo apt update && sudo apt full-upgrade -y
sudo reboot
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
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
3) Configurar CUPS: backend Bluetooth o cola Raw
Tienes dos opciones principales para enviar trabajos a la impresora:
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.
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.
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.
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.
Si quieres generar tu propio servicio de impresion con una rasberry pi escríbenos
Contáctanos
Instalar servicio de impresión en raspberry pi