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
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!
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: