KmpPrinter

Kotlin Multiplatform ESC/POS thermal printing library

Printer OS Setup Guide

This guide covers the OS-level setup required by the printer module for real hardware validation.

JVM Network

JVM Raw USB

Raw USB uses libusb through usb4java. The library tries raw USB first, then serial-like devices, then OS printer queues.

Windows

Linux

SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="yyyy", MODE="0666", GROUP="plugdev"
sudo udevadm control --reload-rules
sudo udevadm trigger

macOS

JVM Bluetooth Classic

Bluetooth Classic desktop printing is OS-mediated. The JVM prints through the serial device or printer queue created by the OS.

Windows

Linux

sudo rfcomm bind /dev/rfcomm0 AA:BB:CC:DD:EE:FF

macOS

JVM BLE

Status Query

queryStatus() sends ESC/POS DLE EOT commands. It is reliable only when the transport supports readback.

JVM Hardware Integration Test

The JVM integration test is opt-in through environment variables:

PRINTER_IT_TYPE=NETWORK
PRINTER_IT_ADDRESS=192.168.1.50
PRINTER_IT_PORT=9100
./gradlew :printer:jvmTest

Bluetooth Classic Linux with MAC auto-bind:

PRINTER_IT_TYPE=BLUETOOTH
PRINTER_IT_ADDRESS=AA:BB:CC:DD:EE:FF
PRINTER_IT_RFCOMM=/dev/rfcomm0
./gradlew :printer:jvmTest

Useful variables: