Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix print hang with LA #25557

Merged
merged 3 commits into from
Mar 26, 2023

Conversation

tombrazier
Copy link
Contributor

@tombrazier tombrazier commented Mar 24, 2023

Description

#25541 causes the MCU to hang and then reboot when using LA. This is reported on 32 bit MCUs and so cannot be caused by the changes to the AVR calc_timer_interval() code. The only other change was to bit shift the parameter to calc_timer_interval() rather than bit shift the result. This must now be causing a division by zero in some cases.

Since the change to the bit shift was only there for high speed edge cases with an AVR and only to increase the accuracy of the LA step timer interval, it can be reverted.

[Edit: But a better change would be to handle the division by zero which is only ever going to happen when the LA ISR interval is supposed to be greater than 1 second, which is an undesirable edge case that block E stepper movement. If calc_timer_interval() returns HAL_TIMER_TYPE_MAX (i.e. LA_ADV_NEVER) then as soon as a more reasonable ISR rate is generated, it will be applied.]

Related Issues

#25553

… and the right answer is to give an infinite timer interval
@thisiskeithb thisiskeithb added Needs: Testing Testing is needed for this change PR: Bug Fix S: Don't Merge Work in progress or under discussion. F: Linear Advance labels Mar 24, 2023
@thisiskeithb
Copy link
Member

thisiskeithb commented Mar 24, 2023

I’ll add those debug statements mentioned in #25553 (comment) & get them tested today to find out which call is causing the crash since it’s not a divide by zero bug.

Edit: It's this one:

la_interval = calc_timer_interval(current_block->nominal_rate >> current_block->la_scaling);

Updated stepper.cpp: stepper.cpp.zip

And the updated diff:

diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp
index 5c0034a..70f2f64 100644
--- a/Marlin/src/module/stepper.cpp
+++ b/Marlin/src/module/stepper.cpp
@@ -2254,7 +2254,17 @@ hal_timer_t Stepper::block_phase_isr() {
         #if ENABLED(LIN_ADVANCE)
           if (la_active) {
             const uint32_t la_step_rate = la_advance_steps < current_block->max_adv_steps ? current_block->la_advance_rate : 0;
+            SERIAL_EOL();
+            SERIAL_ECHO("Call 1 Start");
+            SERIAL_EOL();
             la_interval = calc_timer_interval((acc_step_rate + la_step_rate) >> current_block->la_scaling);
+            SERIAL_ECHOLNPGM("la_interval: ", la_interval);
+            SERIAL_ECHOLNPGM("step_rate: ", (acc_step_rate + la_step_rate) >> current_block->la_scaling);
+            SERIAL_ECHOLNPGM("asr: ", acc_step_rate);
+            SERIAL_ECHOLNPGM("lsr: ", la_step_rate);
+            SERIAL_ECHOLNPGM("las: ", current_block->la_scaling);
+            SERIAL_ECHO("Call 1 End");
+            SERIAL_EOL();
           }
         #endif
 
@@ -2326,7 +2336,17 @@ hal_timer_t Stepper::block_phase_isr() {
             const uint32_t la_step_rate = la_advance_steps > current_block->final_adv_steps ? current_block->la_advance_rate : 0;
             if (la_step_rate != step_rate) {
               bool reverse_e = la_step_rate > step_rate;
+              SERIAL_EOL();
+              SERIAL_ECHO("Call 2 Start");
+              SERIAL_EOL();
               la_interval = calc_timer_interval((reverse_e ? la_step_rate - step_rate : step_rate - la_step_rate) >> current_block->la_scaling);
+              SERIAL_ECHOLNPGM("la_interval: ", la_interval);
+              //SERIAL_ECHOLNPGM("step_rate: ", (acc_step_rate + la_step_rate) >> current_block->la_scaling);
+              //SERIAL_ECHOLNPGM("asr: ", acc_step_rate);
+              SERIAL_ECHOLNPGM("lsr: ", la_step_rate);
+              SERIAL_ECHOLNPGM("las: ", current_block->la_scaling);
+              SERIAL_ECHO("Call  2 End");
+              SERIAL_EOL();
 
               if (reverse_e != motor_direction(E_AXIS)) {
                 TBI(last_direction_bits, E_AXIS);
@@ -2384,7 +2404,17 @@ hal_timer_t Stepper::block_phase_isr() {
 
           #if ENABLED(LIN_ADVANCE)
             if (la_active)
+              SERIAL_EOL();
+              SERIAL_ECHO("Call 3 Start");
+              SERIAL_EOL();
               la_interval = calc_timer_interval(current_block->nominal_rate >> current_block->la_scaling);
+              SERIAL_ECHOLNPGM("la_interval: ", la_interval);
+              //SERIAL_ECHOLNPGM("step_rate: ", (acc_step_rate + la_step_rate) >> current_block->la_scaling);
+              //SERIAL_ECHOLNPGM("asr: ", acc_step_rate);
+              //SERIAL_ECHOLNPGM("lsr: ", la_step_rate);
+              SERIAL_ECHOLNPGM("las: ", current_block->la_scaling);
+              SERIAL_ECHO("Call 3 End");
+              SERIAL_EOL();
           #endif
         }
 
@@ -2706,7 +2736,17 @@ hal_timer_t Stepper::block_phase_isr() {
       #if ENABLED(LIN_ADVANCE)
         if (la_active) {
           const uint32_t la_step_rate = la_advance_steps < current_block->max_adv_steps ? current_block->la_advance_rate : 0;
+          SERIAL_EOL();
+          SERIAL_ECHO("Call 4 Start");
+          SERIAL_EOL();
           la_interval = calc_timer_interval((current_block->initial_rate + la_step_rate) >> current_block->la_scaling);
+          SERIAL_ECHOLNPGM("la_interval: ", la_interval);
+          //SERIAL_ECHOLNPGM("step_rate: ", (acc_step_rate + la_step_rate) >> current_block->la_scaling);
+          //SERIAL_ECHOLNPGM("asr: ", acc_step_rate);
+          SERIAL_ECHOLNPGM("lsr: ", la_step_rate);
+          SERIAL_ECHOLNPGM("las: ", current_block->la_scaling);
+          SERIAL_ECHO("Call 4 End");
+          SERIAL_EOL();
         }
       #endif
     }

la_interval was 571 when it failed. Here's some of the log I have before it rebooted (right after the purge line / after the move to the center of the bed):

log output:

Recv: Call 3 Start
Recv: la_interval: 209
Recv: las: 0
Recv: Call 3 End
Recv: ok
Send: N50 G1 X150.372 Y131.346 E.09582*97
Recv: ok
Send: N51 G1 X148.024 Y133.735 E.12833*102
Recv: Call 3 Start
Recv: la_interval: 571
Recv: las: 0
Recv: Call 3 End
[...]
Recv: 
Communication timeout while printing, trying to trigger response from printer. Configure long running commands or increase communication timeout if that happens regularly on specific commands or long moves.
[...]
Unexpected error while reading serial port, please consult octoprint.log for details: SerialException: 'device reports readiness to read but returned no data (device disconnected or multiple access on port?)' @ comm.py:_readline:3997

@thinkyhead
Copy link
Member

thinkyhead commented Mar 25, 2023

What is the effect of returning HAL_TIMER_TYPE_MAX? Apparently "never"…?

Of course, the very fastest that the Stepper ISR can run is set by STEPPER_TIMER_RATE (typically F_CPU / 8) so I don't know whether returning STEPPER_TIMER_RATE would produce more "realistic" results for the multi-stepping calculation that follows.

@thinkyhead
Copy link
Member

la_interval was 571 when it failed. Here's some of the log I have before it rebooted (right after the purge line / after the move to the center of the bed):

Possibly the crash was caused by the serial print itself, so it would be best to test without those in the ISR. Values can instead be copied to a global and printed periodically in the main loop.

@thinkyhead thinkyhead merged commit 241c062 into MarlinFirmware:bugfix-2.1.x Mar 26, 2023
@tombrazier
Copy link
Contributor Author

What is the effect of returning HAL_TIMER_TYPE_MAX? Apparently "never"…?

Yes, it means "never" but it also means "keep checking back in case la_interval has changed". See where nextAdvanceISR is set in Stepper::isr(). In thinking about all this I realise there is bug if step rates are momentarily really low, as they can be around the point the E stepper reverses during deceleration. In that case nextAdvanceISR may not get updated again for a long time even after step rates have increased dramatically.

Possibly the crash was caused by the serial print itself

I think this has been happening quite a lot which has confused tracking down the bug quite significantly. On AVR I have found that serial output from the stepper ISR works very well. But I guess different HALs handle serial differently.

@RV-from-be
Copy link

RV-from-be commented Mar 26, 2023

@tombrazier
I've been following this problem with interest which I also saw with my Creality v422 and v427 motherboards by enabling the L.A. I'm sorry this PR doesn't fix it. Printing always stops almost immediately. On the other hand, going back to this commit ee04743 and adding this PR, printing continues normally!

@tombrazier
Copy link
Contributor Author

@RV-from-be I think there may be two issues. See here. Interestingly @ThomasToka also has a Creality mainboard that does not respond to this PR. Could you post the config and gcode you are using on your 4.2.7 board? I have one here so should be able to replicate it.

@ThomasToka
Copy link
Contributor

Should i now add a120dfe

after i added the commit 241c062 and check again?

@RV-from-be
Copy link

RV-from-be commented Mar 26, 2023

@ThomasToka @tombrazier
I tested first with the PR 241c062 and this commit a120dfe without Input Shaping but LA activated > Printing always stops almost immediately (when printing the letters of the first layer of a benchy!).

Then I redid the test with the PR 241c062, and this commit ee04743 -> printing continuesd normally!

(UI -> Marlinui for E3V2)

@ThomasToka
Copy link
Contributor

included this

// A fast processor can just do integer division
    return step_rate ? uint32_t(STEPPER_TIMER_RATE) / step_rate : HAL_TIMER_TYPE_MAX;

and now it works with the rest included also.

@RV-from-be
Copy link

included this

// A fast processor can just do integer division
    return step_rate ? uint32_t(STEPPER_TIMER_RATE) / step_rate : HAL_TIMER_TYPE_MAX;

and now it works with the rest included also.

@ThomasToka
What do you mean by: now it works with the rest included also? With this commit included ee04743?

@ThomasToka
Copy link
Contributor

my print did not stop anymore after adding the mentioned line to the pr. am not on my desk now..

@ThomasToka
Copy link
Contributor

ok users report some freezes frequently. cant deliver logs but the fact that it seems not to be all fixed.

can you guys say something what to revert to be safe?

@thisiskeithb
Copy link
Member

thisiskeithb commented Apr 1, 2023

@ThomasToka & @RV-from-be: It's not clear if you are testing with the latest code / have properly applied all patches.

Since this PR has been merged, please download bugfix-2.1.x to test with the latest code and let us know if you're still having this issue. Note: Other than applying your configurations, no other patches/code modification is required.

If you are still experiencing crashes, please leave a comment in #25553 and be sure to attach a ZIP file containing your Configuration.h, Configuration_adv.h, and G-code.

shadow578 added a commit to shadow578/Marlin-H32 that referenced this pull request Apr 7, 2023
* [cron] Bump distribution date (2023-03-05)

* 🐛 Fix apply_power for SPINDLE_SERVO (MarlinFirmware#25465)

* 🐛 Fix Flash EEPROM for STM32G0B1CB (MarlinFirmware#25469)

* 🌐 Update Turkish language (MarlinFirmware#25447)

* [cron] Bump distribution date (2023-03-06)

* 🧑‍💻 Script to make non-accented languages

* 🌐 Update Turkish language

Followup to MarlinFirmware#25447

* [cron] Bump distribution date (2023-03-07)

* 🌐 DGUS Reloaded non-accented French (MarlinFirmware#25443)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>

* 🔧 Add DGUS_LCD_UI RELOADED conditions

* [cron] Bump distribution date (2023-03-08)

* ✨ Extra Z Servo Probe options (MarlinFirmware#21427)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>

* 🔧 Update some config.ini options

* 🔨 VSCode + Devcontainer support (MarlinFirmware#22420)

* [cron] Bump distribution date (2023-03-09)

* ✨ Z_SAFE_HOMING_POINT_ABSOLUTE (MarlinFirmware#23069)

* [cron] Bump distribution date (2023-03-10)

* ✨ BTT Octopus Max EZ 1.0, SKR 3.0 / 3.0 EZ (MarlinFirmware#25387)

BTT Octopus Max EZ V1.0 (STM32H723VE/ZE), SKR V3.0 / V3.0 EZ (STM32H723VG)

* [cron] Bump distribution date (2023-03-11)

* 🐛 Fix Anet ET4 SD_SS_PIN (MarlinFirmware#25492)

* [cron] Bump distribution date (2023-03-12)

* BTT Octopus … followup (MarlinFirmware#25495)

Followup to MarlinFirmware#25387

* ⚡️ Exit from ISR on AVR already does sei

Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>

* 🎨 Cosmetic stepper updates

Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>

* ✨ MAX7219_DEBUG_MULTISTEPPING

Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>

* ⚡️ Use hal_timer_t for timing vars

Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>

* ⚡️ Use cached la_active state

Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>

* ⚡️ Use AxisFlags for step_needed

Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>

* [cron] Bump distribution date (2023-03-13)

* ⚡️ Major shaper optimization

Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>

* ⚡️ Set steps_per_isr in calc_multistep_timer_interval

Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>

* 🔧 Expose MULTISTEPPING_LIMIT option

Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>

* ⚡️ Optimize speed lookup for AVR

Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>

* ⚡️ Update ISR cycle counts

Co-Authored-By: tombrazier <68918209+tombrazier@users.noreply.github.com>

* 📺 DGUS_RELOADED 1.03 (MarlinFirmware#25490)

* [cron] Bump distribution date (2023-03-14)

* 🐛 Fix Polargraph without Z (MarlinFirmware#25514)

* 🐛 Fix long filename read/report (MarlinFirmware#25509)

* 🩹 Fix IA_CREALITY float, startup (MarlinFirmware#25493)

Followup to MarlinFirmware#25440

* [cron] Bump distribution date (2023-03-15)

* 🎨 Misc. formatting

* 🎨 Misc. tramming menu cleanup (MarlinFirmware#25519)

* 🩹 Fan Menu / Status fixes

Followup to MarlinFirmware#21888

* 🩹 Fix DWIN MarlinUI Fan/E/XY (MarlinFirmware#25502)

* [cron] Bump distribution date (2023-03-16)

* 🔧 Safer default for Z_MIN_PROBE_PIN override (MarlinFirmware#25524)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>

* ♻️ Refactor PROBE_PT_[123]

* ♻️ Refactor UBL 'G29 J'

* [cron] Bump distribution date (2023-03-17)

* 🚸 Refinements for UBL G29 J (tilt mesh) (MarlinFirmware#25486)

* [cron] Bump distribution date (2023-03-18)

* 🔧 Optional MPC_AUTOTUNE to save 5.5 - 5.8KB

* ✨ Sovol v1.3.1 (Sovol SV06) (MarlinFirmware#25267)

* 🧑‍💻 More IntelliSense-friendly declares

* 🎨 Clean up IA_CREALITY includes (MarlinFirmware#25530)

* 🎨 Suppress warning (MarlinFirmware#25529)

* 🔧 SQUARE_WAVE_STEPPING => EDGE_STEPPING (MarlinFirmware#25526)

Co-Authored-By: Scott Lahteine <thinkyhead@users.noreply.github.com>

* 🚸 Improve Z-Probe raise for deploy (MarlinFirmware#25498)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>

* 🐛 Fix LVGL / MKS WiFi long filename (MarlinFirmware#25483)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>

* 🔨 Fix STM32H723Vx_btt for case-sensitive (MarlinFirmware#25535)

* 🐛 Fix FYSETC Cheetah v2.0 Servo/Probe pins (MarlinFirmware#24635)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>

* 🐛 Prevent MPC E-permm overrun in Load Filament (MarlinFirmware#25531)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>

* 🚸 Fix / improve LCD_BED_TRAMMING (MarlinFirmware#25425)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>

* 🔧 Sanity-check PRINTCOUNTER_SAVE_INTERVAL + ESP32 I2S Exp (MarlinFirmware#25527)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>

* ⚡️ Smart Adaptive Multi-Stepping (MarlinFirmware#25474)

* 🚸 Temperature Variance Monitor tweaks (MarlinFirmware#23571)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>

* 🩹 Fix Ender 2 stock LCD (MarlinFirmware#25538)

* ⚡️ Misc. optimizations

* [cron] Bump distribution date (2023-03-19)

* ✨ REPORT_ADAPTIVE_FAN_SLOWING (MarlinFirmware#25537)

* 🩹 Fix a serial_ternary

* ✨ Z_SERVO_DEACTIVATE_AFTER_STOW (MarlinFirmware#24215)

* 🐛 Avoid step rate overflow (MarlinFirmware#25541)

* [cron] Bump distribution date (2023-03-20)

* ✨ PROBING_TOOL (MarlinFirmware#24411)

* [cron] Bump distribution date (2023-03-22)

* ✨ FILAMENT_SWITCH_AND_MOTION (MarlinFirmware#25548)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>

* 🧑‍💻 ExtUI::onSetPowerLoss

* [cron] Bump distribution date (2023-03-23)

* 🎨 calibration_stage => stage

* [cron] Bump distribution date (2023-03-24)

* 🩹 Reset touch screen calibration on failure (MarlinFirmware#25334)

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>

* 🎨 TMC SPI Pins

Co-Authored-By: Martin Turski <turningtides@outlook.de>

* 🎨 Pins header comments

Co-Authored-By: Martin Turski <turningtides@outlook.de>

* 🎨 Wrap font includes

Co-Authored-By: Martin Turski <turningtides@outlook.de>

* 🎨 LPC_SOFTWARE_SPI => SOFTWARE_SPI

Co-Authored-By: Martin Turski <turningtides@outlook.de>

* 🔨 INI Updates

Co-Authored-By: Martin Turski <turningtides@outlook.de>

* 🎨 Misc. fixes, cleanup

Co-Authored-By: Martin Turski <turningtides@outlook.de>

* 🩹 Update TRONXY_V10 SPI_FLASH pins

* [cron] Bump distribution date (2023-03-25)

* 🩹 Fix Chitu3D V6 default probe pin (MarlinFirmware#25552)

* 🔧 Remove TVPM warning (MarlinFirmware#25551)

* 🐛 Fix MKS Gen L 2.1 MOSFET pins (MarlinFirmware#25542)

* 🩹 Refine MKS boards with a dedicated FAN port (MarlinFirmware#25567)

* 🎨 Rename FAN_PIN to FAN0_PIN (MarlinFirmware#25568)

* 📝 Fix spelling (MarlinFirmware#25563)

* [cron] Bump distribution date (2023-03-26)

* 🎨 Timer tweaks

* 🔧 Refactor endstop state config (MarlinFirmware#25574)

* ✨ AnyCubic Vyper / Vyper LCD (MarlinFirmware#25405)

* 🩹 Fix Touch Calibration first point (MarlinFirmware#25298)

* 🧑‍💻 Auto Fan / Cooler Fan updates (MarlinFirmware#25554)

* 🐛 Prevent divide-by-zero in calc_timer_interval (MarlinFirmware#25557)

* 🔧 Sanity-check for endstop inverting

Followup to MarlinFirmware#25574

* 🔧 Clarify axis disable / timeout (MarlinFirmware#25571)

* [cron] Bump distribution date (2023-03-27)

* 🔨 Fix thread-unsafe deque iteration

* 🐛 Fix AnyCubic Vyper ProcessPanelRequest

Followup to MarlinFirmware#25405

* 🎨 Suppress a type warning (MarlinFirmware#25575)

* ⚡️ Improve TFT DMA for STM32 (MarlinFirmware#25359)

* 🐛 Fix M23 long filename support (MarlinFirmware#25540)

* [cron] Bump distribution date (2023-03-28)

* 🎨 Misc. cleanup

* 🔧 Fix up WiFi options (MarlinFirmware#25586)

* 🔨 Update config.ini endstop states

Followup to MarlinFirmware#25574

* [cron] Bump distribution date (2023-03-29)

* 🔧 Impose Hephestos 2 Bed Kit requirements (MarlinFirmware#25585)

* 🎨 Remove unused ProUI : UBLValidMesh (MarlinFirmware#25591)

* 🔨 Improve Docker local tests support (MarlinFirmware#25583)

* 🔨 MarlinSimUI updates (MarlinFirmware#25589)

* [cron] Bump distribution date (2023-03-30)

* 🩹 Update Trigorilla V006 fan pin

Followup to MarlinFirmware#25568

* 🩹 Fix Ender-3 V2 with no fan

* 🐛 Fix _HAS_FAN for fan on Pin 0

* 🎨 Refine probe, more debug

* 🩹 Fix displayed mix percentages

* [cron] Bump distribution date (2023-03-31)

* 🔧  DGUS_LCD_UI selectable options

* 🔧 Fix SENSORLESS hit state error (MarlinFirmware#25604)

* 🧑‍💻 CardReader adjustments (MarlinFirmware#25611)

* [cron] Bump distribution date (2023-04-01)

* 🎨  HAS_SHAPING => HAS_ZV_SHAPING

* ✨ Fixed-Time Motion with Input Shaping by Ulendo (MarlinFirmware#25394)

Co-authored-by: Ulendo Alex <alex@ulendo.io>

* 🐛 Fix Long FIlename lookup (MarlinFirmware#25598)

* 🌐 Update Italian language (MarlinFirmware#25587)

* 🔨 Move Docker local test script

Followup to MarlinFirmware#25583

* 🩹 FT_MOTION Followup

* 🐛 Ensure root for 'M503 C'

* 🐛 Clean up DELTA babystep Z

* 🐛 INVERT_*_DIR for FT_MOTION (MarlinFirmware#25637)

* 🔧 Move DOGLCD options

* 🧑‍💻 Update pinsformat.js

* 📝 Update Ender # labels

* [cron] Bump distribution date (2023-04-07)

* 🚸 Support CoreXY without Z (MarlinFirmware#25630)

* 🎨 Apply const (MarlinFirmware#25643)

* update `pins_Aquila_X2.h` to new format

---------

Co-authored-by: thinkyhead <thinkyhead@users.noreply.github.com>
Co-authored-by: Hans-Christian Ebke <ebke@cs.rwth-aachen.de>
Co-authored-by: alextrical <35117191+alextrical@users.noreply.github.com>
Co-authored-by: Abdullah YILMAZ <h.abdullahyilmaz@hotmail.com>
Co-authored-by: albatorsssx <albator_ssx@hotmail.com>
Co-authored-by: Kurt Haenen <Misterke@users.noreply.github.com>
Co-authored-by: Sion Williams <sion5@hotmail.co.uk>
Co-authored-by: Evgeniy Zhabotinskiy <evg-zhabotinsky@users.noreply.github.com>
Co-authored-by: Keith Bennett <13375512+thisiskeithb@users.noreply.github.com>
Co-authored-by: tombrazier <68918209+tombrazier@users.noreply.github.com>
Co-authored-by: Neo2003 <Neo2003@users.noreply.github.com>
Co-authored-by: jbubik <jbubik@centrum.cz>
Co-authored-by: Eduard Sukharev <sukharev.eh@gmail.com>
Co-authored-by: Davide Rombolà <davide.rombola@gmail.com>
Co-authored-by: dwzg <50058606+dwzg@users.noreply.github.com>
Co-authored-by: ellensp <530024+ellensp@users.noreply.github.com>
Co-authored-by: jamespearson04 <jamespearson04@hotmail.co.uk>
Co-authored-by: Michael Hill <mhill@hillsoftware.com>
Co-authored-by: James Gilliland <neclimdul@gmail.com>
Co-authored-by: Liam Powell <liam+github@liampwll.com>
Co-authored-by: George Fu <nailao_5918@163.com>
Co-authored-by: Piotr Paczyński <ppaczyn@gmail.com>
Co-authored-by: Farva42 <100859196+Farva42@users.noreply.github.com>
Co-authored-by: John Robertson <john@cirtech.co.uk>
Co-authored-by: John Lagonikas <39417467+zeleps@users.noreply.github.com>
Co-authored-by: StevilKnevil <stevilknevil@hotmail.co.uk>
Co-authored-by: FilippoR <filippo.rossoni@gmail.com>
Co-authored-by: BIGTREETECH <38851044+bigtreetech@users.noreply.github.com>
Co-authored-by: Martin Turski <turningtides@outlook.de>
Co-authored-by: Giuliano Zaro <3684609+GMagician@users.noreply.github.com>
Co-authored-by: Bob Kuhn <bob.kuhn@att.net>
Co-authored-by: Alexander Gavrilenko <jmz52@users.noreply.github.com>
Co-authored-by: Andrew <18502096+classicrocker883@users.noreply.github.com>
Co-authored-by: John Unland <junland.foss@gmail.com>
Co-authored-by: Chris Pepper <p3p@p3psoft.co.uk>
Co-authored-by: Ulendo Alex <alex@ulendo.io>
EvilGremlin pushed a commit to EvilGremlin/Marlin that referenced this pull request Apr 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
F: Linear Advance Needs: Testing Testing is needed for this change PR: Bug Fix S: Don't Merge Work in progress or under discussion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants