Skip to content

Commit d36e6c1

Browse files
committed
Merge branch 'bugfix-2.0.x' into 2.0.x-Sapphire-Pro
2 parents e8b840f + 747a4bb commit d36e6c1

File tree

18 files changed

+99
-97
lines changed

18 files changed

+99
-97
lines changed

Marlin/src/HAL/LPC1768/main.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ void HAL_init() {
9090

9191
//debug_frmwrk_init();
9292
//_DBG("\n\nDebug running\n");
93-
// Initialise the SD card chip select pins as soon as possible
93+
// Initialize the SD card chip select pins as soon as possible
9494
#if PIN_EXISTS(SS)
9595
OUT_WRITE(SS_PIN, HIGH);
9696
#endif

Marlin/src/HAL/STM32/SoftwareSerial.h

+2-7
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,7 @@
2929
* The latest version of this library can always be found at
3030
* http://arduiniana.org.
3131
*/
32-
33-
#ifndef SOFTWARESERIAL_H
34-
#define SOFTWARESERIAL_H
32+
#pragma once
3533

3634
#include <Arduino.h>
3735

@@ -64,7 +62,6 @@ class SoftwareSerial : public Stream {
6462
uint32_t delta_start = 0;
6563

6664
// static data
67-
static bool initialised;
6865
static HardwareTimer timer;
6966
static const IRQn_Type timer_interrupt_number;
7067
static uint32_t timer_interrupt_priority;
@@ -91,7 +88,7 @@ class SoftwareSerial : public Stream {
9188
public:
9289
// public methods
9390

94-
SoftwareSerial(uint16_t receivePin, uint16_t transmitPin, bool inverse_logic = false);
91+
SoftwareSerial(uint16_t receivePin, uint16_t transmitPin, bool inverse_logic=false);
9592
virtual ~SoftwareSerial();
9693
void begin(long speed);
9794
bool listen();
@@ -115,5 +112,3 @@ class SoftwareSerial : public Stream {
115112

116113
using Print::write;
117114
};
118-
119-
#endif // SOFTWARESERIAL_H

Marlin/src/feature/pause.cpp

+11-20
Original file line numberDiff line numberDiff line change
@@ -134,15 +134,6 @@ static bool ensure_safe_temperature(const PauseMode mode=PAUSE_MODE_SAME) {
134134
return thermalManager.wait_for_hotend(active_extruder);
135135
}
136136

137-
void do_pause_e_move(const float &length, const feedRate_t &fr_mm_s) {
138-
#if HAS_FILAMENT_SENSOR
139-
runout.reset();
140-
#endif
141-
current_position.e += length / planner.e_factor[active_extruder];
142-
line_to_current_position(fr_mm_s);
143-
planner.synchronize();
144-
}
145-
146137
/**
147138
* Load filament into the hotend
148139
*
@@ -217,7 +208,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
217208
#endif
218209

219210
// Slow Load filament
220-
if (slow_load_length) do_pause_e_move(slow_load_length, FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE);
211+
if (slow_load_length) unscaled_e_move(slow_load_length, FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE);
221212

222213
// Fast Load Filament
223214
if (fast_load_length) {
@@ -226,7 +217,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
226217
planner.settings.retract_acceleration = FILAMENT_CHANGE_FAST_LOAD_ACCEL;
227218
#endif
228219

229-
do_pause_e_move(fast_load_length, FILAMENT_CHANGE_FAST_LOAD_FEEDRATE);
220+
unscaled_e_move(fast_load_length, FILAMENT_CHANGE_FAST_LOAD_FEEDRATE);
230221

231222
#if FILAMENT_CHANGE_FAST_LOAD_ACCEL > 0
232223
planner.settings.retract_acceleration = saved_acceleration;
@@ -253,7 +244,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
253244
#endif
254245
wait_for_user = true; // A click or M108 breaks the purge_length loop
255246
for (float purge_count = purge_length; purge_count > 0 && wait_for_user; --purge_count)
256-
do_pause_e_move(1, ADVANCED_PAUSE_PURGE_FEEDRATE);
247+
unscaled_e_move(1, ADVANCED_PAUSE_PURGE_FEEDRATE);
257248
wait_for_user = false;
258249

259250
#else
@@ -266,7 +257,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
266257
#endif
267258

268259
// Extrude filament to get into hotend
269-
do_pause_e_move(purge_length, ADVANCED_PAUSE_PURGE_FEEDRATE);
260+
unscaled_e_move(purge_length, ADVANCED_PAUSE_PURGE_FEEDRATE);
270261
}
271262

272263
#if ENABLED(HOST_PROMPT_SUPPORT)
@@ -331,13 +322,13 @@ bool unload_filament(const float &unload_length, const bool show_lcd/*=false*/,
331322
#endif
332323

333324
// Retract filament
334-
do_pause_e_move(-(FILAMENT_UNLOAD_PURGE_RETRACT) * mix_multiplier, (PAUSE_PARK_RETRACT_FEEDRATE) * mix_multiplier);
325+
unscaled_e_move(-(FILAMENT_UNLOAD_PURGE_RETRACT) * mix_multiplier, (PAUSE_PARK_RETRACT_FEEDRATE) * mix_multiplier);
335326

336327
// Wait for filament to cool
337328
safe_delay(FILAMENT_UNLOAD_PURGE_DELAY);
338329

339330
// Quickly purge
340-
do_pause_e_move((FILAMENT_UNLOAD_PURGE_RETRACT + FILAMENT_UNLOAD_PURGE_LENGTH) * mix_multiplier,
331+
unscaled_e_move((FILAMENT_UNLOAD_PURGE_RETRACT + FILAMENT_UNLOAD_PURGE_LENGTH) * mix_multiplier,
341332
(FILAMENT_UNLOAD_PURGE_FEEDRATE) * mix_multiplier);
342333

343334
// Unload filament
@@ -346,7 +337,7 @@ bool unload_filament(const float &unload_length, const bool show_lcd/*=false*/,
346337
planner.settings.retract_acceleration = FILAMENT_CHANGE_UNLOAD_ACCEL;
347338
#endif
348339

349-
do_pause_e_move(unload_length * mix_multiplier, (FILAMENT_CHANGE_UNLOAD_FEEDRATE) * mix_multiplier);
340+
unscaled_e_move(unload_length * mix_multiplier, (FILAMENT_CHANGE_UNLOAD_FEEDRATE) * mix_multiplier);
350341

351342
#if FILAMENT_CHANGE_FAST_LOAD_ACCEL > 0
352343
planner.settings.retract_acceleration = saved_acceleration;
@@ -436,7 +427,7 @@ bool pause_print(const float &retract, const xyz_pos_t &park_point, const float
436427

437428
// Initial retract before move to filament change position
438429
if (retract && thermalManager.hotEnoughToExtrude(active_extruder))
439-
do_pause_e_move(retract, PAUSE_PARK_RETRACT_FEEDRATE);
430+
unscaled_e_move(retract, PAUSE_PARK_RETRACT_FEEDRATE);
440431

441432
// Park the nozzle by moving up by z_lift and then moving to (x_pos, y_pos)
442433
if (!axes_need_homing())
@@ -631,11 +622,11 @@ void resume_print(const float &slow_load_length/*=0*/, const float &fast_load_le
631622
#if ENABLED(FWRETRACT)
632623
// If retracted before goto pause
633624
if (fwretract.retracted[active_extruder])
634-
do_pause_e_move(-fwretract.settings.retract_length, fwretract.settings.retract_feedrate_mm_s);
625+
unscaled_e_move(-fwretract.settings.retract_length, fwretract.settings.retract_feedrate_mm_s);
635626
#endif
636627

637628
// If resume_position is negative
638-
if (resume_position.e < 0) do_pause_e_move(resume_position.e, feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE));
629+
if (resume_position.e < 0) unscaled_e_move(resume_position.e, feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE));
639630

640631
// Move XY to starting position, then Z
641632
do_blocking_move_to_xy(resume_position, feedRate_t(NOZZLE_PARK_XY_FEEDRATE));
@@ -644,7 +635,7 @@ void resume_print(const float &slow_load_length/*=0*/, const float &fast_load_le
644635
do_blocking_move_to_z(resume_position.z, feedRate_t(NOZZLE_PARK_Z_FEEDRATE));
645636

646637
#if ADVANCED_PAUSE_RESUME_PRIME != 0
647-
do_pause_e_move(ADVANCED_PAUSE_RESUME_PRIME, feedRate_t(ADVANCED_PAUSE_PURGE_FEEDRATE));
638+
unscaled_e_move(ADVANCED_PAUSE_RESUME_PRIME, feedRate_t(ADVANCED_PAUSE_PURGE_FEEDRATE));
648639
#endif
649640

650641
// Now all extrusion positions are resumed and ready to be confirmed

Marlin/src/feature/pause.h

-2
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,6 @@ extern uint8_t did_pause_print;
8383
#define DXC_PASS
8484
#endif
8585

86-
void do_pause_e_move(const float &length, const feedRate_t &fr_mm_s);
87-
8886
bool pause_print(const float &retract, const xyz_pos_t &park_point, const float &unload_length=0, const bool show_lcd=false DXC_PARAMS);
8987

9088
void wait_for_confirmation(const bool is_reload=false, const int8_t max_beep_count=0 DXC_PARAMS);

Marlin/src/gcode/feature/camera/M240.cpp

+2-8
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,8 @@
4848

4949
#ifdef PHOTO_RETRACT_MM
5050
inline void e_move_m240(const float length, const feedRate_t &fr_mm_s) {
51-
if (length && thermalManager.hotEnoughToExtrude(active_extruder)) {
52-
#if ENABLED(ADVANCED_PAUSE_FEATURE)
53-
do_pause_e_move(length, fr_mm_s);
54-
#else
55-
current_position.e += length / planner.e_factor[active_extruder];
56-
line_to_current_position(fr_mm_s);
57-
#endif
58-
}
51+
if (length && thermalManager.hotEnoughToExtrude(active_extruder))
52+
unscaled_e_move(length, fr_mm_s);
5953
}
6054
#endif
6155

Marlin/src/inc/Version.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
* version was tagged.
4343
*/
4444
#ifndef STRING_DISTRIBUTION_DATE
45-
#define STRING_DISTRIBUTION_DATE "2020-03-28"
45+
#define STRING_DISTRIBUTION_DATE "2020-03-30"
4646
#endif
4747

4848
/**

Marlin/src/lcd/language/language_fr.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ namespace Language_fr {
9393
PROGMEM Language_Str MSG_SWITCH_PS_ON = _UxGT("Allumer alim.");
9494
PROGMEM Language_Str MSG_SWITCH_PS_OFF = _UxGT("Eteindre alim.");
9595
PROGMEM Language_Str MSG_EXTRUDE = _UxGT("Extrusion");
96-
PROGMEM Language_Str MSG_RETRACT = _UxGT("Rétraction");
96+
PROGMEM Language_Str MSG_RETRACT = _UxGT("Rétractation");
9797
PROGMEM Language_Str MSG_MOVE_AXIS = _UxGT("Déplacer un axe");
9898
PROGMEM Language_Str MSG_BED_LEVELING = _UxGT("Régler Niv. lit");
9999
PROGMEM Language_Str MSG_LEVEL_BED = _UxGT("Niveau du lit");
@@ -317,7 +317,7 @@ namespace Language_fr {
317317
PROGMEM Language_Str MSG_NO_MOVE = _UxGT("Moteurs bloqués");
318318
PROGMEM Language_Str MSG_KILLED = _UxGT("KILLED");
319319
PROGMEM Language_Str MSG_STOPPED = _UxGT("STOPPÉ");
320-
PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Rétraction mm");
320+
PROGMEM Language_Str MSG_CONTROL_RETRACT = _UxGT("Rétractation mm");
321321
PROGMEM Language_Str MSG_CONTROL_RETRACT_SWAP = _UxGT("Ech. rétr. mm");
322322
PROGMEM Language_Str MSG_CONTROL_RETRACTF = _UxGT("Vit. rétract°");
323323
PROGMEM Language_Str MSG_CONTROL_RETRACT_ZHOP = _UxGT("Saut Z mm");

Marlin/src/libs/numtostr.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ const char* ftostr52sign(const float &f) {
312312

313313
// Convert signed float to string with +12.345 format
314314
const char* ftostr53sign(const float &f) {
315-
long i = (f * 1000 + (f < 0 ? -5: 5)) / 10;
315+
long i = (f * 10000 + (f < 0 ? -5: 5)) / 10;
316316
conv[0] = MINUSOR(i, '+');
317317
conv[1] = DIGIMOD(i, 10000);
318318
conv[2] = DIGIMOD(i, 1000);

Marlin/src/module/motion.cpp

+15
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@
5555
#include "../lcd/ultralcd.h"
5656
#endif
5757

58+
#if HAS_FILAMENT_SENSOR
59+
#include "../feature/runout.h"
60+
#endif
61+
5862
#if ENABLED(SENSORLESS_HOMING)
5963
#include "../feature/tmc_util.h"
6064
#endif
@@ -332,6 +336,17 @@ void line_to_current_position(const feedRate_t &fr_mm_s/*=feedrate_mm_s*/) {
332336
planner.buffer_line(current_position, fr_mm_s, active_extruder);
333337
}
334338

339+
#if EXTRUDERS
340+
void unscaled_e_move(const float &length, const feedRate_t &fr_mm_s) {
341+
#if HAS_FILAMENT_SENSOR
342+
runout.reset();
343+
#endif
344+
current_position.e += length / planner.e_factor[active_extruder];
345+
line_to_current_position(fr_mm_s);
346+
planner.synchronize();
347+
}
348+
#endif
349+
335350
#if IS_KINEMATIC
336351

337352
/**

Marlin/src/module/motion.h

+4
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,10 @@ void sync_plan_position_e();
184184
*/
185185
void line_to_current_position(const feedRate_t &fr_mm_s=feedrate_mm_s);
186186

187+
#if EXTRUDERS
188+
void unscaled_e_move(const float &length, const feedRate_t &fr_mm_s);
189+
#endif
190+
187191
void prepare_line_to_destination();
188192

189193
void _internal_move_to_destination(const feedRate_t &fr_mm_s=0.0f

Marlin/src/module/planner.cpp

-4
Original file line numberDiff line numberDiff line change
@@ -1519,10 +1519,6 @@ void Planner::check_axes_activity() {
15191519

15201520
#endif
15211521
}
1522-
1523-
#if ENABLED(SKEW_CORRECTION)
1524-
unskew(raw);
1525-
#endif
15261522
}
15271523

15281524
#endif // HAS_LEVELING

Marlin/src/module/tool_change.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -856,7 +856,7 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) {
856856
}
857857
else {
858858
#if ENABLED(ADVANCED_PAUSE_FEATURE)
859-
do_pause_e_move(-toolchange_settings.swap_length, MMM_TO_MMS(toolchange_settings.retract_speed));
859+
unscaled_e_move(-toolchange_settings.swap_length, MMM_TO_MMS(toolchange_settings.retract_speed));
860860
#else
861861
current_position.e -= toolchange_settings.swap_length / planner.e_factor[old_tool];
862862
planner.buffer_line(current_position, MMM_TO_MMS(toolchange_settings.retract_speed), old_tool);
@@ -991,8 +991,8 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) {
991991
#if ENABLED(TOOLCHANGE_FILAMENT_SWAP)
992992
if (should_swap && !too_cold) {
993993
#if ENABLED(ADVANCED_PAUSE_FEATURE)
994-
do_pause_e_move(toolchange_settings.swap_length, MMM_TO_MMS(toolchange_settings.prime_speed));
995-
do_pause_e_move(toolchange_settings.extra_prime, ADVANCED_PAUSE_PURGE_FEEDRATE);
994+
unscaled_e_move(toolchange_settings.swap_length, MMM_TO_MMS(toolchange_settings.prime_speed));
995+
unscaled_e_move(toolchange_settings.extra_prime, ADVANCED_PAUSE_PURGE_FEEDRATE);
996996
#else
997997
current_position.e += toolchange_settings.swap_length / planner.e_factor[new_tool];
998998
planner.buffer_line(current_position, MMM_TO_MMS(toolchange_settings.prime_speed), new_tool);

Marlin/src/pins/rambo/pins_RAMBO.h

+11
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@
7272
#define Z_MIN_PROBE_PIN 30
7373
#endif
7474

75+
#ifndef FIL_RUNOUT_PIN
76+
#define FIL_RUNOUT_PIN 5
77+
#endif
78+
7579
//
7680
// Steppers
7781
//
@@ -153,6 +157,13 @@
153157
#define SPINDLE_LASER_ENA_PIN 31 // Pullup!
154158
#define SPINDLE_DIR_PIN 32
155159

160+
//
161+
// SPI for Max6675 or Max31855 Thermocouple
162+
//
163+
#ifndef MAX6675_SS_PIN
164+
#define MAX6675_SS_PIN 32 // SPINDLE_DIR_PIN / STAT_LED_BLUE_PIN
165+
#endif
166+
156167
//
157168
// M7/M8/M9 - Coolant Control
158169
//

Marlin/src/pins/ramps/pins_RAMPS.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,11 @@
169169
#define TEMP_BED_PIN 14 // Analog Input
170170
#endif
171171

172+
//
172173
// SPI for Max6675 or Max31855 Thermocouple
173-
#if DISABLED(SDSUPPORT)
174-
#define MAX6675_SS_PIN 66 // Don't use 53 if using Display/SD card
175-
#else
176-
#define MAX6675_SS_PIN 66 // Don't use 49 (SD_DETECT_PIN)
174+
//
175+
#ifndef MAX6675_SS_PIN
176+
#define MAX6675_SS_PIN 66 // Don't use 53 if using Display/SD card (SDSS) or 49 (SD_DETECT_PIN)
177177
#endif
178178

179179
//

Marlin/src/pins/ramps/pins_TRIGORILLA_14.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,13 @@
6666
#define RAMPS_D8_PIN TRIGORILLA_FAN0_PIN
6767
#else
6868
// EEB
69-
#define RAMPS_D8_PINTRIGORILLA_HEATER_BED_PIN
69+
#define RAMPS_D8_PIN TRIGORILLA_HEATER_BED_PIN
7070
#define FAN_PIN TRIGORILLA_FAN0_PIN // Override pin 4 in pins_RAMPS.h
7171
#endif
7272
#elif TEMP_SENSOR_BED
7373
// EFB (Anycubic Kossel default)
7474
#define RAMPS_D9_PIN TRIGORILLA_FAN0_PIN
75-
#define RAMPS_D8_PINTRIGORILLA_HEATER_BED_PIN
75+
#define RAMPS_D8_PIN TRIGORILLA_HEATER_BED_PIN
7676
#else
7777
// EFF
7878
#define RAMPS_D9_PIN TRIGORILLA_FAN1_PIN
@@ -83,7 +83,7 @@
8383
#define FAN1_PIN TRIGORILLA_FAN1_PIN
8484
#endif
8585
#define FAN2_PIN TRIGORILLA_FAN2_PIN
86-
#define ORIG_E0_AUTO_FAN_PINTRIGORILLA_FAN2_PIN // Used in Anycubic Kossel example config
86+
#define ORIG_E0_AUTO_FAN_PIN TRIGORILLA_FAN2_PIN // Used in Anycubic Kossel example config
8787

8888
#include "pins_RAMPS.h"
8989

buildroot/share/tests/mega2560-tests

-37
Original file line numberDiff line numberDiff line change
@@ -12,43 +12,6 @@ set -e
1212
#restore_configs
1313
#exec_test $1 $2 "Default Configuration"
1414

15-
#
16-
# Test 2 extruders (one MAX6675) and heated bed on basic RAMPS 1.4
17-
# Test a "Fix Mounted" Probe with Safe Homing, some arc options,
18-
# linear bed leveling, M48, leveling debug, and firmware retraction.
19-
#
20-
restore_configs
21-
opt_set MOTHERBOARD BOARD_RAMPS_14_EEB
22-
opt_set EXTRUDERS 2
23-
opt_set TEMP_SENSOR_0 -2
24-
opt_set TEMP_SENSOR_1 1
25-
opt_set TEMP_SENSOR_BED 2
26-
opt_set TEMP_SENSOR_PROBE 1
27-
opt_add TEMP_PROBE_PIN 12
28-
opt_set TEMP_SENSOR_CHAMBER 3
29-
opt_add HEATER_CHAMBER_PIN 45
30-
opt_set GRID_MAX_POINTS_X 16
31-
opt_set FANMUX0_PIN 53
32-
opt_disable USE_WATCHDOG
33-
opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER LCD_PROGRESS_BAR LCD_PROGRESS_BAR_TEST \
34-
FIX_MOUNTED_PROBE Z_SAFE_HOMING CODEPENDENT_XY_HOMING PIDTEMPBED \
35-
PROBING_HEATERS_OFF PROBING_FANS_OFF PROBING_STEPPERS_OFF WAIT_FOR_BED_HEATER \
36-
EEPROM_SETTINGS SDSUPPORT SD_REPRINT_LAST_SELECTED_FILE BINARY_FILE_TRANSFER \
37-
BLINKM PCA9632 RGB_LED RGB_LED_R_PIN RGB_LED_G_PIN RGB_LED_B_PIN LED_CONTROL_MENU \
38-
NEOPIXEL_LED CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CASE_LIGHT_MENU \
39-
PID_PARAMS_PER_HOTEND PID_AUTOTUNE_MENU PID_EDIT_MENU LCD_SHOW_E_TOTAL \
40-
PRINTCOUNTER SERVICE_NAME_1 SERVICE_INTERVAL_1 LEVEL_BED_CORNERS \
41-
NOZZLE_PARK_FEATURE FILAMENT_RUNOUT_SENSOR FILAMENT_RUNOUT_DISTANCE_MM \
42-
ADVANCED_PAUSE_FEATURE FILAMENT_LOAD_UNLOAD_GCODES FILAMENT_UNLOAD_ALL_EXTRUDERS \
43-
AUTO_BED_LEVELING_BILINEAR Z_MIN_PROBE_REPEATABILITY_TEST DISTINCT_E_FACTORS \
44-
SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE \
45-
BACKLASH_COMPENSATION BACKLASH_GCODE BAUD_RATE_GCODE BEZIER_CURVE_SUPPORT \
46-
FWRETRACT ARC_P_CIRCLES CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS \
47-
PSU_CONTROL AUTO_POWER_CONTROL POWER_LOSS_RECOVERY POWER_LOSS_PIN POWER_LOSS_STATE \
48-
SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER LIN_ADVANCE EXTRA_LIN_ADVANCE_K \
49-
HOST_ACTION_COMMANDS HOST_PROMPT_SUPPORT PINS_DEBUGGING MAX7219_DEBUG M114_DETAIL
50-
exec_test $1 $2 "RAMPS | EXTRUDERS 2 | CHAR LCD + SD | FIX Probe | ABL-Linear | Advanced Pause | PLR | LEDs ..."
51-
5215
#
5316
# Test a probeless build of AUTO_BED_LEVELING_UBL, with lots of extruders
5417
#

0 commit comments

Comments
 (0)