How to install klipper for a BTT SKR e3 Turbo for first time

I was having one heck of a time trying to install klipper on my Ender 3 with a BTT SKR e3 Turbo board, following the generic installation instructions.
I eventually found Issue#3549, which I thought at that time was the answer to my troubles. It was not (those static pins are already defined in generic-bigtreetech-skr-e3-turbo.cfg), so I will post here what my real problem was, and how I solved it, for the sake of any future strugglers who think they are also “unable to flash Klipper to their BTT SKR e3 Turbo”

First, if the firmware.bin file has been renamed to FIRMWARE.CUR on your SD card, after trying to flash the board, you did successfully flash the board. I kept misinterpreting the blank LCD screen and the continuing beeeeeeeeeeep as meaning that I had not yet successfully passed the flash from SD card step. Which I had. So I just kept “circling that tree”, trying to figure out what I had done wrong in makemenu.

For reference, this makemenu actually worked for me:
The other versions I experimented with for 3 days were just a waste of my time and energy. :woozy_face: :crazy_face:

Second, if the screen is still blank and the speaker is still beeping after you flashed the board (leading you to think that klipper has not flashed correctly), it is likely because EITHER:

  1. You have not yet defined the correct display in your printer.cfg file AND Klipper on the pi is not communicating with the board, yet.
    2.Klipper on the pi is not communicating with the board, yet.

there is apparently a bug in that bootloader that puts the beeper on continuously when it is in bootloader mode. (That noise goes off once the printer is being controlled by the firmware.)

I fixed my problem by doing the following:

  1. I added these lines to my printer.cfg file (from sample-lcd.cfg), to define the display to be a stock Creality 12684 LCD:

lcd_type: st7920
cs_pin: EXP1_7
sclk_pin: EXP1_6
sid_pin: EXP1_8
encoder_pins: ^EXP1_5, ^EXP1_3
click_pin: ^!EXP1_2

[output_pin beeper]
pin: EXP1_1

No idea why, now, but I had instead defined my LCD display to be a # "RepRapDiscount 128x64 display controller :flushed:, which of course it is not…

  1. I ran “ls /dev/serial/by-id/*” again, after flashing klipper to the board, which now correctly returned the new klipper usb serial id. (In previous attempts this step had NOT returned a klipper version of the id. No idea why, I just probably got myself all mixed up, chasing the idea that I had somehow failed to configure makemenu correctly and never ran that command after successfully flashing…)

  2. I modified printer.cfg to use the new Klipper serial device ID.

  3. I commanded my pi 3B+ to restart the klipper service (sudo service klipper start)

  4. The beeeeeeeeeeeeeeeeeeeep stopped and the LCD displayed the klipper control menu!

Now I have to figure out how to add BLTouch to printer.cfg, configure the OctoKlipper plug-in in Octoprint, and generally learn how to configure and use Klipper, but at least now I have flashed it.

If you are still wondering why it won’t flash on your system, I hope this helps.
Good luck to you.


I have come across your post and am curious if you ever figured out how to get the BLTouch working?

I have the BLTouch wired into (I think) the Zstop (for ground and control? (GND, 1.27) and then 3 pins in the z-stop connector (GND, 1.24, PWR).

I have added this (and all attempts at different pin outs) and I cannot seem to get any response from the sensor when commanding pin up or down. This then is obviously also failing when attempting a z-home.

Any clues?



Hello, Lewis.

I did not yet figure that out, no. I ran into a persistent series of mcu TMC2209 UART communication failures which shut down my printer ever time I tried to Home. I gave up for awhile and went back to Marlin, so that I can get my Xmas printing done. I will try again in the new year. Good luck to you.

1 Like

This is what I put into my printer.cfg file for my genuine bltouch v3.1, based partly on the sample bltouch.cfg file, partly on what I have in my Marlin configuration, partly on how I currently have it wired and working with Marlin, and partly on the Bigtreetech pinouts diagram:

sensor_pin: ^P1.27
control_pin: P1.23
pin_move_time: 0.680
stow_on_each_sample: True
probe_with_touch_mode: False
pin_up_reports_not_triggered: True
pin_up_touch_mode_reports_triggered: True
set_output_mode: 5V

The BLTouch completed its own self-test on powerup, but I had not yet figured out what to define for menu commands, or for bed mesh levelling, so I am not yet ready to discover any errors in the above configuration.

If you have the same board, you may get better results if you change P1.24 to P1.23 for the control pin.

1 Like

Thanks for that!!! It turns out I was looking at the boards pin out one line out…. You are correct 1.23 is the pin not 1.24. It now at least homes… next step is also the mesh etc.

Thanks again

1 Like