TFT percentage progress not updatet M73

Hi ! I'm using latest Marlin 2.1.2.1 together with latest TFT firmware (tft_fw_1.27.x_patch_11) from Digant on my Artillery Genius (not Pro).

My problem is that the percentage progress bar is only working if I'm printing via usb stick. But my normal procedure is using octoprint, then the bar and value always showing 0%. If I stop a print or a print is done then 100% is displayed.

I've checked the firmware and "SET_PROGRESS_MANUALLY" and "M73_REPORT" are defined, "SDSUPPORT" is not.
Also I've checked that M73 plugin is installed to octoprint:

Can anybody help ? I'm searching since days...



Open OctoPrint and connect to your printer. In the Terminal tab and type M73 P25 R43 (see https://marlinfw.org/docs/gcode/M073.html).

Does that update the progress as expected?

Nope unfortunately not...
I can switch to printing menu of tft firmware with:
M118 P0 A1 action:print_start

After this I send "M73 P25 R43" and nothing happens...

Also during a print in the terminal I can find that M73 and M117 are send:
Example:

Send: N442 M73 P25 R19*24
Send: N443 M117 Endtime: 20:28 - Left: 19m - 25% - L=6/124*97

From your reply, it appears that your firmware does not properly support the M73 gcode command. You didn't include the "Recv:" response to the command. On my LulzBot TAZ 6 I get:

Send: M73 P25 R43
Recv: ok P15 B3

If you get an "ok" response, then the firmware has partial support for the command but it is not updating the display as indicated in the command description.

At this point, there is nothing OctoPrint or any plugins can do. The firmware is FUBAR.

This was the complete terminal output:

Send: M118 P0 A1 action:print_start
Recv: //action:print_start
Recv: ok P15 B3
[...]
Send: M73 P25 R43
Recv: echo: M73 Progress: 25%; Time left: 43m;
Recv: ok P15 B3

The command description says "Set current print progress percentage and/or remaining time for display on the LCD" which is not the same as sending echo: M73 Progress: 25%; Time left: 43m; to the USB connection.

Clearly, the firmware implements the M73 command but not in the expected way. There isn't much OctoPrint can do so I'd suggest you contact the author of the firmware for additional support.

Why that ? There is the same line following like you mentioned:
Recv: ok P15 B3

Would you think the firmware (Marlin) or tft firmware is the problem ?

If I understand your original post, your "problem" is that the bar that appears in the center of the display is not getting updated. You have correctly surmised that the gcode M73 command should update the display but we have determined that it does not.

On my LulzBot TAZ 6 LCD display there is a bar which is shown below after sending an M73 P50 command.

Would you think the firmware (Marlin) or tft firmware is the problem?

I don't know but based on the links you have already provided, the source code appears to be available so you could research the answer yourself. Since my TAZ 6 is running Marlin and the display bar works, I'd suspect the TFT firmware.

Send: M115
Recv: FIRMWARE_NAME:Marlin  FIRMWARE_VERSION:2.0.9.0.13 EXTRUDER_TYPE:Universal (Aug 10 2022 09:40:12) SOURCE_CODE_URL:https://gitlab.com/lulzbot3d/marlin PROTOCOL_VERSION:1.0 MACHINE_TYPE:LulzBot TAZ 6 EXTRUDER_COUNT:1 UUID:845f003c-aebd-4e53-a6b9-7d0984fde609

correct

I had contact with the developer digant who told me that if he sends for example this command:
M117 Data Left 123/12345
the TFT properly set the progress bar and the % value displayed on TFT.

So I would assume that M73 commands aren't needed in tis tft firmware.
But the problem is that the bar doesn't get updatet if I send the exact same command...
So how to figure out where the issue is ?!
If I send your M117 example to the printer then my additional external OLED SSD1306 display is updatet and the message is viewed there but the tft progress bar isn‘t.

BTW: I'm now pretty sure that this isn't an ocoprint issue but where else could I ask for help...?!

I'd continue to communicate with the developer. He claims that the M117 command sets the progress bar and you have determined that it does not.

If the developer can't help, then the only thing left is to get a copy of the firmware sources and figure it out for yourself.

Often these types of TFT screens work by acting as a host, much the same way as OctoPrint does. They communicate with the printer, but have their own firmware that controls all the touch & display functions. So when you send M73 from OctoPrint, you are sending it to the printer not the screen. The printer firmware and the screen firmware are separated.

The thingiverse link to the firmware confirms this is how it works. M117 & M118 commands as set out in the examples should cause something to be updated on the display, if you have the host action commands & host notifications options enabled in the printer (Marlin) firmware.

I don't think you'll be able to specifically update the progress bar from OctoPrint, only change the text that is displayed on the screen because this is all that is supported.

1 Like

HOST_ACTION_COMMANDS:


-> Enabled in the firmware and M118 commands obviously work because I can switch the tft to printing menu with:
M118 P0 A1 action:print_start

HOST_STATUS_NOTIFICATIONS:


-> Enabled in the firmware but M117 commands seems to have no effect

Yes but shouldn’t that then send to the tft from the printer ? Otherwise I would assume that the possibility to use better progress estimations would be useless (because not displayed on the tft).

Why that ? I‘m trying with the terminal of OctoPrint (and tried Pronterface aswell).
The developer sent me this, so also from a host (not OctoPrint):

Tried the following sequience of commands (reported on section Printing from Remote Host) and it properly worked

M118 P0 A1 action:print_start

M117 Data Left 1234/12345

and

M118 P0 A1 action:notification Data Left 1234/12345

@lethuer, Please remember that this is the OctoPrint forum. We have no control over the firmware in the printer or the firmware in the TFT.

All OctoPrint can do is send M73, M117, and/or M118 commands through the USB serial interface to the printer firmware. It is up to the printer firmware to communicate those commands (or modifications of them) to the TFT firmware. Perhaps the TFT firmware eavesdrops on the printer communications. The exact communications path(s) are completely out of OctoPrint's control.

If the M117 or M118 commands that are documented don't work as advertised or as you would like them to, then nothing you communicate here will change the behavior.

1 Like

Wow ! Finally I found this is working for me to update the tft...
Never tried M118 before for more than switching to printing menu.
Now back to octoprint...
How can I include M118 messages in the stream which is sent to the printer ?

You would have to write a plugin.

I'd start with https://github.com/cesarvandevelde/OctoPrint-M73Progress and modify it to inject the M118 command instead of the M73 command.

Does M118 P0 A1 action:notification Layer Left <XXXX>/<YYYY> also update the progress bar?

No.

M118 P0 A1 action:notification Time Left XXhYYmZZs
-> Updates Time Left Field

M118 P0 A1 action:notification Layer Left XX/YY
-> Updates Layer Left Field

M118 P0 A1 action:notification Data Left XX/YY
-> Updates Percentage Field + Progress Bar

Found this interesting discussion about the same topic:

Didn't tried yet but seems the developer of plugin "DisplayLayerProgress" provided a test version to support M118 instead of M117 messages...

This is excellent news. I believe a one line change in OctoPrint-M73Progress will solve your issue. Now all I have to do is figure out how you can do that!

1 Like

Here's the one line change (untested, of course):

(code deleted, see newer response)

@Charlie_Powell or @jneilliii , can you help me figure out how @lethuer can install this change on his system?

1 Like

Probably the easiest way would be to fork the original plugin and make the change in it and install that version. Otherwise, in order to manually update the code you have to find the files in site-packages of the venv. For an octopi 0.18 installation that would probably be something like this...

nano ~/oprint/lib/python3.7/site-packages/octoprint_m73progress/__init__.py

for octopi 1.0.0 is would be something like this

nano ~/oprint/lib/python3.9/site-packages/octoprint_m73progress/__init__.py
1 Like