Klipper Ultimaker Original Klipper

Article In Progress

Printer Notes​

This config will be for a stock UMO with a 1.5.7 board, UltiController and a 12×3 Leadscrew. If your printer differs from this please take some of the following into account.

Print Area
Advertised as 210x210x205 the Marlin config is 205 cubed.
XY might reach 210 with the endstops at their far positions. My X hit at 208.
Z I have set at 200 to start for safety. 205 is fine if you don’t have a magnet/sheet on the bed.

Z Speed
Keep in mind this thing is made of plywood. The Marlin config has Z homing at 4 mm/s. You can probably go a little faster with the 12mm leadscrew but I would not bump it up too far unless using the 8mm setup.

Installing Klipper​

Please see our overall guides for installing Klipper on your Pi/Printer via MainsailOS or KIUAH

MCU Firmware Make Settings​

Code:
sudo service klipper stop
cd ~/klipper/
make menuconfig
1748155686083.png
If this is a fresh klipper install you will likely find the defaults of Atmega AVR and atmega2560, that is what you need.
Hit Q and save then enter make to compile the firmware.
Code:
make

MCU Firmware Flashing​

Ultimaker boards can be flashed over USB, in this case directly from the pi after compiling.

Query your boards unique id using the following command:
Code:
ls /dev/serial/by-id/*
1748156053464.png
In this case our device id is /dev/serial/by-id/usb-Arduino__www.arduino.cc__0042_74133353437351A0A241-if00
You will need to substitute your id but in my case the command to flash the firmware will be:
Code:
make flash FLASH_DEVICE=/dev/serial/by-id/usb-Arduino__ www.arduino.cc__0042_74133353437351A0A241-if00
After a successful flash don't forget to restart the Klipper process with:
Code:
sudo service klipper restart
Upload your printer.cfg. Remember to replace the serial id with your boards unique value.

Complete Config​

Makefile:
[mcu]
serial: /dev/serial/by-id/usb-Arduino__www.arduino.cc__0042_74133353437351A0A241-if00

[printer]
kinematics: cartesian
max_velocity: 500 #500 Stock
max_accel: 4000 #4000 Stock
max_z_velocity: 5 #5 Stock, 10 might be okay, higher hurts the plywood.
max_z_accel: 30

[stepper_x]
step_pin: PA3
dir_pin: !PA1
enable_pin: !PA5
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PA0
position_endstop: 0
position_max: 205
homing_speed: 50.0
position_min: 0

[stepper_y]
step_pin: PC6
dir_pin: PC4
enable_pin: !PA7
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PA4
position_endstop: 0
position_max: 205
homing_speed: 50.0
position_min: 0

[stepper_z]
step_pin: PC0
dir_pin: !PG2
enable_pin: !PC2
microsteps: 8 #Stock 1/8, 1/16 available via jumper
rotation_distance: 3 #12mm Leadscrew
endstop_pin: ^!PC7
position_max: 200 #Stock is 205, 200 for safety
position_min: -2
homing_speed: 4

[extruder]
step_pin: PL6
dir_pin: PL4
enable_pin: !PG0
microsteps: 16
rotation_distance: 23.5
gear_ratio: 49:8
nozzle_diameter: 0.400
filament_diameter: 2.850
heater_pin: PE4
sensor_type: AD597
sensor_pin: PK0
min_temp: 0
max_temp: 270

# Dual extruder support.
#[extruder1]
#step_pin: PL2
#dir_pin: PL0
#enable_pin: !PL1
#microsteps: 16
#rotation_distance: 33.500
#nozzle_diameter: 0.400
#filament_diameter: 2.850
#heater_pin: PE5
#sensor_type: AD595
#sensor_pin: PK1
#control: pid
#pid_Kp: 22.2
#pid_Ki: 1.08
#pid_Kd: 114
#min_temp: 0
#max_temp: 275

#[heater_bed]
#heater_pin: PG5
#sensor_type: PT100 INA826
#sensor_pin: PK2
#control: watermark
#min_temp: 0
#max_temp: 100

[fan]
pin: PH4
max_power: 1
shutdown_speed: 0.0
kick_start_time: 0.1
off_below: 0.1
hardware_pwm: True
#define FAN_PIN           7    >    ar7=PH4

[static_digital_output hotend_led]
pins: PB7


[display]
lcd_type: hd44780
rs_pin: PD1
e_pin: PH0
d4_pin: PH1
d5_pin: PD0
d6_pin: PE3
d7_pin: PH3
hd44780_protocol_init: True
line_length: 20
encoder_pins: ^PG1, ^PL7
click_pin: ^!PD2


[output_pin BEEPER_pin] #Allows UltiController Beeper to be used.
pin: PD3
pwm: True
value: 0
shutdown_value: 0
cycle_time: 0.001

[gcode_macro M300] #Marlin "play tone" code to utilize beeper.
gcode:
    {% set S = params.S|default(1000)|int %}
    {% set P = params.P|default(100)|int %}
    SET_PIN PIN=BEEPER_pin VALUE=0.5 CYCLE_TIME={ 1.0/S if S > 0 else 1 }
    G4 P{P}
    SET_PIN PIN=BEEPER_pin VALUE=0

#Change if using Fluidd, etc.
[include mainsail.cfg]

Sources​

The following posts were found and used when working out this configuration. Some are missing things, some are incorrect for a stock printer. But credit is due and you may find them helpful as well.
Marlin Config – https://github.com/gyohng/Marlin2-UltimakerOriginal/blob/2.0.x-UMO/Marlin/Configuration.h
Marlin Pin Reference – https://github.com/MarlinFirmware/Marlin/blob/1.1.x/Marlin/pins_ULTIMAKER.h
Klipper config for 1.5.7 – https://klipper.discourse.group/t/ultimaker-original-config-need-help/126/6
Klipper config for 1.5.6 – https://gist.github.com/JeremyGrosser/079d68fd2458c356b527be700c09efdb
Klipper config for v2 – https://github.com/Klipper3d/klipper/blob/master/config/generic-ultimaker-ultimainboard-v2.cfg