Pause Script Will Not Run, un-parseble position data

What is the problem?

Pause script will not run due to error, "Did not receive parseable position data from printer within 10.0s, continuing without it"

What did you already try to solve it?

Tried to disable M1 blocking to move allow use of scripting function of Duet controller. I am unable to prevent M1 blocking

Have you tried running in safe mode?

No, does not seem relevant to issue.

Did running in safe mode solve the problem?

No

Complete Logs

Changing monitoring state from "Printing" to "Pausing"

Send: N33 M400*23

Send: N34 M114*16

Recv: X:170.597 Y:36.067 Z:0.100 W:10.000 C:33.000 E:0.000 E0:0.0 E1:18.0 E2:0.0 E3:0.0 E4:0.0 E5:0.0 E6:0.0 Count 17686 18273 8055 11720 3300 Machine 179.797 -2.933 5.100 29.300 33.000 Bed comp -0.066

Send: N35 M105*17

Did not receive parseable position data from printer within 10.0s, continuing without it

Changing monitoring state from "Pausing" to "Paused"

WRITE HERE

Additional information about your setup

Octoprint 1.5, RiPi4, E3D ToolChanger, RepRap Firmware 2.05.1

Any help getting me going in the right direction here would be a help. Need the printer to drop the bed and move the nozzle out of the way on pause. On resume, return to position and resume.

Not being able to change the blocked settings was a bug. There is a plugin patch that you can install to get that command out of the block list. Check this here, maybe that will help?

I was unaware of that bug, I will give it a try. I may have figured out a work around using G60, but the solution is specific to RepRap. I will have to do some testing and see if it works well.

I am curious as to why Octoprint can not parse the position string. Is it because of the W and C axes?

It's hard to say since you didn't include your complete logs, or what you have configured for pause and resume GCODE scripts. I assume that is where these errors are coming from.

Posted in OP:

Send: N33 M400*23

Send: N34 M114*16

Recv: X:170.597 Y:36.067 Z:0.100 W:10.000 C:33.000 E:0.000 E0:0.0 E1:18.0 E2:0.0 E3:0.0 E4:0.0 E5:0.0 E6:0.0 Count 17686 18273 8055 11720 3300 Machine 179.797 -2.933 5.100 29.300 33.000 Bed comp -0.066

Did not receive parseable position data from printer within 10.0s, continuing without it

I looked in the error logs, there were no error codes or information that was relevant to the issue. I posted the gcode terminal output that was relevant. The gcode terminal shows that M400 was sent, clearing the command queue. M114 was sent requesting the current position, to which the printer responded with:

Recv: X:170.597 Y:36.067 Z:0.100 W:10.000 C:33.000 E:0.000 E0:0.0 E1:18.0 E2:0.0 E3:0.0 E4:0.0 E5:0.0 E6:0.0 Count 17686 18273 8055 11720 3300 Machine 179.797 -2.933 5.100 29.300 33.000 Bed comp -0.066

And Ocoprint responds in the terminal with this:

Did not receive parseable position data from printer within 10.0s, continuing without it

First line in the pause script is:

{% if pause_position.x is not none %}

Since there is no position information parsed, there is no x position data and rest of the code in the pause script is skipped.

Main question is, why is the M114 response not parsable and how do I fix it?

Just curious, do you have “Log position on pause” enabled under Settings > Serial Connection > Behaviour > Pausing?

Yes, option was turned on.

You may add M114 to the long running commands. Maybe OctoPrint is a bit too impatient. You printer is giving out lots of information.

No, the problem is the additional coordinates there between the X, Y, Z and E coordinates in the response. OctoPrint can't recognize that response as a valid position response because it has too much additional stuff cramped in between the recognized pattern. If it was

Recv: X:170.597 Y:36.067 Z:0.100 E:0.000 E0:0.0 E1:18.0 E2:0.0 E3:0.0 E4:0.0 E5:0.0 E6:0.0 W:10.000 C:33.000 Count 17686 18273 8055 11720 3300 Machine 179.797 -2.933 5.100 29.300 33.000 Bed comp -0.066

it would work. The order matters here because the only thing that OctoPrint CAN match for here is coordinates it sees, and in order to not produce false matches in case of god knows what might get built into firmware variants out there, it's quite strict about how things should look. I have no idea what W and C are supposed to be here, but if you have any way to change the output format of that position report, moving them after the E coordinates should do the trick. Otherwise a plugin might be needed to rewrite the position report.

1 Like

Thanks foosel, I suspected that was the issue. W and C are for the adjustable brush and tool locking post. I will have to pop over to the Duet forums and see if that response can be rearranged.

In the meantime I have utilized the position storing feature in the RepRep firmware as a work around.

Pause Script:

G60 S1 ;Store current position to slot 1
G91 ; use relative positioning
G1 S2 Z5 F5000 ; lift Z 5mm
G90 ; back to absolute positioning
G1 X-10 Y200 F50000 ; move out the way.

Resume Script:

M83 ; relative extruder moves
G1 E3 F50 ; extrude 3mm of filament
M98 Pprime.g ;Run prime script and wipe nozzle
G1 R1 X0 Y0 Z5 F5000 ; go to 5mm above position of the last print move
G1 R1 X0 Y0 Z0 ; go back to the last print move