MMU2S on Ender3pro with TT SKR E3 mini motherboard

In 2020 I upgraded my Ender 3 with synchronised Z-axes and a new motherboard, the SKR Mini E3 V2.1.

The Ender 3 is very reliable and has been equipped with a direct drive bondtech extruder but still has the original hotend.

I chose the Ender3 to be the 3d printer on which I will attach the MMU2S.  This also means that I will have to exchange the hotend/extruder combination with a Prusa Mk3S version.

Started this on May 4th, 2021.  Only the printed parts were needed, all other parts were already available through sourcing form a.o. Ali.  I printed everything in ABS, mostly red.  For this I used 2 machines: The Twotrees Sapphire pro with enclosure for black ABS and the Voron 2.3 (300) for red ABS.

The motherboard that is also in the Ender3, SKR mini E3 V2.1.  I used this setup to test the MMU hard- and software together with the SKR mini E3 motherboard
The MMU2S on top of the Ender3, just next to the 6mm belt that connects both Z-leadscrews
The bondtech Prusa MK3S hotend/extruder combination, mounted on a 2020 mounting plate for the Ender3

There is a firmware version for the SKR mini E3 V2.1 on Github that makes use of the MMU2S.  I downloaded this version and uploaded it to the board via visual studio code maker, all works well in the test setup. Some tweaking was needed in configuration.h and in the advance config, since I am using the S-version of the MMU2 and the filament sensor was not standard ON. And- it appears that the communication port needs to change to the 2nd port. You can see it all at the Reddit page, the additional changes to the published config files are these (thnx to fixel112):

Excerpt from Configuration.h:

#define SERIAL_PORT -1

#define SERIAL_PORT_2 2 <————— This has been the issue. Uncomment that line.

#define BAUDRATE 250000

Excerpt: Configuration_adv.h


// Serial port used for communication with MMU2.

// For AVR enable the UART port used for the MMU. (e.g., mmuSerial)

// For 32-bit boards check your HAL for available serial ports. (e.g., Serial2)

//#define MMU2_SERIAL_PORT 2

#define MMU2_SERIAL MSerial2

//#define MMU2_RST_PIN 23

// Enable if the MMU2 has 12V stepper motors (MMU2 Firmware 1.0.2 and up)

//#define MMU2_MODE_12V

// G-code to execute when MMU2 F.I.N.D.A. probe detects filament runout


#define MMU2_DEBUG // Write debug info to serial output

#endif // PRUSA_MMU2

Next is to put everything physically on the Ender, and exchange the hotend/extruder.  Then, the settings for the extrusion lengths will have to be determined.  And- the buffer for the filament between the MMU2S and the filament spools has to be installed. As soon as I have it all properly installed, more pictures will follow!

I discovered that the dual display I now use for the Ender3 will only work for Marlin LCD and no longer for TFT, since the serial TFT pins will be used to drive the MMU2S unit.  I exchanged the TFT/LCD unit with the original Ender3 LCD, I kept this in storage and tested it today with the Ender mini E3 V2.1 , it works very well!

The twotrees SKR Mini E3 V2.1 motherboard is really perfect for the combination with the MMU2S and the new  filament sensor in the new hotend/extruder. The firmware has been updated to include the MMU2S and the AUX’s serial that was previously used for the TFT screen is now in use by the MMU!  It all works!!!

Now the next thing was to get the new extruder, F.I.N.D.A. and the filament sensr to work properly.

That took some time and next on the agenda is the filament management.

I already decided to go with the original Prusa filament box with plates to hold the retracted filament for all 5 spools. The spools themselves will hang at the wall, behind the printer.  I don’t have space for standing spoolholders.  Underneath the spools the filament box with plates gets its place on the wall and from there the 5 PTFE tubes will run to the MMU!

Penta extruder on A30M

Today I received my 5-in, 1-out hotend, non-mixing  air cooled with 1 nozzle and 1 heater//temp sensor.

I will install it on my A30M with the Duet2wifi board+extension board (5-fold with plug-in drivers). The A30M already has independant Z-stepper motors.

The Duet2wifi has 5 stepper ports, and the expansion board also has 5 stepper ports.  X,Y,2xZ, 5 Extruders is a total of 9 so this will indeed fit!

I will make new wiring for the 5 extruder steppers on top of the A30M frame with 5 bowden tubes to the hotend.  Since the hotend is non-mixing, this will be a  simple task to get into config.g.  For the slicer- it will also be easy. Just add the extruders to a total of 5 pieces. Add the correct filaments/temps/ no offset so set offset X and Y to 0..  The work will primarily be in  the tool changing files for T0-T5 where retraction- and extruding  settings will be needed.

Dual carriage I3 with Duet2wifi

My last build from scratch is the dual carriage I3-based printer as shown in the below picture, in the building phase.  This printer can be used either for 2 colors or for printing with soluble support PVA filament.

Get my build plans and Configuration files for Duet2wifi HERE

The box at the left rear is for the Duet2wifi board.  The 24V fan-regulated power supply is already positioned at the rear,  right side.

The greatest challenge with this build was the settings for the dual tools.

It took 2 months before I got it correct working with both PLA and/or Petg.

As with my previous dual color dual nozzle builds, the basics is very simple. Just define 2 tools with 2 heaters, 2 temp sensors, 2 fans et cetera.

I already envisioned the approch with the slicer(s): All offsets are done ONLY in firmware, NOT in the slicer! As far as the slicer(s) is/are concerned, the nozzles of Tool0 and 1 are at the same (X0/Y0) offset.

For the Duet, the only addition in the slicer is an M0 command as stop command for the printer.  Define 2 nozzles of 1.75mm without any offset and you’re done in the slicer.

Then agin, you will need to set everything in your config.g at the tool section like XYZ offset and so on.

I decided to get T0 as reference, and set everything to 0 there. X=0, Y=0 and Z=0.  Then, measure the differences at T1 versus T0 with calipers to start with and inport these values in the T1 toolsection in config.g.

Start a testprint and measure what to amend, take little steps and the metrics are done!

But- the hard part is- as I experienced- to get good prints without blobs and unexpected stringing, both incoming as outgoing (into and out of the printed object(s).

In the end, I just took the same approach as with the tool settings: As little as possible retraction settings in the slicer and all except the basic print retractions are now in the configuration files that are called upon Tool changes tpre.g,  tfree.g and tpost.g (for T0 and T1).

This means that you can play with retracting and extruding of filament length and speed directly at, during and after Tool changes.  And- in my experience it is all affected by the type of filament you use and the temperature you are at with the hotend. Also, the fact whether you use a lower temperature during waiting has great impact.

In my experience, you should finetune the config settings for the mentioned settings per object and per type of filament.

Therefore, I decided to used this printer for only 1 goal and make the settings perfect to accomplish this goal.  Right now, I have optimized this printer to print 1) PLA from 123print in the Netherlands, of a specific type and 2) PVA from the same supplier.  This gives me the possibility to print complex objects with soluble supports and it works extremely well at doing this!

PM: I also added LED lights on top of the printer as an integrated feature.  This makes use of a heater pin as GPIO (with a M42  P [pin] S[value intensity]) command), like the solenoids that I use to catch the carriages T0 and T1. To come from the 3.3V and max 1mA from the GPIO pin to the required 24Volts, I used small mosfet boards.  All programming is done in the Duet’s config and macro files, view the below example of my stop.g file which is called from the slicer’s stop setting: M0.

; stop.g
; called when M0 (Stop) is run (e.g. when a print from SD card is cancelled)
; Also called by slicer end gcode by M0
M400 ; Finish move queue
M117 Cool down ; Update the LCD screen with “Cool down”
M83 ; Extruder relative mode
G1 E-2 ; Retract filament 2mm for both extruders !!
M106 S255 ; Fan at 100 to cool nozzle and bed
M104 S0 T0 ; Extruder T0 heater off
M104 S0 T1 ; Extruder T1 heater off
M140 S0 ; Bed heater off
G28 X ; Home X
M220 S100 ; Set speed factor back to 100% in case it was changed
M221 S100 ; Set extrusion factor back to 100% in case it was changed
M42 P4 S0 ; Magnet T0 off
M42 P5 S0 ; Magnet T1 off
M104 S41 T0 ; set extruder T0 to cool down
M104 S41 T1 ; set extruder T1 to cool down
;M568 R41:41 S41:41 ; set standby and active temperatures for tools 0 and 1 (or single M568 T0 R41 S41)
M116 ; wait for Tools actions as specified in above M568 instructions
G90 ; Absolute positioning
G1 Y200 ; to get objects removed easier, move bed forward
M106 P0 S0 ; Fan L object T0 off
M106 P2 S0 ; Fan R object T1 off
G28 X ; Home X
M84 ; Steppers off
M98 P/sys/ledflash.g; Perform execution of ledflash.g in specified directory
M42 P6 S0.008 ; Led light setting almost OFF
M117 Jantec=done! ; Update the LCD screen with “Jantec=done!”

G1 X5 Y5 ; Move to corner
M140 S{print_bed_temperature} ; Set bed temp
T1 ; Select extruder 1 (or 0 depending on how your printer is set up)
M104 S{print_temperature} ; Set extruder temp
M116; Wait for temperatures


Please donate $1 to my paypal account if you use (parts of) my developed materials so I can continue to share nice stuff for you to download


Geeetech A30M rebuilt with Duet2wifi


The motherboard of my Geeetech A30M was broken, due to a defective Y-axis motor as I experienced later.  I ordered a new Smartto motherboard from Geeetech, installed it and it broke down again, due to the shortcut in the Y motor. Very strange defect since the smartto board uses plug-in drivers.  However, unrepairable and a real pity to now be stuck with 2 smartto boards without any use for them with both having a defect on the Y output.   Exchanging drivers did not help, cables exchange did not help either…

the original smartto motherboard

After replacing the Y-motor,I decided to go for a complete rebuild of the A30M.  In the old files you can still see the original smartto experiences on the A30M HERE.

Above, the movie of the first Duet2wifi experiences and the Chimera hotend.  Later, I decided to make the extruders direct-driven.

Get my  A30M config.g for reprap 3 Duet2wifi  for the original mixing hotend (1 nozzle, 2 extruders).

Get my hotend to motherboard cable and pin assignment  via the following link: 2020 12 09 improved A30M Extruder toolhead cable to board after adding dual hotend dual nozzle dual heater and dual temp sensors

The chimera hotend, combined with dual direct drive bondtech extruders
The inside of the box of the A30M Geeetech 330x330x350mm 3d printer with the PanelDue, Duet2wifi and the 5 ports extension board attached to the Duet
This is the Paneldue 4.3 inch touch panel as mounted in the A30M case, with a very slim bezel since the Paneldue is mounted flush with the front of the A30M case.

2GSpro Delta

Mijn Deltaprinter, een Geeetech Rostock 2GSpro met 2 extruders heeft eigenlijk nooit echt goed gewerkt. De op Arduino mega gebaseerde moederprint is langzaam en als gevolg van de calculaties die het board steeds uitvoert door het vertalen van de G-codes naar besturing van de ABC motoren, lijt het allemaal net niet te lukken.

Prints zijn rafelig en aan de hardware lijkt het niet te liggen.

Voor deze printer heb ik een Duet wifi V1.04 motherboard besteld, dezelfde die ik voor de Prusa Bear installeer. Met een 4.3.inch touchscreen erbij. Zie de bouw van deze upgrade HIER:

Het installeren zal weinig problemen opleveren, de print gaat onder de printer net zoals het bestaande GT2560 board en ik schakel dan gelijk over van Arduino (en Marlin) naar reprap software.  Kwestie van smaak, maar Marlin en Arduino is erg traag bij elke update terwijl ik met bijvoorbeeld Smoothieware en een lokale config file veel snellere  veranderingen en dus ook uploads kan doen.