Configuring and Using Reprap Ramps1.4 RRD Fan Extender




About: I'm blogging about my projects before they make it to Once I've finished a subject on my blog, I'll put it together and post it on Instructables, so you can get a preview on my site.

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.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

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

2 People Made This Project!


  • CNC Contest

    CNC Contest
  • Make it Move

    Make it Move
  • Teacher Contest

    Teacher Contest

35 Discussions


1 year ago

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

1 reply

Reply 1 year ago

My advice?
There are 2 different types of RRD I know off.. Some use 6 and 11, other use 4 and 5.
Those are the 4 pins available in that cluster of pins.


Question 1 year ago on Step 1

Hi I need to use a servo pin for BLtouch. how can i do this?

1 answer
dintidBernie X

Reply 2 years ago

I do not understand that question?


2 years ago

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....




2 years ago

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?

4 replies

Reply 2 years ago

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 ?


Reply 2 years ago

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.


Reply 2 years ago

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!


Reply 2 years ago

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.


2 years ago

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)

1 reply

Reply 2 years ago

You normally use D9 to cool the printed parts - what you call nozzle - you do not want to cool the actual nozzle :)

D9 is standard fan for cooling the printed parts which corresponds to the fan you activate in Cura, or other slizer. Also this fan you control from your LCD if you use one such.

I used the Fan Extender to make it possible to have my hotend heatsink fan to turn on and off as the hotend got hot and cold - I do not want this fan to just blow all the time due to noise.

I used the other fan on the Fan Extender to cool my drivers.

There is build in functions in the firmware to hotend fan and for the drivers.


3 years ago

Hi all,

This is a nice project :)
I also tried to build it.
The problem is, on my Fan extruder board, the + and - are not printed on the
PCB :(

I tried to find data sheet of the SMD chip, when i read it correct, it is the F8313.

I thought when i have it, i can measure where the VCC and ground is.
To bad, i can't find a good datasheet too.

Can some tell me where the VCC or ground is located on the SMD chip ?

With this information i can find the + and - of the pcb and build it.

Thanks in advance, and sorry for the dab english


3 years ago

Hey there,

thanks for putting this up since every other source on the internet is really a kind of bs.

So let me clarify this: If I want to use two fans whereas one fan cools the print dynamically via the slicer and one fan cools the extruder body from keeping it getting jammed I need to use this RRD fan extender as the RAMPS board is else not able to control the extruder fan without a inserted MOSFET mod?

So in summary I connect the extender to RAMPS. Connect the extruder fan thats starts at 50c to D4 or D5 or D6 and the print cooling fan to D9?

And what is meant with this "Simply move one of your axes and see how the fan starts up" in the last step? I haven't figured out why a/the/(which????) fan should start spinning when the steppers are running?!?

4 replies

Reply 3 years ago

Yes. Almost

The move your axes:
This is when you also use the "Controller Fan" which I go through in the end of the instructables.
Therea are 2 automatic settings: 1 for hotend temp, which I set at 50c.

The other for Controller cooling.

Last one activates when driver i activated = when you use a motor = move an axis.


Reply 3 years ago

Ah yes! Of course. The drivers only produce heat when they control the steppers and the controller cooler only turns on when heat needs to be dissipated. Smart. Thanks!


Reply 3 years ago

Why did you switch to the Sbase board? I could imagine the connectors could come in handy compared to the pin headers on the ramps. Oh and as I am reading the description it also has 8825 drivers. Have some of these laying around here, too. To bad the drivers are soldered to the board in case of magic smoke. But I couldn't see the potentiometers for the drivers on the board. They say "the stepper motor current is
directly set, without the need to worry about the adjustment of the
current damage to drive or potentiometer"
Does this mean what I think it means. That the current is set automatically or what?

I really would like to read about your experience with the new board.