GuidesKlipper Firmware

How to Install Klipper on Sidewinder X2: Config and Setup

The Sidewinder X2 is quite a capable machine, but it can be even better with Klipper Firmware. In this guide I will show you how to install Klipper on Sidewinder X2 and take advantage of all the benefits it comes with.

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 Sidewinder X2?

By installing Klipper on the Sidewinder X2, you will be able to print a bit faster compared to a stock printer, and you will also be able to control your printer remotely, trough Wi-Fi. The main reason to install Klipper is to use Pressure Advance and Input Shaper, which will greatly improve your print quality and speed.

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


To install Klipper on Sidewinder X2, you need to have the following:

  1. Raspberry Pi (any Pi version will work)
  2. MainsailOS or FluiddPi – In this guide I will use MainsailOS and a Raspberry Pi 4.
  3. Sidewinder X2 3D Printer
  4. Quality Power Supply for your Raspberry Pi

Before you begin

Before you begin

Please note that installing Klipper on the Sidewinder X2 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 Sidewinder X2 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 Sidewinder X2. It’s also worth noting that the stock touchscreen will not work anymore, and you will need to use the WebUI for controlling the printer. If you still want a standalone touchscreen, then I recommend buying a BIQU PI TFT50 and install KlipperScreen.

Install Mainsail or Fluidd


Before we begin, we need to install the web interface for our Klipper setup. I recommend installing Mainsail because it is actively developed and it’s easy to use, but you can also install Fluidd.

I have written complete instructions on how to install Mainsail OS and Fluidd, so check out one of those articles before moving to the next step. In this guide I will use Mainsail.

The articles also cover the installation of KIAUH which is a handy tool to have when running Klipper.

Prepare and install Klipper firmware for Sidewinder X2

Configure Klipper for Sidewinder X2 with Artillery Ruby 1.2

Open Putty, enter the IP of your Raspberry Pi then click Open

Connect to FluiddPi using Putty | How to Install Klipper on Sidewinder X2: Config and Setup

In the Login prompt, you need to enter the credentials for FluiddPi. The default user is pi and the password is raspberry. Please note that the password will not be shown when typing.

Login to FluiddPi | How to Install Klipper on Sidewinder X2: Config and Setup

Now you are in the SSH console of your FluiddPi install. Enter the Klipper folder:

cd klipper

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.

Sidewinder X2 Klipper Firmware Config | How to Install Klipper on Sidewinder X2: Config and Setup

When finished, press Q then Y to save your configuration. Now run the following command to start building the firmware:


The build process will start and when finished, the firmware will be ready to install.

Put the printer in DFU mode

The Ruby 1.2 board used by the newer Artillery printers need to be put into DFU mode in order to flash the firmware. This is done using the M997 command from a terminal window. I like to use Pronterface, but you can do it via OctoPrint or any other terminal of choice.

Connect your printer to to the computer via a USB Cable, and check the COM port in Device Manager. In my case, it’s COM3

Sidewinder X2 com port | How to Install Klipper on Sidewinder X2: Config and Setup

Open Pronterface, and connect to the printer using the COM port and the 115200 Baud Rate, run the M997 command then proceed to the flashing step.

If this command fails, then you need to put the machine in DFU mode using the jumper pin on the board.

To do this, you need to remove the bottom cover of the printer in order to gain physical access to the Artillery Ruby board. Then, you need to install a jumper to connect the BOOT and the +3.3V pin. This connection will put the Ruby board in DFU mode and will allow you to flash the printer.

Artillery Ruby DFU mode jumper scaled | How to Install Klipper on Sidewinder X2: Config and Setup

When the flashing process is complete, the jumper can be removed.

Flash Klipper firmware on Sidewinder X2

Back to the Pi terminal window, connect the USB cable from the X2 to the Pi and enter the following command to list all the USB devices:


A list of USB devices will be returned. Our printer will be listed under STMicroelectronics STM Device in DFU Mode. We need to know the ID of the USB device.

Artillery Ruby board DFU mode USB | How to Install Klipper on Sidewinder X2: Config and Setup

Start the flashing process with the following command:

make flash FLASH_DEVICE=0483:df11

The flashing process will start and in a few seconds, it will be completed.

Klipper flashing on Sidewinder X2 | How to Install Klipper on Sidewinder X2: Config and Setup

Copy the printer.cfg file to Mainsail

To make things easier, I pre-configured a printer.cfg for the stock Sidewinder X2 which can be downloaded and copied in Mainsail.

Navigate to Machine, then click on the Upload button.

Mainsail Upload cfg | How to Install Klipper on Sidewinder X2: Config and Setup

Select the printer.cfg file to upload it, then use the power button in the top right corner to perform a restart. If everything is configured correctly, the printer will be connected. If this doesn’t happen, then you probably need to update the serial port in the config file. KIAUH can help with that.

image 4 | How to Install Klipper on Sidewinder X2: 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 the calibration of your Z offset.

Please note that my config includes the calibrated values for my stock Sidewinder X2. These settings should work pretty well, but I recommend taking the time and doing your own calibrations for best results.

I also recommend using a small piece of tape to cover the 5V pin coming from your Raspberry Pi. This will fix the always on display from the printer.

If you want to improve the probing speed of your Sidewinder X2, I also recommend checking out this macro. It speeds up probing quite a lot, and it’s easy to setup.

How to revert to stock firmware on Sidewinder X2?

The flashing process for the stock Marlin firmware on Sidewinder X2 was described by Artillery in this PDF file, so I won’t go trough the whole setup again.

First, you need to download the latest stock firmware source and compile it. Then, you put the Ruby Board in DFU mode like shown previously, using the jumper pin. Finally, you flash the firmware using the tools mentioned in Artillery’s PDF.

I might do a more detailed guide in the future, if this proves to be an issue for people trying to revert to stock.

Wrapping up

I hope this guide was helpful for you, and now you are running Klipper on your Sidewinder X2. The printer running Marlin is fine, but with Klipper the machine can be really good.

After you do some prints with the X2 running Klipper, you will probably see that one of the main limiting factors when printing fast is part cooling. I covered the most popular hardware upgrades for the X2 in the Artillery Sidewinder X2 Upgrades: Paid and Free article. Check it out, you might find something useful there.

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’s a dedicated thread for Klipper Firmware, with Klipper enthusiasts ready to help.

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

Related Articles

Latest Replies

  1. I have been transferring my Genius Pro to Klipper just now. Initially it didnt work, but I got a great hint from someone in Reddit, saying I should issue the ls /dev/serial/by-id/* command after having flashed the firmware and connected the printer with the PI, to find my own ID which had to be inserted in the MCU part of the printer.cfg file (this in case you are using a printer.cfg from soomeone else.)
    MAy be some other read here might benefit from this as well.
    Thanks for the general isntructions in any case

  2. Hi. Is there a way to enable the runout sensor? I checked the documentation and there is a switch/config but I have no clue what pin I have to add.

  3. If I remember correctly, the filament sensor on the X2 is wired to the TFT screen.
    If you change its location, then you should be able to find the pin and enable it in the config.

  4. Just as a heads-up for anyone that uses the printer.cfg file from this tutorial: The PID tuning for the bed heater was clearly done for 120v regions, as the values are wildly incorrect if you run the printer from a 230V plug. I definitely recommend doing PID tuning according to the Klipper documentation if you also have 230V mains

  5. It was actually done on 230V. But as always, PID is different depending on various printers and temperatures.

  6. Fantastic directions on getting Mainsail/Klipper setup on the SWX2. I’m running into an issue, however, trying to get the Ruby v1.2 board in DFU mode. I’ve tried sending the M997 command via Pronterface as well as physically jumping the 3.3v and BOOT jumpers. Nothing seems to be working. No STM device in DFU mode showing up. Any suggestions??? TIA

  7. Avatar for MOCCOR MOCCOR says:
    1. Windows wasn’t automatically downloading the driver for the printer motherboard, make sure to check Windows update and let it download the printers driver.
    2. I just had to skip the whole Pronterface and use Pi to flash Klipper.
    3. Had to change the MCU serial to this, since the one from the 3dprinterbeginner was incompatible - serial: /dev/serial/by-id/usb-Klipper_stm32f401xc_460078000351383532393535-if00
  8. Avatar for MOCCOR MOCCOR says:

    You copied your PID values from the extruder and just pasted it for the bed heater. Idk if it was an accident, but according to the cfg at least, there was nothing special done for either the bed/hotend. One of them is wrong, they aren’t supposed to be the same value

  9. Trying to get my X2 working with Klipper running on a laptop per ModBot’s tutorial but am unable to get the laptop to connect post-flash. Using the steps below DFU reports successful flash download but upon reboot of the printer the blue light on the touch probe flashes ~once per second and otherwise is unresponsive. I can flash back to default firmware without issue. Any advice greatly appreciated!

    make menuconfig

    Micro-controller Architecture: STMicroelectronics STM32
    Processor model STM32F401
    Bootloader Offset No bootloader (also tried 64kib with no joy)
    Clock Reference 8 MHz Crystal (also tried 16 with no joy)
    Communication interface (USB (on PA11/PA12))
    USB ids USB Serial number from CHIPID


    Bus 002 Device 091: ID 0483:df11 STMicroelectronics STM Device in DFU Mode

    make flash FLASH_DEVICE=0783:df11

    DFU reports a successful flash.
    Upon reboot the blue light on the touch probe just flashes and otherwise the unit is unresponsive and unable to be connected to from the web interface of klipper on the laptop.

  10. I figured this out. FYI the I just had to use the X2 config file provided by Artillery which has a different connection string in [mcu] vs. what ModBot used in his. X2 Config Source here:

    My process was as follows;

    build linuxmint install per ModBot’s excellent tutorial.

    Put X2 config found in the Artillery link above in ‘printer.cfg’ and upload to klipper web GUI.

    Run “make menuconfig” and select the STM32F401 with “No bootloader” and USB (on PA11/PA12) and not enable extra low-level configuration options.

    run “make”

    boot your X2 printer with jumper between 3.3V and Boot0 pins.

    run “lsusb” and verify ‘us 002 Device 014: ID 0483:df11 STMicroelectronics STM Device in DFU Mode’ is present.

    run “make flash FLASH_DEVICE=0483:df11”. Ignore the dfu-util: can’t detach error, it is a non-factor.

    Go back to web gui, tell Klipper to Restart, see successful connection.

    drink a beer.

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

9 more replies


Avatar for 3DPrintBeginner Avatar for fishojr Avatar for HelioSG Avatar for Boosted_Racoon Avatar for marcello Avatar for Manfredo52 Avatar for aryez91 Avatar for KaptAmerica Avatar for mark.shillingburg Avatar for MOCCOR Avatar for Anivia Avatar for mikedlc Avatar for DonkeyRhomper


  1. I’m having a weird issue post install. I’ve got Klipper on and working, but when I use your config file the mesh tries to level after it runs out of bed to level on, then I get -No trigger on probe after full movement-

    Not sure what the root cause is here, I AM using the full metal printhead replacement.

    Not sure what the conflict is.

  2. Hi, thanks for this awesome guide.
    ps: i’m trying to adapt your cfg to my Hornet with BLTouch but im getting confused

  3. Where can I find the jumper for the boot and 3.3 pins? I couldn’t find any files for it and I don’t know how to make it. Thanks.

  4. Oh, just curious, what can I use as a jumper cable? Do I make it or can I just use wire?

  5. Habe alles erfolgreich auf meinem x2 installiert. Jedoch bekomme ich keine vernünftige z kalibrieren hin. Die düse bleibt immer mindestens 4mm über dem Bett stehen.

    Als wenn er bl touch nicht richtig konfiguriert ist.

  6. Any suggestions to fix “Move out of range”. It appears to be in [bed_mesh] mesh_min and mesh_max but i have no idea how to calculate or obtain the values. plugging random numbers certainly didn’t help. Thanks!!

  7. For all those struggling with flashing via the make command or via KIAUH. There is another way:
    – Generate the firmware via the make command as described and copy the firmware binary (klipper/out/klipper.bin) to your PC
    – Rename it to firmware.bin
    – Download and install the STM32cubeprogrammer
    – Connect the sidewinder to your PC and flash the firmware via STM32cubeprogrammer, it ll also run a verify step to be 100% sure that the flashing worked
    – Remove the jumper
    – Power cycle sidewinder and your raspberry
    – Connect sidewinder to raspberry
    – Use KIAUH to find the MCU serial address and update your printer.cfg

    That worked for me at least 🙂

  8. Hi, Great Tutorial! i need hep, i stopped at the Boardflashpoint with these error

    pi@mainsailos:~/klipper $ ls /dev/serial/by-id/*
    pi@mainsailos:~/klipper $ ^C
    pi@mainsailos:~/klipper $ ^C
    pi@mainsailos:~/klipper $ sudo service klipper stop
    pi@mainsailos:~/klipper $ make flash FLASH_DEVICE=/dev/serial/by-id/usb-Klipper_stm32f401xc_1A006A001051383435373136-if00
    Flashing out/klipper.bin to /dev/serial/by-id/usb-Klipper_stm32f401xc_1A006A001051383435373136-if00
    Entering bootloader on /dev/serial/by-id/usb-Klipper_stm32f401xc_1A006A001051383435373136-if00
    Device reconnect on /sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3.3/1-1.3.3:1.0
    sudo dfu-util -p 1-1.3.3 -R -a 0 -s 0x8000000:leave -D out/klipper.bin

    dfu-util 0.9

    Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
    Copyright 2010-2016 Tormod Volden and Stefan Schmidt
    This program is Free Software and has ABSOLUTELY NO WARRANTY
    Please report bugs to

    dfu-util: Invalid DFU suffix signature
    dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
    Opening DFU capable USB device…
    ID 0483:df11
    Run-time device DFU version 011a
    Claiming USB DFU Interface…
    Setting Alternate Setting #0 …
    Determining device status: state = dfuERROR, status = 10
    dfuERROR, clearing status
    Determining device status: state = dfuIDLE, status = 0
    dfuIDLE, continuing
    DFU mode device DFU version 011a
    Device returned transfer size 2048
    DfuSe interface name: “Internal Flash ”
    Downloading to address = 0x08000000, size = 23540
    Download [=========================] 100% 23540 bytes
    Download done.
    File downloaded successfully
    dfu-util: Error during download get_status

    Failed to flash to /dev/serial/by-id/usb-Klipper_stm32f401xc_1A006A001051383435373136-if00: Error running dfu-util

    If the device is already in bootloader mode it can be flashed with the
    following command:
    make flash FLASH_DEVICE=0483:df11
    make flash FLASH_DEVICE=1209:beba

    If attempting to flash via 3.3V serial, then use:
    make serialflash FLASH_DEVICE=/dev/serial/by-id/usb-Klipper_stm32f401xc_1A006A001051383435373136-if00

    make: *** [src/stm32/Makefile:82: flash] Error 255
    pi@mainsailos:~/klipper $ sudo service klipper start

      1. Thanks, but i cant get now back to pronterface, to use m997. i have a ruby 1.2. now i get these message on pronterface ” Got rubbish reply from COM4 at baudrate 115200:
        Maybe a bad baudrate?

          1. hi, it doesn’t work 🙁 even the flash with kiauh produce a timeout. flashing back to marlin works..

        1. how did you flashed back to marlin?
          i got the same Problem but with the correct instrucion.
          I cant flash it back because i cant connect to the Pritner

          1. if you manage to put the jumpers as mentioned on the guide, disconnect power cable and just connect the board using terminal usb cable to pc, it will be recognized . then you can flash it to marlin defaults. been there done that.

  9. Hello again.

    After my last post, I spent a few days poking about at it. Turns out there is a much simpler and easier way to flash Klipper onto the Sidewinder X2, which saves a lot of dead ends and general issues that came about trying the way explained above.

    Essentially it boils down to, get Kiauh installed on a pi.
    Remove bottom panel.
    Apply jumper to boot pins.
    Start printer and then remove jumper.
    Connect Pi and run Kiauh.
    Go to number 4 (advanced).
    Flash board from there.

    Job done.

    I think I’ve covered everything I did in the bullet points. I was scratching my head as to why the original way you outlined might not work. But I’m no expert, so I just found a workaround. I hope this helps.

  10. I’m also having trouble with the flashing process, where the dfu-util error comes up. Same as already described by Joshua. Even after resetting to stock, connecting the jumper, and trying to flash, it just doesn’t complete. There must be something new with the firmware from Artillery or something. Any help on getting past the dfu-util error would be great.

    1. Having the same issue with genius pro… Cant overcome the dfu-util: cant’t detach problem. Does some now something?

    2. Same issue. I currently have a brick. I’m uncertain that I’m performing the sequence correctly.
      1) Open the case and add the jumper?
      2) Connect to usb cable and then to Pronterface.
      3) Send the M997 command
      4) Unplug cable and remove jumper…..
      I’ve tried everything and can’t get past flashing the firmware. I’m just trying to get it back to stock.