M906 reports E:0 on update to 1.19.2



  • Updating my 0.85 Duet from 1.17.?? to 1.19.2, I can no longer run my extruder motors (3 of them).
    Extruders were running great before the firmware update.
    Config.g statement is M906 X1000 Y1000 Z1000 E1000.
    Executing an M906 shows X:1000 Y:1000 Z:1000 E:0:0:0:0:0:0 from DWC.
    Revert back to 1.17a and the extruders work again.
    Executing an M906 after reverting back to 1.17 shows X:1000 Y:1000 Z:1000 E:1000:1000:1000:1000:1000:1000

    Before reverting back to the previous firmware, I tried modifying my config.g file to M906 X800 Y800 Z800 E1000:1000:1000:1000:1000:1000, but running M906 from DWC only showed X:800 Y:800 Z:800 E0:0:0:0:0:0.

    I have no idea why my extruder current settings would not configure correctly with the M906 command under v1.19.2.

    Here is a copy of my Config.g File:
    [c]; Configuration file for Rostock with Diamond from Perrydice

    ; Communication and general
    M111 S0 ; Debug off
    M550 PPerrydice_Delta ; Machine name and Netbios name (can be anything you like)
    M551 P************ ; Machine password (used for FTP)
    M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xED ; MAC Address
    ;*** Adjust the IP address and gateway in the following 2 lines to suit your network
    M552 P0.0.0.0 ; IP address (0 = use DHCP)
    M554 P192.168.1.1 ; Gateway
    M553 P255.255.255.0 ; Netmask
    M555 P2 ; Set output to look like Marlin
    M575 P1 B57600 S1 ; Comms parameters for PanelDue

    G21 ; Work in millimetres
    G90 ; Send absolute coordinates…
    M83 ; ...but relative extruder moves

    ;Fans
    ;M106 I1 ;Invert fans
    M106 P0 S0 ;Turn off Fan 0
    M106 P1 S0 ;Turn off Fan 1

    ; Axis and motor configuration
    M569 P0 S0 ; Drive 0 goes backward
    M569 P1 S1 ; Drive 1 goes forward
    M569 P2 S0 ; Drive 2 goes backward
    M569 P3 S0 ; EDrive 0 goes backward
    M569 P4 S0 ; EDrive 1 goes backward
    M569 P5 S1 ; EDrive 2 goes forward
    M574 X2 Y2 Z2 S1 ; set endstop configuration (all endstops at high end, active high)
    M665 R140.93 L269 B130 H396 ; set delta radius, diagonal rod length, printable radius and homed height
    M666 X-0.02 Y-0.02 Z0.04 ; put your endstop adjustments here, or let auto calibration find them
    M92 X80 Y80 Z80 ; Set axis steps/mm
    M906 X1000 Y1000 Z1000 E1000 ; Set motor currents (mA)
    M906 I60 : Set motor Idle current
    M201 X1000 Y1000 Z1000 E1000 ; Accelerations (mm/s^2)
    M203 X20000 Y20000 Z20000 E3600 ; Maximum speeds (mm/min)
    M566 X1300 Y1300 Z1300 E1300 ; Maximum instant speed changes mm/minute
    M207 S5.0 F2400 ; 5mm retraction at 2400mm.min (40mm/sec) for the all three extruders to prevent the Diamond Head ooze!

    ;PID Settings
    ;For manual adjustments: if it overshoots a lot and oscillates, either the integral gain needs to be increased or all gains should be reduced.
    ;Too much overshoot? Increase D, decrease P.
    ;Response too damped? Increase P. Ramps up quickly to a value below target temperature (0-160 fast)
    ;and then slows down as it approaches target (160-170 slow, 170-180 really slow, etc)
    ;temperature? Try increasing the I constant.
    ;M301 H0 P-24 I0.80 D105 T0.50 S1.0 ; PID settings for Print Bed (-P means bang bang setting and not PID)
    ;M301 H1 P08 I0.20 D109 T0.50 S1.0 ; PID settings for Heater 1 (Diamond Hot)
    M307 H0 A70.0 C590.1 D12.5 B1 ; Set Heated Bed temperature control
    M307 H1 A243.8 C195.4 D4.5 S1.00 B0 ; Set Hotend temperature control

    ; Thermistors
    ;*** If you have a Duet board stickered "4.7K", change R1000 to R4700 to the following M305 commands
    M305 P0 T100000 B4286 R4700 H30 L0 ; Put your own H and/or L values here to set the bed thermistor ADC correction
    M305 P1 T100000 B4375 R4700 H30 L0 ; Put your own H and/or L values here to set the 1st nozzle thermistor ADC correction
    M570 S280 ; Hot end may be a little slow to heat up so allow it 280 seconds

    ; Tool definitions
    M92 E146.27:146.27:146.27 ; Set steps/mm for extruders

    M563 P0 D0:1:2 H1 ; Define tool 0
    G10 P0 S0 R0 ; Set tool 0 operating and standby temperatures
    M567 P0 E1.0:0.0:0.0 ; Set mixing to extruder 1 at 100%
    M568 P0 S1 ; Turn on mixing S= (1 = on, 0=off)

    M563 P1 D0:1:2 H1 ; Define tool 1
    G10 P1 S0 R0 ; Set tool 1 operating and standby temperatures
    M567 P1 E0.0:1.0:0.0 ; Set mixing to extruder 2 at 100%
    M568 P1 S1 ; Turn on mixing S= (1 = on, 0=off)

    M563 P2 D0:1:2 H1 ; Define tool 2
    G10 P2 S0 R0 ; Set tool 2 operating and standby temperatures
    M567 P2 E0.0:0.0:1.0 ; Set mixing to extruder 3 at 100%
    M568 P2 S1 ; Turn on mixing S= (1 = on, 0=off)

    ; Z probe and compensation definition
    M558 P4 X0 Y0 Z0 H3 ; Z probe is a switch and is not used for homing any axes
    G31 X0 Y0 Z-.05 P500 ; Set the zprobe height and threshold (put your own values here)
    ;*** If you are using axis compensation, put the figures in the following command
    M556 S78 X0 Y0 Z0 ; Axis compensation here
    M208 S1 Z-0.2 ; set minimum Z
    M557 R150 S25 ; Probe Grid setup

    ;Select tool and begin
    T0 ; select first hot end
    [/c]


  • administrators

    I can't see anything wrong with that configuration. Some suggestions:

    1. Try deleting and re-typing the M906 line in config.g in case there is a hidden character in it.

    2. Does it make any difference if you put the I60 parameter on the first M906 line instead of on a separate M906 line?

    3. Are there any M906 or M584 commands in your homing files or in bed.g?

    4. When using 1.19.2, if you send M906 X1000 Y1000 Z1000 E1000 from the command console, are the motor currents OK after that?

    5. Does 1.20beta11 behave in the same way?



  • Try deleting and re-typing the M906 line in config.g in case there is a hidden character in it.

    I tried this several times with no change to the issue.

    Are there any M906 or M584 commands in your homing files or in bed.g

    No other M906 commands found in any config file.

    When using 1.19.2, if you send M906 X1000 Y1000 Z1000 E1000 from the command console, are the motor currents OK after that?

    This did set the proper current settings for the extruders and a M906 reported X:1000 Y:1000 Z:1000 E:1000:1000:1000:1000:1000:1000

    2. Does it make any difference if you put the I60 parameter on the first M906 line instead of on a separate M906 line?

    This made the difference. Once I placed the I60 command on the same line as the first M906 line, the E parameter was read and configured correctly.

    So now I am working great on Firmware version 1.19.2 and my new config.g M906 line looks like this:
    [c]M906 X1000 Y1000 Z1000 E1000 I60[/c]

    Thank you for your help!


  • administrators

    I've just spotted the problem in the config.g file you posted:

    [[language]]
    M906 X1000 Y1000 Z1000 E1000            ; Set motor currents (mA) 
    M906 I60                                : Set motor Idle current
    
    

    The comment on the second line needs to be introduced by a semicolon, not a colon. It worked with older versions of RRF because they only accepted uppercase letter in GCode commands. Version 1.19 accepts lowercase characters too, so the 'e' in 'Set' was being taken for an extruder current setting command.



  • I seem to be having the same issue with firmware version 2.01

    It starts off with 0mA current; when I type in M906 E(any current over 1000ma), it starts to work fine.

    Here is my excerpt from config.g:

    M906 X2000 Y1500 Z1500 U1500 E1500:1500 I30 ; Set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout

    Thanks,
    Madhu.


  • administrators

    @madhunm, please post your whole config.g file.



  • @dc42 said in M906 reports E:0 on update to 1.19.2:

    @madhunm, please post your whole config.g file.

    here it is:

    0_1537895572014_config (2).g



  • @madhunm Try retyping the line from scratch in the config.



  • @phaedrux said in M906 reports E:0 on update to 1.19.2:

    @madhunm Try retyping the line from scratch in the config.

    Done; no use.

    After rebooting, M906 in the console results in:

    M906
    Motor current (mA) - X:2000, Y:1500, Z:1500, U:1500, E:0, idle factor 30%


  • administrators

    What happens if you use E1500 in config.g instead of E1500:1500 ?

    What happens if you enter that M906 command in the GCode Console, exactly as you have it in config.g?



  • @dc42 said in M906 reports E:0 on update to 1.19.2:

    What happens if you use E1500 in config.g instead of E1500:1500 ?

    When i use E1500, it works as expected; M906 reports:
    Motor current (mA) - X:2000, Y:1500, Z:1500, U:1500, E:1500, idle factor 30%

    When I type E1500:1500 in the gcode console, i get:
    Error: GCodes: Attempt to read a GCode float array that is too long: M906 E1500:1500

    Thanks,
    Madhu.



  • @crperryjr said in M906 reports E:0 on update to 1.19.2:

    M92 E146.27:146.27:146.27 ; Set steps/mm for extruders

    I just noticed that your M92 for the E steppers steps per mm comes much later than for the other axis and after your other commands specify settings for a single E motor.

    Try moving your e steps per mm M92 back up with your other axis.


  • administrators

    @madhunm said in M906 reports E:0 on update to 1.19.2:

    @dc42 said in M906 reports E:0 on update to 1.19.2:

    What happens if you use E1500 in config.g instead of E1500:1500 ?

    When i use E1500, it works as expected; M906 reports:
    Motor current (mA) - X:2000, Y:1500, Z:1500, U:1500, E:1500, idle factor 30%

    When I type E1500:1500 in the gcode console, i get:
    Error: GCodes: Attempt to read a GCode float array that is too long: M906 E1500:1500

    Thanks,
    Madhu.

    That's as expected. Your config.g file contains this line:

    M584 X0 Y1 Z2:3 U3 E4 P4

    So you have only one extruder drive (E4 in the M584 command), not two.



  • @dc42 said in M906 reports E:0 on update to 1.19.2:

    That's as expected.

    Thanks a ton for your support! 🙂


 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.