Is your feature request related to a problem? Please describe.
Currently, when a user enables NONLINEAR_EXTRUSION in Configuration_adv.h, the sub-option NONLINEAR_EXTRUSION_DEFAULT_ON is commented out by default. This forces users to manually turn on the feature via G-code or LCD and save it to EEPROM after every firmware flash or EEPROM reset.
Additionally, the advanced LCD menu only allows toggling the feature on or off, but completely lacks any interface to view, tune, or adjust the individual parameters (Coefficients A, B, and Limit C) directly from the printer. This creates a significant friction point for standalone adjustments.
Are you looking for hardware support?
No response
Describe the feature you want
I propose to improve the Non-Linear Extrusion standalone user experience through two changes:
1. Configuration Defaults (Marlin/Configuration_adv.h)
Uncomment NONLINEAR_EXTRUSION_DEFAULT_ON by default inside the existing #if ENABLED(NONLINEAR_EXTRUSION) block. Since it is already safely wrapped inside the parent condition, users who explicitly enable the feature should naturally expect it to be active upon booting without extra manual steps.
Currently, leaving it commented out forces users to manually reactivate the feature via G-code (M592 S1) or via the LCD menu and save it to EEPROM after every firmware flash or EEPROM reset (M502).
For reference, the parameter structure is defined as follows in the header comment of Marlin/src/gcode/feature/nonlinear/M592.cpp:
- M592: Get or set nonlinear extrusion parameters
- S Enable / Disable Nonlinear Extrusion
- A Quadratic coefficient (default 0.0)
- B Linear coefficient (default 0.0)
- C Constant coefficient (default 1.0)
2. LCD Menu Interface (Marlin/src/lcd/menu/menu_advanced.cpp)
Expand the advanced settings menu to include input fields for the individual parameters.
To ensure proper tuning capability, Coefficients A and B require high precision, while Limit C only needs standard precision.
Replace:
#if ENABLED(NONLINEAR_EXTRUSION)
EDIT_ITEM(bool, MSG_NLE_ON, &stepper.ne.settings.enabled);
#endif
With:
#if ENABLED(NONLINEAR_EXTRUSION)
EDIT_ITEM(bool, MSG_NLE_ON, &stepper.ne.settings.enabled);
EDIT_ITEM_FAST(float54, MSG_NLE_A, &stepper.ne.settings.coeff.A, 0.0f, 1.0f); // 4 decimals for micro-adjustments
EDIT_ITEM_FAST(float54, MSG_NLE_B, &stepper.ne.settings.coeff.B, 0.0f, 1.0f); // 4 decimals for micro-adjustments
EDIT_ITEM_FAST(float32, MSG_NLE_C, &stepper.ne.settings.coeff.C, 0.0f, 2.0f); // 2 decimals for standard limits
#endif
3. Language Definitions (Marlin/src/lcd/language/language_en.h)
Add the missing English language string definitions right after MSG_NLE_ON:
LSTR MSG_NLE_A = _UxGT("NLE Quadratic");
LSTR MSG_NLE_B = _UxGT("NLE Linear");
LSTR MSG_NLE_C = _UxGT("NLE Constant");
Note on Constant (C):
While adding the Quadratic (A) and Linear (B) menu items is essential for proper tuning, the Constant (C) coefficient is rarely changed from its default value of 1.0. Therefore, if the community prefers to keep the LCD menu more compact, the Constant (C) item can be omitted, as tuning A and B alone satisfies almost all real-world calibration needs.
Additional context
This complete implementation provides true standalone capability for Non-Linear Extrusion. It streamlines the calibration process for advanced users, prevents accidental extrusion issues if the EEPROM is wiped during a firmware update, and makes the feature significantly more accessible.
Is your feature request related to a problem? Please describe.
Currently, when a user enables
NONLINEAR_EXTRUSIONinConfiguration_adv.h, the sub-optionNONLINEAR_EXTRUSION_DEFAULT_ONis commented out by default. This forces users to manually turn on the feature via G-code or LCD and save it to EEPROM after every firmware flash or EEPROM reset.Additionally, the advanced LCD menu only allows toggling the feature on or off, but completely lacks any interface to view, tune, or adjust the individual parameters (Coefficients A, B, and Limit C) directly from the printer. This creates a significant friction point for standalone adjustments.
Are you looking for hardware support?
No response
Describe the feature you want
I propose to improve the Non-Linear Extrusion standalone user experience through two changes:
1. Configuration Defaults (
Marlin/Configuration_adv.h)Uncomment
NONLINEAR_EXTRUSION_DEFAULT_ONby default inside the existing#if ENABLED(NONLINEAR_EXTRUSION)block. Since it is already safely wrapped inside the parent condition, users who explicitly enable the feature should naturally expect it to be active upon booting without extra manual steps.Currently, leaving it commented out forces users to manually reactivate the feature via G-code (M592 S1) or via the LCD menu and save it to EEPROM after every firmware flash or EEPROM reset (M502).
For reference, the parameter structure is defined as follows in the header comment of Marlin/src/gcode/feature/nonlinear/M592.cpp:
2. LCD Menu Interface (
Marlin/src/lcd/menu/menu_advanced.cpp)Expand the advanced settings menu to include input fields for the individual parameters.
To ensure proper tuning capability, Coefficients A and B require high precision, while Limit C only needs standard precision.
Replace:
With:
3. Language Definitions (
Marlin/src/lcd/language/language_en.h)Add the missing English language string definitions right after
MSG_NLE_ON:Note on Constant (C):
While adding the Quadratic (A) and Linear (B) menu items is essential for proper tuning, the Constant (C) coefficient is rarely changed from its default value of 1.0. Therefore, if the community prefers to keep the LCD menu more compact, the Constant (C) item can be omitted, as tuning A and B alone satisfies almost all real-world calibration needs.
Additional context
This complete implementation provides true standalone capability for Non-Linear Extrusion. It streamlines the calibration process for advanced users, prevents accidental extrusion issues if the EEPROM is wiped during a firmware update, and makes the feature significantly more accessible.