I decided to make the jump to 32bit printing. I upgraded from a stock Melzi on a Monoprice Maker Select v2.1 (a rebranded Wanhao i3, Cocoon Create). I had no real reason to other than I wanted something to do and I figured this would be a good project, and as always I’m looking for better prints. So why not? I got a BIGTREETECH SKR 1.3 and five (5) TMC2208 v3.0 UART ready steppers. I pulled the trigger and went all in head first after a single night of research. To be honest though when I started this journey there was not a lot of info for doing this just yet, the SKR was still pretty new. What info I have found came mostly from some facebook groups (BIGTREETECH) I am in and a few YouTube videos. But as I type this there is now tons of info available, just most of seems to be directed towards the Ender printers, yay.
Things to note up front:
This guide is a long one, I would read this all the way through first it’ll save you a headache. From what I read the TMC2208s don’t support Linear Advance while in stealthchop. It must be disabled and used as spreadcycle over UART instead if you want Linear Advance. The other option is to use a different driver than a 2208 for the extruder. This would get around the Linear Advance issue. It may also be fixed in Marlin further down the line, who knows.
Getting everything setup including the new programming environment was a pain in the ass, hopefully this “guide” will alleviate some of the pain.
I recommend that you DO NOT buy the TFT35 or any TFT (except maybe the new dual mode TFTs). The dual screens can switch between TFT mode and 12864 LCD mode. The regular TFTs do not have all the functionality of a regular LCD screen. I ordered the TFT35 at first and after two days I sent it back and got a LCD12864 Graphical display instead. Thats the route I am gonna go. The stock screen on a Wanhao i3 is not compatible with the SKR as far as I have been able to find, unless you rewire the plug (see comments below for pinout). The TFT35 was $32 and the LCD12864 was only $12. Heres a good video showing the TFT35.
This is what you will need (what I used)
- (1) BIGTREETECH SKR 1.3 (the 32bit main board)
- (5) BIGTREETECH TMC2208 3.0 UART Stepper drivers (or 4 drivers and a Z splitter)
(1) TFT32 LCD screen(DON’T do it, get a LCD12864 instead!)- (1) LCD12864 Graphical LCD Screen
- (1) Type A USB cable (no more micro USB crap yay!)
- (1) ANTLABS BLTouch (plus extension cable, or extra wire they send stuff to make cables. I am using a v3 BLTouch.)
- (1) JST-HX connection kit and crimper (you will need this for the extruder stepper and the part fan, as well as any plugs you may break off cause the wiring is pretty fragile on some of them)
- (1) Your power supply (12v or 24v – the MS 2.1 is 12v by default)
- Platformio installed, no more Arduino IDE (Atom or VSCode with the Platformio extension. I use VSCode on MacOS)
- If not using VSCode then you need to install Clangd to build the firmware (just use VSCode its much easier).
- Some sort of of case or mount and cooling solution for the SKR 1.3
Steps you will need to take
- Install an editor and Platformio
- Configure and build Marlin 2.0 (config.h, config_adv.h)
- Flashing the SKR 1.3
- Installing the steppers and checking to see if they’re working
- Installing the SKR 1.3 to your printer
- BLTouch
- Test print!
Install Platformio
You will need Platformio installed along with an editor. Since the board is now 32bit we can no longer use the Arduino IDE like we did with Marlin 1.1.x. I use Atom on my Mac as my default editor so it made sense to stick with that and get Platformio. There are plenty of guides on how to install Platformio and Atom so I won’t explain that here, but you will also need Clangd installed if you are using Atom. After a few weeks of using Atom/Platformio I started to run into issues with it uploading the firmware as well as Atoms load times were insanely high. So I switched to VSCode and I have been chugging along happily ever since. So I’d recommend using VSCode over Atom, much easier. Atom will even give you a popup reminder to try VSCode for Platformio, it has greater support and more features I believe.
But if you are on a Mac and you do want to use Atom this is what I had to do:
Homebrew can install clangd along with LLVM on a Mac (this is what I used):
1 |
<span class="gp">$</span> brew install llvm |
And done.
If you don’t want to use Homebrew, you can download the a binary release of LLVM from releases.llvm.org. Alongside <span class="pre">bin/clangd</span> you will need at least <span class="pre">lib/clang/*/include</span>:
1 2 |
<span class="gp">$</span> cp clang+llvm-7.0.0/bin/clangd /usr/local/bin/clangd <span class="gp">$</span> cp -r clang+llvm-7.0.0/lib/clang/ /usr/local/lib/ |
Download and configure Marlin 2.0
This post shows edits for “Marlin 2.0 bugfix”. Marlin is now 2.0, some things may appear different. Visit Marlin 2.0 bugfix at Github or visit Marlin 2.0 at Github.
Open up a project with Platformio and select the folder of Marlin 2.0 that contains the platformio.ini file. Open the platformio.ini file, we need to edit a line to include the SKR processor. Once open we need to change the line env_defaults line. Change it to say env_default = LPC1768 . Save and close. Now we can open the configuration.h and configuration_adv.h files, those are the only two that need to be edited. We are going to be uncommenting sections to enable the features. To uncomment something remove the two slashes // at the beginning of the line.
For example:
1 2 3 |
// this line is commented out this line is not |
Configuration.h
Some guides/people say to remove one of the serial ports, but I have not had any issues with both enabled.
1 2 |
#define SERIAL_PORT 0 #define SERIAL_PORT_2 -1 |
You will need to specify the motherboard type.
#define MOTHERBOARD BOARD_BIGTREE_SKR_V1_3You can change the machine name to anything you want, this will display on the LCD screen.
We have 1 extruder (usually) and the filament is 1.75mm
1 2 |
#define EXTRUDERS 1 #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 |
We don’t have a fancy power supply. If you are not using the stock supply and have an ATX psu then you will need to change it otherwise, 0.
#define POWER_SUPPLY 0We need to specify the type of thermistors we are using. If you are using the stock Maker Select ones then use these values.
1 2 3 4 5 6 7 8 |
#define TEMP_SENSOR_0 13 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_3 0 #define TEMP_SENSOR_4 0 #define TEMP_SENSOR_5 0 #define TEMP_SENSOR_BED 5 #define TEMP_SENSOR_CHAMBER 0 |
I cannot remember if I had to change the max bed temp or not?
#define BED_MAXTEMP 160You want to make sure you enable PID tuning so we can tune our bed and nozzle temps nicely, uncomment the line. If they are left commented out the Marlin will use bang-bang instead.
1 2 3 4 |
#define PIDTEMP #define DEFAULT_Kp 17.45 #define DEFAULT_Ki 0.84 #define DEFAULT_Kd 90.41 |
1 2 3 4 |
#define PIDTEMPBED #define DEFAULT_bedKp 602.82 #define DEFAULT_bedKi 114.98 #define DEFAULT_bedKd 790.15 |
Make sure we don’t extrude any filament unless we hit a certain temperature.
Prevent long extrusions, change this higher if you have a bowden. You probably know already.
Make sure you have thermal runaway enabled. Make sure these are uncommented.
1 2 3 |
#define THERMAL_PROTECTION_HOTENDS // Enable thermal protection for all extruders #define THERMAL_PROTECTION_BED // Enable thermal protection for the heated bed #define THERMAL_PROTECTION_CHAMBER // Enable thermal protection for the heated chamber |
Specify which endstops we are using.
1 2 3 4 5 6 |
#define USE_XMIN_PLUG #define USE_YMIN_PLUG #define USE_ZMIN_PLUG //#define USE_XMAX_PLUG //#define USE_YMAX_PLUG //#define USE_ZMAX_PLUG |
Specify if the endstops are inverted or not.
1 2 3 4 5 6 7 |
#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. #define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. #define Z_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. #define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe. |
1 2 3 4 5 |
#define X_DRIVER_TYPE TMC2208 #define Y_DRIVER_TYPE TMC2208 #define Z_DRIVER_TYPE TMC2208 #define Z2_DRIVER_TYPE TMC2208 #define E0_DRIVER_TYPE TMC2208 |
1 2 3 4 5 6 7 |
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 96 } #define DEFAULT_MAX_FEEDRATE { 300, 300, 20, 50 } #define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 } #define DEFAULT_ACCELERATION 3000 // X, Y, Z and E acceleration for printing moves #define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts #define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves |
1 2 3 4 5 6 7 |
#if DISABLED(JUNCTION_DEVIATION) #define DEFAULT_XJERK 8.0 #define DEFAULT_YJERK 8.0 #define DEFAULT_ZJERK 0.3 #endif #define DEFAULT_EJERK 5.0 // May be used by Linear Advance |
If you are using a BLTouch like I am then you need to uncomment this line, otherwise leave it commented out.
#define BLTOUCHFor a v3 BLTouch you need to enable 5v mode.
#define BLTOUCH_SET_5V_MODEIf using a BLTouch you will also need to set you probe offset values here. If you are using the same BLTouch adjustable mount I am you can probably get away with the same offset values I am using, except you will need to find your own Z offset most likely.
1 2 3 |
#define X_PROBE_OFFSET_FROM_EXTRUDER -26 // -26.40 X offset: -left +right [of the nozzle] #define Y_PROBE_OFFSET_FROM_EXTRUDER -45 // -44.74 Y offset: -front +behind [the nozzle] #define Z_PROBE_OFFSET_FROM_EXTRUDER 2.4 // offset with 2.4 is -3.65 / Z offset: -below +above [the nozzle] |
Let’s increase the probing travel speed, we don’t want this taking 5 minutes…
#define XY_PROBE_SPEED 10000I adjusted the offset range, I found it was recommended in a video I saw. There is no reason we should need an offset of -20mm. But you could leave it.
1 2 |
#define Z_PROBE_OFFSET_RANGE_MIN -10 //-20 #define Z_PROBE_OFFSET_RANGE_MAX 5 //20 |
Let’s slow down the delay on the probe to speed things up.
#define DELAY_BEFORE_PROBING 100All of my steppers are LOW enable pins.
1 2 3 4 |
#define X_ENABLE_ON 0 #define Y_ENABLE_ON 0 #define Z_ENABLE_ON 0 #define E_ENABLE_ON 0 // For all extruders |
We need to invert the stepper direction on the axis for 2208s.
1 2 3 |
#define INVERT_X_DIR true #define INVERT_Y_DIR true #define INVERT_Z_DIR false |
Same for the extruder.
1 2 3 4 5 6 |
#define INVERT_E0_DIR false #define INVERT_E1_DIR false #define INVERT_E2_DIR false #define INVERT_E3_DIR false #define INVERT_E4_DIR false #define INVERT_E5_DIR false |
Direction of the endstops.
1 2 3 |
#define X_HOME_DIR -1 #define Y_HOME_DIR -1 #define Z_HOME_DIR -1 |
Set the bed size, we have 200×200.
1 2 |
#define X_BED_SIZE 200 #define Y_BED_SIZE 200 |
The default Z max height is stated as 180mm. But, if you go this high without turning your extruder stepper so the wires point the back then the stepper cable and jack will hit and rub against the top gantry. So either turn your extruder stepper or lower the max height to 175mm.
#define Z_MAX_POS 175If you are using the BLTouch you need to set what kind of leveling you are going to use. At the moment I am using bilinear leveling. But I may change to unified bed leveling (UBL) in the future. I am reading that it is better.
1 2 3 4 5 |
//#define AUTO_BED_LEVELING_3POINT //#define AUTO_BED_LEVELING_LINEAR #define AUTO_BED_LEVELING_BILINEAR //#define AUTO_BED_LEVELING_UBL //#define MESH_BED_LEVELING |
Uncomment this if using a BLTouch.
#define RESTORE_LEVELING_AFTER_G28If using a BLTouch we need to set the size of the bed mesh. 3×3, 5×5, etc… The more the better but don’t go crazy.
#define GRID_MAX_POINTS_X 5Again, if using a BLT (LOL) we want to be able to adjust it from the LCD. We also want to enable safe homing. This will home Z in the center of the bed for safety.
1 2 3 |
#define LCD_BED_LEVELING #define Z_SAFE_HOMING |
We can change the default preheat options to our liking here. Set them to what you usually print with.
1 2 3 4 5 6 7 8 9 |
#define PREHEAT_1_LABEL "PLA" #define PREHEAT_1_TEMP_HOTEND 210 #define PREHEAT_1_TEMP_BED 60 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 #define PREHEAT_2_LABEL "ABS" #define PREHEAT_2_TEMP_HOTEND 240 #define PREHEAT_2_TEMP_BED 110 #define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 |
I have nozzle park enabled for using the M600 filament change command. This also requires some configuration_adv.h changes, but we’re not there yet. Leave nozzle park disabled if you don’t care about M600.
#define NOZZLE_PARK_FEATUREYou can change the style of the LCD to that of the Prusa machines if you wish, or leave it.
#define LCD_INFO_SCREEN_STYLE 0If we are using a LCD or TFT screen with a SD card slot we need to enable support for it.
#define SDSUPPORTI found I had to reverse the encoder direction for my screen.
#define REVERSE_ENCODER_DIRECTIONI like to be able to home my axis individually if I want to from the LCD, enable this.
#define INDIVIDUAL_AXIS_HOMING_MENUI am using a standard 12864 LCD so I needed to enable support for it.
#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLERAnd last but not least for the config.h file, if you are using a BLTouch or anything that requires servo control you need to enable the servo pin.
#define NUM_SERVOS 1Thats it for configuration.h!
Configuration_adv.h
If you are going to use dual Z steppers like I am you need to tell Marlin that we are.
#define Z_DUAL_STEPPER_DRIVERSLet’s enable Babystepping on our Z axis so we can get that perfect first layer.
#define BABYSTEPPINGFor the M600 filament change we also need to enable the pause feature. If you don’t care about M600 leave this alone.
#define ADVANCED_PAUSE_FEATURETime to configure the TMC2208s. We need to set the default current, microsteps and rsense values. From my digging around FB groups and such these are the values I have found that are most used/recommended. We only need to set the values for the axis we are going to use (I only listed the ones I am using). 760mA, 16 microsteps (we have 256 interpolation enabled) and 0.11 rsense for axis X, Y, and Z. E needs to be a tad higher I have found (in my research) at 900mA, 16 microsteps and 0.11 rsense. These values are the defaults, they are configurable via a terminal window and some commands as well as the LCD menu.
Note: Someone pointed out in the comments the original stock amps for Z steppers are lower than I have listed here. After some searching I found that if you are running Z steppers in parallel they need to be higher (as I have listed here), otherwise you can probably safely reduce the amps on the Z steppers to half, 380 amps instead (0.38amps). I am running as listed as have had no issues thus far, but as usual, use this at your own risk.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current #define INTERPOLATE true // Interpolate X/Y/Z_MICROSTEPS to 256 #if AXIS_IS_TMC(X) #define X_CURRENT 760 // (mA) RMS current. Multiply by 1.414 for peak current. #define X_MICROSTEPS 16 // 0..256 #define X_RSENSE 0.11 #endif #if AXIS_IS_TMC(Y) #define Y_CURRENT 760 #define Y_MICROSTEPS 16 #define Y_RSENSE 0.11 #endif #if AXIS_IS_TMC(Z) #define Z_CURRENT 760 #define Z_MICROSTEPS 16 #define Z_RSENSE 0.11 #endif #if AXIS_IS_TMC(Z2) #define Z2_CURRENT 760 #define Z2_MICROSTEPS 16 #define Z2_RSENSE 0.11 #endif #if AXIS_IS_TMC(E0) #define E0_CURRENT 900 #define E0_MICROSTEPS 16 #define E0_RSENSE 0.11 #endif |
If you are using Linear Advance on the extruder with TMC2208s it is advised (at this time) to not use stealhchop. It can also be disabled via the terminal or TMC LCD menu options. You may comment this out here or deal with it via the LCD menu like I did.
//#define STEALTHCHOP_EIf you are using TMC2208s with UART lets enable the driver status. Uncomment the line.
#define MONITOR_DRIVER_STATUSWe can also enable the hybrid threshold between stealthchop and spreadcycle. I am using the stock values at the moment. Uncomment the line.
#define HYBRID_THRESHOLDIf using TMC drivers enable the debug feature for the M122 command, very handy.
#define TMC_DEBUGAnd thats it for configuration_adv.h!
Flashing the SKR
First you need to build the firmware. Once you have made all of your changes you will need to build. The IDE you are using should give you an output window to display the build status. If all goes well go and head and upload the firmware. If it fails you will need to hunt down the issue. The status window should give you an error to hunt down if it fails.
There are two ways to flash the SKR 1.3. Either plug the board directly into your computer after moving the jumper from INT/5V to 5V/USB. It will then show up and now you can upload via VSCode/Atom and it should hit the SKR. The other way is to take the SD card out of the SKR and insert it into the computer. Upload the same way via VSCode/Atom and it will hit the card instead. Once flashed it is recommended to press the reset button once it first boots. You should then be good to go.
Steppers & Test
So steppers, so many kinds. I am using five TMC2208 v3.0 UART drivers. They came pre-soldered for UART. I got them from BIGTREETECH, same place that makes the board. AliExpress or Amazon under Kingprint. Otherwise if you have a different driver you will need to find directions somewhere on using them with the SKR and how to set them up. I have been assuming you’re using TMC2208s. If you do have 2208s but they are a different version or non UART (they are all UART capable they are just not pre-soldered so they’re not called UART) then you will need to do some soldering. This instructable has examples on the soldering required, if needed.
Now you need to set the jumpers for UART on the 2208s. Remove all the jumpers from the board except on the INT/5V pins.
Official pinout diagram from BIGTREETECHs Github
Time to install and test the steppers. Go with just one first. Install one stepper on the board, make sure you install it correctly. They can go in both way but one way lets the magic smoke out. Usually they are colored on one side. Match the colored side of the stepper pins with the colored set on the SKR (usually red). One thing to note is that the steppers will not power on via USB power. The board needs 12v or 24v DC power to enable the steppers. You can connect both, the USB to a computer and 12v/24v power with no problems if you wish. Or you can connect Octoprint on a Raspberry Pi no problems as well. Once the board is booted up you can send a M122 command via a terminal in either Pronterface or Octoprint. This command should spit back a whole bunch of crap. You want to scroll to the bottom and look for “Driver Registers”. This will tell you the overall status of the stepper. If it looks like this (see image) for your stepper that you have installed you can stick the rest of the sticks in.
Plug one of the steppers in, X axis for example and power on the board. See if the stepper moves in the direction you are telling it to. If it does you are good to go, proceed with the other steppers. If you notice your steppers are backwards, going in the wrong direction, you can change #define INVERT_X_DIR or #define INVERT_Y_DIR etc, instead of rewiring the stepper harness. To change the direction of a stepper change #define INVERT_Y_DIR (or X, Z or E) between true and false. If it is homing in the wrong direction change #define Y_HOME_DIR 1 or -1.
Installing the SKR
Once you have a stepper or two moving correctly plug them all in and wire up the board. You will need a JST-XH plug kit for the extruder and cooling part fan. The stock Maker Select extruder is on a green screw terminal plug. It needs to be moved over to a JST-XH plug. Same with the part fan, make sure you pay attention to the polarity when you make the plug.
The case fan and cooling block fan still connect directly to the power supply. You could take the block fan and connect it to the 12/24v plug next to the steppers I am told but I have not tried it. There are all kinds of neat options for fans in Marlin 2, take a look sometime.
Now the biggest issue with the SKR 1.3 upgrade on a Maker Select is the control box. There are options on Thingiverse for mounting the SKR inside the original case. But they all require you to either sacrifice the USB cable or purchase a new right angled USB plug. Getting a new USB plug and keeping the case is probably by far the easiest option but it is not the route I went. Also doesn’t work if you upgrade the screen to a 12864 or a TFT. I modified an existing 3d model to match my needs. I printed a new case for a SKR 1.3 with an 80mm fan. If that doesn’t work for you search Thingiverse for SKR_13 and SKR13. The MKS Gen L also has the same footprint as the SKR 1.3 so those mounts may work as well. I also printed a case for the 12864 LCD screen. Because I ditched the case I also needed some kind of cover for the power supply that came with the Maker Select. So I remixed an existing psu cover. I also needed a bracket so I remixed and printed two brackets. This is for a Sompom 12v 20A power supply.
Official diagram from BIGTREETECH Github
BLTouch
If your BLTouch is in alarm mode when it powers up (blinking), it is most likely due to failing a self test. Either the Z axis is too low when you powered on the printer and there is not enough room to deploy the probe. Or your wiring is wrong, this is what happened to me. The BLTouch wiring must be changed to match the SKRs pinout (which is not standard). I had to flip flop the BLTouches wiring to be RED-BROWN-ORANGE. The SKRs pinout is 5v-Gnd-Signal. After that (and having room to deploy) everything is good.
After you finally get everything put together and you are ready for a test print start slow, very slow, and have the gantry nice and high and in the middle. Give room for error and ready that power button! You want to make sure the probe will stow itself when you touch it and the Z axis stops moving. If it does you are probably ok, I’d test it a few times. If it doesn’t stop the Z axis from moving when you touch the probe you’re probably gonna have to kill power. It is most likely the endstop plug of the BLT. Switch it around and try again.
Now you have new things to add to OctoPrint, like the BLTouch Control and Bed Level Visualization plugins.
Test Print!
Go on and get to printing with your new 32bit SKR 1.3!
Here is a copy of my current Marlin 2.0 bugfix configuration.h and configuration_adv.h files. They are not the same as above, it is NOT a drop in replacement. But it should help cut down on the editing/typing. If you choose to download the files I still highly recommend you dig through it and compare it to what I have typed to double check the values for your machine. There may be some things enabled that are not mentioned here.
Download my copy of Marlin 2.0 bugfix config files
This was how I did it on my printer, I take no responsibility for anything that may happen to yours. Try this at your own risk.
Here is a list of some commands that I have found to be useful, here is the full list (I’d recommend skimming through it)
- G28 – Home all
- G29 – Start auto bed leveling
- M119 – Checks endstops and reports open/triggered
- M122 – Spits out TMC stepper diagnostics, this is super helpful
- M280 P0 S10 – BLTouch probe down
- M280 P0 S90 – BLTouch probe up
- M280 P0 S160 – clear BLTouch alarm (flashing red)
- M290 Z# – Replace # with a value, for example 0.25 would move up 0.25mm on the Z axis
- M420 – Displays on/off for ABL and fade height
- M420 Z# – Replace # with a positive value, sets the fade height.
- M420 V – Displays mesh details
- M500 – Store settings in eeprom
- M501 – Load settings from eeprom
- M502 – Restores board defaults (from firmware)
- M851 – Will display current Z offset
- M851 Z# – Replace # with a negative number, this is how you set your Z offset
- M906 – Reports the current on the steppers
- M907 – Sets the current on the steppers
EDITED 08/07/2019: Added TMC2208 configuration info and some basic gcode commands.
EDITED 08/16/2019: Added a new copy to download and updated the guide to include babystepping, lowered accelerations, esteps.
SKR 1.3 with Marlin 2.0 bugfix on a Wanhao i3 and a BLTouch with a LCD12864 screen.
Some helpful links
https://github.com/bigtreetech/BIGTREETECH-SKR-V1.3
BIGTREETECH video on programming the SKR and BLTouch (quick video only, no dialog)
Tutorial on the TMC2208 in standalone mode
Another good video on TMC2208s
SKR 1.3 Wanhao case mounting bracket
BigTreeTech Youtube on installing/configuring firmware for SKR 1.3
Configuring SKR 1.3 and TMC2130s
Case for a MKS Gen L (same dimensions as the SKR 1.3?) and a 80mm fan
Another similar case for MKS Gen L and 80mm fan
Adjustable mount for the BLtouch and Wanhao i3 (requires 2 8mm M3 screws and nuts)
Discover more from Its_All.Lost
Subscribe to get the latest posts sent to your email.
Nice guide. Are you planning to add photos of the wiring and such?
Thanks for the reminder, I did have a couple of extra pictures to add.
Thanks for this very detailed guide. Now im with less money in my wallet, but an old Wanhao with a brand new SKR board 😀
For those who struggles to connect the stock wanhao i3 1.2 LCD display. I got it working by connecting the following pins:
pin 1 LCD CS –> 1.19 EXP 1
pin 2 Encoder B –> 3.25 EXP 2
pin 3 LCD Data –> 1.18 EXP 1
Pin 4 Encoder A–> 3.26 EXP 2
pin 5 LCD SCLK –> 1.20 EXP 1
pin 6 Encoder Button –> 0.28 EXP 1
pin 7 ESTOP –> I dont use that one- so did not try to find it
pin 8 Beeper –> 1.30 EXP 1
Pin 9 5v –> 5V EXP 1
pin 10 GND –> GND EXP 1
LCD pins should like this:
1 2
3 4
5 6
7 8
9 10
Once again, thanks for this guide!
Awesome, thanks for the LCD pinout!
Thank You so Much for the Information … we are all remain indebted to You … Thank You …
What setting did you use?
Had several problems doing this with tmc 2130 and 2100.
Could not make the dual z work, tried lots of things. Ended up doing z steppers in paralell from one driver and upping its vref.
For some weird reason the steps per mm on z axis was off, had to make it 100 steps/mm for it to move correctly.
seems that the SKR doesnt support flashing firmware by octoprint without modifications which is a bit of a drag but then again it is pretty easy to do by sd card.
Not done with the build yet so more problems may occur.
hmm, in my wanhao i3 v.2.1, the z axis uses stepper motors with a maximum current of 0.47 amperes. I suspect that 0.76 is too much for them.
As I recall reading when I did the upgrade the Z motor amps need to be doubled if ran in parallel, I just did some Googleing and found that to be true. You could most likely cut this in half if using dual Z steppers. Thanks for pointing this out!
Hello, Thanks for a great guide but how should I connect the endstops ?
As far as I remember they endstops are plugged into the bottom two pins if looking at the picture posted. I didn’t change the endstop plugs, some people did. I just plugged em into the board and they fit fine for me, no issues.
Big thanks for writing this. Followed the instructions and only had a few hiccups. That being said, the crimper tool makes me want to outright murder someone.
No problem, glad it helped! What hiccups did you hit? Anything that I should note or update that caused them? And you are so right, that crimper has a learning curve.
This guide doesn’t work for me anymore. Please if anyone has a ready to go and complete bugfix folder they can upload for me you’d be saving me a fucking headache. Been at this for weeks since I got my replacement skr. First one and first time worked great for me.
What does not work? I haven’t tried this config yet but I have built and flashed SKR boards with Malin 2.X and this includes every thing you need.
Visual Studio gave me a hard time .. thank you utube. the debug version of Marlin was missing the Marlin.ini require to open the project with the MARLIN-2.0.X I was able to go and edit the cpu on platformio.ini than the Configuration.h and Configuration_adv.h ..
Great guide! I’m using it for my Maker Select v2.1 and I have the printer working 99% but I have one major problem I cannot figure out. The X axis is not homing properly. Instead of moving in the negative direction and stopping at the X endstop it moves in the positive direction about 5-10mm and sets that as the X home position. Any ideas? The Y and Z homing is perfect, only the issue with X
Have you tried inverting the direction? It has been a long while since I have fiddled with the firmware but there are a couple spots that you may need to play with. I would try inverting the X axis, either the driver itself or probably home direction. 1 should be the right side and -1 the left side I believe, flip flop whatever you have tried and see. If you have already tried this then I am not sure, I would hop on a Facebook group. I am in a few, some for BigTreeTech and a few for the Maker Select. The groups are active and a lot of people offer help. Sorry I couldn’t be of more help. But if you get it fixed please let me know how you did it.
#define INVERT_X_DIR true/false
and
#define X_HOME_DIR 1/-1
and
#define USE_XMIN_PLUG vs #define USE_XMAX_PLUG
Thanks for the quick response. I did try inverting before and that caused grinding. I might have a work around, if I push the x carriage against the endstop and home x it appears to home x properly. I’ll have to level the bed and try a test print to confirm.
Im probably going to give this a shot. Many thanks for the in-depth explanation beforehand. I appreciate the fact that you haven’t abandoned this post.
Just wanted to say thank you for this guide. Used it to upgrade my printer a few days back and this made it a lot easier to do. I made my own congfig.h and adv files but followed through with your changes for the most part and have been happy with how it’s gone. I got the TFT35 v3.0 and it was probably unneeded since I mostly use octopi, but I like it.
I also use an inductive probe, and that’s the only issue I really ran into. The z-endstop pins apparently have a pull up on them. This caused some issues, so I changed the pin for Z_MIN_PIN to P2_00 in pins_BTT_SKR_V1_3.h and plugged the signal wire into that pin on the board, which is the servos header right/yellow/orange pin. After doing that, it works like a charm.
Here’s the diagram showing the pin at the bottom. https://user-images.githubusercontent.com/613805/68263383-825d1500-000b-11ea-8401-5e8566dbd149.png
I made brackets for the SKR so you can access the USB and sd card externally
https://www.thingiverse.com/thing:4920438
How is this working for you long term? I am about to do the same exact thing after letting everything sit in a corner for 2 years…
I still use the printer and the SKR from this post, but along the way I dropped Marlin and adopted Klipper. If I had to do it all over again I would rethink how I mounted my printer permanently to the Ikea LACK table I used and the location of my Raspberry Pi, this makes it a pain to work on and move around. Other than that it has been great.
https://www.itsalllost.com/adventures-in-klipper/