MakerBot Print is our newest print-prepration software, which supports native CAD files and STL assemblies,
allows you to interact with all your printers via the Cloud, and many other exciting new features.

Download Now


Bowden dual/quad extrusion extruder (single-nozzle single-drive) + video

by FDMTech Nov 13, 2016
Download All Files

Thing Apps Enabled

Please Login to Comment

I have printed this and I have some problem with cura when I launch a print the first filament is extruding well but when the printer switch to the second filament, the motor stop extruding .
When I test it on the printer screen the motor extrude with both filament.
Is somebody running this with cura ?

After 2 weeks, i managed to get it work on my ender 3.
The grip on the filament is pretty lose so i remix the idle and it work just fine.
The design is good so thank you.

will this set up work for a ender 3 sorry im kind of new to this 3d thing

Yes it does but you have to get a new board cause the ender 3 doesn't have any servo pin.
Or try the bltouch adapter to get the servo pin.

I had gotten all printed, setup, and calibrated, now just to wait for the Chimera. IT would be cool to see this style of extruder utilizing Bondtech gears on Idlers. It would be incredible!

Why is there only one idler present?

Thank you very much for that design ! Do you remember how you got that metal ring that you're using as a spring please ? I've tried to use your extruder but I'm getting a lot of skipped layers and I think that my traction spring is responsible for that.

Hello, I've been looking for a cheaper alternative to those servo motors, you can get an MG996R for maybe 3 or 4 dollars on aliexpress, it has much more torque than the listed motors (almost 3 times as much). I think that's one of the best motors for this project, and it has almost the same dimensions as the HS-422, so it should fit without any modification to the models.

After some searching I found the motor SG5010 (41,0 x 20,0 x 38mm) which has almost the same dimensions as Tamiya TSU-04 (40,0x20,0x37,0).

I also dont want to spend 30 bucks for this motor.. this one costs 3$. Will it work? maybe someone wants to try it out

Hi everyone , just finshed install this awesome dual extruder ( servo and firmware are OK ) BUT... I don't know how to configure the G-code in Cura ... The retraction is never good ( once stringing in PTFE , once a "bulb" is form at the end of the filament due retraction , So impossible for the filament to go down in PTFE after tool change ...) HEEEEEELLLLLLPPPPPP .... :( ( I've a E3DV6 hotend)

You must use a HIGH speed retraction to avoid forming "bulb" in the end of the filament. I normally use 100mm/s as retraction or even higher, the fast you pull the filament there's less chance to form this "bulb".

Hi. How to setup Marlin to use a Quad extrusion, I would like to use 2 stepper motors to drive 4 filaments. Thank you

Since nobody knows. I got it to work with 2 stepper and 4 filaments. Just change the original files:

Configuration.h (change to):



define SINGLESWITCH_EXTRUDER_SERVO_NR { 0, 1 } // Servo 0 for E0, E1, servo 1 for E2, E3


define SINGLESWITCH_EXTRUDER_SERVO_ANGLES { 150, 30, 150, 30 } // Angles for E0, E1, E2, E3


Marlin_main.cpp (change to):


inline void move_extruder_servo(uint8_t e) {
const int servo_nr[2] = SINGLESWITCH_EXTRUDER_SERVO_NR;
MOVE_SERVO(servo_nr[e/2], angles[e]);


In your BOARD.h file (eg. in my case MKS GEN 1.4: pins_RAMPS.h):

Create E2 and E3 pins using the same pin definitions used for E1 pins
Change all E1 pins to be the same as E0 pins

This way E0 and E1 will be using first stepper motor, and E2 and E3 will be using the second stepper motor (in my Case MKS GEN 1.4 there's only two extruders motors, if yours have 3 (like RUMBA) you can even make change all the files above to have a HEXA filament extrusion. I have a rumba but I can't use this thing since I use with it a Diamond Hotend.

This works very nice, I have tested it. Just need to change the tool change script, and believe me, Simplify3D is the best way to deal with this tool change script

Almost done... I´m still using rubber slastic but your desing works very well:


What does your tool change script look like? I couldn't get the timing correct

I add within Marlin 1.1.8 custom gcode command (config_adv.h) two commands:
Exchange to E2
Exchange to E1

and used the same gcode sequence to tool start gcode and tool end gcode at CURA 3.2.1 slice software.

When I come home I can get the gcodes and post here, if you want it...

Great thanks, I appreciate your help

My Cura 3.2.1 settings:

Left extruder
start gcode:
;---Extruder E1 start code Vortex Custom
M203 E400; High speed. Caution!
G92 E0 ; reset extruder counter
G91 ; relative positioning
T0 ;filament 1
G1 E+120.5 F18000
G1 E+2.5 F60
G1 E+3 F120
M203 E25 ;back to normal speed.
G92 E0
G90 ;absolute positioning
;---end extruder custom

End gcode:
;-----Extruder E1 end code Vortex Custom
M203 E400; High speed. Caution!
G92 E0
G91 ; relative positioning
G1 E-3 F120
G1 E-2.5 F60
G1 E-120.5 F18000
M203 E25 ;back to normal speed.
G92 E0
G90 ;absolute positioning
;-----End Extruder custom

Right Extruder:
Start gcode:
;---Extruder E2 start code Vortex Custom
M203 E400; High speed. Caution!
G92 E0 ; reset extruder counter
G91 ; relative positioning
T1 ; filament 2
G1 E+120.5 F18000
G1 E+2.5 F60
G1 E+3 F120
M203 E25 ;back to normal speed.
G92 E0
G90 ;absolute positioning
;---end extruder custom

End gocde:
;-----Extruder E1 end code Vortex Custom
M203 E400; High speed. Caution!
G92 E0
G91 ; relative positioning
G1 E-3 F120
G1 E-2.5 F60
G1 E-120.5 F18000
M203 E25 ;back to normal speed.
G92 E0
G90 ;absolute positioning
;-----End Extruder custom

Hope can help you!

Hi , Thanks for your design , great idea (one motor , one nozzle , 2 colors :) ) I Have an Anet A8 with original board , I would like to know how to connect the servo to the board .... If it's possible . Thanks

LCD pin 3 just like you would for a BL touch servo signal

Thanks:) , I'll try this this week :)

I love your remix,
I would like to know if you know how to wire the servo motor on a MKS Base 1.5 board?

hey i recently bought the TEVO Tornado it suports dual extruders on the main board i orderd a original TEVO extruder so in total i have 2 extruders and 1 nozzle could u help me or anyway tell me how to switch from extruders or how to modify the gcode im using Cura 2.6.1 i am able to set up 2 extruders in the software but i dont know how to edit the gcode from there

I liked this project so much but when I saw the servo motor (4.1kg) price... I gave up! more expensive then a nema 17 + polulu (even in "bb" plastic version.)

Thanks for the great work, but i dont understand why not use 2x nema17 motors, if the board does provide an connector for it, because for the price of the servos mentioned here you can get even 2x nema17 motors.

Hello, It should work with the HS-422 body since they have the same dimensions almost (only the depth differs a lot but that doesn't matter much in this case)

Thats a nice work! I've almost remixed it for vstone servos.

This inspired me to buy a cnc shield to add to my MKS board, I already had dual extruder and a clone so I'm adding four more extruders for a total of six materials as documented on the reprap wiki. I'm not sure if it'll work as easy as this but I'm betting that I can probably pull off full colored pixel art. So glad I bought a Prusa type printer for this reason. Thanks for the idea, I figured out 6 bucks and some motors, parts and material will make me a happy man.

what do you use for the idler pulley? i don't see anything mentioned.

Direct drive dual extruder (single-nozzle and single-drive)
Comments deleted.

Hooray, success!

The last couple of day's I have been struggling to get it to work. I managed to mount the servo motor. Modified the servo horn that came with it to have just one arm. And used M3 nylon spacers to space the servo somewhat back, as in the original from BigSteve.

Also I printed 3Dator's version of the Y-merger. Since I ordered PC4-M5 Pneumatic straight fittings and his version uses the same.

After struggling with getting the servo the work properly using Repetier-Firmware I glad to report is has been successful! Better yet I quickly made a video of it printing using 2 ABS filaments. Hope you guys enjoy.


Wow, I have never seen one of my things hit 1000 views so quickly. I do like to think this is one of the most coolest things I have shared with you guys. I hope you feel the same way.
I do have some more updates about the progress coming up so stay tuned. You can see the updates in the comments below.
Also check out my blog, where a keep track of everything with photos, videos and details.

Blog: https://3dprintingwithzahier.blogspot.nl
Videos only: https://www.youtube.com/ZahierMahoob

Quick intermediate update - GitHub
I have made all my configuration files available though GitHub so that you can reproduce my setup or apply to your own setup. Also it is easy for me to update these files if necessary.
Also, another opportunity arises. If you want to contribute your configuration for example, reply to this comment.
As soon as I am confident enough, I will add this link to the Thing Details tab of this thing.

For the firmware just use the lines that you need (probably NUM_EXTRUDER and EXT0 and EXT1 defines).
The rest of the Configuration.h file is specific for my setup for reference only. Since my stepper motors have twice the resolution (400 steps/rev) and I'm also running double the stepper driver micro-stepping (1/32) compared to mainstream. I also use a RAMPS-FD board (24V), so if you use a RAMPS board your pins in pins.h file will be different, again for reference only.

Bowden dual/quad extrusion extruder (single-nozzle single-drive) + video
by FDMTech

Update 4-1: Firmware - multi-extrusion

So I managed to get the firmware set up for dualstrusion. My printer uses a Arduino Due and RAMPS-FD board (for 24V), so I'm kinda stuck with repetier-firmware. But the good thing is, the support for multi-extrusion is great.

  • In pins.h I set the pins of E0 and E1 equal
  • In configuration.h I set #define NUM_EXTRUDER from 1 to 2
  • Copied over all EXT0 defines and pasted right below, change all of the new lines starting with EX0_ to EX1
  • Changed #define EXT1_HEATER_PIN to -1 // Not needed for single-nozzle
  • Changed #define EXT1_INVERSE from 1 to 0 // Single drive changes direction
  • Changed #define EXT0_SELECT_COMMANDS "" to "M340 P0 S2250\n" // Servo position in ms EXT0 // Prime settings in slicing software
  • Changed #define EXT1_SELECT_COMMANDS "" to "M340 P0 S800\n" // Servo postion in ms EXT1 // Prime settings in slicing software

You can expand this up to 10 (tops out at 10 using repetier-Host in the printer configuration).
Also you can use Repetier's online configuration tool but I haven't tested that, so don't hold me on that.

Then using the 12864 Big LCD RepRapDiscount Full Graphic Smart Controller, I went to menu item Extruder.

  • I turned the heat up to 170C, so the cold extrusion fail safe is satisfied with extruding
  • I then checked the first and second extruder respectively, and the servo turned the correct way
  • Then I tried extruding as the first extruder and the stepper motor turned the correct way for EXT0. (Consider the mechanics of this extruder design)
  • Then I tried extruding as the second extruder and the stepper motor did not want to turn. Turns out in the EEPROM values were undefined (-1). So using repetier-host I copied over the settings from EXT0 to EXT1, like PID settings, steps/mm etc. Afterwards I could have just executed M502 to load settings from configuration.h. Oh well. Now the stepper motor turns the correct direction for EXT1 as well!

That is it for now. I will upload a video when I print a thing using dual extrusion.

P.S. The RAMPS-FD has 2 additional stepper motor ports free (3 in total), and repetier-firmware and Cura support multiple extruders, so theoretically 3 of these extruders could make it possible to use 6 (hexastruder) filaments. WOW! For instance you could have 2 colors of ABS in the one and 2 colors of PLA in the other, HPET as support material and XT in the third. I someone gets hexastuder or even a octo (8) or decastruder (10) (if you can get your hands on a Prusa Super Switch) setup to work, I would love to see a video of it.

Update 3-2 - Cura version 2.3.1 - Quadtastic!:

I suggest using Cura 15.04.6 and in Machine settings set Extruder count from 1 to 2 or more. Then merge a dual STL file. This takes about 5 minutes. Compared to the tedious process of the new Cura 2.3.1 but is more powerful as you can select which part is printed with which extruder. But if you want to know more, read on.
It was a bit of a struggle. But I managed to get a custom profile for the printer to load. The printer build plate parameters, start and stop G-Code have to be defined in the definition configuration file. Also in the extruders definition configuration files, start and end G-Code has to be added for switching. Since Machine Settings option with Multi Extrusion printers is not supported in the interface these files have to be manually created.
Luckily the G-Code lines show extruders with the configured retraction G-Code T0 and T1! This means using the information from update 3-1 and Cura JSON FDM Extruder and FDM Printer parameter list help out a lot to setup Cura for Multi Extrusion. Which saves a lot of money, not having to "acquire" Simplify3D software. I played with the configuration even more, and I was even able to get 4 extruders to set up within Cura, and slicing works!
O, if a version of Cura is already installed, be sure to rename your "cura" folder to "cura.bak" and start fresh (OSX: "~/Library/ApplicationSupport/cura" - Win/Linux: click). And change the start and end G-Code of the printer and your Y-merger retraction definition configurations accordingly. For me I had to replace home Z instruction with auto bed calibration instructions. And set the proper distance for retraction.
I will release my settings for all of you to freely download, as soon as I successfully printed a dual extruded thing.

Update 3-1 - Cura version 2.3.1:

So I learned how to merge STL files in Cura from their PDF guide. But could not manage to get multiple extruders.
It seems I have to dig into the files of Cura. There is an topic about how to create a custom dual extrusion printer profile.
I will be trying this soon and report back if I manage to set it up.

Update 2-3 - idler:

Currently this extruder is mounted on the 3D printer with only one idler, for testing purposes.
I must say, the print quality is noticeably improved already over my previous "Improved E3D wade extruder".
Also made a quick video of the test setup with 1 idler. The E-steps/mm have been calculated as followed: E-steps/mm = (stepper motor steps/rotation • stepper driver µsteps) / (gear diameter mm • pi). Which in my case is E-steps/mm = (400 steps • 32 µsteps) / (7mm • pi) = 582

Update 2-2 - idler:

I am glad to confirm that the idler printed successfully and came out smooth AF!
Again no inner supports for the filament feedholes, just pushed a long M3 bolt through. And the PTFE ID=2 OD=3 went in fine. I did had to cut the tube 1mm shorter at the bearing side, to make filament move through smoother.
Everything else fit fine aswel: M3 washer fits into recess and bearing bolted down fine using M4 bolt.

Update 2-1 - idler:

The idler is being printed as I type this. I will keep you up-to-date.

  • Even before printing the idler, I downloaded Autodesk Netfabb standard and repaired the STL. See file idler_repaired.stl
  • Also I now have switched to Cura 2.3.1.
  • I will check fittment of the PTFE tube ID=2mm OD=3mm into the idle's filament feedholes.
  • Fasteners still have to come in, but maybe I can find some bolts laying around for testing fitment.
  • If everything checks out, I am going to print a mirrored idler for the left side. And continue on onto to washers.stl.

Update 1-3 - body HS-422/HS425bb:

So for the body the order of the PC4-M5 Pneumatic straight fittings came in together with some PTFE tube ID=2mm OD=3mm.

  • The PC4-M5 Pneumatic straight fittings mount up nicely using downward force and turning at the same time. If you have a M5 thread cutter it's easier.
  • PTFE tube went through the filament holes nicely. Using a blade of a box cutter, I cut one end straight before inserting. Where it sticks out I followed the curve with the blade.
  • See pictures

So far so good. :)

Next up is printing an idler and mirrored idler. Push in PTFE tube the filament feedholes. And figure out a spring. I'll probably be making one out of a binder clip arm (chrome part).

Update 1-2 - body HS-422/HS425bb:

The body-hs422-hs425bb_repaired.stl printed successfully! using ABS. See the pictures.

  • Feels smooth to the touch
  • The filament guide holes came out great without internal supports (after pushing through an M3 bolt).
  • When the PC4-M5 Pneumatic straight fittings come in, I can check fitment of the holes.
  • Also the Tamiya TSU-04 servomotor (from a Tamiya TT-02 RC car) fits after removal of "Elefant Foot". So you might want to print on a raft using more filament and time, but a sharp knife or a vile would make quick work of it.

Update 1-1 - body HS-422/HS425bb:

I've ran into shifting layers of body-hs422-hs425bb.stl. Please let me know if anyone else is experiencing issues.
Might be an issue with the printer, overheating stepper motors, firmware. Or Cura. But then I ran the STL through NetFabb and it found a few issues. The repaired STL has been included for your pleasure.


I still have to try re-printing this part.

Since then I've have changed some things, because I've had this shifting layers problem on long prints before, even on repaired STL files.

  • Added a fan on the Y-steppermotor, less heat less chance of loosing steps.
  • Repetier-firmware: #define HIGH_STEPPER_DELAY 2 // For DRV8825 datasheet states a minimum of 1.9µs delay
  • Readjusted the trimpots of the stepper drivers, just a touch more Amps. Fluctuations in power could have caused not enough power for the stepper motor, causing it to loose steps.
  • Little less tension on the belt of the Y-stepper motor, so it doesn't have to work as hard. Less heat, less chance of loosing steps. It was really tight.

This is awesome, im gonna make this thing!
Just on question, what is the DC to DC converter for?

I'm glad you like it!

Depending on the board/servomotor you have, you might want to step-up the voltage appropriately to the servomotor to achieve maximum torque and/or accuracy.
First try without if you can. And if you feel necessary place a DC-DC converter.
For instance on my RAMPS-FD (running Arduino Due), the small SG90 servomotor worked without any issues on a different project.

Hi everyone!

I've added another design for a standard size Hitec servomotor (measurements were taken from the Hitec HS-422/HS-425BB). I think this would make the entire assembly much more affordable. And easier on the wallet for others to get into trying dual/quad extrusion.

Bowden dual/quad extrusion extruder (single-nozzle single-drive) + video
by FDMTech

Nice works!
I am planning to print one .
I think only problem is firmware and code.

If you have the latest Marlin you can do the proper configuration. See the instructions of BigSteve.

Direct drive dual extruder (single-nozzle and single-drive)


I really like the idea and also the way you redesigned the extruder. It looks so good in Autodesk Fusion 360.
Thank you for bringing my work forward. :-)

Hi BigSteve,

I've added another design for a standard size Hitec servomotor (measurements were taken from the Hitec HS-422/HS-425BB). I think this would make the entire assembly much more affordable. And easier on the wallet for others to get into trying dual/quad extrusion.

Bowden dual/quad extrusion extruder (single-nozzle single-drive) + video
by FDMTech

Hi, thank you for your kind words! And you're welcome! :)

Feel free to hit me up. I will reply!

would i be able to get the 360 files so i can add bowden fitting holes to the idlers for remote loading of the filament, my filment runs from the holder thru a bowden tube to the extruder and then bowden to the hotend.... i would love to give this setup a try, but instead of switching color i want it to switch to a second spool of the same filament when the runout sensor is triggered.... have a big printer and i do multiple spool printing and this would make it way more automated.....

thank you in advance....

Hi jipavsky79,

That is a cool solution!
I will send you a link soon. :)

thanks, ill upload it when im done with it and a remix credit to you.....