Klipper FirmwareGuides

How to Install Klipper on Ender 6: Config and Setup

In this guide I will show you how to Install Klipper on Ender 6 using a simple Raspberry Pi Zero. Because the original Klipper build doesn’t work with the Ender 6 screen, we will use a modified Klipper build made by Desuuuu.

What is Klipper?

Klipper Sidewinder X1 | How to Install Klipper on Kingroon KP3S: Config for Printing Fast

Klipper is an open-source firmware for your 3D printer that combines the power of a Raspberry Pi and your printer main board for better printer control. By doing this, You are able to run your printer at higher speeds with better precision and control.

Why Install Klipper on Ender 6?

By installing Klipper on Ender 6, you will be able to print faster compared to a stock printer, and you will also be able to control your printer remotely, trough Wi-Fi. You will be able to use features like Pressure Advance and Input Shaper, which will greatly improve your print quality and speed. The touchscreen firmware is also updated which gives you a bit more options compared to stock.

If you want to learn more about Klipper, check out Nero’s video

With a good extruder, you could push the print speed quite high. Here’s an example of print quality and speed with the BIQU H2 Extruder Upgrade I did on the Ender 6.

Prerequisites

To install Klipper on Ender 6, you need to have the following:

  1. Raspberry Pi Zero W (any Pi will work)
  2. MainsailOS or FluiddPi – In this guide I will use FluiddPi and a Raspberry Pi Zero
  3. Creality Ender 6 3D printer
  4. Micro USB cable – Ensure that your USB cable work for data transfer. There are some cables out there that are good only for charging.
  5. OTG Micro USB Cable (needed only for the Pi Zero)

Before you begin

Before you begin

Please note that installing Klipper on Ender 6 requires some experience with 3D printers and hardware. This is not a trivial task for beginners, and you may break your printer during the process. If you don’t feel comfortable doing this, then keep the stock firmware.

Read the full guide carefully and install Klipper on Ender 6 only after you properly understood all the steps involved. If you have questions before starting, leave a comment and wait for a reply.

I am not responsible for any damage you may cause to your printer by following this guide. You are doing this on your own responsibility.

The configuration file shared in this article, is made for the stock Creality Ender 6.

Install FluiddPi or MainsailOS on Raspberry Pi

FluiddPi | How to Install Klipper on Ender 6: Config and Setup

I have covered the FluiddPi installation and the Mainsail OS installation in a previous article, so please follow it before continuing. This will ensure you have the same setup as I do which will make the entire process a bit easier.

In that article I also covered how to install KIAUH which is a helpful tool for installing and updating Klipper.

Connect your Raspberry Pi to the Ender 6 board

The Creality Ender 6 doesn’t have an accessible USB connector like other printers, so in order to connect our Raspberry Pi to the board, we need to open the bottom cover.

I chose to connect my Ender 6 board to a Raspberry Pi Zero using a Micro USB cable and a MicroUSB OTG cable. I also power the Pi directly from the printer using a buck converter and the GPIO pins. This converts the 24V from the printer and powers the Pi with 5V. The whole setup is shown below.

For better Wi-Fi reception and accessibility, I installed the Pi Zero outside the case.

Pi-Zero-running-Klipper-on-Ender-6

In case you are using a Raspberry Pi 3 or 4, you won’t need the OTG cable.

Prepare and install Klipper firmware for your Ender 6

Merge Custom Klipper build

To use the stock screen with Klipper, we need to merge the custom Klipper setup into the one already installed with FluiddPi. Connect to your Raspberry Pi and run the following commands:

Remove the old Klipper folder

rm -rf klipper

Clone Desuuuu’s repo

git clone https://github.com/Desuuuu/klipper

Navigate to the Klipper folder

cd ~/klipper

Configure the custom Ender 6 Klipper firmware

Open the Klipper Firmware Configuration screen using the following command:

make menuconfig

The Klipper Firmware Configuration screen will appear. Using your navigation keys, move through the menus and replicate the same settings I used.

image 3 | How to Install Klipper on Ender 6: Config and Setup

When finished, press Q then Y to save your configuration.

Now run the following command to start building the firmware:

make

The build process will start and when finished, the firmware will be ready to install. For the Ender 6, we need to install it from the SD card

Please note that updating Klipper firmware with the vanilla version (using the Fluidd/MainsailOS upgrade option) will break the screen functionality. You need to use the Desuuuu klipper build if you want the screen to work.

How to flash Klipper firmware on Ender 6

Flash the Ender 6 board

First, connect via SFTP to your Raspberry Pi. I use WinSCP. Enter the IP, username and password just like you did for Putty, then click on Login.

image 11 | How to Install Klipper on Ender 6: Config and Setup

Navigate to /home/pi/klipper/out and copy the klipper.bin file on an SD card.

klipper firmware bin | How to Install Klipper on Ender 6: Config and Setup

Next, plug the SD card in your printer and turn it on. The installation process takes about 15 seconds. I recommend you wait for a minute, then remove the SD card and restart your printer.

When you are flashing the board firmware, there won’t be any information displayed on the touchscreen. It might look like the screen is stuck, and the progress bar does not move, but this is ok. Just continue to the next step.

It’s also worth noting that if you want to re-flash the board, always change the filename. The Creality board doesn’t start the flash process again, if you use the same firmware name, as in your previous flash.

Flash the Ender 6 touchscreen

Download the latest release of DGUS Reloaded Klipper firmware from Github

latest DGUS reloaded klipper firmware | How to Install Klipper on Ender 6: Config and Setup

Format your MicroSD to FAT32 with a 4096 allocation unit size. Don’t skip this step. It’s important.

Format SD card for Klipper on Ender 6 | How to Install Klipper on Ender 6: Config and Setup

Unzip the archive contents and copy the DWIN_SET folder on the root of your MicroSD Card

Copy firmware on SD Card | How to Install Klipper on Ender 6: Config and Setup

With the MicroSD card ready, we need to remove the touchscreen face plate in order to access the MicroSD card slot. To do this, you need to remove the four hex bolts (behind the screen and underneath).

Once you removed the face plate, unscrew the remaining four hex bolts which keep the touchscreen in place, in order to insert the Micro SD card into the screen.

Ender 6 Touchscreen Firmware Update SD card slot | How to Install Klipper on Ender 6: Config and Setup

Power on your printer. This will start the installation process. Wait until the “SD Card Process… END!” message shows up, then turn off the printer.

Firmware flash end on Ender 6 Touchscreen | How to Install Klipper on Ender 6: Config and Setup

When you start the printer again, the screen will only show the Klipper logo. The main menu will only show up after you connect Klipper to the board.

Copy the Ender 6 Klipper config file

Now that our Ender 6 is running Klipper firmware, we need to copy the configuration file. You can download my sample configuration to get you started.

In your FluiddPi Web UI, navigate to the Configure tab, and drag and drop the printer.cfg file in the Configuration Files section

Upload Ender 6 Klipper Config | How to Install Klipper on Ender 6: Config and Setup

Connect Klipper to your printer

Finally, you just need to connect Klipper to your printer. This is super easy. You just need to go back on your FluiddPi Dashboard and click on Firmware Restart.

This action will trigger the connection between the Klipper service running on FluiddPi and the Ender 6 firmware we just installed. If all the steps have been followed, then your printer will connect, and you will be greeted by this interface.

FluiddPi running on Ender 6 | How to Install Klipper on Ender 6: Config and Setup

Feel free to home the printer first, to make sure everything is running correctly. Heat up the nozzle and heatbed and check if the temperature rises as expected. If everything looks good, then you are ready to start your first print with Klipper.

How to revert to Stock Ender 6 Firmware?

If you decide Klipper is not for you, reverting to the stock firmware is easy. First, download the stock Ender 6 board firmware and the Ender 6 touchscreen firmware.

Unzip the files, and copy the contents on the SD card

Stock screen firmware files | How to Install Klipper on Ender 6: Config and Setup

First, plug in the SD card to your printer in the SD Card slot, and restart it. This will trigger the board firmware update and the firmware will be flashed.

Finally, connect the MicroSD card to the touchscreen, and start the printer. The touchscreen flashing process will start. When completed, turn of the printer.

Please keep in mind that after you flash the screen/board once, if you want to try again and re-flash, you need to edit the names of the .bin files. Otherwise, it will not work.

If you have issues flashing the stock screen firmware, overwrite the T5UID1.CFG with the file you downloaded from here, and ensure you use an 8GB MicroSD card formatted with the 4096-allocation unit size. I already included the file in the screen firmware archive but for some reason, it doesn’t work every time.

Wrapping up

Even though the installation steps seem to be a bit hard to follow, I hope this guide helped you and now you are running Klipper on your Creality Ender 6.

Make sure you check out my Ender 6 Upgrades: Paid and Free article where I go over some of the upgrades I plan to do on my Ender 6.

If you encounter issues during your installation, feel free to leave a comment below and I will do my best to help you. Besides that, You can also join the 3DPrintBeginner Forum where there are dedicated threads for Klipper Firmware and Creality printers.

Liked it?
Consider supporting 3DPrintBeginner if this content helped. You can also join Patreon for exclusive perks!

Related Articles

Latest Replies

  1. The screen never shows this message when the screen firmware is complete “SD Card Process… END!

  2. Try to format the SD card with 4096 allocation unit and give it another go.

  3. Thanks for the quick reply. I was able to load the screen firmware, I just never got the “completed” message on the screen.

    I also used a MAC (disk utility) to format the card and never saw a way to do the 4096 allocation there. Is it possible to do on a MAC?

    In the end the screen got the update and was able to display correctly with Klipper.

    Thanks for your instruction guide. I was able to do it.

  4. Avatar for fred82 fred82 says:

    First of all thanks for your guide, it has helped me a lot, you are doing an amazing job here, in my case I have a couple of errors:

    • [pause_resume] not found in printer configuration.

    Moonraker warnings found.

    • PolKit warnings detected. See moonraker
      #policykit-permissions for instructions on how to resolve.
    • Moonraker not authorized for PolicyKit action: [org.freedesktop.systemd1.manage-units], System Service Management (start, stop, restart) will be disabled
    • Moonraker not authorized for PolicyKit action: [org.freedesktop.login1.power-off], The shutdown API will be disabled
    • Moonraker not authorized for PolicyKit action: [org.freedesktop.login1.power-off-multiple-sessions], The shutdown API will be disabled if multiple user sessions are open.
    • Moonraker not authorized for PolicyKit action: [org.freedesktop.login1.reboot], The reboot API will be disabled
    • Moonraker not authorized for PolicyKit action: [org.freedesktop.login1.reboot-multiple-sessions], The reboot API will be disabled if multiple user sessions are open.
    • Moonraker not authorized for PolicyKit action: [org.freedesktop.packagekit.system-sources-refresh], The Update Manager will fail to fetch package updates
    • Moonraker not authorized for PolicyKit action: [org.freedesktop.packagekit.package-install], The Update Manager will fail to install packages
    • Moonraker not authorized for PolicyKit action: [org.freedesktop.packagekit.system-update], The Update Manager will fail to update packages

    How to fix this??

  5. With that many errors, I would talk to the Mainsail Discord, or just do a fresh install of the latest versions.

  6. DId you ever get it sorted out? I have the exact same errors after a fresh walkthrough of this guide.

  7. When I get to the SFTP portion of the guide. It says to go to:
    Navigate to /home/pi/klipper/out and copy the klipper.bin file on an SD card.
    But there is no klipper.bin file.
    image

    Can anyone help me?

  8. You probably used the wrong config when building the firmware. I recommend trying again.

  9. hey mate, i’ve mirrored your config for creating the klipper.bin, but i get the following error when using USART1 PA10, PA9
    Conflicting definition for constant ‘RESERVE_PINS_serial’
    make: *** [Makefile:83: out/compile_time_request.o] Error 255

    this what i have set
    Communication interface serial USART1 PA10, PA9
    Enable DGUS T5UID1 Screen
    Screen serial interface USART3 on PD9/PD8 - i dont have the option to set it to USART3 like your screenshot
    250000 baud rate

    If i change serial USART PA10, PA9 to USB the config generates, but not sure if this will actually work.

    Any idea on what might be the issue?

  10. Avatar for Bustah Bustah says:

    Ye, im stuck on the same thing…setting it to USB does not work btw.

    Ahhhhaaaa!!!
    Got it!
    in the guide it says to follow the fluidd install guide and then follow the Ender 6 guide…
    Does not work, you end up in “RESERVE_PINS Hell”.

    What i did to solve it…yes this is convoluted and alot of trial and error…hours >.<
    Any who,
    install KIAUH
    edit/create “klipper_repos.txt.example”
    comment out all the klipper lines.
    Add this line instead: desuuuu/klipper,dgus-reloaded
    run kiauh REMOVE EVERYTHING.
    Install klipper (will now get it from the correct repo for us :))
    install moonraker
    Install Fluidd (if you want to follow the guide)

    IMPORTANT THIS IS WHAT WORKED.
    In kiauh hit 4 (advanced menu)
    Number 2 (Build only) This will build your firmware (basically the same as makemenu and make, but this works without failing due to the RESERVE_PINS error.).

    Update the screen as per the guide.

    Voila!
    Fully (almost) working Ender 6 with klipper.

    I got most stuff working…Buuuuut…BL-Touch >.<

You can leave a comment for this article on the 3DPrintBeginner Forum

14 more replies

Participants

Avatar for 3DPrintBeginner Avatar for lvfmc85 Avatar for clisenberg Avatar for BeSerra Avatar for lucyy300 Avatar for Deeps_Mexy Avatar for Takei27 Avatar for fred82 Avatar for klaas Avatar for d_jon3s Avatar for WookieOH Avatar for orah8892 Avatar for spiceit Avatar for Mike_PSL Avatar for Bustah

284 Comments

  1. hey i did what was told but i get this error
    mcu ‘mcu’: Unable to connect
    Once the underlying issue is corrected, use the
    “FIRMWARE_RESTART” command to reset the firmware, reload the
    config, and restart the host software.
    Error configuring printer

    also my screen is just stuck on the ender 6 any idea what i did wrong?

  2. seems like i have a frimware problem or something like that errror code is:
    mcu ‘mcu’: Command format mismatch: endstop_home oid=%c clock=%u sample_ticks=%u sample_count=%c rest_ticks=%u pin_value=%c trsync_oid=%c trigger_reason=%c vs endstop_home oid=%c clock=%u sample_ticks=%u sample_count=%c rest_ticks=%u pin_value=%c

    This type of error is frequently caused by running an older
    version of the firmware on the micro-controller (fix by
    recompiling and flashing the firmware).

    Known versions: host=v0.9.1-586-g8bce8924, mcu=v0.9.1-213-ga3d6b64b-20210330_132918-fluiddpi

    Once the underlying issue is corrected, use the “RESTART”
    command to reload the config and restart the host software.
    Protocol error connecting to printer

    Already reflashed the frimware several times, still not working….

  3. I’m having an issue.. I am following this guide for an ender 5 plus with the same board and its going well, got everything for klipper installed but when I power on the printer and connect via mainsailOS (my preferred UI), the screen for the ender 5 plus just stays on the klipper logo. When it was installing the screen files I did see it changing between the various screens like an “install preview” but then back to klipper logo and I cant get it to display anything else

  4. I am getting an error using the provided config file. If I remove the Macro I get another error related to I assume the BLTOUCH config.

    Name of section ‘gcode_macro Linear Advance’ contains illegal whitespace
    Once the underlying issue is corrected, use the “RESTART”
    command to reload the config and restart the host software.
    Printer is halted

    Unknown pin chip name ‘probe’
    Once the underlying issue is corrected, use the “RESTART”
    command to reload the config and restart the host software.
    Printer is halted

    1. It could be a mismatch between the firmware flashed and klipper version on the PI. Did you follow these steps?

      >> cd ~/klipper

      >> git remote add desuuuuklipper https://github.com/Desuuuu/klipper.git

      >> git fetch desuuuuklipper

      >> git checkout desuuuuklipper/master

      >> make menuconfig

      [*] Enable extra low-level configuration options
        Micro-controller Architecture (STMicroelectronics STM32) —>
        Processor model (STM32F103) —>
        Bootloader offset (28KiB bootloader) —>
        Clock Reference (8 MHz crystal) —>
        Communication interface (Serial (on USART1 PA10/PA9)) —>

      [*] Enable DGUS T5UID1 screen
          Screen Serial Port (USART3) —>
      (250000) Baud rate for serial port

      [ ] Specify a custom step pulse duration

      () GPIO pins to set at micro-controller startup

      When finished, press Q then Y to save your configuration.

      >> make

      Then copied the klipper.bin from /home/pi/klipper/out and flashed it?

      1. I got same issue, done everything as was set out in the article and the error with linear advance pops out. Any help

        1. go in to the Configuration side , right click on printer.cfg .
          then scroll down to : [gcode_macro Linear Advance] and change it to [gcode_macro Linear_Advance] that fixes that

          1. When I do that, I get the following error:

            Section ‘gcode_macro_linear_advance’ is not a valid config section

            Once the underlying issue is corrected, use the “RESTART”
            command to reload the config and restart the host software.
            Printer is halted

          2. @MrSkitari your change did work for me. I missed the space between “gcode_macro” and “Linear_Advance”

  5. I am only getting the “SD Card Process… END!” screen and not seeing the Klipper Logo Screen has anyone else encountered this issue?

      1. Then it just gets stuck on the Creality Loading screen.

        I’m using these values:

        I ran into the same thing. I don’t know why it looks a little different, but these are the settings that worked for me:
                     Klipper Firmware Configuration
        [*] Enable extra low-level configuration options
          Micro-controller Architecture (STMicroelectronics STM32) —>
          Processor model (STM32F103) —>
          Bootloader offset (28KiB bootloader) —>
          Clock Reference (8 MHz crystal) —>
          Communication interface (Serial (on USART1 PA10/PA9)) —>
        [*] Enable DGUS T5UID1 screen
            Screen Serial Port (USART3) —>
        (250000) Baud rate for serial port
        [ ] Specify a custom step pulse duration
        () GPIO pins to set at micro-controller startup

    1. Finally got it

      I am on OS X steps are as follows:

      1. CMD + Space -> type Disk Utility -> Right Click SD Card -> Get Info -> You need the value for the BSD device node key (should be something like disk2s1)
      2. CMD + Space -> type Terminal -> run this command -> diskutil umount <value of BSD device node>

      run this command -> sudo newfs_msdos -F 32 -c 8 <value of BSD device node> (this sets the format to Fat32 and sets the allocation size to the correct value) -> should see output similar to (4096 bytes/cluster is key):
      512 bytes per physical sector
      /dev/rdisk5s1: 62204232 sectors in 7775529 FAT32 clusters (4096 bytes/cluster)
      bps=512 spc=8 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=8192 drv=0x80 bsec=62325760 bspf=60747 rdcl=2 infs=1 bkbs=6

      Your card should now be formatted correctly and can continue with directions per the tutorial

  6. I got COREXY error too.
    did I miss some step or what this means?

    Error loading kinematics ‘corexy’
    Traceback (most recent call last):
     File “/home/pi/klipper/klippy/toolhead.py”, line 256, in __init__
      kin_name = config.get(‘kinematics’)
     File “/home/pi/klipper/klippy/kinematics/corexy.py”, line 108, in load_kinematics
      return CoreXYKinematics(toolhead, config)
     File “/home/pi/klipper/klippy/kinematics/corexy.py”, line 38, in __init__
      max_halt_velocity = toolhead.get_max_axis_halt()
    AttributeError: ToolHead instance has no attribute ‘get_max_axis_halt’
    Config error
    Traceback (most recent call last):
     File “/home/pi/klipper/klippy/klippy.py”, line 157, in _connect
      logging.exception(“Protocol error”)
     File “/home/pi/klipper/klippy/klippy.py”, line 143, in _read_config
      pconfig.check_unused_options(config)
     File “/home/pi/klipper/klippy/toolhead.py”, line 589, in add_printer_objects
      if p is None or t is None:
     File “/home/pi/klipper/klippy/toolhead.py”, line 264, in __init__
      except:
    Error: Error loading kinematics ‘corexy’
    webhooks client 3045734640: New connection
    webhooks client 3045734640: Client info {‘program’: ‘Moonraker’, ‘version’: ‘v0.6.0-22-gc53b95a’}
    webhooks client 3045734640: Disconnected
    Restarting printer

  7. You should add this from the wiki:

    If you are coming from a different firmware, it is recommended to replace the T5UID1.CFG file in the DWIN_SET folder with the one available here.

    1. I flashed the display with the T5UID1.CFG file and saw the “Format NAND” line on the screen indicating that the alternative config file was correctly loaded. However, after the flash the screen was still unresponsive and temperatures were not indicated. Did you succeed in flashing the stock screen firmware, if so, what were the steps?

      1. That’s correct. The bin files need to be renamed because they don’t get flashed again if the previous firmware had the same name.
        I also added a paragraph to remind everybody about that.

  8. This is my first attempt at Klipper. Followed the entire process. Flashed the provided .bin file. Copied the provided .cfg file and clicked on Firmware Restart. The error below results. Where do I go from here? Thanks.

    “Error loading kinematics ‘corexy’
    Once the underlying issue is corrected, use the “RESTART”
    command to reload the config and restart the host software.
    Printer is halted”

      1. Double check for what specifically? I assumed it was good to use as is. Do I need to make changes to it?

        1. The config file is the one I use on my machine currently. It worked well for other people in the past
          You should check if the one you have copied is identical to mine.

          1. I am using the one you have linked to in the article above. Another person posted a comment below with the same issue. Perhaps something new has changed. I will do my homework on Klipper. You’ve done a very good walk through. However, I should not have tried a shortcut like this. With a bit of time and effort I am sure I will have it up a running.

  9. Hello I was having an issue when trying to get everything connected. I am on the last step of hitting firmware restart it tells me klippy is not connected then gives me an error loading kinematics ‘corexy’. Thank you for any help

  10. Have you tried to restore the Display back to stock? I tired the file here and the one from Creality (posted on 05/09/21) both fail to restore. I’m stuck now since Klipper doesn’t work right with BLTouch and I can’t restore back to stock.

      1. so does this mean that the BL touch wont work with Klipper? i got a BL touch and it is currently working with the printer but want to get klipper should i not get klipper since bl touch may not work?

        1. It means that I haven’t installed a BLTouch to be able to provide an accurate reply 🙂
          I think others made it work, and the config already has the required settings. But I’m not sure if there’s something required to be done.

          1. Settings to comment / uncomment / change to make BLTouch (v3.1) work:

            [stepper_z]

            # position_endstop: 0.0          # disable to use BLTouch
            # endstop_pin: ^PA7            # disable to use BLTouch
            endstop_pin: probe:z_virtual_endstop   # enable to use BLTouch
            position_min: -5             # enable to use BLTouch

            [safe_z_home]               # enable for BLTouch
            home_xy_position: 150.7, 137
            speed: 100
            z_hop: 10
            z_hop_speed: 5

            [bltouch]                 # enable for BLTouch
            sensor_pin: ^PB1
            control_pin: PB0
            x_offset: 20.7
            y_offset: 7
            z_offset: 1.45 # put your own offset here
            speed: 3.0

            [bed_mesh]                # enable for BLTouch
            speed: 100
            mesh_min: 30, 15 # my adjusted probing area
            mesh_max: 278, 263 # my adjusted probing area
            algorithm: bicubic
            probe_count: 5,5

          2. Was there anything else you did/changed? I have v3.1 and it keeps hanging up when it gets to the ABL part of pre-print

      2. The bit maps are all there, but the Screen touch is unresponsive when I get back to stock. How can this be an SD Card formatting issue?

          1. Thanks 3DPrintBeginner It was the 2nd thing I tired after failing to restore. same results. Display map is loading correctly but the touch no longer work on the Display. I noticed klipper uses a 5k touch.bin file in the DWIN_SET compared to a 12K on the stock so we know klipper is messing up with the touch binary. Given the number of people reporting this issue, Its fair to let people know this may be a one way change for now.

    1. I was able to revert back to the stock display firmware, however, it was unresponsive and the temperatures were not shown, was this the same for you?
      What I tried was an incremental update approach starting from the earliest firmware I could find on Creality.com, which was V1.0.1. Then flashed V1.0.2 and eventually V1.0.4.9. I confirmed that the board firmware was working as I was able to connect it to Octoprint and issue commands. G-code M115 showed V1.0.4.9 was flashed.
      I followed the same procedure for the display, starting with the display firmware bundled with the V1.0.1 package followed by the version from Creality.com. However, the screen stayed unresponsive with each version. As I like to use the screen, I went back to Klipper and am waiting for someone who can point me in the right direction…

      1. I have the same issue. I reverted back from Klipper to stock and now, my Display Touch is not responsive. Anyone know what in the Klipper Display FW is making the Stock Touch stop working? 3DPrintBeginner Did you verify that the Touch was working when you went back to stock?