Is Linear Advance Screwed up?
Went Googling to see if I could find a solution to an issue I had with open spots in corners of prints.
Ended up here...
https://help.prusa3d.com/article/linear-advance_2252
Cool. Tells me to change the value in Filament custom GCode but my filament custom GCode sets the value to
M900 K30; Filament gcode LA 1.0
There is nothing in my custom gcode for LA1.5 like shown in the example.
Dive in to the actual gcode generated and I see
M900 K0.05 ; Filament gcode LA 1.5 M900 K30 ; Filament gcode LA 1.0
Have no idea where the line
M900 K0.05 ; Filament gcode LA 1.5
comes from
Plus it doesn't work. A different forum post says that the 1.5 line should override the 1.0 line but it doesn't.
Once I changed my Gcode using the filaments custom g-code section to
M900 K0.05 ; Filament gcode LA 1.5 M900 K0.05 ; Filament gcode LA 1.0
The corner gaps went away.
Printer running firmware 3.11.0-4955 and slicer 2.6.0
Thoughts and ideas?
RE: Is Linear Advance Screwed up?
I am not aware that LA is screwed up. My understanding is that it should work like this:
Your filament profile specifies LA 1.0 because the M900 command is in Kxx format:
M900 K30; Filament gcode LA 1.0
PrusaSlicer sees that, works out what the corresponding LA 1.5 value is and outputs that as well, putting the LA 1.5 value first. Hence:
M900 K0.05 ; Filament gcode LA 1.5 M900 K30 ; Filament gcode LA 1.0
By doing so, it is catering for the case where the G-code might be printed on firmware that supports only LA 1.0 (3.8.1 or earlier) and firmware that supports LA 1.5 (3.9.0 or later). The LA 1.5 value must go first so that the desired LA 1.0 value gets set correctly on old firmware by the second K900 command.
On firmware that supports LA 1.5, the first M900 command will act as a 'switch'.
- If it has a Kx.xx formatted value it will switch the firmware into 'native' LA 1.5 mode and any further LA 1.0 M900 Kxx formatted commands will be ignored.
- If it has a Kxx formatted value it will switch the firmware to use a built-in conversion function that creates an LA 1.5 value from the LA 1.0 value. Once that 'conversion' mode has been triggered, any further M900 Kx.xx formatted commands will be ignored.
That said, your comments suggest that the current combination of PrusaSlicer 2.6.0 and 3.11.0 firmware may behave differently to the above.
However, since you are using firmware 3.11.0, you can use only LA 1.5 by just putting the following line in your filament profile:
M900 K0.05 ; Filament gcode LA 1.5
In my filament profiles I have the following start G-code that is LA 1.5 only:
; Set-up Linear Advance version 1.5 {if (nozzle_diameter[0]==0.25) || (nozzle_diameter[0]==0.4)}M900 K0.05 ; Set LA value for 0.25mm or 0.40mm nozzles {elsif nozzle_diameter[0]==0.6}M900 K0.04 ; Set LA value for 0.60mm nozzle {elsif nozzle_diameter[0]==0.8}M900 K0.01 ; Set LA value for 0.80mm nozzle{endif}
The appropriate M900 Kx.xx value is output according to the used nozzle diameter.
It is also recommended to put the following in the 'End G-code' section of the Custom G-code in Printer Settings:
M900 K0 ; Reset LA
Most probably this ensures that the firmware is not left in LA 1.5 'native' mode or in LA 1.0 'conversion' mode for the next print, and it will behave as expected based on the format of the first M900 command received. Do you have this in your 'End G-code'?
I hope that helps.
Cheers,
Tim