Trouble with the Duet 2 on a Monoprice Maker Ultimate



  • For those who don't know, Monoprice Maker Ultimate is a rebadged Wanhao Duplicator 6, or D6 for short.

    Ok, so I got a Duet 2 Wifi to replace the Wanhao controller board because I believed the board's extruder driver went out on me. In the process of setup and testing of the Duet 2, I of course uncovered that it was the cable going from the controller to the print head assembly... but alas, it's too late now, I'm invested!

    I used a multimeter to build this spreadsheet/diagram of the original wiring through the cable.

    I had to use the 2.x firmware in order to get the endstops to read correctly. From the factory they seem to be wired up for Normally Open, which the 3.x firmware didn't seem to like at all.

    I also have a BLTouch v3.1 installed, and swapped out the hotend thermistor with an E3D one I had handy since the stock thermistor didn't seem to want to register correctly. I have a P1000 I can install now, but I need some help before I go any further.

    So far as I can tell, everything "works". X, Y, Z, and E all move. I can heat up the hotend and extrude filament. I can run mesh compensation and see the bed leveling details. The bed heats up. Everything "works".

    However, I have yet to print anything successfully.

    Here is the M503 output I used for initial configuration:

    Send: M503
    Recv: echo:Steps per unit:
    Recv: echo:  M92 X80.04 Y80.04 Z400.48 E94.30
    Recv: echo:Maximum feedrates (mm/s):
    Recv: echo:  M203 X300.00 Y300.00 Z5.00 E25.00
    Recv: echo:Maximum Acceleration (mm/s2):
    Recv: echo:  M201 X3000 Y3000 Z100 E500
    Recv: echo:Acceleration: S=acceleration, T=retract acceleration
    Recv: echo:  M204 S800.00 T800.00
    Recv: echo:Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s),  Z=maximum Z jerk (mm/s),  E=maximum E jerk (mm/s)
    Recv: echo:  M205 S0.00 T0.00 B20000 X10.00 Z0.40 E1.00
    Recv: echo:Home offset (mm):
    Recv: echo:  M206 X0.00 Y0.00 Z-0.15
    Recv: echo:PID settings:
    Recv: echo:   M301 P9.12 I0.41 D50.98
    

    Which lead me to this configuration:

    motor config

    The backwards/forwards stuff was trial and error, but everything seems to work as generally expected.

    I noticed that it looked like the Z axis wasn't moving as much as it should be. So I grabbed a random square thing I had handy, measured it to 35mm, and used G1 Z35 to put Z to 35mm, and sure enough, it didn't fit... but moving Z to 70 DID make it fit like I expected it to at Z35.

    So I bumped the Steps per mm from 400.98 to 800.96, re-calibrated the BLTouch and re-ran mesh leveling, and sure enough, now Z35 fits the 35mm item under it.

    I also figured out that it was set to speak "RepRap" when my slicer is configured to speak "Marlin" (as the MMU/D6 runs Marlin), so I updated the Duet's config to set it to Marlin.

    The point I'm at now, is I can print things without the horrible grinding noise that was happening before, but this is the result:

    print result 1
    print result 2

    For reference, this is the model I was trying to print.

    I'm pretty stumped, and somewhat frustrated. It's so close, and yet feels so far away from working! LOL...

    Here's the config I am using currently:

    ; Configuration file for Duet WiFi (firmware version 2.03)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.4 on Thu Oct 08 2020 15:41:48 GMT-0400 (Eastern Daylight Time)
    
    ; General preferences
    G90                                         ; send absolute coordinates...
    M83                                         ; ...but relative extruder moves
    M550 P2"MPUltimate"                          ; set printer name
    
    ; Network
    M552 S1                                     ; enable network
    M586 P0 S1                                  ; enable HTTP
    M586 P1 S0                                  ; disable FTP
    M586 P2 S1                                  ; enable Telnet
    
    ; Drives
    M569 P0 S0                                  ; physical drive 0 goes backwards
    M569 P1 S1                                  ; physical drive 1 goes forwards
    M569 P2 S0                                  ; physical drive 2 goes backwards
    M569 P3 S1                                  ; physical drive 3 goes forwards
    M584 X0 Y1 Z2 E3                            ; set drive mapping
    M350 X16 Y16 Z16 E16 I1                     ; configure microstepping with interpolation
    M92 X80.04 Y80.04 Z800.96 E94.30            ; set steps per mm
    M566 X15000.00 Y15000.00 Z300.00 E1200.00   ; set maximum instantaneous speed changes (mm/min)
    M203 X18000.00 Y18000.00 Z300.00 E1500.00   ; set maximum speeds (mm/min)
    M201 X800.00 Y800.00 Z100.00 E500.00        ; set accelerations (mm/s^2)
    M906 X1000 Y1000 Z1000 E1000 I30            ; set motor currents (mA) and motor idle factor in per cent
    M84 S30                                     ; Set idle timeout
    
    ; Axis Limits
    M208 X0 Y0 Z0 S1                            ; set axis minima
    M208 X200 Y200 Z175 S0                      ; set axis maxima
    
    ; Endstops
    M574 X1 Y1 S0                               ; set active low and disabled endstops
    M574 Z1 S2                                  ; set endstops controlled by probe
    
    ; Z-Probe
    M307 H3 A-1 C-1 D-1                         ; disable heater on PWM channel for BLTouch
    M558 P9 H5 F120 T6000                       ; set Z probe type to bltouch and the dive height + speeds
    G31 P500 X31 Y-20 Z1                     ; set Z probe trigger value, offset and trigger height
    M557 X31:200 Y20:180 S20                    ; define mesh grid
    
    ; Heaters
    M305 P0 T100000 B4138 R4700                 ; set thermistor + ADC parameters for heater 0
    M143 H0 S120                                ; set temperature limit for heater 0 to 120C
    M305 P1 T100000 B4725 C7.060000e-8 R4700 X2 ; set thermistor + ADC parameters for heater 1 and remap it to channel 2
    M143 H1 S280                                ; set temperature limit for heater 1 to 280C
    
    ; Fans
    M106 P0 S0 I0 F500 H-1                      ; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
    
    ; Tools
    M563 P0 D0 H1 F0                            ; define tool 0
    G10 P0 X0 Y0 Z0                             ; set tool 0 axis offsets
    G10 P0 R0 S0                                ; set initial tool 0 active and standby temperatures to 0C
    
    ; Custom settings are not defined
    
    ; Miscellaneous
    M501                                        ; load saved parameters from non-volatile memory
    T0                                          ; select first tool
    


  • @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    M566 X15000.00 Y15000.00 Z300.00 E1200.00 ; set maximum instantaneous speed changes (mm/min)

    this is way to high try somthing like 600 for x and y

    M305 P1 T100000 B4725 C7.060000e-8 R4700 X2

    X2 is not valid here. where did you connect the thermistor?



  • @Veti said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    this is way to high try somthing like 600 for x and y

    Ok, I'll bump it down to..

    M566 X600.00 Y600.00 Z300.00 E480.00   ; set maximum instantaneous speed changes (mm/min)
    

    Is the maximum speeds also going to need to be tweaked?

    M203 X18000.00 Y18000.00 Z300.00 E1500.00   ; set maximum speeds (mm/min)
    

    ... though this came from

    Recv: echo:Maximum Acceleration (mm/s2):
    Recv: echo:  M201 X3000 Y3000 Z100 E500
    

    which is in mm/s, though i see now it's mm/s^2, so maybe the correct way to convert it would be sqrt(3000) * 60 which is 3286? I dunno.

    I'll give M566 X600.00 Y600.00 Z300.00 E480.00 a shot.

    X2 is not valid here. where did you connect the thermistor?

    the gcode wiki says X is valid here...

    This is the config in the UI:

    ui thermistor config

    I was playing with it at some point to get it working and figured out I had it plugged into the thermistor input for E1 and not E0... I haven't changed it back yet, but I suspect that is the origin of it, since I don't have an E1 set up otherwise, only an E0.



  • @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    maximum instantaneous speed changes

    that is jerk in marlin. you are basically saying you can instantly go from 0 to 250mm/sec



  • @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    X2 is not valid here. where did you connect the thermistor?

    ok i give you that its valid, but its very unusual to specify this here.


  • Moderator

    @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    I had to use the 2.x firmware in order to get the endstops to read correctly. From the factory they seem to be wired up for Normally Open, which the 3.x firmware didn't seem to like at all.

    That's a pretty easy fix. You just need a ! in front of the pin name to invert the signal. Since you are new to reprap firmware I would suggest giving RRF3 a try. It's more flexible and capable and still being developed long term.

    If you post your RRF3 config.g we can help you out.

    It looks like you figured out your layer skips though. It's important to mind the units. mm/min versus mm/s. Convert by multiplying or dividing by 60.



  • @Veti said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    maximum instantaneous speed changes

    that is jerk in marlin. you are basically saying you can instantly go from 0 to 250mm/sec

    Ahhh! Ok, that'll let me convert better. It seems like these tweaks mostly worked.

    I'm still VERY confused why the Wanhao controller works with 400.48 steps for Z axis but the Duet 2 needs 800.96 to work right. I double-checked the cables last night and all of the wiring for Z matches X and Y. So weird.


  • Moderator

    @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    I'm still VERY confused why the Wanhao controller works with 400.48 steps for Z axis but the Duet 2 needs 800.96 to work right.

    Microstepping will also come into play in calculating steps per mm.

    Z_steps_per_mm = (motor_steps_per_rev * driver_microstep) / screw_lead

    The recommended default for the Duet is x16 microstepping with interpolation to x256 by the driver chip. So you would calculate based on x16. Maybe the microstepping for your old board was different?



  • @Phaedrux said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    I'm still VERY confused why the Wanhao controller works with 400.48 steps for Z axis but the Duet 2 needs 800.96 to work right.

    Microstepping will also come into play in calculating steps per mm.

    Z_steps_per_mm = (motor_steps_per_rev * driver_microstep) / screw_lead

    The recommended default for the Duet is x16 microstepping with interpolation to x256 by the driver chip. So you would calculate based on x16. Maybe the microstepping for your old board was different?

    Everything I was able to find said ~400 is the right answer... and most things seem to suggest the D6/MMU has 16x microstepping, which means it's a Tr8X8 screw... I dunno. It works, so I'm not really inclined to argue with it, but it sure is BIZARRE.

    I can look at the Marlin firmware tonight and see if it specifies the microstepping anywhere... the up side of having installed the BLTouch previously, I guess, is I have the source code handy... lol.

    I haven't been able to find a good reference for understanding /for sure/ which motor pins on the Duet go to which motor pins on the motors, but it seems odd that the Z axis motor would just be wired differently, too... so it's hard to say.



  • @Phaedrux said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    I had to use the 2.x firmware in order to get the endstops to read correctly. From the factory they seem to be wired up for Normally Open, which the 3.x firmware didn't seem to like at all.

    That's a pretty easy fix. You just need a ! in front of the pin name to invert the signal. Since you are new to reprap firmware I would suggest giving RRF3 a try. It's more flexible and capable and still being developed long term.

    If you post your RRF3 config.g we can help you out.

    It looks like you figured out your layer skips though. It's important to mind the units. mm/min versus mm/s. Convert by multiplying or dividing by 60.

    I'm pretty sure I tried the ! trick, but if I can get it working with V2, then I'll give V3 a shot again for good measure now that I feel like I know a bit more about what I'm doing.



  • @Phaedrux said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    I had to use the 2.x firmware in order to get the endstops to read correctly. From the factory they seem to be wired up for Normally Open, which the 3.x firmware didn't seem to like at all.

    That's a pretty easy fix. You just need a ! in front of the pin name to invert the signal. Since you are new to reprap firmware I would suggest giving RRF3 a try. It's more flexible and capable and still being developed long term.

    If you post your RRF3 config.g we can help you out.

    It looks like you figured out your layer skips though. It's important to mind the units. mm/min versus mm/s. Convert by multiplying or dividing by 60.

    So trying to get the same config on V3, I get:

    M574 X1 S1 P"!xstop"                                   ; configure active-high endstop for low end on X via pin !xstop
    M574 Y1 S1 P"!ystop"                                   ; configure active-high endstop for low end on Y via pin !ystop
    

    and that ends up reporting that the endstops are triggered... which is the same as I get if I remove the !'s.

    I also can't get the Z-probe to work with this setup. Followed this guide with the exception of using Heater3 instead of Heater7.

    I am going to throw the 2.x firmware back on and print a calibration cube and see where I'm at on that front...



  • Forgot to add, here's what i've got for a V3 config:

    ; Configuration file for Duet WiFi (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.4 on Fri Oct 09 2020 17:27:05 GMT-0400 (Eastern Daylight Time)
    
    ; General preferences
    G90                                                    ; send absolute coordinates...
    M83                                                    ; ...but relative extruder moves
    M550 P"MPUltimate"                                     ; set printer name
    
    ; Network
    M552 S1                                                ; enable network
    M586 P0 S1                                             ; enable HTTP
    M586 P1 S0                                             ; disable FTP
    M586 P2 S1                                             ; enable Telnet
    
    ; Drives
    M569 P0 S1                                             ; physical drive 0 goes forwards
    M569 P1 S0                                             ; physical drive 1 goes backwards
    M569 P2 S0                                             ; physical drive 2 goes backwards
    M569 P3 S0                                             ; physical drive 3 goes backwards
    M584 X0 Y1 Z2 E3                                       ; set drive mapping
    M350 X16 Y16 Z16 E16 I1                                ; configure microstepping with interpolation
    M92 X80.00 Y80.00 Z800.00 E94.30                       ; set steps per mm
    M566 X600.00 Y600.00 Z24.00 E60.00                     ; set maximum instantaneous speed changes (mm/min)
    M203 X7200.00 Y7200.00 Z300.00 E300.00                 ; set maximum speeds (mm/min)
    M201 X800.00 Y800.00 Z100.00 E500.00                   ; set accelerations (mm/s^2)
    M906 X1000 Y1000 Z1000 E1000 I50                       ; set motor currents (mA) and motor idle factor in per cent
    M84 S30                                                ; Set idle timeout
    
    ; Axis Limits
    M208 X0 Y0 Z0 S1                                       ; set axis minima
    M208 X200 Y200 Z175 S0                                 ; set axis maxima
    
    ; Endstops
    M574 X1 S1 P"!xstop"                                    ; configure active-high endstop for low end on X via pin xstop
    M574 Y1 S1 P"!ystop"                                    ; configure active-high endstop for low end on Y via pin ystop
    M574 Z1 S2                                             ; configure Z-probe endstop for low end on Z
    
    ; Z-Probe
    M950 S0 C"exp.heater3"                                 ; create servo pin 0 for BLTouch
    M558 P9 C"^zprobe.in" H5 F120 T6000                    ; set Z probe type to bltouch and the dive height + speeds
    G31 P500 X31 Y-20 Z1                                   ; set Z probe trigger value, offset and trigger height
    M557 X31:200 Y0:180 S10                                ; define mesh grid
    
    ; Heaters
    M308 S0 P"bedtemp" Y"thermistor" T100000 B4138         ; configure sensor 0 as thermistor on pin bedtemp
    M950 H0 C"bedheat" T0                                  ; create bed heater output on bedheat and map it to sensor 0
    M307 H0 B1 S1.00                                       ; enable bang-bang mode for the bed heater and set PWM limit
    M140 H0                                                ; map heated bed to heater 0
    M143 H0 S120                                           ; set temperature limit for heater 0 to 120C
    M308 S1 P"e1temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin e1temp
    M950 H1 C"e0heat" T1                                   ; create nozzle heater output on e0heat and map it to sensor 1
    M307 H1 B0 S1.00                                       ; disable bang-bang mode for heater  and set PWM limit
    
    ; Fans
    M950 F0 C"fan0" Q500                                   ; create fan 0 on pin fan0 and set its frequency
    M106 P0 S0 H-1                                         ; set fan 0 value. Thermostatic control is turned off
    
    ; Tools
    M563 P0 D0 H1 F0                                       ; define tool 0
    G10 P0 X0 Y0 Z0                                        ; set tool 0 axis offsets
    G10 P0 R0 S0                                           ; set initial tool 0 active and standby temperatures to 0C
    
    ; Custom settings are not defined
    
    ; Miscellaneous
    M501                                                   ; load saved parameters from non-volatile memory
    T0                                                     ; select first tool
    

    Endstops read as triggered when they are not. Thermistors are reading at 2000. Total craziness. LOL!


  • Moderator

    @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    I haven't been able to find a good reference for understanding /for sure/ which motor pins on the Duet go to which motor pins on the motors,

    Identify the phase pairs, then each pair goes together on either side of the board pins. As long as the pairs aren't crossed it doesn't matter which pair is on which side. You can change motor rotation direction in config.g.

    https://duet3d.dozuki.com/Wiki/Choosing_and_connecting_stepper_motors#Section_Identifying_the_stepper_motor_phases

    f1cce1ae-665f-49e0-bd9b-c49566841410-image.png


  • Moderator

    @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    Endstops read as triggered when they are not.

    Then remove the ! from the pin name.

    How do you have the endstops wired? Are they standard 2 wire endstops, or 3 wire with a PCB?

    https://duet3d.dozuki.com/Wiki/Connecting_endstop_switches

    2000c on the temp would indicate a short circuit fault. Which heater pins are you using? Your config says e1temp, but e0temp would be the first temp sensor. Which one are you plugged into?


  • Moderator

    @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    I also can't get the Z-probe to work with this setup. Followed this guide with the exception of using Heater3 instead of Heater7.

    What exactly doesn't work? Did you also change the deployprobe and retractprobe macros to use P0 instead of P3 or P7?



  • @Phaedrux said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    Endstops read as triggered when they are not.

    Then remove the ! from the pin name.

    With or without the !, it reads as triggered on V3 firmware.

    How do you have the endstops wired? Are they standard 2 wire endstops, or 3 wire with a PCB?

    https://duet3d.dozuki.com/Wiki/Connecting_endstop_switches

    They are 2 wire normally open.

    This config works fine on the V2 firmware.

    M574 X1 Y1 S0                            ; set active low and disabled endstops
    

    Am I going to need to change how they're wired up for the V3 firmware maybe? I think I have the lines connected to the two outside pins of the three pin connectors, but I'd have to double-check that.

    2000c on the temp would indicate a short circuit fault. Which heater pins are you using? Your config says e1temp, but e0temp would be the first temp sensor. Which one are you plugged into?

    I apparently had it plugged into the E1 thermistor spot before... I moved it to E0 and it works as expected on the V2 firmware with

    M305 P0 T100000 B4138 R4700              ; set thermistor + ADC parameters for heater 0
    M305 P1 T100000 B4725 C7.060000e-8 R4700 ; set thermistor + ADC parameters for heater 1
    

    I tried the config a couple different ways, even after moving it to the E0 input and setting it to E0temp, it still wouldn't work. Both still read at 2000 on V3.



  • @Phaedrux said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    I also can't get the Z-probe to work with this setup. Followed this guide with the exception of using Heater3 instead of Heater7.

    What exactly doesn't work? Did you also change the deployprobe and retractprobe macros to use P0 instead of P3 or P7?

    Yeah, I fixed all that, and even tried manually sending:

    M280 P0 S10
    

    to which it responds with "servo 0 is not defined" (or similar -- i'm printing a calibration cube on v2 firmware now or I'd check).


  • Moderator

    Servo 0 not defined would make sense if you're still using rrf2

    Can you send m122 and m98 p"config.g" and post the results ?

    It would be a lot easier if we just configured for rrf3 at this point.


  • Moderator

    How are you switching between rrf2 and rrf3?



  • @Phaedrux said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    How are you switching between rrf2 and rrf3?

    This is the million dollar question... for some reason, I had thought that just uploading the config zip file was enough.

    Your last comment lead me to check my assumptions, and yeah, it's still running 2.x...

    I'm trying to upload the bin via the web control panel now... I've managed to get web control panel to report that it's 3.x but diagnostics is still saying reprap is 2.05.1...

    Do I have to do a hard power cycle maybe?


  • Moderator

    Ah, ok, then. That answers that.

    Here's how you should proceed with the updates.

    First make sure you're running 2.05.1, and it sounds like you are, but just to make sure you have all the files needed here's how you do a complete firmware update. It just involves uploading a single zip file for each version to the sys folder via the web interface.

    Start with the 2.05.1 zip file. Then upload the 3.0 zip file. Then 3.1.1. It'll reboot between each. Then you can upload your config zip file if you haven't already.

    Upload the whole zip file. don't extract it.

    https://github.com/Duet3D/RepRapFirmware/releases/download/2.05.1/Duet2Firmware-2.05.1.zip

    https://github.com/Duet3D/RepRapFirmware/releases/download/3.0/Duet2and3Firmware-3.0.zip

    https://github.com/Duet3D/RepRapFirmware/releases/download/3.1.1/Duet2and3Firmware-3.1.1.zip



  • @Phaedrux said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    Ah, ok, then. That answers that.

    Here's how you should proceed with the updates.

    First make sure you're running 2.05.1, and it sounds like you are, but just to make sure you have all the files needed here's how you do a complete firmware update. It just involves uploading a single zip file for each version to the sys folder via the web interface.

    Start with the 2.05.1 zip file. Then upload the 3.0 zip file. Then 3.1.1. It'll reboot between each. Then you can upload your config zip file if you haven't already.

    Upload the whole zip file. don't extract it.

    https://github.com/Duet3D/RepRapFirmware/releases/download/2.05.1/Duet2Firmware-2.05.1.zip

    https://github.com/Duet3D/RepRapFirmware/releases/download/3.0/Duet2and3Firmware-3.0.zip

    https://github.com/Duet3D/RepRapFirmware/releases/download/3.1.1/Duet2and3Firmware-3.1.1.zip

    Alright! This seems to be working a lot better. It got to 3.0.0 successfully, though it's been spinning for quite a while on 3.1.1.

    The temp sensors were working though.

    Still just waiting on it to come back up after the 3.1.1 upgrade though. Might have to go a more manual route for this one since it seems to not be coming back up...



  • @thejmather said in Trouble with the Duet 2 on a Monoprice Maker Ultimate:

    though it's been spinning for quite a while on 3.1.1.

    should take less than a minute; reset and try again if it takes longer.



  • @bearer Yep, it just needed the ol' "turn it off and then on again" treatment. Let's see where I'm at functionality wise with 3.1.1 now that I'm not trying to run a v3 config on v2 firmware LOL...



  • Neat! It mostly seems to be working. Endstops are good. BLTouch is good.

    I was warming things up to do a bed probe though, and got:

    Error: Heater 0 fault: temperature rising much more slowly than the expected 1.7°C/sec

    I don't see much for options in the config editor to counter this, though...

    Config:

    ; Configuration file for Duet WiFi (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.4 on Fri Oct 09 2020 21:30:59 GMT-0400 (Eastern Daylight Time)
    
    ; General preferences
    G90                                                    ; send absolute coordinates...
    M83                                                    ; ...but relative extruder moves
    M550 P"MPUltimate"                                     ; set printer name
    
    ; Network
    M552 S1                                                ; enable network
    M586 P0 S1                                             ; enable HTTP
    M586 P1 S0                                             ; disable FTP
    M586 P2 S1                                             ; enable Telnet
    
    ; Drives
    M569 P0 S0                                             ; physical drive 0 goes backwards
    M569 P1 S1                                             ; physical drive 1 goes forwards
    M569 P2 S0                                             ; physical drive 2 goes backwards
    M569 P3 S1                                             ; physical drive 3 goes forwards
    M584 X0 Y1 Z2 E3                                       ; set drive mapping
    M350 X16 Y16 Z16 E16 I1                                ; configure microstepping with interpolation
    M92 X80.00 Y80.00 Z800.00 E94.30                       ; set steps per mm
    M566 X600.00 Y600.00 Z24.00 E60.00                     ; set maximum instantaneous speed changes (mm/min)
    M203 X7200.00 Y7200.00 Z300.00 E300.00                 ; set maximum speeds (mm/min)
    M201 X800.00 Y800.00 Z100.00 E500.00                   ; set accelerations (mm/s^2)
    M906 X1000 Y1000 Z1000 E1000 I50                       ; set motor currents (mA) and motor idle factor in per cent
    M84 S30                                                ; Set idle timeout
    
    ; Axis Limits
    M208 X0 Y0 Z0 S1                                       ; set axis minima
    M208 X200 Y200 Z175 S0                                 ; set axis maxima
    
    ; Endstops
    M574 X1 S1 P"!^xstop"                                  ; configure active-high endstop for low end on X via pin !^xstop
    M574 Y1 S1 P"!^ystop"                                  ; configure active-high endstop for low end on Y via pin !^ystop
    M574 Z1 S2                                             ; configure Z-probe endstop for low end on Z
    
    ; Z-Probe
    M950 S0 C"exp.heater3"                                 ; create servo pin 0 for BLTouch
    M558 P9 C"^zprobe.in" H5 F120 T6000                    ; set Z probe type to bltouch and the dive height + speeds
    G31 P500 X31 Y-20 Z1                                   ; set Z probe trigger value, offset and trigger height
    M557 X31:200 Y0:180 S10                                ; define mesh grid
    
    ; Heaters
    M308 S0 P"bedtemp" Y"thermistor" T100000 B4138         ; configure sensor 0 as thermistor on pin bedtemp
    M950 H0 C"bedheat" T0                                  ; create bed heater output on bedheat and map it to sensor 0
    M307 H0 B1 S1.00                                       ; enable bang-bang mode for the bed heater and set PWM limit
    M140 H0                                                ; map heated bed to heater 0
    M143 H0 S120                                           ; set temperature limit for heater 0 to 120C
    M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin e0temp
    M950 H1 C"e0heat" T1                                   ; create nozzle heater output on e0heat and map it to sensor 1
    M307 H1 B0 S1.00                                       ; disable bang-bang mode for heater  and set PWM limit
    
    ; Fans
    M950 F0 C"fan0" Q500                                   ; create fan 0 on pin fan0 and set its frequency
    M106 P0 S0 H-1                                         ; set fan 0 value. Thermostatic control is turned off
    
    ; Tools
    M563 P0 D0 H1 F0                                       ; define tool 0
    G10 P0 X0 Y0 Z0                                        ; set tool 0 axis offsets
    G10 P0 R0 S0                                           ; set initial tool 0 active and standby temperatures to 0C
    
    ; Custom settings are not defined
    
    ; Miscellaneous
    M501                                                   ; load saved parameters from non-volatile memory
    T0                                                     ; select first tool