Ouroboros Klipper Firmware Setup
Plugin getting frequent updates
The TMC4671 Klipper plugin is updated frequently. This page may lag behind the plugin's code. If something here doesn't work, the plugin README may help. Updated 23 JUN 2026
This guide covers installing the TMC4671 plugin on your Klipper 3D printer, and firmware flashing of Ouroboros.
-
Turn on your 3D printer and SSH into it.
-
Install andrewmcgr's TMC4671 Klipper Plugin using:
-
Do not close your SSH terminal yet, open your web browser and go to your 3D printer's interface (like Mainsail).
-
Edit your
moonraker.conffile. Add this: -
On your SSH terminal, go to the Klipper directory (
cd ~/Klipper), clean previous build files (make clean), and configure Klipper for Ouroboros (make menuconfig). Use these settings:[*] Enable extra low-level configuration options Micro-controller Architecture (STMicroelectronics STM32) ---> Processor model (STM32H723) ---> Bootloader offset (No bootloader) ---> Clock Reference (25 MHz crystal) ---> Communication interface (USB (on PA11/PA12)) ---> USB ids ---> [ ] Optimize stepper code for 'step on both edges' () GPIO pins to set at micro-controller startup -
Press
Q. If prompted to save, pressY. -
On your Ouroboros, press and hold the
BOOTbutton. While holding it down, press and release theRESETbutton, then release theBOOTbutton. -
Flash firmware to your Ouroboros using
make flash FLASH_DEVICE=0483:df11. -
To find the serial address of your Ouroboros using
ls /dev/serial/by-id/*. It'll show up as a STM32H723 device. If you don't see it, press and release theRESETbutton on your Ouroboros and try again. -
Open your
printer.cfgfile. In it:-
Add:
Make sure to add your Ouroboros's serial address to above.
-
Find your existing
[tmc2209],[tmc2660],[tmc2240]or similar sections forstepper_xandstepper_y, and delete or comment them. -
Find your existing
[stepper_x]and[stepper_y]sections. Edit them with:-
Edit your
full_steps_per_rotationandmicrostepsvalues. Both must be powers of two, and their product must be less than 65536. 4096 steps and 2 microsteps are good starting values. -
Edit the
step_pin,dir_pin,enable_pinvalues. Use these:Motor Step Dir Enable Endstop* X ouroboros:PD4 ouroboros:PD3 ouroboros:PD6 ^ouroboros:PD7 Y ouroboros:PC12 ouroboros:PC11 ouroboros:PD1 ^ouroboros:PB3 Using Existing Physical Endstop Setup
You only need to edit your
endstop_pinsetting if you are using the endstop connector on your Ouroboros. You don't need to edit your existingendstop_pinsetting if you were already using physical endstop switches wired to boards you're not planning to remove. For example, if your X endstop switch is connected to your toolhead board, you can keep it connected there and use your existing setting for that pin.Sensorless Homing Option
Physical endstops are recommended, but sensorless homing is an option if you prefer. You can find more info here.
-
Keep your existing
rotation_distance,homing_speed,homing_retract_dist,position_min,position_max,position_endstopand any other parameters not covered here as-is.
-
-
Add these lines to enable OTP (over temperature protection):
[temperature_sensor Ouroboros_MCU_Temp] sensor_type: temperature_mcu sensor_mcu: ouroboros min_temp: 0 max_temp: 80 [temperature_sensor Ouroboros_TMC1_MOS_Temp] sensor_type: Generic 3950 sensor_pin: ouroboros:PC4 pullup_resistor: 4700 min_temp: 0 max_temp: 100 [temperature_sensor Ouroboros_TMC2_MOS_Temp] sensor_type: Generic 3950 sensor_pin: ouroboros:PC5 pullup_resistor: 4700 min_temp: 0 max_temp: 100 -
Add these lines to enable
FORCE_MOVE:
-
-
Move on to your motor type's (stepper/BLDC) setup document.
(BLDC docs are coming soon)