Printing (PeriPage A40)

osd prints protocols natively to a PeriPage A40 Bluetooth thermal printer — with no vendor app on the tablet. This page is for both operators (printing a closed protocol on the tablet) and admins (registering printers so the fleet can reach them).

There is nothing to install and nothing to pair by hand on the tablet. An admin registers a printer’s MAC address once in the admin panel; from then on any enrolled tablet can print to it.

How native printing works

osd builds the raw thermal command stream itself, in Rust — it does not drive a manufacturer app.

  • The command stream is produced by the in-repo, zero-dependency peripage-encoder crate.

  • On Android the bytes reach the printer over the tauri-plugin-peripage plugin, which speaks Classic Bluetooth RFCOMM.

  • On the desktop build the same job goes out over a USB path instead.

  • Printing runs off the UI thread, so the app never freezes while a job is sent.

This path is built and shipped. For the full protocol- and encoding-level detail, see the PeriPage A40 spike.

Registering a printer (admin)

Printers are enrolled centrally, and the admin panel is the single source of truth.

  1. In the admin panel, open Drucker (Printers).

  2. Register the printer by its MAC address.

  3. The registration syncs down to the whole tablet fleet. Printers are pull-only — tablets read the registry, they never write to it.

No Bluetooth bonding is required on the tablet. The A40 is reached over insecure RFCOMM, so there is no pairing dialog and no per-tablet setup — register the MAC once and the fleet picks it up.

Printing from the tablet (operator)

You print from a closed protocol — see Dienst lifecycle for how a protocol reaches the closed state.

  1. Open the closed protocol’s preview.

  2. Tap Drucken (Print).

  3. The print picker lists the registered fleet by MAC address, and shows each printer’s live battery % — reading the battery doubles as a reachability check, so a printer that answers is a printer you can print to.

  4. Pick a printer to print.

Tapping Drucken also triggers a fresh fleet-sync, so a printer an admin registered moments ago shows up right away — you do not have to visit Settings first.

What prints well

Content Behaviour

Continuous / roll output

Works well — this is the intended mode.

A4 over Bluetooth

Prints page-by-page, with a tear-off feed between pages.

The protocol PDF itself is rendered with Typst in Rust; the in-app preview is a rasterized image of that document. Thermal printing sends its own raster command stream, independent of the PDF.

Desktop printing

On the desktop build you print over USB-C. From Settings you can also send a Testdruck (test page) to confirm the printer and paper are working before you rely on it.

Paper and quality

Tear-away paper alignment is out of scope. Perforated / die-cut roll is not aligned to page boundaries — use continuous roll instead.

  • If prints look faint or grey, source a more thermally-sensitive roll; a more sensitive paper improves the darkness of the output.