Ideas on boosting speed for multi-color printing with AMS

This is a very interesting idea, I thought they looked a bit long but never got around to testing. Now I guess I’ll give this a try, easy enough to reverse if issues, eh? :grin:

A couple Q’s -

  1. I see you’re using Capricorn tubing, did you change the tubing for the whole print path?
  2. The angle on those tubes looks pretty severe, won’t that dramatically increase friction or snap filaments that are inherently brittle? Yes, I know they should all feed, but ITRW sometimes even properly dried ones are brittle.
  3. Just had a thought - I know you know about the long discussion on Banding / Ringing type artifacts?. I wonder how Capricorn tubing would affect that as it is a fair bit stiffer than standard PTFE. It would put a different load and “spring” value on the X movement. Thoughts?

This is true, and I actually have always used a very high speed (just below the grind point of the extruder) when purging on my Duet/CR-10S with the thought that the extreme pressure would also tend to knock out any stuck bits of the old filament, sort of a “super” purge.



I have timed the filament change in steps :

  • Purge tower : Width 4mm, Prime Volume 1mm³

Step time in second / Total time in second

- Fulshing volume : 107

  • Filament change start : 0.0s / 0.0s
  • Filament is cutted and back to purge position : 6.29s / 6.29s
  • Filament is unloaded : 12.06s / 18.25s
  • New filament is loaded : 5.97s / 24.32s
  • Filament finished purge : 24.31s / 48.63s
  • Prime tower finished : 3.18s / 51.81s

- Fulshing volume : 400

  • Filament change start : 0.0s / 0.0s
  • Filament is cutted and back to purge position : 5.64s / 5.64s
  • Filament is unloaded : 7.31s / 19.22s
  • New filament is loaded : 6.06s / 25.28s
  • Filament finished purge : 43.35s / 68.63s
  • Prime tower finished : 2.9s / 71.53s

Total time from one filament to another with 107mm³ of purge : 51.81s
Total time from one filament to another with 400mm³ of purge : 71.63s


LOL! You. my Friend, are a madman. I love this!


This was just for the proof of concept, I used a very old capricorn tube that I found in a mess and that I am not sure was in a very good condition, I will redo that aswell as designing a new printable Hub/Buffer support.

For now I only used Capricorn for this test, but I think that I will replace the whole tubes with Capricorn, more stiff but also more slippery ( also those inside the AMS as I think that modifing AMS feeder a bit may enable to use TPU without too much trouble, yes I have teste TPU with AMS just to find where was the bottlneck :slight_smile: ).

Yep, I share this point of view too


629 hours and counting on my X1C with all Capricorn tubing from the AMS to the hotend

It was the very first thing I did to my unit and I’ve never had a feed issue :metal:


I am currently working on the filament change g-code, there is lot of things that can be done :

  • increase movment speed
  • remove useless move (for example the filament is wiped before cut, wich is useless)
  • increase the purge speed of the filament (x3 and then maybe use less purge volume)

Also, as you pointed @ThanksForAsking ,I am testing/verifying if purging faster may requiere to purge less


from AMS to hub
In a multi AMS setup, spreading the needed filament across each AMS could speed things up if the machine could pre-prime the filament up to the hub, parallelizing the feeding. This reduces the time spent traveling from AMS to hub

between AMS hub to print head
I have not watched where the print head is at time of material switch but technically retraction could begin the moment the last layer section is printed of the prior color. Parallelizing the retraction with any movement to the chute or prim tower would gain some time.

Adding a filament cutter in the path between feeder at head and feeder at AMS Then no retraction needed. Length of filament can be calculated by volume or approximated. New color could be fed soon after the cut.

Having another extruder would allow more parallel operations. Maybe in the next printer they develop.

Besides these mostly hardware ideas seems like maxxing the feed/retract speed like you already suggested is best.


I redo the tests after making more change to the g-code :

  • Purge tower : Width 4mm, Prime Volume 1mm³

Step time in second / Total time in second

- Fulshing volume : 107

  • Filament change start : 0.0s / 0.0s
  • Filament is cutted and back to purge position :5.33s / 5.33s
  • Filament is unloaded : 11.82s / 17.15s
  • New filament is loaded : 5.98s / 23.13s
  • Filament finished purge : 16.38s / 39.51s
  • Prime tower finished : 2.63s / 42.14s

- Fulshing volume : 350 (instead of 400 on first test)

  • Filament change start : 0.0s / 0.0s
  • Filament is cutted and back to purge position : 5.22s / 5.22s
  • Filament is unloaded : 12.41s / 17.63s
  • New filament is loaded : 6.34s / 23.97s
  • Filament finished purge : 31.98s / 55.95s
  • Prime tower finished :3.09s / 59.04s

Total time from one filament to another with 107mm³ of purge : 42.14s
Total time from one filament to another with 350mm³ of purge : 59.04s

For some reasons (probably slippery or spool weight sometime loading/unloading time are a lot diferents from 5s to 10s, same spool, same print.

Also the single extruder change g-code TX (like T1) do a lot of thing in a single instruction that cant be optimized :

  • it cut the filament
  • it go to purge location
  • it unroll/roll current/next filament

And all of that with some pauses between

If anyone want to do the same measurments with the stock gcode and PTFE, it would be interresting.

Here are the five steps :
Start as soon as the hotend leave the print to begin filament change

  • Step 1 : when the filament has been cutted and hotend is over the purge location
  • Step 2 : When the old filament spool stop rotating
  • Step 3 : When the new filament spool stop rotating
  • Step 4: When the hotend start the purge block
  • Step 5: When the hotend finished and leave the purge block

Speed overview :

Unfortunatly I did not found how to speed up the purge block


Have you found a longer cable from the hub to the P1P? I was thinking I might have to make one.

1 Like

If you buy the hub (the one for multi AMS) there is a longer cable included. Or simply buy a molex cable with the correct connector. They use normal industry standard connectors.*%2540assemblyconfiguration%253A%2522Dual%2BEnded%2BConnectors%2522


Thank you, good info, looks like I will make one as I don’t plan on buying multi hub.

1 Like


Do you know how much power can be drained from this cable/printer output ? I have a strip led that use a power plug and I would preferably want to power it directly from the printer


Someone decoded it.

I have changed my GCode to remove the wipe before cutting.
It’s been running for quite sometime now.

I changed the lowering of the bed from 3mm to 2mm before cutting the filament.

Next, I removed the extra purge and retract after every purge on the color change.

After the final wipe is done, I move the head to a closer position before it goes to print.

Also, change the max temp of the filament to be closer to your print temp.
Everytime before it purges, it goes to max temp, and it needs to cool off.

I also retract the filament 5mm before cutting.



  • I removed wipe before cutting too
  • Rather than modifying the max temp, I have removed temperature change g-code, so it use the current temp to purge (because temperature change is very slow)
  • Removed all M400 too, but not sure of this one :slight_smile:

I’ll add your other suggestions and make it available on Printable soon


another idea i had when i was looking at various multi-color prints is that there could be maybe model-specific slicer improvements.

imagine a convex surface, like a smiley face where the back is flat and the face is outwards. if the mouth and the eyes are a different color, would it be possible in some geometries to print the surface color after the main model has been printed? the way the nozzle geometry meets the surface matters of course.

this way you reduce the number of filament changes. i think right now from a slicer point of view, it is still layer by layer so if just a small portion of the model is a different color, again like just the eyes on a face, the “efficiency” of the filament change becomes much worse


Great summary and request! Would love to see improved algorythm to speed up multi color print.
Especially the temp change up+down and the long movements while filament load+unload could be improved. Hopefully Bambulab will take care on this request and provide speed improvement in near future.

1 Like

I just did my first ‘embedded’ multi-color. It looked like it printed more than one layer (maybe 3?) of one color, then did the switch to the other. But, it was totally subjective. I can see an issue with doing this at all given the tapered nozzle. It widens immediately from the tip, so it would be hard to get sharp edges

Interesting stuff. Just want to highlight a small typo in “flushing volume: 400”

Probably inconsequential. Looking forward to following your progress.

Oups, thanks to pointing this out, I am too lazy to redo this stuff, but the global idea is still ok.

EDIT : I have used a chronometer with count turns (global time and each turn time), so normally the other times should be good.

1 Like