Printer Model: Twotrees SK1
MCU / Printerboard: proprietary, MKS based. Printhead board RP2040 based
Host / SBC: proprietary, MKS OEM, similar to MKS PI klippy.log.zip (2.3 MB)
klippy.log
Fill out above information andin all cases attach yourklippy.logfile (use zip to compress it, if too big). Pasting yourprinter.cfgis not needed Be sure to check our “Knowledge Base” Category first. Most relevant items, e.g. error messages, are covered there
Describe your issue:
… My printer spontaneously halts while printing. No specific timing - it can print whole day normally, but next day halt 30 min after print start. I know that boards on this printer are poor quality, but I need to understand what part is really fail the print and avoid replacing everything.
Can someone take a look at the log and guess the reason of failure? What exactly went wrong? Unfortunately these logs a bit obscure for me. See shutdown messages closer to the end of the log.
bytes_retransmit=29687 bytes_invalid=8724
Increasing over time in the log.
Right before TTC, there is several get_clock commands.
That means previous commands was not delivered/answered in time.
So, queue_step is also arrived too late, which cause TTC in the end.
Most probably, there is a UART communication issue.
Make sure that SBC and MCU have common ground, like the GND pin connected.
Also, it is possible there is an electrical noise from the PSU if there is no grounding in the wall socket and the board and PSU are connected to the shared metallic parts.
Magic trick, change something to something.
This is a hard-to-diagnose hardware issue online.
Technically, it is a differential signal, it is slightly better at electrical noise handling, there is always a ground, and there are slightly more logs at kernel level.
With hardware GPIO UART, most probably there is no diagnostic information AFAIK.
Could you please explain ‘timer too close’ concept, and how it is related to data transfer issues?
In simple words, klipper consists of 2 parts, klippy and klipper.
The first is the Python host, and the second is the MCU firmware.
Python host tracks MCU time and schedules simple commands, like toggle this pin 5 times.
To make everything work, those commands should be executed in some order and at a specific time.
If the command arrives too late, it tries to be executed in the past. This is not possible, so the MCU does an emergency shutdown.
In your specific case, it looks like because of transmission errors and retries, the command arrives too late. There is no way to know for sure, but first, it is better to fix the network issue before investing time in something else.
There is the precise explanation: Timer too close