Skip to content

CR-30 (Klipper modded)

A belt printer (Creality CR-30 / "CR-30 PrintMill") converted to Klipper. Standard NFC-daemon integration; nothing belt-specific in the NFC layer.

Base Creality CR-30 ("PrintMill")
Host (reference) Recore A8 — any Klipper-capable controller works (RPi, BTT-equivalent, etc.)
NFC reader PN532 on USB-UART
NFC mode single
Frontend Mainsail (vanilla)

What's interesting here

A belt printer has very different kinematics from a Voron, but the NFC stack doesn't care. The daemon writes the same save_variables keys, the print-start macro reads them the same way, the prompt dialog (if you opt into multi_tool for some reason) works the same.

The slicer's belt-specific start gcode does need adapting — but that's outside this site's scope.

Configuration shape

Same as the Trident. Verify the PN532's /dev/ttyUSB* index matches what's actually enumerated:

ls -l /dev/serial/by-id/  # find the USB-UART bridge by stable ID

Then point pn532_device at the by-id symlink so power-cycle re-enumeration doesn't break it:

[nfc]
reader = pn532
pn532_device = /dev/serial/by-id/usb-1a86_USB_Single_Serial_XXXXXX-if00-port0

Same pattern recommended on every printer in the fleet — /dev/ttyUSB0 is fragile when multiple USB serial devices are on the bus.

Why it's in the docs

It's a non-Voron, non-Klipper-default mechanical platform that demonstrates: once you have Klipper + Moonraker + a PN532, the NFC flow is exactly the same regardless of the printer mechanism.