Repository

MMX

A complete path from zero to a working multicolor Klipper setup: files, BOM, hardware assembly, wiring, Happy Hare configuration, calibration, first print and support.

v1.0ActiveFinal release packageKlipper
4 gatesDocumented gate setup
Type-AServo selector architecture
EBB42Reference wiring board
Happy HareKlipper MMU software

Getting Started with Happy Hare v4 for MMX

This guide covers the first Happy Hare v4 menuconfig pass for the original four-gate CN3D MMX OG. MMX uses one shared gear stepper and an MG-996R servo to rotate a cam between four filament paths. It is a servo-cam selector, not a linear-selector machine and not the separate six-gate MMX6 design.

Use the MMX project pages for printed parts, assembly, power and wiring. This page starts after the mechanism is built and the controller is flashed.

Important: Happy Hare v4 uses a dynamic menuconfig interface. The menu names and defaults shown below are the reliable way to navigate it; they are not a fixed sequence of old-style installer questions.
MMX v4 menuconfig steps. Choose the real hardware and compare every generated value with the build you actually wired.

1. Before you begin

  • The cam and all four filament paths move freely.
  • The MG-996R servo is powered from a suitable regulated supply, not an unsuitable controller pin.
  • Each of the four pre-gate switches changes state when filament is inserted.
  • The sensor after the selector and before the shared Bowden path changes state. Happy Hare calls this the shared exit sensor; it is the MMX gate-homing reference.
  • The controller is flashed for the intended USB or CAN connection and is visible to Klipper.
The reference build uses a BTT EBB42 v1.2. If your controller or wiring differs, select the real board and enter the pins from your build. Never copy reference pins blindly.

2. Install Happy Hare

For a new installation, connect to the Klipper host and clone the repository:

cd ~
git clone https://github.com/moggieuk/Happy-Hare.git
cd Happy-Hare
./install.sh

The first run opens menuconfig automatically. Use ./install.sh -i later when you want to reopen the configuration menu. If ~/Happy-Hare already exists, use the existing-installation path; do not clone over it.

Run commands one at a time and read ./install.sh --help on the printer. Installer flags can change between releases.

3. Choose the MMX profile

In MMU Type, select MMX - Multi-Material Extruder and leave the selector servo type at MG-996R.

Select the dedicated four-gate MMX profile, not MMX6.
  • The profile supplies four gates, MMX starting geometry, gear ratio, motor currents and servo gate angles.
  • Do not select MMX6: it is a different six-gate rotary-stepper design.
  • Leave sync feedback, encoder, eSpooler and other optional additions disabled unless that hardware is physically fitted.

4. Choose the controller and connection

In Board type, select the controller actually installed. For the reference wiring, choose BTT EBB 42 CANbus V1.2.

Choose the actual controller installed on the MMX.

Then open MCU connection and choose Serial or CANbus to match the firmware. Select the discovered serial device or CAN UUID when offered. If it is not discovered, enter its stable device path or UUID manually.

5. Enable the MMX sensors

Open MMU Features / Additions. LEDs are fixed on for the MMX profile. Enable filament sensors as follows:

Keep optional features off until the basic MMX path works.
Enable the four gate/lane entry sensors and the shared exit sensor.
  • Has gate/lane entry sensors? — enable for the four pre-gate switches; these become mmu_entry_0 through mmu_entry_3.
  • Has shared exit sensor (aka hub sensor) — enable for the switch after the selector and before the shared Bowden path.
PB4 is the shared exit sensor in the reference MMX wiring. Do not configure it as a toolhead sensor merely because a drawing uses that label, and do not disable it to hide a triggered-state problem. Check wiring, pull-up and inversion instead. A real sensor after the extruder entry is configured separately under Toolhead sensors/settings.

6. Review the generated pins

Happy Hare v4 fills the MMX reference pins directly in Pins / TMC. It uses fully qualified pins such as unit0:PD0; do not create an EBB42 alias block in mmu.cfg.

Review generated pins in Pins / TMC; change them there when the physical build differs.
FunctionReference generated pin
Gear UARTunit0:PA15
Gear stepunit0:PD0
Gear directionunit0:PD1
Gear enable!unit0:PD2
Selector servounit0:PB9
Entry sensors 0–3^unit0:PB7, ^unit0:PB5, ^unit0:PB6, ^unit0:PB8
Shared exit sensor^unit0:PB4
NeoPixelunit0:PD3
If positive gear movement feeds toward the spool instead of the extruder, correct Gear dir pin in menuconfig by adding or removing ! after checking the motor wiring.

7. Check homing and toolhead choices

The four entry sensors use the generated MMX pins.
The shared exit sensor supplies the MMX gate-homing reference.

With the shared exit sensor enabled, Endstops and Bowden movement selects it as the gate-homing endstop and applies the MMX starting distances. A normal MMX does not need a hand-edited sync_feedback_enabled value.

Under Toolhead, select the real extruder/hotend combination. Under Toolhead sensors/settings, enable only sensors physically fitted at the toolhead or extruder and enter their actual pins.

Review Software Options, keep the supplied client macros enabled initially, then leave the top menu and confirm that you want to save and install.

8. Backups and recovery

A manual backup is not required before a normal Happy Hare installer run. The installer preserves the existing mmu directory automatically as a timestamped sibling such as mmu.old-20260831-115007.

To inspect and recover an available configuration:

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

The installer lists the current configuration first and timestamped backups from newest to oldest. Selecting an older backup preserves the configuration being replaced, restores the chosen directory and opens the recovered choices in menuconfig.

Returning to a preserved v3 installation

If the MMX was upgraded from v3, the original configuration is preserved as mmu.V3. To return cleanly:

cd ~/Happy-Hare
./install.sh -d
cp -a ~/printer_data/config/mmu.V3 ~/printer_data/config/mmu
./install.sh -b v3

The uninstall backs up active v4, removes v4 modules/configuration and leaves mmu.V3 intact. Copying rather than moving preserves the original backup. If a custom -c path is used, substitute that path. Do not copy over an existing mmu directory.

9. Validate the hardware

Restart Klipper and resolve every configuration or MCU error before moving the mechanism. Hardware can be validated from the Klipper console; the Mainsail/Fluidd panel is useful but is not the only validation method.

Sensors

MMU_SENSORS

With every path empty, run the report. Insert filament into each gate in turn: mmu_entry_0 through mmu_entry_3 must change independently. Then operate the MMX outlet sensor and confirm mmu_shared_exit changes state.

Gear direction

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

Positive movement must feed toward the extruder; negative movement must return toward the spool.

Servo-cam selector

MMX has no physical selector zero mark. Verify every gate visually and use the dedicated servo-selector workflow:

MMU_GRIP
MMU_RELEASE
MMU_CALIBRATE_SERVO_SELECTOR
MMU_CALIBRATE_SERVO_SELECTOR ANGLE=83
MMU_CALIBRATE_SERVO_SELECTOR GATE=0 SINGLE=1

Tune and save gates 0–3, then exercise each with MMU_SELECT. Do not use the linear-selector MMU_SERVO POS=up/down workflow.

10. First load and tool change

MMU_HELP
MMU_STATUS
MMU_SENSORS
MMU_HOME
MMU_PRELOAD GATE=0
MMU_LOAD
MMU_UNLOAD
MMU_EJECT GATE=0
MMU_GATE_MAP
  1. Preload one gate and load it to the toolhead.
  2. Extrude a small amount and confirm the shared exit/toolhead sensor state.
  3. Unload and confirm the filament parks correctly.
  4. Repeat with a second gate.
  5. Run one slow tool change before attempting a multicolor print.

11. Troubleshooting

SymptomCheck first
Filament reported loaded while emptyRun MMU_SENSORS. Check PB4 shared-exit wiring, pull-up and inversion; do not remove the homing sensor.
No gate-homing referenceEnable the shared exit sensor in MMU Features / Additions and verify its generated pin under Pins / TMC.
Klipper rejects copied aliasesRemove the old alias-based setup and enter fully qualified pins through menuconfig.
Wrong selector calibration commandsConfirm MMX, not MMX6, and use the servo-cam calibration workflow.
MMU panel missingUpdate Mainsail or Fluidd. Hardware checks can still run from the Klipper console.
Gear moves backwardsCheck motor wiring and Gear dir pin inversion in menuconfig.

12. Final acceptance check

  • MMX mechanism assembled and manually checked;
  • Klipper starts without errors;
  • four entry sensors tested independently;
  • shared exit sensor tested and used for homing;
  • servo selector reaches all four gates;
  • gear direction and movement calibrated;
  • preload, load, unload and eject tested;
  • two-gate tool change completed;
  • slow multicolor print completed.
Status distinction: software installed is not the same as sensors tested, selector calibrated, slicer tested or physically validated by a print.