Getting started¶
Experimental
Paintress has not been fully validated end to end on hardware. What follows is a development workflow, not a finished product. Read Safety first.
This guide takes you from an image file to a print. It assumes the controller board already runs the Paintress firmware, which is not published yet. Clone the module repositories side by side; the commands below run from the folder that holds them.
1. RIP an image into halftoned passes¶
Writes rip.json + rip.bin.
Set --head to the printhead fitted to your machine. DPI must be a multiple
of its nozzle pitch. Use --list-dpi --head <name> to list valid values.
2. Encode into a printer-ready job¶
Writes job.json + job.bin.
3. Inspect what came out (optional)¶
Renders the RIP payload back to a preview image.
4. Start the daemon¶
Run the daemon on the host connected to the controller board. It listens on
TCP port 9000 by default and opens the serial port on request.
Set --head to the fitted printhead so the daemon can reject jobs made for
another head. The firmware cannot detect the physical head: both supported
profiles use the same firmware binary.
5. Run the print from Klipper¶
With paintress-klipper-extras installed and a [paintress] section
configured:
PAINTRESS_CONNECT_SOCKET
PAINTRESS_CONNECT_SERIAL
PAINTRESS_OPEN_PAYLOAD FILENAME=job.json
PAINTRESS_PRINT ; uses exclude_object bounds
; or:
; PAINTRESS_PRINT ORIGIN_X=20 ORIGIN_Y=30 ; explicit origin
PAINTRESS_CLOSE_PAYLOAD
PAINTRESS_DISCONNECT_SERIAL
PAINTRESS_DISCONNECT_SOCKET
Without an explicit origin, the plugin uses Klipper's exclude_object
polygons to position the image over a 3D-printed object.
Next steps¶
- Installation sets each piece up from scratch.
- Anatomy of a print explains what those commands actually set in motion.
- Troubleshooting covers the usual failures.