Upgrading a TwoTrees SP-5 to Klipper with Radxa Zero (512MB) & MKS Robin Nano V3.1 — A Complete Step-by-Step Guide

Summary: This hands-on guide documents a full-day upgrade of a TwoTrees SP-5 V3 to Klipper using a Radxa Zero 512MB host and an MKS Robin Nano V3.1 high-speed board. It covers the OS image, flashing, pin mapping, macros, input shaping, fan fixes, extruder calibration and final tuning for 350 mm/s operation. This is the exact process I used to reach stable high-speed prints using OrcaSlicer.

Why upgrade?

The stock SP-5 with Marlin is capable, but Klipper + a fast SBC unlocks high acceleration, input shaping, precise pressure advance, and far better motion control. Using a Radxa Zero keeps the host cheap and power-efficient while providing reliable USB gadget networking for a headless Mainsail install.

Overview of what you’ll need

  • TwoTrees SP-5 V3 (printer chassis)
  • MKS Robin Nano V3.1 high-speed board (drop-in replacement)
  • Radxa Zero 512MB (SD card, power supply)
  • Micro SD card for firmware flashing and SBC
  • Mainsail / Klipper / Moonraker installed on the Radxa
  • OrcaSlicer (recommended; I now use it permanently)

Part 1 — Preparing the Radxa Zero (512MB)

I tested multiple images; the Radxa Zero Debian Bullseye KDE B23 image booted reliably, allowed USB gadget mode and worked headless. Many Arch/Manjaro builds lacked WiFi or gadget support, so pick an image that is known to support gadget networking.

  1. Write the Bullseye image to the SD card and enable SSH before first boot (create an empty ssh file or enable SSH via the image instructions).
  2. Add WiFi credentials and set a hostname in /etc/hosts if you need local router name resolution.
  3. Boot the Radxa Zero, verify you can SSH from your laptop. If the network shows “Unknown” in your router, fix /etc/hosts.

Part 2 — Installing Klipper, Moonraker and Mainsail

I used KIAUH to install Klipper, Moonraker and Mainsail. It automates dependencies and gives a nice control panel for builds.

curl -s https://raw.githubusercontent.com/th33xitus/kiauh/master/kiauh.sh | bash

Make sure you build Klipper for the STM32F407 MCU with the 48KiB bootloader option and enable USB for communication (menuconfig).

Part 3 — Flashing the MKS Robin Nano V3.1

  1. Compile Klipper firmware with the Robin Nano board options.
  2. Copy out/klipper.bin to the SD card and rename to Robin_nano_v3.bin.
  3. Power off the printer, insert the SD, power on — the Robin will flash automatically.
  4. Remove the SD after flashing and connect the Robin to the Radxa Zero via USB.

Part 4 — Building a correct & minimal printer.cfg

This is the time-consuming part — matching pinouts, enabling TMC UART, defining fans, and ensuring Klipper keys are compatible with the provided build (stock TwoTrees Klipper is strict about accepted keys).

Key lessons learned:

  • Do not use keys unsupported by your Klipper build (some vendor images reject keys like junction_deviation, max_accel_to_decel or per-axis damping ratios).
  • Define both part cooling fan and hotend heatsink fan in printer.cfg. Missing the hotend fan causes heat creep and layer shrinkage toward the top of tall prints.
  • OrcaSlicer sends extruder temp first then bed temp — adapt your start macro to accept Orca’s param order.

Essential printer.cfg fragments I used (examples)

[printer]
kinematics: corexy
max_velocity: 350
max_accel: 3000
max_z_velocity: 50
max_z_accel: 350
square_corner_velocity: 10
[heater_fan hotend_fan]
pin: PB1
heater: extruder
heater_temp: 69
max_power: 1.0
[fan]
pin: PC14
max_power: 1.0

Validate all macros and ensure [gcode_macro] blocks start at column 0 (no leading spaces). Indentation errors lead the parser to treat them as unknown lines.

Part 5 — Motion tuning: input shaping & pressure advance

Input shaping was tuned using Klipper resonance tests. My final starting values were:

  • shaper_type_x: mzv, shaper_freq_x: 55
  • shaper_type_y: mzv, shaper_freq_y: 50

Pressure advance starting point: pressure_advance: 0.10. Tune in increments of 0.02 while printing single-wall test objects until corners and retractions look clean.

Part 6 — Extruder calibration & volumetric checks

Calibrate extrusion with a 100 mm extrude test. Calculate new rotation_distance or steps/mm using the measured actual length. Verify volumetric limits with your nozzle and layer height.

Part 7 — OrcaSlicer profile & final results

I switched permanently to OrcaSlicer. Key advantages: modern Klipper-friendly gcode, better handling of acceleration/volumetric settings, and faster slicing. With the tuned printer.cfg and Orca profile I achieved:

  • Reliable printing up to 350 mm/s top speed (profile-limited where necessary)
  • Stable acceleration at 3000 mm/s²
  • Clean walls after pressure advance tuning and input shaping
  • No top-layer shrinkage once the hotend fan and shaper were correct

Troubleshooting summary

  • Move out of range: caused by negative purge/wipe moves in some start G-code — add position_min: -10 to stepper X if you allow small negative moves, or disable the purge move in slicer.
  • Unknown command / macro parse errors: usually caused by indentation or malformed macro blocks. Macro headers must start on column 0.
  • XY shrink/taper: normally heat creep (hotend fan missing), or incorrect motion limits/junction behavior — fix fans, set square_corner_velocity and tune PA.

Final notes & recommended workflow

  1. Flash Robin firmware, connect Radxa Zero, install KIAUH and Klipper stack.
  2. Build a minimal validated printer.cfg with fans, TMC UART, and basic motion limits.
  3. Define safe macros for start/end that match OrcaSlicer parameter order.
  4. Run PID_CALIBRATE for extruder and bed, then do extrusion calibration.
  5. Run resonance tests and tune input shaper, then tune pressure advance.
  6. Test with a 20 mm cube and a small Benchy; iterate motion limits slowly until stable.

If you want, I can provide the full annotated printer.cfg I ended up with, an OrcaSlicer profile export, and a downloadable PDF of this guide.

Posted on: 2025-11-15. If you found this guide useful, please share it on CraftConnectSA or PrintLabSA.

💬 WhatsApp Now