Installation¶
Install the firmware on the controller board. Install the daemon and Klipper plugin on the host, usually the Raspberry Pi running Klipper. The RIP and encoder can run on that host or another computer.
1. Firmware (controller board)¶
Firmware not published yet
The firmware source is not public yet. The steps below are for when it is released, or for anyone who already has a copy.
Build with the Raspberry Pi Pico SDK:
Flash paintress_firmware.uf2 through BOOTSEL mass storage or picotool. Run
the following command from the paintress-firmware directory:
The board appears as a USB CDC serial device. It sends protocol frames over
USB, including LOG frames that the daemon displays as text.
2. Daemon (host)¶
The daemon requires Python 3.8 or newer and pyserial:
Set --head to the fitted printhead. The board cannot identify it, so the
daemon uses this setting to reject jobs made for another head.
It listens on TCP port 9000 and opens the firmware serial port when asked.
To run it as a service, use paintress-daemon.service from the daemon
repository. It expects user pi, Klipper's Python in ~/klippy-env and the
paintress_daemon folder copied to /home/pi. Change User,
WorkingDirectory and the Python path in ExecStart if your setup differs,
and add --head <name> to ExecStart.
sudo cp paintress-daemon.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now paintress-daemon.service
3. Klipper plugin (host)¶
Copy all three plugin files into Klipper:
cp paintress-klipper-extras/extras/paintress.py \
paintress-klipper-extras/extras/paintress_head.py \
paintress-klipper-extras/extras/paintressd_client.py \
~/klipper/klippy/extras/
paintress_head.py registers the [paintress_head <name>] config sections.
Install all three files, even if you are not using a head section yet. A
missing module causes Klipper to reject those sections.
Add a [paintress] section and the trigger [output_pin] to printer.cfg,
covered in Configuration, then restart Klipper.
4. RIP and encoder (anywhere)¶
cd paintress-rip-encoder
pip install -r requirements.txt
pip install scipy # optional: better blue-noise texture
The RIP and encoder run offline. Copy the resulting job files into the
plugin's base_path, which defaults to /home/pi/printer_data/paintress/.
Next: Configuration, then Printing.