Makerbase MKS Sbase

Hi MPCNC’ers,

Last week I bought myself a MPCNC, but without the controller.
I made a thread on cnczone website, asking about what controller to get.
I ended up ordering the Makerbase MKS Sbase and a Mean Well 24VDC 350W powersupply.
The MKS has an input for X, Y and Z + 2 extenders which I would like to use as slaves so all the 5 stepper motors get it’s own driver.
The MPCNC also has 4 end stops installed, 2 on the X-axis and 2 on the Y-axis.

The board has an option to install Marlin and Smoothieware software and Also GRBL, which is ported I think.

Which software would you guys advice, taking in mind it supports slaves and 2 endstops per axis. I read on cnczone GRBL doesn’t support slaves, so that’s not an option I think…

Thanks in advance,


Marlin. There are options for dual motor drivers and dual endstops in configuration_adv.h. The V1CNC_Rambo_Dual branch is a good start, you just need to change to board to the mks.

1 Like

Thanks for the quick reply!

Where can I download it? Is this the one I need:

And is there a tutorial or guide on how to configure the software?

418 is out of date. This is the branch:

Thanks jeffe!

I have no clue how to configure it, is there a manual/guide/tutorial? And does it also explain how to set the second stepper motor to slave end how to configure the endstops?

This version should have the dual steppers and endstops configured for an mpcnc. You need to change it to work for the mks sbase board. X2 is E0. Y2 is E1.

If you’re using tmc drivers, there are a bunch of settings for those too.

No guide, AFAIK.

It has DRV8825 drivers.
Is there a good general configure tutorial for Marlin?
I’m new to CNC or 3D printing, so I have no clue.

I’ve found a thread about the MKS Sbase with Smoothieware:

And 1 with Marlin:

Some more questions:

  • do I need a mico SD card or not with the MKS board? I think yes.
  • I installed the program ‘Atom’ and I’m looking at Marlin>src>Configuration.h, at line 131 (#define MOTHERBOARD) I just need to change it to ‘BOARD_MKS_SBASE’?
    In order to change the board does it need a ‘pins_MKS_SBASE.h’ file in the ‘pins’ folder?

Hi Jeffe,

I just recieved my MKS Sbase board!
I followed a tutorial to setup Marlin 2.0, but I can’t find the ‘firmware.bin’ anyhere.

I installed Atom, but I think PlatformIO is not working (not sure).
I see a drop down menu PlatformIO, but I don’t have the toolbar on the left.
When I choose ‘upload’ from the PlatformIO drop down menu, it doesn’t do anything.

It also didn’t ask me to install ‘Clang’ like in the tutorial.

It’s this tutorial:

Marlin doesn’t support atom anymore. I don’t know why. You can use platformio through visual studio code, which is cross platform.

1 Like

Thanks! I installed VsCode and PlatformIO.

I copied the firmware.bin so I hope it will work…

Which program is best to use to control the MPCNC?
I tried pronterface and that worked, I also tried CNC Gcode controler, which doens’t work (yet)

There are some choices on the software workflow page. I use a v1pi.

1 Like

Hi Jeffe,

I will have a look at it.
My first drawing is a complete fail :frowning:

E0 and E1 are not working, while I’m using the Rambo Dual Branch.

When I only connect the Y-axis it works, but when I only connect E1, it doesn’t do anything.
Do I need to do something with jumpers?

I also set the jumper to 1/32 microstepping, so do I need to change anything else?

Also I need to reverse the Z-axis, how is this done? I could simply turn the connector, but can I do it in software also?

Don’t mess with gcode until you have all the axis driving the right direction. There’s no reason to think playing a gcode file will fix things when a manual move is broken.

Are you sure you successfully flashed it? Send an M119 and see that there are X2 and Y2 in the report.

You might want to unset the digipot current, and change the driver type, but those changes would be subtle. Be sure to adjust the driver current with the little trim pot.

You can, I think it is in the advanced and it is something about “INVERT_Z_AXIS” or something.

I don’t understand everything you are saying, but I would like 1 thing verified.
I did the follwing steps:

  • Install VsCode
  • Install Platformio
  • Open the folder ‘Marlin-1CNC_Rambo_Dual’
  • In the platformIO.ini I changed to ‘default_envs = LPC1768’
  • I pressed the ‘thick’ icon to build it
  • Then I copied the ‘firmware.bin’ file from this folder ‘Firmware MKS Sbase\Marlin-1CNC_Rambo_Dual.pio\build\LPC1768’ to my SD drive

Then the firmware is flashed to the board right?

After that I tried some other things:

  • in the cofiguration.h it changed this: #define MOTHERBOARD BOARD_MKS_SBASE
  • I removed the ‘//’ in front of the #define X_DRIVER_TYPE DRV8825
    and also for Y - Z - E0 - E1

Please understand. I am trying to help you. I am not in the room. I don’t have an mks board. I am doing what I can, but you have to meet me halfway.

I do not know if it flashed. There is a lot that can go wrong. My suggestion is to verify it with M119.

Yes I know Jeffe, I really appreciate it!
I will try some things tomorrow and get back to you.

One other thing I can mention.
I copied the firmware.bin file, but then it didn’t change the extention to .CUR (firmware.cur)
Maybe it’s not flashed properly?

Jeffe, I think I know what’s the problem.
firmware.bin should turn into firmware.cur after flashing, but it doesn’t.

What I tried is taking out the micro SD card and put it in my laptop. Format it and insert it into the board again. Copy the firmware.bin from the folder to the SD drive. But it stays firmware.bin

Oke, I did another test. I removed the firmware.bin from the SD card and put nothing on it. I can still control the X - Y - Z axis. So I’m almost sure it’s not flashing.

I read some things about ‘Bootloader’ what does this mean?

Some info about my SD card: it’s micro SD from Kingston 64GB.
I formatted it as eFAT and as NTSF and I also read it should be a primary partion

The software that runs on the chip first is the bootloader. It does some different things, but basically it sets up the microcontroller to run your program (which is Marlin). Every time you turn on the board, the bootloader runs. One of its jobs is to look at the micro sd card and see if there is a new program to load. If there is, then it will copy that firmware.bin into the microcontroller and delete the old program. It never overwrites itself, so it is a good safety measure. You can put complete junk in the firmware.bin and still be able to flash it, because the bootloader is fine.

I don’t have the mks base board, but in an skr, I do what you’re describing. I put a firmware.bin on the card, put the card in, power up the board, and it takes a few seconds to flash and it renames the bin to cur. It runs the new program right away. If I power down and take out the card, I can see the filename has changed. After it flashes itself, it doesn’t need the sdcard anymore. The program is stored in the microcontroller, unlike a raspberry pi, where it is ran from the sd card.

The only part about that sd card that seems wrong is the size. You might try formatting it a lot smaller, like 1GB. Or finding a smaller 8GB or less card.

One trick I’ve used to make sure I am flashing a new version is to change the steps/mm in the firmware. If I set it to 401 instead of 400. Then when it is running I can restore the steps from the firmware and see the current values with this:


I think it worked!
I made a partition of 1GB first as NTSF but that didn’t work. Now I tried FAT32 and it works.
Now when I put the SD card back in my laptop, the firmware.bin file changed to firmare.cur
Also the LED’s on the board where differtent this time.

I didn’t know that after the flash you can take out the SD card, thanks for the tip.

I’m going to test it out in a few min. but I thought I would first right you this reply and thank you.