Has anyone succeeded in installing the auto bed levelling on a Rumba board with Marlin firmware?

I have the last stable version 1.1.0 RC6.

I would appreciate some direction especially about:

  • How and which pin to activate for the servo?
  • How to test it with G-code before I move to settings of the probe sequence?

I have only installed the hardware for now (5 V servo) connected to Ext. 3 (EXP3):

  • Pin 2 (+5V);
  • Pin 4 (GND), and;
  • Pin 6 (PWM),

Servo and RAMPS 1.4 and RUMBA connections

RUMBA EXP3 pinout

but I cannot move it with the G-code command M280 P0 S180. I have no idea where to put my hands on firmware to get this going. However my ultimate goal is to set the ABL.

  • $\begingroup$ To have two Z min switches you would have to wire them in parallel so that if either are triggered the board would see it, but this is not the standard way of implementing auto leveling, and you will want to ensure under normal operation that the mesh leveling switch will always hit first, and maybe set the second switch .5 mm lower, so there would be a light but not detrimental collision with the bed, It will be nearly impossible to get them both to trigger at the same time and still get the benefits of mesh leveling. $\endgroup$
    – Jexoteric
    Oct 30, 2016 at 18:36

2 Answers 2


General note, I do not have this board so I cannot test these steps myself, read the documentation in configuration.h, it is very detailed and should guide you pretty well. I am specifically looking at Marlin 1.1 RC7 on Github, so the lines below may vary slightly from what you see.

As to the pins to connect on the board for the servo, pins_RUMBA.h is where they are defined/mapped. For other boards, there is a pins_[your_board_name].h that will define the pins for any given board.

The default Servo pin for Rumba is:

#define SERVO0_PIN         5

Pin 6 appears to be used for a third extruder heater.

#define HEATER_2_PIN        6   // EXTRUDER 3

In configuration.h you must uncomment (delete the slashes "//" at the beginning) the lines and fill in your stow and deploy angles in the second line for the servo. Find these lines under the Z probe options heading.

//#define Z_ENDSTOP_SERVO_NR 0
//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles

Define your probe offsets from your extruder nozzle:

#define X_PROBE_OFFSET_FROM_EXTRUDER 10  // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10  // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]

Based on your comment for using two z end stop switches, there is an option you must enable to use the standard end stop switch for homing, and only use the probe end stop for mesh bed leveling type operations. The config.h file has a lot of information on this, please read it for your own and your printers safety.

Uncomment this line:


and comment this line:


Then set the carriage height to allow the z probe room to swing down and move:

#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.

For autobed leveling uncomment:

//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable

Then set probe points corners:



#define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this.

Set the number of points to probe in each direction (x and y), default is 2, so it will probe 4 locations, the other common choice is 3, so it will probe a grid of 9 locations.

// Set the number of grid points per dimension.
// You probably don't need more than 3 (squared=9).

That should be everything you need for a basic setup, although there are more options that I did not go through. Please look at all the documentation comments in configuration.h file as it is very comprehensive, even if it can be a bit confusing.

I hope this helps!

  • $\begingroup$ Thanks for your answer. The main issue I am experiencing is to get the servo to move. If I connect it as per my question it does not move. Reading your answer looks like I should connect it to 2, 4 and the PWM to 5 and then use Servo0 in the config and in the Gcode. Is this what you mean? I have added a pic in my question showing the ext.3 diagram. $\endgroup$
    – FeliceM
    Oct 31, 2016 at 7:53
  • $\begingroup$ Yes, the best I can tell you should connect the signal line to pin 5, which is pwm1. $\endgroup$
    – Jexoteric
    Oct 31, 2016 at 23:40
  • $\begingroup$ I have done everything as per your answer. I had also to activate the servo support where I have defined the SERVO NR 1. I have checked the servo functionality with an arduino board and it is fine. However when I send the Gcode M280 P0 S90 the servo does not move! Not sure about what to do. $\endgroup$
    – FeliceM
    Nov 1, 2016 at 12:24
  • $\begingroup$ What angle is your servo currently at? If it is already at 90 it will not move, you can try another angle to check. Also are you sure the servo index starts at 0 on that board? Try M280 P1 S80, and M280 P0 S80. Between those two commands it will check both of my suggestions. Other than that I think I've gone as far as I can to help without having ever used the Rumba board. $\endgroup$
    – Jexoteric
    Nov 2, 2016 at 1:56
  • $\begingroup$ Thanks for your help. Since I had to defined the number of servos in the section Servo support, I used 1, if I give a P1 it returns "servo out of range" while with P0 nothing is happening. Not defining the servo number, the firmware does not compile and returns the error "define number of servo". I have tested the servo again with an Arduino and it is fine. I tried both pins 6 and 5 ext. 3, but it does not move. If I run G29, the printer execute the ABL but the servo does not move. I moved it manually in an intermediate position to avoid having it already in the end position. Nothing! $\endgroup$
    – FeliceM
    Nov 2, 2016 at 5:54

For future reference.

My issue about the servo not moving was caused by a wiring mistake. The Exp. 3 has 14 pins has per this diagram.

enter image description here

However when phisically looking at the board, what you see is this: enter image description here

I took the first 2 pins on the right of such connector and the 3rd one of the first row thinking that I was connecting pins 2-4-5 of Exp. 3. I was wrong, because the first 2 (1-2) pins are not part of Exp. 3.

The right way to connect the servo is as following: enter image description here

Then use PWM1 (pin 5 Ext.3) I decided to leave trace of this issue and the relevant solution for someone that may experience the same issue.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .