Configuring and Using Reprap Ramps1.4 RRD Fan Extender





Introduction: Configuring and Using Reprap Ramps1.4 RRD Fan Extender

In this Instructable I'll demonstrate how to install and configure Reprap Ramps1.4 RRD Fan Extender to make it possible to add a temperature controlled fan for your extruder (hotend) and a fan to cool your drivers on the Ramps board only when a driver is actually active. We will retain the ability to control the D9 fan using LCD or the M106 Gcode for the printer-bed as standard.

I am using the newest (As of 20th may 2015) iteration of Marlin firmware and run it on an Arduino Mega + Ramps board configured as EFB (Extruder D10, Fan D9, Bed D8).

Why make this instructable?

I bought the extender and found it really hard to find some usefull information, where most of the information was old and dreprecated and also had various degrees of errenous info like wrong pin numbers. All info I found entailed using the extender in a two-extruder scenario meaning disabling the controllable D9 fan, which I did not want to do.

To compound the issues most "guides" assumped you were fluent in marlin firmware and gcodes, which I certainly am not!

What you will need:

You will obviously need the Reprap Ramps1.4 RRD Fan Extender, which can be found multiple Places. One of them is on ebay. There is really no money saved by buying in china, so buy locally if possible. Pay attention to the fans included if any. One of my fans didn't Work, so seller is sending a new one - just undelineing the need to buy locally!

You will also need the Arduino IDE and your Marlin firmware files.

Foreword on pins used in this instructables:

According to the Ramps 1.4 schematics, the Fan Extender is placed over the Ramps servo-pins which has the pins D11, D6, D5 and D4, listed from the top left (with powerplug to the left). I'm mentioning this, as it seems different Fan Extenders are using different pins.
My version is White, and has no versioning numbers or text on it. I use Pin 4 and 6, but yours might be different.

Step 1: Physically Installing the Reprap Ramps1.4 RRD Fan Extender

Be sure to turn all power off your printer. That means remove both the power and usb cords.

Now take a close look at the small Extender board. There should be some tiny + and - symbols on it. I say this, as the image from Geetech is wrong - at least my extender board has the input pins in reverse.

The small extender goes on the grouping of pins right next to the reset button - this grouping is the Servos Aux-1 pins. It can only be installed in one direction - see images for details.

Now install the power-wire on the 12V-aux pins (see images for detail). When you have the green power-connector on the Ramps board to your left, the pins are oriented with 12v on top and Gnd beneath it. Ideally you want to verify this with a multiemeter.

When the extender board is installed on Ramps, and in same orientation as above, the 12v goes to the top pin on the extender board. There should be a tiny + to show it. The image from Geetech has this cable installed in reverse!

If you do not have all the pins needed on your Ramps board, you can solder them on yourself.

The power can be sourced from somewhere else. You can use 5v instead if you like.

Step 2: Configuring Marlin Firmware

I'm using the Ramps board "MOTHERBOARD BOARD_RAMPS_13_EFB" which Means Extruder D10, Fan D9 and Bed D8

In order to control the fan on D9, which is used for printerbed, you will need to use the M106 and M107 codes. If you have an LCD display this particular fan is automatically added to it. We retain this function.

In Configuration_adv.h

Controller Fan

Either scroll Down or hit Ctrl+f and search for CONTROLLERFAN_PIN

It is disabled as default. Change the Pin from -1 to 5 as shown in the image.
Define for how many seconds the fan should run after the last motor activity and set the speed your fan should go.

//This is for controlling a fan to cool down the stepper drivers
//it will turn on when any driver is enabled
//and turn off after the set amount of seconds from last driver being disabled again
#define CONTROLLERFAN_PIN 5 //Pin used for the fan to cool controller (-1 to disable)
#define CONTROLLERFAN_SECS 60 //How many seconds, after all motors were disabled, the fan should run
#define CONTROLLERFAN_SPEED 200 // Change to 255 for full speed

Extruder cooling fans

Just below the Controller fan option you will find the section for the Extruder autofan.

Change the -1 to 4 after EXTRUDER_0_AUTO_FAN_PIN as shown in the image.

#define EXTRUDER_AUTO_FAN_SPEED 200 // Use 255 for full speed

You might also want to specify the temperature where the fan starts and stops. I use 50c and you can define how fast your fan should go. I have set mine to 200. Don't dial this too far down for obvious reasons.

Addendum to FAN_PIN 4 if you use EEB (2 extruders) on Ramps (26.11.2015)

If you use 2 Extruders on Ramps, PIN 4 is automatically assigned printfan - the fan you would have connected to PIN 8 and control from your LCD.

It means you can control it using your LCD with a fan extender without configuring its pin seperately.

It also Means you can not assign PIN4 to anything if you use 2 extruders on Ramps!


That's it. Now upload your firmware to your printer and continue to next step to verify it all Works.

Step 3: Verify Our Fan Settings Works As Intended.

Test the printer-bed fan as normally using your display or the M106/M107 codes.

Test Controller fan

Simply move one of your axes and see how the fan starts up. Make sure it stops after the timeperiod you defined.

You can also control it using the M42 gcode. We have the Controllerfan on pin 5, so the code to activate it full speed would be:

M42 P5 S255

Turn it off using M42 P5 S0 or set it to something in the middle using M42 P5 S127

Test Extruder fan

Either use your LCD or the M109 gcode to set the temperature at 50 for our fan to start:

M109 S50

You can also controll the Extruder fan using the same M42 gcode as with the Controller fan. Only replace the Pin to pin 4 instead of 5:
M42 P4 S255



  • Paper Contest 2018

    Paper Contest 2018
  • Science of Cooking

    Science of Cooking
  • Pro Tips Challenge

    Pro Tips Challenge

We have a be nice policy.
Please be positive and constructive.




I too connected per your advice, and turns out the geeetech image is actually correct (BEWARE, EVERYONE!). I thought I burned out my RRD board (but didn't), but I did trip my 5Amp fuse (which I used a fast blow automotive 5A fuse to replace the RAMPS slow solidstate fuse).

I notice that 5V still turns on and off at the output pins from RAMPS (pin 4 and 5, before the RRD board)...

My RRD board had no + or - printed on either side of it, though you can tell that the - is connected to the larger area of copper clad on the PCB, so that's probably how you can tell - for those wondering.

I originally ordered $8 RRD from amazon prime, 2 day shipping, fast. Thinking it was burned out... (it isn't) I Ordered a replacement from Geeetech

Per this, it's actually D6 and D11, not 4 and 5!!!... hmmm:

AND..... setting to D6, the fan WORKS

What was the turn time from Geeetech?

I do not understand that question?

Morten I have a question. I am using the RAMPS board together with the RE-Arm board with smoothieware. Do you know the pins of the fan extender for smoothie? I wanted to pwm control the hotend fan to switch on on a certain temp, but I actuall dont know the pins in smoothie....



Thanks for this great instructable.

I use latest Marlin and Ramps 1.4.0. I have a fan plugged into D6 that cools my bowden hot end and turns on once 50C is reached. Problem though is D9 is my print cooling fan and does not turn on at all. This fan is configured in Simplify3D to turn on after Layer 1. M106 doesn't turn it on either.

Where do I set in Marlin to have D9 respond to the M106 gcode?

If I remember correctly, the D9 is by default activated using M106 unless you have changed type to Bed, Extruder, Extruder?

Tried a different fan?

Are you using M106 alone or M106 S255 ?

My board is set to:


The fan works fine when I set D9 as the CONTROLLERFAN_PIN or E0_AUTO_FAN_PIN.

If D9 is not set in the firmware configuration to either of those 2 settings above, I can control it via M42 P9 S255 and the fan works fine...

Which now I'm wondering why M42 I can turn it on, means it's not protected, aka not defined anywhere. Pins that are set in the firmware won't respond to M42 and give the protected pin error.

I've tried both M106 and M106 S255.

I figured it out, it looks to be a bug in the Marlin firmware. What clued me in is the M42 thing. Since that means the pin was not defined anywhere, I looked into the PINS_RAMPS.H and found this:

#if ENABLED(IS_RAMPS_EFB) // Hotend, Fan, Bed

#define FAN_PIN -1 // default is RAMPS_D9_PIN

This is not correct, that needs to be set to either 9 or RAMPS_D9_PIN.

Once I made that change. the M106 was now controlling D9 properly and M42 dumps the protected pin error!

Nice find! I havn't had this issue myself, so quite odd. Your firmware is much newer than when I used Marlin though, so it might have changed.

If you have the energy to do so, you should report it on the Github site for Marlin.

Nice instrucable..

Any advice how to setup marlin to cool down the prints using the rrd fan extender.

I'm a little confused as to what we are trying to cool.

The Print Head itself (ie: printed parts), the Stepper Drivers, The extruder motor?

I want to setup the fans to cool the actual nozzle (ie": printed parts)