Skip to content

Getting Started with Box Turtle

This page walks through the first menuconfig pass for a BoxTurtle MMU — the screens you'll see, in the order you'll see them, and the handful of choices worth pausing on. It's the first of a set of getting-started pages; other pages cover toolhead calibration and multi-unit setups in more depth. Here we're just getting a Box Turtle installed and talking to Klipper.

The examples use the default Klipper object name unit0. You can choose a different name under Name → Klipper object name on the first install, and set a separate Display name for the UI. See Naming an MMU unit; use your chosen name where these examples show unit-specific names or pin prefixes.

First clone the Happy Hare repository as described in Cloning Happy Hare.

Then run the installer:

cd Happy-Hare
./install.sh

The first run opens menuconfig automatically because no .mmu_config exists yet; no -i flag is needed.

First run: nothing configured yet

This is the installer's default state: MMU Type is Custom Design, the board is unknown, and the CONFIG WARNINGS / ERRORS panel at the bottom lists the choices still needed. As soon as you pick a real MMU type, most of these clear themselves.

A quick word on the controls, since you'll use them constantly:

  • Arrow keys move the highlight; Enter (or Space) opens a submenu or toggles/selects the highlighted item.
  • Esc or Left Arrow key backs out one level; from the top level it offers to save.
  • R resets the highlighted parameter back to its default — useful any time you've typed something and want to back out cleanly without hunting for the original value.

Choosing the MMU type

Highlight MMU Type and press Enter:

MMU Type list, with Box Turtle selected

Move down to Box Turtle and press Space to select it. Two things happen immediately: the radio button fills in ((X) Box Turtle), and two new lines appear indented underneath it — Turtle Neck and Design attributes — options that only make sense once Happy Hare knows this is a Box Turtle.

Enter Turtle Neck to see the buffer choice:

Turtle Neck buffer choice, v2 already selected

The Turtle Neck is Box Turtle's sync-feedback buffer. It senses whether filament between the MMU and toolhead is under tension or compression so Happy Hare can keep the gear motors synchronized with the extruder. It is not a filament catchment buffer; those manage unloaded filament slack and are a different feature.

Turtle Neck v2 is the default and uses two switches with a spring that rests toward the tension side. Turtle Neck v1 also has tension and compression switches but is unsprung. Choose Other for a different switch arrangement or an analog proportional buffer. This choice supplies the right starting values, but you will review its range and pins under Buffer config shortly.

Back out twice (Esc, Esc) to return to the top menu, and look at the warnings panel again:

Root menu after choosing Box Turtle - one warning left

The hardware warnings have cleared. The remaining warning — "Toolhead type is 'other'" — is exactly what it sounds like: Happy Hare still doesn't know your toolhead, and that's covered in a different getting-started page. Don't worry about it here.

Board type

Enter Board type:

Board type list, AFC Lite v1.0 already selected

Because you already told it this is a Box Turtle, Happy Hare has pre-selected AFC Lite v1.0 / designed for Box Turtle — the board most Box Turtles are built around. If yours is a Box Turtle on a different controller board, this is where you'd pick it instead; the pin defaults for every stepper, sensor and TMC driver on the rest of the menu come from whatever you choose here.

MCU connection

Back out to the top and enter MCU connection:

MCU connection, Serial already selected

Again, already right for a board like the AFC Lite that plugs in over USB: MCU connection is Serial, and there's a second line to pick which serial device if you have more than one board attached. If your board talks CANbus instead, this is where you'd switch it — but for a stock, USB-attached Box Turtle, Serial is what you want and there's nothing to change.

Built-in Box Turtle features

Back out and enter MMU Features / Additions:

MMU Features panel with LEDs, eSpooler and sync-feedback buffer fixed on, plus optional environment sensors and managed fans

LEDs, eSpooler and the sync-feedback buffer are already switched on and marked (FIXED). That means they are part of the Box Turtle profile and cannot be disabled here; it does not mean their pins should go unchecked. An environment sensor, managed fan, RFID readers, eject buttons and an encoder are optional and default off — enable only the additions you actually built. A managed fan can use the MCU CPU sensor that is already enabled, or an optional environment sensor; see Fans & Airflow.

eSpooler configuration

Enter eSpooler config, then scroll down to the eSpooler pin rows:

Box Turtle eSpooler configuration with AFC Lite enable, rewind and forward pins for all four gates

Each gate has separate enable, rewind and forward outputs. The selected board profile fills these in automatically. For the stock AFC Lite profile they should be:

Gate Enable Rewind Forward
0 unit0:PA2 unit0:PA0 unit0:PA1
1 unit0:PA5 unit0:PA6 unit0:PA7
2 unit0:PB13 unit0:PB14 unit0:PB15
3 unit0:PD11 unit0:PD12 unit0:PD13

If you selected another controller, use the values supplied for that board and compare them with its wiring diagram instead of copying this table. The optional trigger pin is normally blank on a stock Box Turtle; it is only needed by an eSpooler modified with a dedicated tension-switch burst trigger.

Leave the supplied power and speed settings alone for the first installation. They are starting values, not proof that a motor is wired in the correct direction. You will safely test each output after installation. See Feature: eSpooler when you are ready to tune rewind, load assist and in-print assist.

Turtle Neck buffer configuration

Back out once and enter Buffer config:

Turtle Neck v2 Buffer config with range, spring state, compression pin and tension pin

For Turtle Neck v1 and v2, the profile supplies a sensor range of 8 mm and a maximum physical range of 12 mm. V2 also sets Buffer resting spring state to Tension / squeezed buffer; v1 uses n/a because it is unsprung. These are suitable starting values for an unmodified mechanism.

On an AFC Lite, the normal switch assignments are compression = ^unit0:PE12 and tension = ^unit0:PE13. A different controller may supply different pins. What matters is not merely that both rows are filled in, but that each physical switch later reports the filament condition named by its row. See Feature: Sync-Feedback Buffer for range measurement, tuning and proportional-sensor setup.

Pins: gear direction

This is the one setting on this page that's genuinely impossible to get right by guessing. Back out to the top, enter Pins / TMC, then Gear pins:

Gear pins list - one row per gate

Every gate has its own UART, step, dir, enable and diag pin, all filled in from the AFC Lite defaults you picked earlier. The one you're most likely to need to touch is dir — whether a gear stepper spins the "right" way depends on which way its cable happens to be plugged in, and no config file can know that in advance. You'll find out the first time you try to load filament and gate 0 (say) runs backwards.

Highlight Gear dir pin and press Enter to open its editor:

Gear dir pin editor, showing the default pin

If that gear needs reversing, add a ! in front of the pin name — Klipper's standard way of inverting a pin's polarity:

Gear dir pin editor, with ! typed to invert it

That's it — no rewiring, no .cfg files to hand-edit. Press Enter to accept the change, or Esc to back out without applying it. And if you ever change a value here and decide you'd rather have the default back, that's exactly what the R key mentioned earlier is for: highlight the parameter and press R, and it resets to whatever Happy Hare would have picked on its own.

Picking a toolhead

From the top menu, enter Toolhead:

Toolhead list, Stealthburner Clockwork2 Revo Voron selected

This step is entirely optional — skip it and Happy Hare falls back to generic "Other/Unknown" dimensions, which is a perfectly normal starting point. But if your toolhead (extruder + hotend combo) happens to be in this list, picking it gets you real, community-measured values instead of guesses, for free. Here we've picked Stealthburner Clockwork2 Revo Voron at random, just to show what selecting one does.

Back out and enter Toolhead sensors/settings to see the effect:

Toolhead dimensions, pre-filled from the selected combo

Extruder entrance to nozzle and Residual filament, under Toolhead dimensions, are already filled in — 85.1 and 2 here — measured by someone else on the same hardware rather than left at the generic default. The other two distances Happy Hare can use (toolhead sensor to nozzle, extruder sensor to entry) only appear once you've told it you actually have those sensors on your toolhead, higher up this same screen -- until relevant the values stay hidden here.

Contributions to the toolhead list are always welcome! If you would like to contribute your parameters to this toolhead database, please visit here to add your parameters to future installer updates.

This is a shortcut, not a substitute: even with a listed toolhead, you're still better off learning to measure and calibrate your own eventually, since small build variations and mods add up. But it's a genuinely good starting point, and if your exact combo isn't listed, "Other/Unknown" plus manual calibration (MMU_CALIBRATE_TOOLHEAD) is exactly as normal a path as this one.

Explore the rest

That's enough to get a stock Box Turtle basically talking to Klipper, but it's only a fraction of the menu. Software Options, Tip Forming / Cutting, Purging, Endstops and Bowden movement and the rest are all worth a look — scroll all the way from the top to Paths & Services at the bottom at least once. Nothing you look at will break anything: moving the highlight costs nothing, and R is always there to undo a change you don't want. Remember that you don't need to setup everything now — you can come back many times and re-run menuconfig with ./install.sh -i and incrementally setup features and macros.

Software integrations such as Spoolman are optional and can be added after the core hardware is working.

Saving, and coming back later

When you're done, press Esc from the top level (or Q) to get the save prompt, and confirm. Happy Hare writes your .cfg files from what you chose.

The installer only forces menuconfig open automatically on that very first run. After that, running ./install.sh again just upgrades in place — it won't reopen the menu. To go back in and change something, use:

cd ~/Happy-Hare
./install.sh -i

This is the normal way to revisit any setting on this page — there's no need to ever hand-edit the generated .cfg files directly.

Note

The one thing worth knowing: each time you rerun -i over an existing configuration, it asks how to reconcile menuconfig with any edits made directly to your .cfg files. Merge/Refresh (option 1, the default) keeps your manual edits, offers to import them into menuconfig first, and applies only the settings you change there. Replace (option 2) regenerates everything from menuconfig, discarding direct edits.

If you only ever configure through menuconfig, as this page assumes, Replace is the recommended choice because it rebuilds your Happy Hare Klipper configuration files, ensuring a clean configuration that includes future Happy Hare software updates. See Choosing an upgrade mode for the differences.

Validating Hardware Setup

The shared Hardware Validation checklist covers the MCU, optional hardware and movement/homing model in full. The checks below are the Box Turtle-specific minimum: every gear drive, every fitted filament switch, both Turtle Neck states and both eSpooler directions on all four gates.

With Klipper accepting the config and no startup errors, confirm the physical mechanism actually does what Happy Hare thinks it does before calibrating anything or trying to print.

Gear stepper direction

Each gate has its own gear stepper, and which way it spins depends on how its motor cable is connected. Check each one with a short, visible piece of filament:

MMU_SELECT GATE=0
MMU_TEST_MOVE MOVE=50 GRIP=1
MMU_TEST_MOVE MOVE=-50 GRIP=1

The positive move must feed away from the spool and toward the toolhead; the negative move must return toward the spool. If both are reversed, add or remove ! on that gate's Gear dir pin in menuconfig (see Pins: gear direction), reinstall and try again. Repeat with GATE=1, GATE=2 and GATE=3.

Filament sensors

Query the sensors, then use a short filament fragment to trigger each physical switch in turn:

MMU_SENSORS
mmu_entry_0           --> TRIGGERED
mmu_entry_1           --> Open
mmu_exit_0            --> Open
mmu_shared_exit       --> Open
filament_compression  --> Open
filament_tension      --> Open

Confirm the intended sensor alone changes to TRIGGERED, then remove the fragment and confirm it returns to Open. Repeat for every configured sensor:

  • mmu_entry_0 through mmu_entry_3 at the four lane entrances;
  • mmu_exit_0 through mmu_exit_3 after the four gear drives;
  • mmu_shared_exit at the common hub exit.

Your list contains only the sensors enabled by your build. If a switch reads backward, correct its pin inversion in menuconfig. If it never changes, check the selected pin, connector and pull-up before continuing.

Turtle Neck sync-feedback

A Turtle Neck reports the condition experienced by the filament, which can sound opposite to its visible motion. Excess filament under compression makes the neck extend; taut filament under tension squeezes it together.

Run both status commands, move the neck by hand to the middle and both extremes, then query it again at each position:

MMU_SENSORS
MMU_SYNC_FEEDBACK
Position Expected result
Mid-travel Both switches open; sync feedback reports neutral
Extended by excess filament filament_compression is TRIGGERED
Squeezed by taut filament filament_tension is TRIGGERED

Do not assume an unloaded Turtle Neck v2 should stay neutral: its spring normally returns it toward the squeezed/tension state. V1 is unsprung and may remain where it was left. The test is whether the middle and two extremes report the right conditions.

If compression and tension are exchanged, swap those assignments under MMU Features / Additions → Buffer config. If one switch reports triggered when released, correct that pin's inversion there. Reinstall and repeat the test rather than editing the generated mmu_hardware.cfg directly.

eSpooler direction and pins

Keep the stop command ready

Test with an empty or scrap spool first. A wrong direction or excessive power can unwind a full spool very quickly. MMU_ESPOOLER ALLOFF=1 stops every eSpooler immediately.

Run one short burst in each direction, then stop everything:

MMU_ESPOOLER GATE=0 BURST=1 OPERATION=rewind
MMU_ESPOOLER GATE=0 BURST=1 OPERATION=assist
MMU_ESPOOLER ALLOFF=1

rewind should take up slack onto the spool; assist should feed filament off it toward the MMU. Repeat for gates 1, 2 and 3.

Symptom What to check in eSpooler config
Neither direction moves Enable pin, motor connection and power
rewind feeds out and assist takes up Swap that gate's rewind and forward pin assignments
Motor is active when it should be off Output and enable-pin active polarity; add or remove ! only if required by the controller
One direction alone does nothing That direction's pin assignment and wiring

Reversed eSpooler direction is not corrected like a stepper dir_pin: AFC Lite uses two separate directional outputs. See Feature: eSpooler — Setting up each mode before changing power, speed or in-print assist settings.

Calibration

A Box Turtle doesn't need much here. Bowden length is auto-calibrated on first load by default (autocal_bowden_length, on for the Turtle Neck v2 buffer this guide assumes), so there's nothing to run by hand for that.

The one step worth doing anyway is calibrating each gate/lane's gear stepper for an accurate rotation_distance:

MMU_CALIBRATE_GEAR MEASURED=102.5

It isn't forced — Happy Hare will run on the installed default regardless — but it's genuinely worth the few minutes per gate for accurate filament changes and fewer load/unload errors down the line. See Calibration for the full picture (which steps apply to which MMU type, and why) and Calibration: Gear Rotation Distance for the complete procedure.

Checking Basic Operation

After the individual hardware checks and gear calibration pass, test all three mechanisms together on gate 0:

MMU_SELECT GATE=0
MMU_LOAD
MMU_UNLOAD
MMU_ESPOOLER
MMU_SYNC_FEEDBACK

During loading, the gear must feed toward the toolhead and the eSpooler must assist by releasing filament. During unloading, the eSpooler must rewind slack onto the spool. The Turtle Neck should move through its expected range without remaining jammed at an extreme. Each command should complete without an unexpected pause or error.

Repeat on the other gates before printing. If something goes wrong here, it is much easier to diagnose now than mid-print; see Operation: Debugging Problems.

Slicer Setup

You now need to add some gcode hooks into your favorite slicer for start g-code, end g-code, after layer change and on tool change. This is to coordinate with the MMU during certain phases of a print. This is covered in Slicer Setup. Jump to this section, make these changes and return here.

Printing with MMU

Besides the slicer gcode hooks above, there's one real decision left before your first multi-material print: how purging between colors happens.

  • Slicer-controlled — your slicer's own wipe tower, printed alongside the model. Simplest to set up; costs bed space and filament.
  • Happy Hare-controlled — a dedicated purge macro runs at each toolchange instead of a wipe tower: either Purge: Simple (prints a purge line) or Purge: Blobifier (a dedicated purge/park station, more capable but its own hardware). See Purging without a wipe tower for how to disable the slicer's tower and hand purging over to Happy Hare.

Either way, the toolchange parking positions and movement (retraction, z-hop, where the toolhead parks during a change) live in mmu_macro_vars.cfg, tunable through Macro Variables in menuconfig — see Toolchange Movement for what each setting actually does before changing the defaults.

Once that's decided, slice something with more than one filament and run your first print.

What Next?

  • Install KlipperScreen (Happy Hare edition) if you want a touchscreen front end, or drive everything from Mainsail / Fluidd — either works, and both are covered.
  • From here, explore the rest of this site's Features section one page at a time as you actually need them — Spoolman integration, NFC/RFID tags, EndlessSpool, and the rest. Trying to absorb all of it before your first print is the fastest way to feel overwhelmed by an MMU that, day to day, mostly just works.