Printer returns ook via Serial, can I make Octoprint accept that like ok?

What is the problem?

My new Geeetech Thunder doesn't exactly play nice with Octoprint, it (seemingly) randomly stops sometimes in the middle of the print, just to return to printing about a minute later.
Seemingly the Printer sometimes returns "ook" instead of "ok" via Serial, which octoprint doesn't know how to handle. Can I add "ook" as a valid answer somewhere, so Octoprint continues printing without a timeout of the previously sent message?

What did you already try to solve it?

I've checked octoprint.log
octoprint.log (41.3 KB)
where I've fount the INFO level message "Communication timeout while printing", the Internet told me to enable serial.log in this case, to further diagnose the issue, which I did.
Here I could see that this seems to happen exclusively when the Printer Firmware has an oopsie, and reports "ook" instead of "ok" after receiving a command. This, of course, seems like a Printer issue.
The Question is if I can easily change an Octoprint file to accept "ook" as valid serial answer as well, because I'm not sure how well Geeetech will support this printer with firmware updates.
I have reduced the very long serial log (nearly 200MB) to only the affected times (I believe), 100 lines before the timeout and 10 after: serial.reduced.log (95.8 KB)

Have you tried running in safe mode?

No, as the core Issue seems to be from the Printer, and Octoprint technically acts correctly

Systeminfo Bundle

I have replaced the serial.log in here as well, because the zip file was still nearly 40MB. If this is an issue, I will update the full one of course.
octoprint-systeminfo-20230115070819.reduced.zip (35.9 KB)

WRITE HERE

Additional information about your setup

OctoPrint version, OctoPi version, printer, firmware, browser, operating system, ... as much data as possible

  • OctoPrint 1.8.6
  • Python 3.7.3
  • OctoPi 0.18.0
  • Geeetech Thunder Firmware v1.13.31

Something interesting about the log and the lines with 'ook' is that they are all 112 lines apart. It's interesting but likely has no value.

I am sure that the correct fix here is a firmware update. But to answer the question, making this kind of change to Octoprint is not what I would call easy. The change would likely be isolated to the comm.py file in Octoprint but that change could cause other issues that you would have to track down and that rabbit hole is deep. If you go that route, you most likely will be on your own. Few will want to get into the depth of a change you make like this. It's for sure not something that is meant to be changed.

Back to the firmware.

Looks like Geeetech has some stuff on github related to the Smartto firmware that is said to be on your machine. Poke around here: Geeetech3D (Geeetech 3D Printer) Β· GitHub

I did not spend a lot of time looking at this but there are indications that the firmware is out there to get and modify. It also seems to be a Marlin fork. Once of the tools they have looks like a configurator of sorts.

Well, that's because I cut the log to reduce the size from nearly 200MB to include just 100 Before, 10 after, so the distance is artifically shortened, and doesn't seem to be this regular anyway.

Damn, but okay, just wanted to check if it were easy, it would have been a nice stopgap. Thank you very much anyway!

Yeah, I'm not sure enough about this for now, from the official website, I can only find that:
Geeetech Thunder uses a ARM Cortex M3 72Mhz Motion Controller
Geeetech has the GTM32 control board with a Cortex M3 72MHz STM32F103
The Geeetech Thunder seems to indeed use Smartto
But as the Github you posted has the latest update from 4 years ago, I doubt it includes support for the Thunder here.

Maybe I'll just convert the whole thing to Klipper, if I find a fitting configuration file, and find an option to back up what I've currently got

This wouldn't be a change you would want to make in OctoPrint's core, but it is the prime candidate (& very easy to do) for a plugin. Working around specific printer communication issues is one of the thing's the plugin system is good for.

A single file plugin could be created to make this work. Something like the gist I just created below may be helpful:

You can try installing it by pasting the URL below into OctoPrint's plugin manager:

https://gist.githubusercontent.com/cp2004/75e71e487ca3cda2ee0a08d6ba0f0c24/raw/a4889b23da37c08df757738e0af115d4212533c5/ook_to_ok_plugin.py

Based on this one for TF -> SD card:

Ideally, one would probably update/fix the firmware, but we can accept it's not always possible if the manufacturer is useless.

1 Like

So, my Hotend died, once I've gotten that fixed I can test your Solution, it seems amazing at first glance though!

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.