You are currently viewing BigTreeTech SKR Mini E3 V3.0 | Installation & Firmware

BigTreeTech SKR Mini E3 V3.0 | Installation & Firmware

Why the SKR Mini E3?

Under $50, the BigTreeTech SKR Mini E3 is in my opinion the best mainboard you can get for your Ender 3, Ender 3 Pro, Ender 5 or CR-10.

The SKR Mini E3 V3.0 provides several benefits over the stock Ender 3 mainboards:

  • very good heat dissipation thanks to the upgraded heat sink and a better separation of the drivers
  • silent TMC2209 drivers and 3 PWM Controlled fans
  • UART controlled TMC drivers which allows the firmware to control the stepper motor mode & current and to monitor the drivers
  • Support for expansion: Touch screen, filament runout detection, BLTouch + dual Z-axis (running of a single driver)

What You Need

BIGTREETECH SKR Mini E3 V3.0
Dupont Ratchet Crimping Tool Set
DISCLAIMER: Some links are affiliate links. As an Amazon Associate I receive a small commission (at no extra cost to you) if you make a purchase after clicking one of the affiliate links

SKR Mini E3 V3.0 Installation (Wiring)

The SKR Mini E3 V3.0 is almost a direct replacement of the Ender 3 mainboards. It has the same physical size & mounting holes. The only differences are:

  • The polarity +/- of some connectors (e.g. HEAT BED, HOTEND) is reversed
  • The HOTEND HEAT SINK FAN requires a JST 2 pins connector (in the Creality mainboards, it is connected directly, without connectors)
BigTreeTech SKR Mini E3 Mainboard Wiring
Creality V4.2.7 Mainboard Wiring
Creality V1 Mainboard Wiring

SKR Mini E3 V3.0 Firmware (Marlin & Klipper)

If you happen to have a BondTech BMG extruder + E3D V6 hotend + BLTouch, you can download directly the firmwares below:

Otherwise, you will need to update the configuration files for your 3d printer configuration, compile & flash the firmware. The easiest way would be to start from my configuration files, which are know to work, and to update what you need. In the sections below, I provide some details about the configuration changes specific to the SKR Mini E3 which are not very well documented…

SKR Mini E3 Marlin Configuration

You can download my Marlin configuration files for the SKR Mini E3 V3.0 on GitHub.

One of the main difficulty with the SKR MINI E3 is to get the fans to work properly.

There a 3 fan ports, FAN0, FAN1, and FAN2. The 3 ports are functionally equivalent therefore you could connect any fan to any port. However, the firmware must be configured accordingly and in particular, it must know which fan is connected to which port to control each fan according to its function.

The fan pins are defined in file Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h:

//
// Heaters / Fans
//
#define HEATER_0_PIN                        PC8   // "HE"
#define HEATER_BED_PIN                      PC9   // "HB"
#define FAN_PIN                             PC6   // "FAN0"
#define FAN1_PIN                            PC7   // "FAN1"
#define FAN2_PIN                            PB15  // "FAN2"

Connect the fans as per the table below:

PortPinAssignment
FAN0PC6Part Cooling Fan, to cool down the extruding filament
FAN1PC7Electronic Enclosure Fan, to cool down the stepper motor drivers
FAN2PB15Hotend Heat Sink Fan, to cool down the hot end
  • The Part Cooling Fan (FAN0/PC6) is controlled by the slicer / gcode commands.
  • Configure the Hotend Heat Sink Fan (FAN2/PB15) to turn on at full speed when the hotend is above 50 deg C. In Marlin’s Configuration_adv.h:
/**
 * Extruder cooling fans
 *
 * Extruder auto fans automatically turn on when their extruders'
 * temperatures go above EXTRUDER_AUTO_FAN_TEMPERATURE.
*/
#define E0_AUTO_FAN_PIN PB15
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED 255   // 255 == full speed
  • Configure the Electronic Enclosure Fan (FAN1/PC7) to turn on automatically whenever any driver is enabled and to turn off (or reduces to idle speed) 60 seconds after drivers are turned off. In Marlin’s Configuration_adv.h:
/**
 * Controller Fan
 * To cool down the stepper drivers and MOSFETs.
 *
 * The fan turns on automatically whenever any driver is enabled and turns
 * off (or reduces to idle speed) shortly after drivers are turned off.
 */
#define USE_CONTROLLER_FAN
#if ENABLED(USE_CONTROLLER_FAN)
  #define CONTROLLER_FAN_PIN PC7           // Set a custom pin for the controller fan
  //#define CONTROLLER_FAN_USE_Z_ONLY       // With this option only the Z axis is considered
  //#define CONTROLLER_FAN_IGNORE_Z         // Ignore Z stepper. Useful when stepper timeout is disabled.
  #define CONTROLLERFAN_SPEED_MIN         0 // (0-255) Minimum speed. (If set below this value the fan is turned off.)
  #define CONTROLLERFAN_SPEED_ACTIVE    255 // (0-255) Active speed, used when any motor is enabled
  #define CONTROLLERFAN_SPEED_IDLE        0 // (0-255) Idle speed, used when motors are disabled
  #define CONTROLLERFAN_IDLE_TIME        60 // (seconds) Extra time to keep the fan running after disabling motors

  // Use TEMP_SENSOR_BOARD as a trigger for enabling the controller fan
  //#define CONTROLLER_FAN_MIN_BOARD_TEMP 40  // (°C) Turn on the fan if the board reaches this temperature

  #define CONTROLLER_FAN_EDITABLE         // Enable M710 configurable settings
  #if ENABLED(CONTROLLER_FAN_EDITABLE)
    #define CONTROLLER_FAN_MENU             // Enable the Controller Fan submenu
  #endif
#endif

How to install Klipper on SKR Mini E3

To use Klipper on your SKR Mini E3 V3.0, you will need to compile and flash the Klipper micro-controller code as per BigTreeTech instructions.

To compile the micro-controller code for the 3d printer mainboard, connect to the Raspberry Pi with ssh.

Open the Klipper Firmware Configuration tool.

pi@ender3:~ $ cd ~/klipper
pi@ender3:~ $ make menuconfig

Select STM32 for the Micro-controller architecture, STM32G0B1 for the processor model, a 8KiB bootloader, and the USB communication interface.

Klipper Firmware Configuration for the SKR Mini E3 V3.0

Now exit (type Q), save the configuration (type Y) and compile the firmware by typing:

pi@ender3:~ $ make

This creates a klipper.bin file in the klipper/out directory. You can now copy this file to an SD Card by running SCP on a Windows or Linux computer running on the same network as the Raspberry Pi. Rename the file to “firmware.bin” (e.g. H: is the SD Card drive). The SKR Mini E3 only allows the flashing of a file named “firmware.bin”.

scp pi@ender3:~/klipper/out/klipper.bin H:\firmware.bin

Insert the SD card into the SKR Mini E3 and turn it on to flash the firmware. Now connect the Raspberry PI to the printer using a Micro USB B to USB cable.

You can confirm that the flash was successful, by running ls /dev/serial/by-id. if the flash was successful, this should now show a Klipper device, similar to:

pi@ender3:~ $ ls /dev/serial/by-id
usb-Klipper_stm32g0b1xx_27000D000150414235363020-if00

Save this information for later as it will be needed when updating printer.cfg

Configure Klipper for the SKR Mini E3

You can download my Klipper configuration files for the SKR Mini E3 V3.0 on GitHub.

This should give you a good starting point to make your config (it’s often easier to modify something than to start from scratch!)

The first thing to do is to update the [mcu] section of printer.cfg with the serial port name. You can get the serial port name by running ls /dev/serial/by-id on the Raspberry Pi.

[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32g0b1xx_27000D000150414235363020-if00
# restart_method: command

To get the fans working properly in Klipper, connect the fans as per the Wiring section above and update printer.cfg as shown below:

  • The Part Cooling Fan (FAN0/PC6) is controlled by the slicer / gcode commands. Adda [fan] section to printer.cfg:
[fan]
pin: PC6
  • Configure the Hotend Heat Sink Fan (FAN2/PB15) to turn on at full speed when the hotend is above 50 deg C. Add a [heater_fan] section in printer.cfg:
[heater_fan hotend_fan]
pin: PB15
heater: extruder
heater_temp: 50.0
  • Configure the Electronic Enclosure Fan (FAN1/PC7) to turn on automatically whenever any driver is enabled and to turn off (or reduce to idle speed) 60 seconds after drivers are turned off. Add a [controller_fan] section in printer.cfg:
[controller_fan electronic_enclosure_fan]
pin: PC7
idle_timeout: 60

If you want to keep using your stock ST7920 LCD (Ender 3 Pro/CR10) with the SKR MINI E3 V3.0, add a [display] section in your printer.cfg configuration file:

[display]
lcd_type: st7920
cs_pin: PB8
sclk_pin: PB9
sid_pin: PD6
encoder_pins: ^PA10, ^PA9
click_pin: ^!PA15

[output_pin beeper]
pin: PB5

To add a BLTouch to the SKR Mini E3 V3, add a [bltouch] section to printer.cfg:

[bltouch]
sensor_pin: ^PC14
control_pin: PA1
x_offset: -36
y_offset: 0
z_offset: 2.00

You will need to update x_offset, y_offset, and z_offset to match the offsets of your current setup. You can also define a [safe_z_home] section to home toward the center of the print area:

[safe_z_home]
home_xy_position: 151,115   # Nozzle coordinates
speed: 250
z_hop: 10
z_hop_speed: 5

To use the probe in place of the z endstop, set the stepper_z endstop_pin to “probe:z_virtual_endstop”:

[stepper_z]
step_pin: PB5
dir_pin: !PB6
enable_pin: !PC3
microsteps: 16
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop
#position_endstop: 0.0
position_min: -4
position_max: 250

The stepper motor and their current can be configured in printer.cfg. For my setup (BondTech BMG/E3D V6), I have:

[stepper_x]
step_pin: PB13
dir_pin: !PB12
enable_pin: !PB14
microsteps: 16
rotation_distance: 40
endstop_pin: ^PC0
position_endstop: 0
position_min: 0
position_max: 230
homing_speed: 50

[tmc2209 stepper_x]
uart_pin: PC11
tx_pin: PC10
uart_address: 0
run_current: 0.580
hold_current: 0.500
stealthchop_threshold: 999999

[stepper_y]
step_pin: PB10
dir_pin: !PB2
enable_pin: !PB11
microsteps: 16
rotation_distance: 40
endstop_pin: ^PC1
position_endstop: -12
position_min: -12
position_max: 230
homing_speed: 50

[tmc2209 stepper_y]
uart_pin: PC11
tx_pin: PC10
uart_address: 2
run_current: 0.580
hold_current: 0.500
stealthchop_threshold: 999999

[stepper_z]
step_pin: PB0
dir_pin: PC5
enable_pin: !PB1
microsteps: 16
rotation_distance: 8
# endstop_pin: ^PC2
# position_endstop: 0.0
endstop_pin: probe:z_virtual_endstop
position_min: -4
position_max: 250

[tmc2209 stepper_z]
uart_pin: PC11
tx_pin: PC10
uart_address: 1
run_current: 0.580
hold_current: 0.500
stealthchop_threshold: 999999

[extruder]
step_pin: PB3
dir_pin: !PB4
enable_pin: !PD1
microsteps: 16
rotation_distance: 7.71
nozzle_diameter: 0.400
filament_diameter: 1.750
max_extrude_only_distance: 100
pressure_advance: 0.04
pressure_advance_smooth_time: 0.040

heater_pin: PC8
sensor_type: ATC Semitec 104GT-2
sensor_pin: PA0
control: pid
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 300

[tmc2209 extruder]
uart_pin: PC11
tx_pin: PC10
uart_address: 3
run_current: 0.580
hold_current: 0.500
stealthchop_threshold: 999999