Extrusion Multiplier and Filament Diameter in a print farm setting
Clear all

Extrusion Multiplier and Filament Diameter in a print farm setting  

Active Member
Extrusion Multiplier and Filament Diameter in a print farm setting

Wanted to see what the logistics are for running more than 1 printer when it comes to Extrusion Multiplier and Filament Diameter, which can vary per roll.

Note: This is for printing products I make, which are always the same.


Currently when I open a new roll of filament, I take around 10 measurements to get the filament diameter's average and I enter it into my filament's profile in PrusaSlicer. When I change rolls, I have to re-slice my files with the new filament's diameter. Usually this isn't a problem but as I begin to grow it's getting time consuming having to re-slice with each filament. I'm looking to add multiple printers to this and I can see that further complicating things.


So what would be the most efficient way of calibrating the filament diameter/extrusion multiplier so that I can have a basic gcode file, that would be printable on every printer without having to re-slice it based on filament used?


An idea I have, but unsure if it is doable:

1. Keep a constant Extrusion Multiplier of 1 in all my gcodes, and set all gcodes to use filament diameter of 1.75.

2. Erase the M221 commands in the startup and ending custom gcodes in PrusaSlicer.

3. For each roll of filament, take my measurements and then somehow set each individual printer to the correct Extrusion Multiplier amount.


Step 3 is where I'm confused if it's possible to do this. I don't want to use M221 in my files, because it will be different for each printer.

I need something that I can change 1 time for each filament/printer combo and then not touch it again until the next filament change.

Any ideas are most welcome, along with other suggestions I should be thinking of trying.



Posted : 25/07/2021 12:14 pm
Illustrious Member
Using OctoPrint?

If you are using OctoPrint, you could use it to "squirt" a bit of custom gcode into the gcode stream for each printer. You'd probably have to do some tedious match to adjust the steps per mm for the extruder.

Honestly, I'd shop for more consistent filament. 

My notes and disclaimers on 3D printing

and miscellaneous other tech projects
He is intelligent, but not experienced. His pattern indicates two dimensional thinking. -- Spock in Star Trek: The Wrath of Khan

Posted : 25/07/2021 3:59 pm
Erebus liked
Trusted Member
Enter title here

I don't have a farm (yet) but my view would be that a situation where you need to constantly change the extrusion multiplier would not really work in a farm environment. If I had a farm then I would try to work with a known selection of consistent filaments and not look to be bulk printing any model where the model has to be printed so perfectly that the printer has to be tuned to death in order to achieve a good enough print.

Posted : 25/07/2021 4:38 pm
fuchsr liked
Trusted Member

maybe leave both parameters at their standard values and adjust it with the flow parameter of the printer firmware?

print a known test sample on each printer, adjust flow on the printers until it is ok.

remove the custom gcode lines that set and reset this parameter when running a gcode.

maybe note down the flow multiplier for each printer-spool combination in case you switch them around.

Posted : 25/07/2021 6:09 pm
Erebus liked
Active Member
Topic starter answered:
Octoprint possible. Filament Diameter vs M221 setting vs Extrusion Multiplier

Thanks for the replies everyone.

Octoprint sounds like a possible solution. If I can insert custom M221 gcode on a per printer basis, that would work perfectly. I have to see if Octoprint allows custom gcode based on each printer connected to it. I don't think I would have to mess with the steps per mm for the extruder though. I never touch or change the standard Prusa steps/mm. Only the Extrusion Multiplier/flow would need changed per printer based on the filament being used, unless I'm misunderstanding.

Also, manually adjusting the flow rate on the Printer's LCD menu is a possibility but I believe once the printer is shut off, the Flow resets back to 100.


Is there a way to figure out the conversion for the Filament Diameter setting and how it translates into a M221/Flow/Extrusion Multiplier setting? For example, if the Filament Diameter averages to 1.72mm, what does that convert into for a M221 command or the "Flow" lcd menu number? Or what does the Extrusion Multiplier convert into for the M221 or Flow setting, etc...? I feel like there should be some calculation showing the relationship between them all, but haven't found it yet.

Thanks for the help all.



Posted : 26/07/2021 2:41 am
Veteran Member Moderator
RE: Going with the Flow!

this is probably not the best approach to revising the values, but if it is your preferred approach then
to correct for different dimeter filament, (assuming all other parameters remain equal), 
you need to compare the equivalent cross sectional area of the out of specification filament, to the filament specified in the slicer, and then adjust the flow rate to attempt to correct the mis match in the slicer.

My Maths skills are ancient, and there may be an easier solution... 
1.75mm filament  =  2.41 sq mm CSA  (Cross Sectional area) As programmed in the slicer  (Rounded to 2 decimal points)
1.72mm filament  =  2.32 sq mm CSA                                                                              (Rounded to 2 decimal points)
therefore the Correction factor to equate 1.72 filament to 1.75filament form factor is
(2.41 / 2.32) x 100    which equals   104%
I believe if you increased the flow rate by 104% this should correct for your undersize filament
BUT... if you are using a standard Prusa profile, and your layer height is greater than, or equal to 0.75mm, then...
M221 S{if layer_height<0.075}100{else}95{endif}  (in the standard Prusa SLicer Custom Gcode, Start  Gcode, is going to affect your results)

104% of 95%  (Layer height adjusted flow), equates to 98.8% revised Flow rate (I don't think flow rate control (M221)can handle decimal values so lets round this up to 99%)

using your proposed 'Flow control' to address 'different filament diameters' (based on the sample sizes shown above) would need to effectively apply an alternate 'flow control' correction factor of 
M221 S{if layer_height<0.075}104{else}99{endif} regards Joan


I try to make safe suggestions,You should understand the context and ensure you are happy that they are safe before attempting to apply my suggestions, what you do, is YOUR responsibility. Location Halifax UK

Posted : 26/07/2021 7:47 am
Erebus liked
Active Member
Topic starter answered:
Re: Good formula

Thanks Joan! Love a good formula to help out and that looks to be exactly what I'll need. Seeing that even the supposed best filaments are still showing the same diameter differences I'm seeing with less expensive filaments, this seems to be my best course of action.

Though I'm open to other approaches to tackle this!

Thanks for pointing out PrusaSlicer's little quirk of adjusting the Flow rate. I'm thinking it may be best/easiest to always leave it set at 100, and do my calculations based solely off of Extrusion Multiplier calibration tests. Instead of throwing 1 more variable into the mix.

Posted : 02/08/2021 7:13 am
Active Member
Topic starter answered:
CSA - Cross Sectional area formula

Also, just for future reference, CSA calculation for a 1.75mm diameter filament would be:

CSA = PI * (Filament Radius Squared)

CSA = 3.1415 * (0.875 * 0.875)

CSA = 2.41


Posted : 04/08/2021 7:22 am