SKR 3, EBB, CAN bus, Klipperscreen working

Basic Information:

Printer Model: Custom
MCU / Printerboard: SKR 3 EZ

I had a hard time figuring this out so this might help some people, hopefully, to get theirs up and running. This will work for the following and maybe others as well:

    • SKR 3, SKR 3 EZ
    • EBB36, EBB42
    • Raspberry 3B+, 4
    • Waveshare 7" HDMI Touch LCD
  • Install Mainsail OS from Pi Imager to SD with option (SSH,Wifi and passwords)

  • Make sure you have Wifi

apt-get update
apt-get upgrade
  • To configure Waveshare Screen
    nano /boot/config.txt
  • Add the following lines
hdmi_cvt 1024 600 60 6 0 0 0
  • Exit and save as same filename and then to configure touchscreen type:
    sudo apt-get install xserver-xorg-input-evdev xinput-calibrator
    sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf
    sudo nano /usr/share/X11/xorg.conf.d/99-calibration.conf and insert the following:
Section "InputClass"
Identifier      "calibration"
MatchProduct    "ADS7846 Touchscreen"
Option  "Calibration"   "73 4007 3976 84"
Option  "SwapAxes"      "1"
Option "EmulateThirdButton" "1"
Option "EmulateThirdButtonTimeout" "1000"
Option "EmulateThirdButtonMoveThreshold" "300"
  • Exit and save as same filename

  • Reboot

  • Install KIAUH

cd ~
git clone
  • Update All

  • Install KlipperScreen

  • To exit KlipperScreen CTRL+ALT+F1, to get back CTRL+ALT+F2 (if using keyboard attached to Raspberry)

  • Prepare klipper for SKR 3 EZ

cd ~/klipper
make menuconfig
  • and choose following options:
Enable extra low-level configuration options select
Micro-controller Architecture (STMicroelectronics STM32)
Processor model (STM32H743)
Bootloader offset (128KiB bootloader (SKR SE BX v2.0))
Clock Reference (25 MHz crystal)
Communication interface (USB to CAN bus bridge (USB on PA11/PA12))
Can Bus interface (CAN bus (on PB8/PB9))
(500000) CAN bus speed
  • Q then Yes then type:
make clean
  • After make is done, download “klipper.bin” firmware from home/pi/klipper/out folder to computer

  • Rename “klipper.bin” to “firmware.bin” and copy it to the SD card (FAT32) to update the firmware

  • Load the SD card to SKR then power it (if via USB, no additional steps are needed) and connect it to to Raspberry via USB cable then type:
    ls /dev/serial/by-id/

  • Copy the ID number, for ex. usb-Klipper_stm32h743xx_XXXXXXXXXXXXXXXXXXXX-if00

  • Connect to Mainsail

  • Type Raspberry IP on browser to connect

  • If moonraker gives error, add your IP range to moonraker.conf

  • Download latest printer.cfg from SKR Github or use backup

  • Update the “mcu” section on printer.cfg with the ID number of the board

  • Temporarily update min. Temprature for Bed and Nozzle to prevent error (-250 works fine)

  • Upload the file to Klipper via browser (if no upload option is given, moonraker will require sudo password, enter sudo password for moonraker via browser)

  • Restart Klipper firmware and everything should work other than specific configurations


  • Go into SSH console and type:

cd ~/klipper
make menuconfig

and choose following options:

Enable extra low-level configuration options select
Micro-controller Architecture (STMicroelectronics STM32)
Processor model (STM32G0B1)
Bootloader offset (No bootloader)
Clock Reference (8 MHz crystal)
If using CANBus communication Communication interface (CAN bus (on PB0/PB1)) (500000) CAN bus speed
  • Q then Yes then type:
make clean
  • After make is done, download “klipper.bin” firmware from home/pi/klipper/out folder to computer

  • Download STM32CubeProgrammer and install on your computer

  • Put jumper on VUSB on EBB36

  • Attach USB-C cable to computer and to EBB36

  • Open the installed STM32CubeProgrammer, select “Open file” tab on top and then select the firmware you downloaded from raspberry (klipper.bin)

  • On the EBB36, press and hold the Boot button, then click the RST button to enter DFU mode, you can let go of the buttons as soon as you press RST button (Windows makes a sound)

  • On the right panel of STM32CubeProgrammer, choose port “USB”, click the “Refresh” button in the STM32CubeProgrammer until the Port changes from “No DFU d…” to “USB1”, then click “Connect” to connect the chip

  • After the connection is successful, click “Download”, after the download is completed, a pop-up window stating “File download complete” will appear, indicating that the burning is successful

  • Click “Disconnect” on STM32CubeProgrammer and then disconnect USB-C cable from EBB36

  • Take jumper from VUSB and put it to 120R termination terminal (if EBB36 is the last CAN device on the line)

  • Put the EBB36 to the side, we will connect it in a minute

  • Create necessary changes in Raspberry network

  • Go into console (or SSH) and create a interface for CAN bus can0 by typing:
    sudo nano /etc/network/interfaces.d/can0

  • and fill it with the information below (the bitrate and txqueuelen may need adjustment down the line according to your system performance):

allow-hotplug can0
iface can0 can static
bitrate 500000
up ifconfig $IFACE txqueuelen 256
pre-up ip link set can0 type can bitrate 500000
pre-up ip link set can0 txqueuelen 256
  • Exit and save as same filename and type:
    shutdown now

  • Create your physical connections:

  • Cut power to SKR 3 EZ

  • Choose a thick enough wire gauge to send 24V without losses; that should be good enough for CAN as well (twisted pair should not be very critical for short distances), adjust according to your distance from board to EBB36

  • PAY ATTENTION! To your 24V and GND connection on the CAN bus, CAN H goes to CAN H and CAN L goes to CAN L

  • Attach cable to EBB36 and to SKR 3 EZ (at CAN FD port)

  • Do not change USB/CAN FD push button on SKR 3 EZ, it should be at high position (USB)

  • Bring everything together

  • Give power to SKR 3 EZ

  • Attach USB from SKR 3 EZ to Raspberry

  • Give power to Raspberry

  • After power on, in console/SSH type:
    ~/klippy-env/bin/python ~/klipper/scripts/ can0

  • You should see two canbus_uuid codes, the first one is for the SKR 3 EZ, the second one is for the EBB36

  • Open up your browser and call mainsail

  • Under MACHINE, upload a .cfg for the EBB36 (you can use the one provided by BTT and their Github)

  • Edit the EBB36 config, temporarily update min. Nozzle to prevent error (-250 works fine)

  • While there, change the [mcu EBBCan] from serial to canbus_uuid: XXXXXXXXX (YOUR EBB36 CAN ID)

  • Save and Close

  • Open up printer.cfg, change the [mcu] from serial to canbus_uuid: XXXXXXXXX (YOUR SKR 3 EZ CAN ID) and insert an “include” line to include your EBB36 configuration at the top of printer.cfg, something like:
    [include sample-bigtreetech-ebb-canbus-v1.2.cfg]

  • Save and Restart

  • That should do it!


I have been trying to get my SKR 3 to work with my EBB36. I am unable to get anywhere. When I select Canbridge usb-can I can not see the board. I wonder if the setting for the USB is to blame? I don’t see a mention of it in the directions about what to set it for or how to get the USB ID ahead of time.

Hello Jason,

Can you post what you selected during make menuconfig ?

I have a SKR-3 and a SKR-3EZ same results with both. Should I be selecting something for USB ID. And if so where do I find that information.

Thank you.

Ok, what about the make menuconfig for the EBB?

And, btw, you don’t look for it as a USB device anymore, you look for it as a CAN device, even though its connected to the raspberry as USB, it is referenced as a can device, so you look for it with:

~/klippy-env/bin/python ~/klipper/scripts/ can0

1 Like

I had not tried to make for the EBB since I did not get a response from the SKR board before. I will try looking for it as can.

Well look at that:
~/klippy-env/bin/python ~/klipper/scripts/ can0
Found canbus_uuid=271dd880ee9c, Application: Klipper
Total 1 uuids found

Thank you, I have been hoping for this, I’ll give it a go on the weekend…

Still only have one can device after flashing the EBB36 and plugged into CANFD on the SKR. Cube programmer said download complete. Is it wort doing an erase first?

Reseat wires and restart SKR now I see 2!

Wanted to say THANK YOU I’m up and running!!

Are you taking power from the CANFD?
Or should I connect the wires directly to the PSU?

There is no difference if you are low-current, for EBB, CAN FD port is fine.

1 Like