If you’re comfortable making code changes, you could try something like this in klippy/extras/tmc_uart.py:
--- a/klippy/extras/tmc_uart.py
+++ b/klippy/extras/tmc_uart.py
@@ -220,10 +220,13 @@ class MCU_TMC_uart:
reg = self.name_to_reg[reg_name]
if self.printer.get_start_args().get('debugoutput') is not None:
return 0
- for retry in range(5):
+ for retry in range(25):
val = self.mcu_uart.reg_read(self.instance_id, self.addr, reg)
if val is not None:
return val
+ logging.info("TMC read %d fail on '%s' register %s at %.6f",
+ self.name, retry,
+ reg_name, self.printer.get_reactor().monotonic())
raise self.printer.command_error(
"Unable to read tmc uart '%s' register %s" % (self.name, reg_name))
def get_register(self, reg_name):
That should increase the retries and log each failure. Maybe that will give further info on how many intermittent failures there are.
Be sure to do a full sudo service klipper restart
after any code change.
-Kevin