How to Install Klipper on Creality Ender 3 S1 Pro: Config and Setup

here’s how I fixed this

nano ~/klipper/src/stm32/Kconfig

scroll down to

##############
# Bootloader
#############

look for this part

    config STM32_FLASH_START_4000
        bool "16KiB bootloader (HID Bootloader)" if MACH_STM32F207  || MACH_STM32F401 || MACH_STM32F4x5 || MACH_STM32F103 || MACH_STM32F072

remove the MACH_STM32F401 || so it doesn’t detect 16KiB for our board

will look like this

    config STM32_FLASH_START_4000
        bool "16KiB bootloader (HID Bootloader)" if MACH_STM32F207  || MACH_STM32F4x5 || MACH_STM32F103 || MACH_STM32F072

then save (ctrl + x, Y, ENTER)
then run

make menuconfig

and you can now change it to 64KiB

then

make

you’re all set.

1 Like

So I needed to change the name from the bin file from klipper.bin to firmare.bin

After that the printer connected to klipper.

This is caused by Klipper being too old as far as I remember.
Updating Klipper should solve this.

hi all,

I followed this you tube tutorial and then I get stuck when having to connect Printer to Mainsail. just does not want to connect , followed all your steps in this tutorial and getting beyond frustrated. Please help

Hello,
@3DPrintBeginner as you’ve during this process tried both S1 and S1 Pro printers can you advice which I should buy if I’m planning to go with (firmware) customizations? Do I need to pay for touch screen and not be able to use it?
Even if I don’t have a printer yet I’ve already bought S1 Pro All-metal Sprite from Creality (as a spare part at least) so the main upgrade will be possible. I can upgrade led light, filament bearing spool and even bed (I think) if I go with normal S1.
The main thing I’m not happy about S1 Pro is the bottom plastic case which will not allow some further frame upgrades or extensions, for example:
image

Planning to order my first 3D printer it in a very near feature, these days mostly, and a ~$100 is difference in my country so any advice will be helpful.

The E3S1 should be good.
But would you really pay 379$ for some extrusions to make the printer bigger? Why not get the E3S1 Plus then?

The Extender is just an example for something maybe to do in the future, and when the price become acceptable not now for sure. Extender kit for E3 V2 is now ~$170 which is fine, example as well.
I would go with the E3 S1 Plus model but not possible to order in my country and shipping prices are too high, and other then that will need to wait for a printer who knows how long. Just need to start with some printing soon, as a hobbyist and beginner.
Thank you for a quick reply, I appreciate it and will consider E3S1. :slight_smile:

I was able to install Klipper firmware S1 and get my Mainsail OS running. One thing I can’t fix my hot end is always to low when I start a print and it grinds the print bed. I did all the Z-offset calibrate, mesh leveling and paper tests. It runs through them all and it goes home just fine also. On the stock firmware it never did this. I would share any part of my printer.cfg Any help would be appreciated.

I recommend setting the Z offset to 0 in the config, and starting the calibration again. Maybe something got stuck in the config and it’s not updated correctly.

Doing some digging on my end. I realized the BED_MESH_PROFILE LOAD=default needs to be added to the GCode to get the print to use my bed level. Does that sound like it could be the issue?

I installed Klipper with MainSail on a RP 3 for my Ender-3 S1 Pro with STM32F103 processor. It worked at first, now clipper cant connect to printer. I tried to roll back to original firmware Ender-3s1pro_hw24s1_301_V2.0.8.16F1_F103_LASER_FDM.bin, it wont flash. Did i brick my printer?

You need to check your settings for the USB connection.

To revert back, ensure that you rename the firmware correctly. Right now you are trying to flash the laser firmware which is probably wrong.

USB on my RP3 is up:

###### Identifying MCU connected via USB ...

 ● MCU #1: usb-1a86_USB_Serial-if00-port0

my printer.cfg:

[include mainsail.cfg]
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
...

could it be about baudrate? Klipper.log:

Start printer at Sat Aug  6 23:47:28 2022 (1659822448.4 1224.3)
===== Config file =====
[virtual_sdcard]
path = ~/gcode_files
on_error_gcode = 
	CANCEL_PRINT

[pause_resume]
recover_velocity = 25

[display_status]

[gcode_macro CANCEL_PRINT]
description = Cancel the actual running print
rename_existing = CANCEL_PRINT_BASE
variable_park = True
gcode = 
	{% if printer.pause_resume.is_paused|lower == 'false' and park|lower == 'true'%}
	_TOOLHEAD_PARK_PAUSE_CANCEL
	{% endif %}
	TURN_OFF_HEATERS
	M106 S0
	CANCEL_PRINT_BASE

[gcode_macro PAUSE]
description = Pause the actual running print
rename_existing = PAUSE_BASE
gcode = 
	PAUSE_BASE
	_TOOLHEAD_PARK_PAUSE_CANCEL

[gcode_macro RESUME]
description = Resume the actual running print
rename_existing = RESUME_BASE
gcode = 
	{% set extrude = printer['gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL'].extrude %}
	{% if 'VELOCITY' in params|upper %}
	{% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
	{%else %}
	{% set get_params = "" %}
	{% endif %}
	{% if printer.extruder.can_extrude|lower == 'true' %}
	M83
	G1 E{extrude} F2100
	{% if printer.gcode_move.absolute_extrude |lower == 'true' %} M82 {% endif %}
	{% else %}
	{action_respond_info("Extruder not hot enough")}
	{% endif %}
	RESUME_BASE {get_params}

[gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL]
description = Helper: park toolhead used in PAUSE and CANCEL_PRINT
variable_extrude = 1.0
gcode = 
	{% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %}
	{% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
	{% set z_park_delta = 2.0 %}
	{% set max_z = printer.toolhead.axis_maximum.z|float %}
	{% set act_z = printer.toolhead.position.z|float %}
	{% if act_z < (max_z - z_park_delta) %}
	{% set z_safe = z_park_delta %}
	{% else %}
	{% set z_safe = max_z - act_z %}
	{% endif %}
	{% if printer.extruder.can_extrude|lower == 'true' %}
	M83
	G1 E-{extrude} F2100
	{% if printer.gcode_move.absolute_extrude |lower == 'true' %} M82 {% endif %}
	{% else %}
	{action_respond_info("Extruder not hot enough")}
	{% endif %}
	{% if "xyz" in printer.toolhead.homed_axes %}
	G91
	G1 Z{z_safe} F900
	G90
	G1 X{x_park} Y{y_park} F6000
	{% if printer.gcode_move.absolute_coordinates|lower == 'false' %} G91 {% endif %}
	{% else %}
	{action_respond_info("Printer not homed")}
	{% endif %}

[mcu]
serial = /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
baud = 115200
restart_method = command

[stepper_x]
step_pin = PC2
dir_pin = PB9
enable_pin = !PC3
microsteps = 16
rotation_distance = 40
endstop_pin = !PA5
position_endstop = -10
position_max = 235
position_min = -15
homing_speed = 50

[stepper_y]
step_pin = PB8
dir_pin = PB7
enable_pin = !PC3
microsteps = 16
rotation_distance = 40
endstop_pin = !PA6
position_endstop = -10
position_max = 241
position_min = -15
homing_speed = 50

[stepper_z]
step_pin = PB6
dir_pin = !PB5
enable_pin = !PC3
microsteps = 16
rotation_distance = 8
endstop_pin = probe:z_virtual_endstop
position_max = 270
position_min = -4

[extruder]
step_pin = PB4
dir_pin = PB3
enable_pin = !PC3
microsteps = 16
gear_ratio = 42:12
rotation_distance = 26.359
nozzle_diameter = 0.400
filament_diameter = 1.750
heater_pin = PA1
sensor_type = EPCOS 100K B57560G104F
sensor_pin = PC5
control = pid
pid_kp = 23.561
pid_ki = 1.208
pid_kd = 114.859
min_temp = 0
max_temp = 250

[heater_bed]
heater_pin = PA7
sensor_type = EPCOS 100K B57560G104F
sensor_pin = PC4
control = pid
pid_kp = 71.867
pid_ki = 1.536
pid_kd = 840.843
min_temp = 0
max_temp = 110

[heater_fan hotend_fan]
pin = PC0

[fan]
pin = PA0

[printer]
kinematics = cartesian
max_velocity = 300
max_accel = 2000
max_z_velocity = 5
max_z_accel = 100

[bltouch]
sensor_pin = ^PC14
control_pin = PC13
x_offset = -31.8
y_offset = -40.5
z_offset = 0
probe_with_touch_mode = true
stow_on_each_sample = false

[bed_mesh]
speed = 120
mesh_min = 20, 20
mesh_max = 200, 200
probe_count = 4,4
algorithm = bicubic

[safe_z_home]
home_xy_position = 147, 154
speed = 75
z_hop = 5
z_hop_speed = 5
move_to_previous = true

[filament_switch_sensor e0_sensor]
switch_pin = !PC15
pause_on_runout = true
runout_gcode = PAUSE
=======================
Extruder max_extrude_ratio=0.266081
mcu 'mcu': Starting serial connect
webhooks client 1968025512: New connection
webhooks client 1968025512: Client info {'program': 'Moonraker', 'version': 'v0.7.1-617-g0188b81'}
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed
mcu 'mcu': Timeout on connect
MCU error during connect
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/klippy.py", line 176, in _connect
    self.send_event("klippy:mcu_identify")
  File "/home/ekl/klipper/klippy/klippy.py", line 263, in send_event
    return [cb(*params) for cb in self.event_handlers.get(event, [])]
  File "/home/ekl/klipper/klippy/mcu.py", line 782, in _mcu_identify
    raise error(str(e))
error: mcu 'mcu': Unable to connect
Build file /home/ekl/klipper/klippy/../.config(2710): Sat Aug  6 17:51:05 2022
========= Last MCU build config =========
CONFIG_LOW_LEVEL_OPTIONS=y
# CONFIG_MACH_AVR is not set
# CONFIG_MACH_ATSAM is not set
# CONFIG_MACH_ATSAMD is not set
# CONFIG_MACH_LPC176X is not set
CONFIG_MACH_STM32=y
# CONFIG_MACH_RP2040 is not set
# CONFIG_MACH_PRU is not set
# CONFIG_MACH_LINUX is not set
# CONFIG_MACH_SIMU is not set
CONFIG_BOARD_DIRECTORY="stm32"
CONFIG_MCU="stm32f103xe"
CONFIG_CLOCK_FREQ=72000000
CONFIG_SERIAL=y
CONFIG_FLASH_START=0x8010000
CONFIG_FLASH_SIZE=0x10000
CONFIG_RAM_START=0x20000000
CONFIG_RAM_SIZE=0x5000
CONFIG_STACK_SIZE=512
CONFIG_STM32_SELECT=y
CONFIG_MACH_STM32F103=y
# CONFIG_MACH_STM32F207 is not set
# CONFIG_MACH_STM32F401 is not set
# CONFIG_MACH_STM32F405 is not set
# CONFIG_MACH_STM32F407 is not set
# CONFIG_MACH_STM32F429 is not set
# CONFIG_MACH_STM32F446 is not set
# CONFIG_MACH_STM32F031 is not set
# CONFIG_MACH_STM32F042 is not set
# CONFIG_MACH_STM32F070 is not set
# CONFIG_MACH_STM32F072 is not set
# CONFIG_MACH_STM32G0B1 is not set
# CONFIG_MACH_STM32H743 is not set
# CONFIG_MACH_STM32H750 is not set
# CONFIG_MACH_STM32F103x6 is not set
CONFIG_MACH_STM32F1=y
CONFIG_HAVE_STM32_USBFS=y
CONFIG_HAVE_STM32_CANBUS=y
# CONFIG_STM32F103GD_DISABLE_SWD is not set
# CONFIG_STM32_FLASH_START_2000 is not set
# CONFIG_STM32_FLASH_START_5000 is not set
# CONFIG_STM32_FLASH_START_7000 is not set
# CONFIG_STM32_FLASH_START_8000 is not set
# CONFIG_STM32_FLASH_START_8800 is not set
CONFIG_STM32_FLASH_START_10000=y
# CONFIG_STM32_FLASH_START_800 is not set
# CONFIG_STM32_FLASH_START_1000 is not set
# CONFIG_STM32_FLASH_START_4000 is not set
# CONFIG_STM32_FLASH_START_0000 is not set
CONFIG_STM32_CLOCK_REF_8M=y
# CONFIG_STM32_CLOCK_REF_12M is not set
# CONFIG_STM32_CLOCK_REF_16M is not set
# CONFIG_STM32_CLOCK_REF_25M is not set
# CONFIG_STM32_CLOCK_REF_INTERNAL is not set
CONFIG_CLOCK_REF_FREQ=8000000
CONFIG_STM32F0_TRIM=16
# CONFIG_STM32_USB_PA11_PA12 is not set
CONFIG_STM32_SERIAL_USART1=y
# CONFIG_STM32_SERIAL_USART1_ALT_PB7_PB6 is not set
# CONFIG_STM32_SERIAL_USART2 is not set
# CONFIG_STM32_SERIAL_USART2_ALT_PD6_PD5 is not set
# CONFIG_STM32_SERIAL_USART3 is not set
# CONFIG_STM32_SERIAL_USART3_ALT_PD9_PD8 is not set
# CONFIG_STM32_CANBUS_PA11_PA12 is not set
# CONFIG_STM32_MMENU_CANBUS_PB8_PB9 is not set
# CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set
CONFIG_SERIAL_BAUD=250000
CONFIG_USB_VENDOR_ID=0x1d50
CONFIG_USB_DEVICE_ID=0x614e
CONFIG_USB_SERIAL_NUMBER="12345"
CONFIG_CANBUS_FREQUENCY=500000
CONFIG_INITIAL_PINS=""
CONFIG_HAVE_GPIO=y
CONFIG_HAVE_GPIO_ADC=y
CONFIG_HAVE_GPIO_SPI=y
CONFIG_HAVE_GPIO_I2C=y
CONFIG_HAVE_GPIO_HARD_PWM=y
CONFIG_HAVE_GPIO_BITBANGING=y
CONFIG_HAVE_STRICT_TIMING=y
CONFIG_HAVE_CHIPID=y
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
CONFIG_INLINE_STEPPER_HACK=y
=======================
Build file /home/ekl/klipper/klippy/../out/klipper.dict(7558): Sat Aug  6 23:19:58 2022
Last MCU build version: v0.10.0-546-ga709ba43
Last MCU build tools: gcc: (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) [gcc-8-branch revision 273027] binutils: (2.34-4+rpi1+14) 2.34
Last MCU build config: BUS_PINS_i2c1=PB6,PB7 RECEIVE_WINDOW=192 RESERVE_PINS_serial=PA10,PA9 BUS_PINS_i2c2=PB10,PB11 BUS_PINS_i2c1a=PB8,PB9 STEPPER_BOTH_EDGE=1 SERIAL_BAUD=250000 ADC_MAX=4095 BUS_PINS_spi3=PB4,PB5,PB3 BUS_PINS_spi2=PB14,PB15,PB13 BUS_PINS_spi1=PA6,PA7,PA5 PWM_MAX=255 MCU=stm32f103xe STATS_SUMSQ_BASE=256 BUS_PINS_spi1a=PB4,PB5,PB3 CLOCK_FREQ=72000000
Build file /home/ekl/klipper/klippy/../out/klipper.elf(1053772): Sat Aug  6 23:20:11 2022
mcu 'mcu': Wait for identify_response
Traceback (most recent call last):
  File "/home/ekl/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/ekl/klipper/klippy/serialhdl.py", line 259, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 317, in get_response
    cmd_queue)
  File "/home/ekl/klipper/klippy/serialhdl.py", line 251, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/ekl/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
error: mcu 'mcu': Serial connection closed

About reverting, i have trouble finding the correct stock firmware and procedure, creality.com is not very supportive i think.

SOLVED! After another compile and copy to fresh formatted SD as firmware-1.bin, the printer got connected :slight_smile:
Still dont know what i did wrong at first though.

This was a good guide. I got my S1 Pro up and running in a couple of hours. Loving Klipper so far. Next need an accelerometer as I’m seeing a fair bit of ringing with the delivered settings (3k/500). Really appreicate you sharing the guide.

Doesn anyone know how long it takes a stock stock S1 pro to puke out Benchie? I never bothered with that one and I installed Klipper like 8 days after buying it.

I lost my benchienity today. 51 minutes; 0,2 layer, 3 perimeters and 3 top and bottom layers and 10% infill and PETG. 2 perimeters and 2 layers took 45-48 minutes but deck and roof looked too webby.

IMG_0643

Does this look decent and how’s the speed? Whole table wobbles when that sucker goes and it sits on a 40040050mm concrete slab.

Just over an hour, with some speedy settings.

The benchy looks good so you might get faster print time if you optimize the slicing settings a bit. 0.5 extrusion width, and eliminate some unnecessary infill addons if you are using Prusa Slicer. Aligning the Z seam will also help.

Installed Klipper on my Ender 3 S1 Pro went on great tried the voron test cube came out great on 150mm/s. I switched to some local FilX SBS filament and started seeing some problems. With further investigation, the layer cooling fan does not turn on when set to anything low such as 10%. Seems if I try to put it to 10% on the web UI it also does not spin, when setting it to 100% then back to 10% it keeps spinning. Any ideas what could be causing this issue?

Thank you for the great guide. I’m planning on installing Klipper on my S1 Pro. In your guide it mentions that you can use any Raspberry Pi but, I’m wondering if for example the Pi 4 would enable the printer to print faster than a Pi Zero 2 W. What is the bottle neck in this scenario? Is it the Pi or the printer hardware? Assuming that there would be no difference in printer performance using one or the other the smaller form factor might be nice. Thoughts?

At this moment, any Pi would work.
I used Klipper on the first Pi Zero which works just fine, so any other PI will perform even better.
Klipper doesn’t have huge resource requirements.