diff --git a/Marlin/src/gcode/temperature/M106_M107.cpp b/Marlin/src/gcode/temperature/M106_M107.cpp index 49558a77168d49a62469b0ad2f8d7c099dad6be1..5994f34761b51c37ed44a771332d44e02d3ca4f8 100644 --- a/Marlin/src/gcode/temperature/M106_M107.cpp +++ b/Marlin/src/gcode/temperature/M106_M107.cpp @@ -58,8 +58,8 @@ void GcodeSuite::M106() { const uint16_t t = parser.intval('T'); if (t > 0) return thermalManager.set_temp_fan_speed(p, t); #endif - - uint16_t s = parser.ushortval('S', 255); + uint16_t d = parser.seen('A') ? thermalManager.fan_speed[active_extruder] : 255; + uint16_t s = parser.ushortval('S', d); NOMORE(s, 255U); thermalManager.set_fan_speed(p, s); diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp index 166c585ba3574afbaa9a7539e79638bb02d15b40..0122367bcae675a28588b3b6389bba508290b0c0 100644 --- a/Marlin/src/module/temperature.cpp +++ b/Marlin/src/module/temperature.cpp @@ -2379,7 +2379,7 @@ void Temperature::isr() { #if ENABLED(FAN_SOFT_PWM) #define _FAN_PWM(N) do{ \ soft_pwm_count_fan[N] = (soft_pwm_count_fan[N] & pwm_mask) + (soft_pwm_amount_fan[N] >> 1); \ - WRITE_FAN(soft_pwm_count_fan[N] > pwm_mask ? HIGH : LOW); \ + WRITE_FAN_N(N, soft_pwm_count_fan[N] > pwm_mask ? HIGH : LOW); \ }while(0) #if HAS_FAN0 _FAN_PWM(0);