500 × 400 CoreXY with five docked SmartOrbiter v3 toolheads, a servo-driven lock and a Beacon probe on the carriage. The config structure is adapted from RatOS (V-Core 3) conventions.
Hardware: BTT Octopus Pro (STM32H723) · 5× SO3 tool boards (STM32F042, one per tool, USB) · Beacon RevH · Raspberry Pi 5 · Klipper v0.13.0 · Moonraker v0.9.3
| File | What it does |
|---|---|
printer.cfg |
Kinematics, steppers, bed, the toolchanger servo, shaper/belt-graph shell commands, includes |
macros.cfg |
The toolchanger: T0–T4, SELECT_PHn / _DOCK_PHn, DOCK, servo cam lock, pre/post select and dock checks. Also end/cancel print, pause/resume, the automatic Z reference from T0's true zero, and a motion-limit reset at print start. Start G-code itself lives in the slicer |
so3_common.cfg |
Shared SmartOrbiter filament logic for all five heads: runout debounce, load/unload, sensor health, status LEDs (each macro takes TOOL=N) |
so3_0.cfg … so3_4.cfg |
One per tool: MCU, extruder + TMC2209, heater, hotend fan, dock sensor, filament sensor and unload button wired into so3_common.cfg. Kept parallel — change one, change all. so3_0 also carries the LIS2DW accelerometer and [resonance_tester], and pressure advance differs per tool |
beacon.cfg |
Beacon probe, proximity homing, contact "true zero", bed mesh scan macros |
eddy.cfg |
Alternative Eddy probe config (needs eddy-ng). Mutually exclusive with beacon.cfg — include only one |
calibrate-offsets.cfg |
Per-tool XY/Z offset calibration (needs the tools_calibrate Klipper extra) |
reset-z-offsets.cfg |
RESET_Z_ALL — recalibrate only the Z offsets for every tool |
z-babystep.cfg |
Live Z babystep that persists across dock/select |
pid-tune.cfg |
PID tuning for all five hotends |
fan-ramp.cfg |
Part-cooling fan ramp helpers |
enclosure.cfg |
Chamber heater, filter/exhaust fans, SET_CHAMBER, cooldown-aware TURN_OFF_HEATERS |
scripts/ |
Wrapped by [gcode_shell_command]: input-shaper and belt-tension graphs from the latest CSV |
moonraker.conf, moonraker-obico-update.cfg |
Moonraker. Only Obico is registered with the update manager besides Klipper/Moonraker; the other entries are commented out |
crowsnest.conf, KlipperScreen.conf, sonar.conf |
Host services. sonar.conf has enable: false |
- Per-tool print Z = Beacon
model_offset(T0 reference) +one_z_offset…four_z_offsetfor T1–T4 + an automatic correction for drift in T0's true zero (SET_Z_REFERENCEre-baselines it) + any live babystep (z-babystep.cfg). The offsets and reference are stored invariables.cfg, which isn't included because it's calibration state. - Cancelling an object mid-print on a multi-tool job can poison Klipper's
exclude_objectand abort at the next toolchange.max_extrude_cross_sectionis already 10 in everyso3_N.cfg(Klipper's default is 0.64). Don't raise it further to "fix" this. - A print that ends in an error leaves
is_pausedset, which makes the next print unpausable. Start G-code should runCLEAR_PAUSE. - Klipper macro names can't have a digit in the middle (
_SO3_RUNOUT_TICKgets parsed as_SO3). Digits at the end are fine.
Everything lives in config/, which maps to ~/printer_data/config/ on the Pi.
- The comment block near the top of
printer.cfgstill calls Eddy "current" and Beacon "future". It's out of date: Beacon is the active probe ([include beacon.cfg]is on,eddy.cfgis commented out). - Comments in
so3_common.cfgmentionpf5/sim, an offline simulator I use to check the runout timing. It isn't part of this repo; the comments explain the reasoning on their own.
See SETUP.md for the Pi, and slicer/ for the slicer G-code.
- The Beacon serial is replaced with
<YOUR_BEACON_SERIAL>inbeacon.cfg. The Octopus and SO3 boards use readable USB names (OctopusPro,PH1…PH5) set when their firmware was built; yours will differ. Find them withls /dev/serial/by-id/*. - The
#*# SAVE_CONFIGblock at the bottom ofprinter.cfgis mine — PID values, probe models and meshes are for my machine. Delete it and recalibrate. - Calibration state is not included (
variables.cfgwith the tool dock positions and offsets, input shaper graphs). The toolchanger macros readvariables.cfg, so you have to calibrate your own docks and offsets first. - Stock files are left out:
mainsail.cfg(MainsailOS) andmoonraker_obico_macros.cfg(Obico installer).printer.cfgincludes both. - Paths like
/home/pi/...are the defaults on MainsailOS. Change them if your user isn'tpi.
Nothing here is guaranteed for your machine. Read a file before you include it, and keep a hand near the power switch the first time you home.
This repo is one of four, one per printer: ProForge 5 · RatRig V-Core 3 · Voron 2.4 · Qidi X-Max 4
GPL-3.0, the same as Klipper and RatOS, which much of this is derived from.