Turn your anycubic printer into a more capable unit with a text display, auto-leveling, and Marlin with input-shaping.
This is a fairly complex project. It takes several hours and you need to be able to cut a hole into metal and crimp cables.
The only parts I designed are the SKR mini mount and the port guard. The others are credited remixes.
Unscrew the bottom of the printer. Carefully label the following cables, to save time later:
Remove the power supply by removing the four screws below the bed and set it aside (still connected). It gets in the way otherwise.
Remove the mainboard and sell on ebay for about $30-$50 USD.
Remove the display and throw away, they are not in demand.
You need to cut a hole to access the SD card and USB of the new mainboard. In a later step, the SD card port guard is taped to the inside of the case to close any gaps.

Use a knife to cut away the screen protector.

Install the LCD back-plate.

Finally, screw in the Mini12864 display from the front.
The pins you need are in the marlin file pins_BTT_SKR_MINI_E3_common.h. They are described with a strange orientation there, so I am renumbering them for you. When you have inserted the pins into the dupont connector, you can print and attach the dupont-to-IDC adapters to them for a stronger connection.
SKR
TFT EXP1
------
RST RX TX GND 5V LCD_RS | 1 2 | BTN_ENC
-------------------- LCD_CS | 3 4 | LCD_RST
| * 2 3 * * | (nc) | * 6 | BTN_EN1
-------------------- RGB | 7 8 | BTN_EN2
GND | 9 10 | 5V
------
EXP1
MINI12864
EXP1 EXP2
LCD LCD SD ENC ENC
GND NC RST CS BP GND DET A B MSO
---------------------- -----------------------
| 2 * 6 8 * | | * * * 8 * |
| 1 * 5 7 9 | | * * 5 * 9 |
---------------------- -----------------------
5V NC RGB LCD ENC KILL RST MSI SD CLK
RS BTN CS
SKR MINI12864
EXP1-10 ---------- EXP1-1 5V
EXP1-9 ----------- EXP1-2 GND
EXP1-8 ----------- EXP2-6 EN2
EXP1-7 ----------- EXP1-5 RED
EXP1-6 ----------- EXP2-8 EN1
EXP1-5 ----------- n/c
EXP1-4 ----------- EXP1-6 RESET
EXP1-3 ----------- EXP1-8 LCD_CS
EXP1-2 ----------- EXP1-9 ENC
EXP1-1 ----------- EXP1-7 LCD_A0
TFT-2 ----------- EXP2-5 SCK
TFT-3 ----------- EXP2-9 MOSI
![]()
![]()
Use 5 M3x4 or M3x6 screws to mount the SKR board to its holder. Attach VHB tape to the underside of the mount and fix the board in place.

Also, use the VHB tape to install the printed SD port guard over the SD card port (on the inside of the case) and USB board of the main board, to stop the card from being able to be slid into the case.
We will not be using the hub, as described in other guides. We will bypass it and wire the probe directly to the mainboard. Prepare the probe mount with four M3 nuts. You can use a screw to pull them into the hole.
Remove the four screws at the back of the hotend case and two at the top-front.
Attach the probe to the mount. Did you stretch the probe mount by 2mm higher before printing? That gives the probe more clearance.
Cut off the five dupont connectors at the other end of the probe wire. Then thread it through the vent holes at the top of the hotend case and use 2 M3x6 screws and nuts to fix the probe in place.

Replace the hotend case.
Cut the cable tie for the hotend wires, and insert the wire through cable sleeve, thread it all the way to the end. Use one of the existing holes to get the cable into the box.
Finally, crimp on a five-pin JST connector to plug into the probe slot of the mainboard.

Here is the pinout of the SKR Mini E3, for reference.

Three of the wires you need are are in the hub, which is wired like this:


You need to split it up and attach JST connectors to them.
Extruder thermistor:

X End-stop:

Filament-sensor (gets plugged into E0-stop):

I started with the Anycubic i3 Mega/Trigorilla Pro STM32 and merged it with the Ender 3/Skr Mini V3 2.0 config files line by line. Here are the changes that I made to the Trigorilla files.
> #define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V2_0
> #define SERIAL_PORT 2
> #define BAUDRATE 115200
> #define SERIAL_PORT_2 -1
> #define X_DRIVER_TYPE TMC2209
> #define Y_DRIVER_TYPE TMC2209
> #define Z_DRIVER_TYPE TMC2209
> #define E0_DRIVER_TYPE TMC2209
> #define BED_MAXTEMP 125
> //#define PIDTEMP
> #define MPCTEMP // ** EXPERIMENTAL **
< #define DEFAULT_bedKp 251.78
< #define DEFAULT_bedKi 49.57
< #define DEFAULT_bedKd 319.73
> //#define USE_XMAX_PLUG
> #define Z_MIN_PROBE_ENDSTOP_INVERTING false // Set to true to invert the logic of the probe.
> #define USE_PROBE_FOR_Z_HOMING
> //#define PROBE_MANUALLY
> #define BLTOUCH
> #define NOZZLE_TO_PROBE_OFFSET { -3, -15, 0 }
> #define PROBING_MARGIN 20
> #define XY_PROBE_FEEDRATE (133*60*2)
> #define Z_PROBE_FEEDRATE_FAST (4*60*2)
> //#define MULTIPLE_PROBING 2
> //#define EXTRA_PROBING 0
> //#define Z_MIN_PROBE_REPEATABILITY_TEST
> #define INVERT_X_DIR false // set to true for stock drivers or TMC2208 with reversed connectors
> #define INVERT_Y_DIR true // set to false for stock drivers or TMC2208 with reversed connectors
> #define INVERT_Z_DIR true // set to false for stock drivers or TMC2208 with reversed connectors
> #define INVERT_E0_DIR true
> #define AUTO_BED_LEVELING_BILINEAR
> //#define AUTO_BED_LEVELING_UBL
> #define ENABLE_LEVELING_AFTER_G28
> #define GRID_MAX_POINTS_X 3
> #define EXTRAPOLATE_BEYOND_GRID
> #define GRID_MAX_POINTS_X 3
> #define GRID_MAX_POINTS_X 2
> #define LCD_BED_TRAMMING
> #define Z_SAFE_HOMING
> #define HOMING_FEEDRATE_MM_M { (20*60*2), (20*60*2), (4*60*2) }
> #define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
> //#define SD_CHECK_AND_RETRY
> #define ENCODER_PULSES_PER_STEP 8
> #define REVERSE_ENCODER_DIRECTION
> #define INDIVIDUAL_AXIS_HOMING_MENU
> //#define SPEAKER
> #define FYSETC_MINI_12864_2_1 // Type A/B. NeoPixel RGB Backlight
> #define NO_CONTROLLER_CUSTOM_WIRING_WARNING
> //#define ANYCUBIC_TFT35
> //#define TFT_COLOR_UI
> //#define TFT_ROTATION TFT_NO_ROTATION
> //#define TOUCH_SCREEN
> //#define TOUCH_CALIBRATION_X 12316
> //#define TOUCH_CALIBRATION_Y -8981
> //#define TOUCH_OFFSET_X -43
> //#define TOUCH_OFFSET_Y 257
> //#define SINGLE_TOUCH_NAVIGATION
> #define NEOPIXEL_LED
> #define NEOPIXEL_TYPE NEO_RGB // NEO_GRBW, NEO_RGBW, NEO_GRB, NEO_RBG, etc.
Configuration_adv.h:
> //#define CONTROLLER_FAN_PIN -1 // Set a custom pin for the controller fan
> #define CONTROLLER_FAN_EDITABLE // Enable M710 configurable settings
> #define E0_AUTO_FAN_PIN -1
> //#define Z_MULTI_ENDSTOPS // Other Z axes have their own endstops
> #define Z2_USE_ENDSTOP _XMAX_ // Z2 endstop board plug. Don't forget to enable USE_*_PLUG.
> #define BLTOUCH_DELAY 200
> #define BLTOUCH_HS_MODE true
> #define INPUT_SHAPING_X
> #define INPUT_SHAPING_Y
> #define SHAPING_MENU
> #define LCD_INFO_MENU
> #define STATUS_MESSAGE_SCROLLING
> #define LED_CONTROL_MENU
> #define LED_USER_PRESET_STARTUP // Have the printer display the user preset color on startup
> #define SET_PROGRESS_MANUALLY
> #define SET_PROGRESS_PERCENT
> #define SET_REMAINING_TIME
> #define SET_INTERACTION_TIME
> #define SDCARD_SORT_ALPHA
> #define SDSORT_USES_RAM true // Pre-allocate a static array for faster pre-sorting.
> #define SDSORT_CACHE_NAMES true // Keep sorted items in RAM longer for speedy performance. Most expensive option.
> #define LONG_FILENAME_HOST_SUPPORT // Get the long filename of a file/folder with 'M33 <dosname>' and list long filenames with 'M20 L'
> #define SCROLL_LONG_FILENAMES // Scroll long filenames in the SD card menu
> #define SDCARD_CONNECTION ONBOARD
> #define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement).
> #define DOUBLECLICK_FOR_Z_BABYSTEPPING // Double-click on the Status Screen for Z Babystepping.
> #define BABYSTEP_DISPLAY_TOTAL // Display total babysteps since last G28
> #define BABYSTEP_ZPROBE_OFFSET
> #define MAX_CMD_SIZE 96
> #define BUFSIZE 4
> #define TX_BUFFER_SIZE 0
> //#define RX_BUFFER_SIZE 1024
> #define SQUARE_WAVE_STEPPING
The user re-uploaded this model. The user is not the original author of the model.