Introduction: Configuring MKS Sbase V1.x 32-bit Controller Basics and Intro to Smoothieware.
Prolouge
I'm really pleased to see how this basic intro into Smoothieware and the MKS Sbase 1.x controller have gotten so much attention, and really hope it's going to help people get started or decide not to.
What this is about:
This Instructables is about finding our way around and Configuring the MKS Sbase 1.x 32-bit controller Card basics and intro to Smoothieware. It can be used for Smoothieboards as well in most regards.
I am going to explain and set it up to work as a new controller in my Ultimaker 2 clone with a single extruder.
What this is not going to be:
I am not going to go into the hardware of the board, aside from the need to connect relevant cables.
I am not going to do anything advanced in the firmware/configuration
Table Of Contents:
- Connect and install
- Connecting USB
- Installing firmware
- Less obvious differneces
- Firmware and Config file(s)
- Configuring firmware
- Comments
- 1/32 Multistepping
- Connecting Motors
- External Motor Controllers
- Pins
- Current
- LCD and SD
- Extruder Setup
- Delta driver current
- Thermistor Type
- PID Tuning
- Hotend Thermistor - Physical Layout
- Hotend Heater Pins - Physical Layout
- Thermistor Type
- Temperature Control Bed BANG-BANG
- Heated bed thermistor - Physical Layout
- Heated bed heater pins - Physical Layout
- Homing direction
- Disable unused endstops
- Define axes size
- Reversing endstop output
- Fast and slow homing rates
- More advanced setup?
- Using Switches
Step 1: Connect and Install
In order to install the drivers for MKS Sbase v1.x (opens shop on Aliexpress) board on our computer we first need to go and download the necessary drivers from the makerbase makerbase-mks on Github.com
Note: You do not want to use MKS firmware as it is redacted. Always use firmware from Smoothieware. If confused about the name "Repository", then just look at it as a folder of files.
Click the file and click the Download in Github and save it somewhere on your computer, then extract it to a folder.
Conencting USB
Plug in USB to the board and look at the LEDs at the upper left corner.
Immediately the D7 led lights up. After a bit D1 also starts lightning while D2 and D3 blinks rapidly.
Open device manager and update drivers for the new Smoothie/Seriel USB device with the signed drivers you just downloaded from Github located in the easy to find folder:
\MKS-SBASE\MKS-SBASE\Driver\smoothieware-windows-signeddriver-v1.0
Mine installed fine on Windows 10 x64 pro.
Installing firmware
- Firmware from MKS are just and old copy of Smoothieware, so we always just want to use the newest version from Smoothieware.
- In other words: always use firmware from Smoothieware.
- If you can't find config.txt file from original smoothieware, just use the one from MKS.
- Start by using the Stable version. When everything is working fine, you can use the Nightly version instead. It is the newest version, but not fully tested yet, and considered as beta/test.
- If not, you need to make sure you have the Drivers installed.
- Smoothieware suggest disabling auto-Mount on the SD when connecting to USB. Especially when using a MAC, as MAC OSX tends to do funky stuff at strange times.
- I have changed nothing on my win10. And nothing bad has happened the past year.
- At this point, the firmware.binchanged had changed to firmware.cur file on the SD card
Changing or Updating firmware
Just delete the firmware.cur file from your SD, or rename to firmware.cur.old or similar, and copy on the new firmware.bin file to your SD. Powercycle your printer (also unplug USB) and you can see your new firmware.cur file on your SD card.
Note:After making any changes to your config.txt file in the future, you need to power-cycle your controller, meaning disconnect both power (if in use) and USB. You can send a reset command, but only through true terminal use and not through Printrun/Pronterface or similar.
You can use the edge firmware which is eseentially a realease candidate, which has more features, but also might contain some errors. This goes beyound this Instructables.
Step 2: Configuring Smoothieware Compared to Marlin
I've been using Marlin firmware on Arduino+Ramps for a long while, same as the majority of 3D people, so I'll use Marlin as comparative source for configuring firmware.
Obvious difference from Marlin
Configuring Smoothieware is done in a single config.txt file which is saved directly to the SD card, using notepad instead of a big program like Arduino IDE. The firmware settings are updated by power-cycling the printer or sending a reset command to it. This compared to Marlin with a very large amount of sketches (files) we need to keep track of and modify - see Photo for settings the printer I'm actively upgrading here!
Less obvious differneces
There are some less obvious differences between Marlin and Smoothieware, where the most notable are:
- Speeds are rather confusingly listed as a scattering of mm/sec and mm/min in Smoothieware and Marlin, so have to be aware of this. No clear pattern is in place.
- The axes in Marlin are listed as XYZ and Extruder while the axes in Smoothieware is listed as Alpha, Beta, Gamma and Delta/E0 and E1
Firmware and Config file(s)
As you might have gathered, the Smoothieware firmware is based on 2 files. A firmware.bin and a config.txt file. There is a base config.txt file and a bunch of preconfigured configuration files present in the repository from MKS, located in a subfolder. The Config file can also be named without the .txt extension.
Note:This is a template and not just something to put in and use.
You can pick the one that most resemble your printer, like Delta or Cartesian. I'm just going with the basic Config.txt file.
Configuring firmware
First make a backup of your config.txt file, then open config.txt using notepad. Disable "Word wrap" as it might confuse you some.
Note: Smoothieware warns against Notepad++.
Also remember to take your microstepping multiplier into account. My setup here is based on 1/32 multistepping to take advantage of the build in DRV8825 drivers. Multistepping jumper is placed in upper right corner. (1)
Comments
You can make your own comments by writing # at the start of your line and then your text. This is very usefull to remember what something is about.
I'm adding a line to the start of the file: # Ultimaker 2
Step 3: Firmware Step 1: Default Feed Rate
I have 300mm/sec in Marlin, which translates to 18000mm/min, so I'll change the preconfigured 4000 to 18000. My Ultimaker is very well tuned, so you might have much lower setting - or higher if using a Delta.
Default_feed is translated to DEFAULT_MAX_FEEDRATE in Marlin.
alpha_steps_per_mm and beta_steps_per_mm needs to be changed to 160 while gamme_steps_per_mm is changed to 800.
acceleration is changed to 300 and z_acceleration to 80
1/32 multistepping
All of the above are 1/32 multistepping. In order to use 1/32 you also need to set the correct jumper on your Controller. It is located almost at the upper right corner with 16|32 next to it. The pins are named J3.
Note:Do not change any jumper with power on. Including connected USB cable
Connecting Motors
There is really not much to it. You need to have some 4 pin XH 2.54 4-pin connectors. You can use dupont as well, but they tend to fall out.
The Controller board is clearly labeled X (Cm2_M2), Y (Cm3_M3), Z (Cm2_M4), E0 (Cm2_M1) and E1 (Cm3_m5).
External Motor Controllers
If you need to hook up some external motor controller, you can do it using the pins just below the big heatsink over the drivers.
The pin-outs are labeled Jc_M2, Jc_M3, Jc_M4, Jc_M1 and Jc_M5 listed in order of above motor conenctors.
Step 4: Firmware Step 2: Cartesian Axis Speed Limits, Pins and Current
Defaults are 10000mm/min which translates to 166mm/sec (to keep reference to Marlin users) which is enough for many printers. Note how I write down defaults/current value in notes after the setting. This is a good idea in case (when) you need to make changes.
I have 300mm/sec on my Ultimaker 2 though, so I'll put in 18000 for XY and 4800 for my Z axis.
Pins
I'm not changing any pins at the moment, but we have to type in the _max_rate for each axis, which on a cartesian printer i the same as _axis_max_speed. This is not the case for Delta printers.
So for alpha_max_rate and beta_max_rate I enter 18000 and for gamma_max_rate I enter 4800.
Take note of the ! listed after each _dir_pin - this denotes the direction of an axis, which means you can remove or add ! if your axes is going the wrong way.
Go back and modify this later as needed instead of swapping around the cables, which you can't do, if you use the proper connectors in any case.
Current
My XYZ Nema motors are rated at 3.2 voltage and 1.7amp.
If I wanted to feed my motors max current, I'll set the _current to 1.7 amp, but the motors would run rather hot then, so I'll try out using the 1 instead which should be plenty.
I have set my Z-motor to 0.8 amp as it really isn't doing much Work, translating to: gamma_current 0.8
Step 5: Firmware Step 3: LCD, SD and Extruder
LCD and SD
I'm not going to change anything regarding LCD and SD.
Extruder setup
I am not using the original extruder, so my numbers will be different here!.
I have uncommented two settings here: extruder.hotend.retract_length and extruder.hotend.retract_feedrate but I must admit I do not know wheter this is necessary or not, since we configure this in our slizer in any case.
Delta driver current
One thing of note here is the current for our delta driver, which translates to our Extruder 01 motor.
My Extruder motor is rated at 2.5amp. I want to give it some juice, but not running it too hot, so I'll put it at 1.5amp. I am running a 5.1 geared extruder, so I do not really need to pressure it. 1.5amp is probably too much as well.
Step 6: Firmware Step 4: Hotend Temperature Control Configuration
I'm not changing the pins or connector we use, but stick to the default.
Thermistor type
I do change the type of thermistor used. I am using E3D hotend, which comes with a Semitec thermistor, so I need to change that.
To find the correct thermistor, we look at: http://smoothieware.org/temperaturecontrol#toc5
PID tuning
We do need to configure this, but we cant really do it at this stage since we need everything setup first.
When you are ready to do it, the command is slightly different than with Marlin firmware.
In Smoothiware the command is M303 E0 S60 to test at 60c. I did a test at 60 and then Again at 200 with new values.
Hotend thermistor - physical layout
In order to actually connect our thermistor we take a look at our pins image to figure out where we connect it.
Default connector for hotend thermistor is the one named TH2 on the board.
- TH1 is P0.23 - Heated bed
- TH2 is P0.24 - Hotend
- TH3 is P0.25 - Unassigned
- TH4 is P0.26 - Unassigned
I have made a small comment in the config.txt file to remind me that 0.24 is TH2
Hotend heater pins - physical layout
Control.hotend.heater.pin 2.7 is the screw-terminals labeled Heater1 on the board
Below chart looks rather unorderly, but is listed as left to right on the controller-board. It is listed on the board itself, which makes it not as bad as it might seem.
- Hot-bed is P2.5 - Heated bed
- Heater1 is P2.7 - Hotend01
- Heater2 is P2.6 - Hotend02
- FAN is P2.4 - FAN
Step 7: Firmware Step 5: Heated Bed Temperature Control Configuration
There was no comment to clearly state the start of the heated bed section, so I made a start comment #Heated bed temperature control configuration to match the start of hotend section.
Thermistor Type
You might need to change the Thermistor to the appropriate type for your setup. Nothing else to it really.
To find the correct thermistor, we look at: http://smoothieware.org/temperaturecontrol#toc5
Temperature Control Bed BANG-BANG
I am running my heated bed through a SSR (Solid State Relay) which is not very good at handling PID, which uses higher PWM signals. I could do it by turning signals down to 20 (according to smoothiewares site), but I honestly don't know how to do a PID tuning of my Heated-bed?
If I wanted to specify my frequency for the bed, it would be like this:
temperature_control.bed.pwm_frequency 20
I uncomment and change the setting for temperature_control.bed.bang_bang to true and also uncomment the next line temperature_control.bed.hysteresis
Heated bed thermistor - Physical Layout
Here we once Again take a look at our pins image to figure out where we connect the thermistor.
Default connector for heated bed thermistor is the one named TH1 on the board.
- TH1 is P0.23 - Hot-bed
- TH2 is P0.24 - Hotend
- TH3 is P0.25 - Unassigned
- TH4 is P0.26 - Unassigned
I have made a small comment in the config.txt file to remind me that 0.23 is TH1
To find the correct thermistor, we look at: http://smoothieware.org/temperaturecontrol#toc5
Heated bed heater pins - Physical Layout
temperature_control.bed.heater_pin 2.5 is the HOT-BED screw-terminals. This is the large screw-terminal right next to power input.
Below chart looks rather unorderly, but is listed as left to right on the controller-board
- Hot-bed is P2.5 - Heated bed
- Heater1 is P2.7 - Hotend01
- Heater2 is P2.6 - Hotend02
- FAN is P2.4 - FAN
Heated bed is default set as bang_bang which is fine for large areas like a heated bed.
Step 8: Firmware Step 6: Configuring Endstops
This sections looks very confusing at first glance, but it really not bad, when you first figure out how it is ordered.
Smoothieware source: http://smoothieware.org/endstops
Homing direction
Lets setup homing direction for our Ultimaker style printer. We know it homes to X min, Y max and Z max. This translates to:
- alpha_homing_direction home_to_min
- beta_homing_direction home_to_max
- gamma_homing_direction home_to_max
Disable unused endstops
We do not use X max, Y min and Z min endstops, so lets disable those, by typing nc, which translates to Not Connected.
- alpha_max_endstop nc
- beta_min_endstop nc
- gamma_min_endstop nc
Define axes size
We need to define the size of our printer. This translates to Software endstops in Marlin.
- alpha_max 213
- beta_max 179
- gamma_max 195.8
Reversing endstop output
Test output by issuing a M119 command to it. This looks different than when using Marlin, so instead of triggered, you get an 1 if the endstop is signalling a hit.
If you get a false positive you need to revert the endstop signal by adding an ! after the pin number.
You can see how I removed the ! from my alpha_min_endstop and how it changed the output when issuing M119 command.
Hint: Just don't focus on 1.24, 1.27 or 1.29 which are the pin numbers, but just look at the !
Fast and slow homing rates
Homing rate transfers directly to move speed mm/sec.
I upped the _fast_homing_rate for X and Y to 100 and Z to 20. The Ultimaker 2 homes to Z max and it really just takes ages for it to home if you keep it at its default.
I actually had double this in Marlin, but want to test it out a bit, before raising it, since I just changed my heated bed to something heavier.
When hitting the endstop the axes retracts a bit, where the distance i defined in _homing_retract_mm, and then moves slowly back. This is defined by _slow_homing_rate some. I upped these well, especially for my Z axes.
Step 9: Firmware Step 7: Network Settings
If you are going to use the networked option you can go with automatic setup, where you enabled DHCP and your printer is given an IP from your router/DNS server.
If you want to configure your printer with a static address instead, you simply type in the IP address and subnet mask here.
I have changed it to something fitting for my subnet. Yours might be looking different.
I can now connecto to the printer using both a standard internet browser or using Pronterface.
Using an Explorer we get a simplified Pronterface GUI for our use.
I have kept telnet enabled as I want to see what options it gives me.
Note: Do disable any networking service you do not use, aa it will open a security breach where people might take over your machine. Especially disable Telnet if you do not use it.
Step 10: What's Next?
This is it for now!
I hoped it helped you get started, or helped you decide wheter to make the leap for Smoothie-type boards and Smoothieware or stay away.
I believe I have fullfilled the purpose of this Instructables by getting started using the Sbase 1.2 controller and using Smoothieware.
We should by now have a functional printer, albit some tuning is stillneeded.
More advanced setup?
I allready did setup a Hotend Temperature and -fanswitch (2 switches), which I will cover in an upcoming Instructables.
Using switches
1) Fanswitch :: Be able to turn on/off my fan used to cool my hotend heatsink - I do not want it ON all the time unless it is needed, as it can be rather noisy.
2) A switch that polls the temperature for our hotend and then use the fanswitch to turn on the fan at temperatures at or above 50c and then off again, when temperature gets below 50.

Participated in the
Robotics Contest 2016
160 Comments
2 years ago
Hi I just got my mks1.3 and im changing my old vertexK8400 .im struggling with the firmware instalation I tried marlin but keep getting errors. Is ther someone that can help.
2 years ago
In case nobody is figuring out how to connect fans to the board. Connect the wires to the green blocks at the bottom left of the board. Use P2.4 for the part fan and P2.6 as a switch for the extruder fan to turn on at temp. Check smoothie docs for info.
3 years ago
I have the mks gen 1.4
I am interested in this board because it has ethernet but is this board superior or better?
Question 3 years ago
se le pueden poner los tmc 2209 ? no le veo los conectores
Question 4 years ago on Step 10
HI MAM/SIR(ALL),
I am Reigen KP from india, The board we use in our machine is MKS SBASE V1.3 32 bit . The problem i am facing here when we are assembling a 3d printer having a h base moving belt controlling system . As u all know the two x and y motors should move together to control the movement steady for one axis but my motor which controls x is not attaining the power to run the belt tension so can u please tell me how i can resolve the problem by changing any configuration or any thing please help me
thank you
Question 4 years ago
Hi All,
Awesome instructable, thanks Dintid. It has help me so much by giving me a better understanding of how 3D printers work. So much more to learn....I'm a 3D printer newbie and I have an Anycubic Kossel Delta Linear Plus with a dead mainboard straight out of the box (long story), printer has never worked. So decided to replace it with a MKS SBASE 1.3 and have just recieved the board as a gift for Xmas. I need some direction or guidance with the installation and configuration of the board for my printer. So the original board has 2 power input from the power supply to the mainboard, one to power the board and the other the heated bed. Just to clarify P2.5, is it a connection for the power input from the power supply or is it a output connection to the heated bed. If so, is there only 1 power input for this MKS Sbase 1.3 mainboard? I have 2 fans on my Delta printer, where on the MKS Sbase 1.3 board can I connect the second fan to ? Also if anyone can help me with a Smoothieware config file for a Anycubic Kossel Delta Linear Plus that would help me out so much. Many thanks in advance.
DT
4 years ago
GREAT instructable, perhaps i missed the section, but i see taht i cannot comtrol my part cooling fan. does anyone know where i can do this? i disable ti in the GCODE in cura and it stays on at temp making PETG s pita to print with. cooling fan is on p2.4. thanks!
Question 5 years ago
I also have this board and would like to use it wirelessly as I have the wifi module for this board. I use Simplify3D and it has a network config but have never used it. Are you connected with Ethernet cable to the Mks Sbase board? Any advice would be appreciated.
TIA!
Answer 5 years ago
Heya CustomC,
I never used mine wired up. I just used SD card, but you might get it to work by sending prints over directly, although I wouldn't expect a lot. The networking parts on Smoothieware is rather limited, where prints are disrupted if you connect to web gui during print and it's slow. But if you could send prints directly from S3D it would skip the copy to SD step :)
5 years ago
Dear all, anyone can suggest me how to connect the fan, it's not clear to me..
5 years ago
Is anyone succesfully printing from the SD card in the SBase? The micro sd also containing the config and firmware files, not an SD card in a TFT screen? My set-up cannot access the files I loaded on there. It obviously does read the card, as the config and firmware files work.
Thanks,
Hugo
Reply 5 years ago
The Micro SD is not meant to store .gcode files on an print, unless you upload files to it through terminal or lan, which are rather flaky on this.
You use SD card reader in TFT or similar or print via USB.
Reply 5 years ago
Thanks. I was hoping to set it up to work over the LAN port, I thought it was a means to get files from other computers in the network to the machine, to the sd card, because I heard printing from the screen SD card is not very stable. I have had multiple prints quit on me (after several hours), I am looking to fix that.
Reply 5 years ago
I didnt manage to get my external sd working, so using internal micro sd has been my only way of printing. I upload through usb (takes a while), but otherwise there are no problems for me printing from micro sd.
Reply 5 years ago
isnt there any better solution for the connection? im having also issues and its very annoying =/ i just want a reliable printer but so far the sbase is utter trash in terms of stability and reliability...
Reply 5 years ago
Now I am using the microSd thats on board the sbase. Reliability is ok now. Make sure to reset printer after every print to avoid crashes.
Reply 5 years ago
yea thats what i have used also till it got unreliable =/ this really sucks..
Waiting to transmit the stl via the terminal program is a real PITA.. this has worked !very slow! but ok i guess at the beginning but now i get timeouts during gcode upload..so now im kinda grounded as it doesnt matter how i hook up this thing.. via usb or network.. it freezes mid print or timeouts when uploading to internal sd.. i also have the tft32. but printing from that sd card was even more unreliable..so yea.. if anyone has an idea how to get this shitbox working i would thank you eternally.
Greetings
Reply 5 years ago
Sorry, cant help :/
Reply 5 years ago
You _can_ send files over, but it's via a terminal program like Pronterface/Printrun.
5 years ago
Im really having a hard time to get a stable connection to my sbase.. for a long time the only way of printing for me, was transferring my gcodes via pronterface terminal to my internal SD card inside the sbase... but this is very annoying as it takes ages for bigger gcodes and now the last few times the board timed out when transferring via usb so i ended up with some "half" gcode files on my sdcard that i cant use.. does anyone have a better idea on how to connect the board reliably? the SD slot on the TFT also doesnt work reliably for me..Im using windows 7, could it be a good idea to use something like octopi on a dedicated orange pi or something..the timeouts and stops mid print really have to stop! im thankful to any suggestions. Greetings