Still a problem with CAN bridge and FIRMWARE_RESTART command

My point was it worked for me, and nobody else is reporting this problem. Now that you’ve posted a log, I see that you’re running an unofficial module (led_effects). It’s unlikely a developer will investigate this issue unless you reproduce using pristine Klipper code with no unofficial files or modifications.

It’s working, I guess it’s your unfamiliarity with Mainsail - when you issue a FIRMWARE_RESTART and it can’t work (I disconnected the USB Cable), you get something like this:

Then, after plugging it back in:

OK, Thank you for the test…

OK. From the behavior and the log it seems like after the FIRMWARE_RESTART, main MCU is “late” in initializing and doesn’t respond to request from klippy. After I added one second sleep after sending of the restart event from klippy, klippy now tries to identify the mcu a bit later and everything works. The question is why the main MCU is “late”: one of my guesses was the CANBOOT which is used in toolhead MCU but not in main MCU can cause some delays, possibly it is rarely used combination (just a speculation, there can be many another potential reasons for sure)…
Well I don’t know if developer monitors this forum, possibly since he knows much more about, he could have immediately some idea so I will not have to remove unofficial modules and spend much more time by providing a log from “clean” configuration which I am aware will be also denied since “nobody else reports that problem” :frowning:

That’s strange.

Does this change fix the problem for you?

--- a/klippy/serialhdl.py
+++ b/klippy/serialhdl.py
@@ -136,7 +136,7 @@ class SerialReader:
                                         can_filters=filters,
                                         bustype='socketcan')
                 bus.send(set_id_msg)
-            except (can.CanError, os.error) as e:
+            except (can.CanError, os.error, IOError) as e:
                 logging.warning("%sUnable to open CAN port: %s",
                                 self.warn_prefix, e)
                 self.reactor.pause(self.reactor.monotonic() + 5.)

-Kevin

Hello Kevin,
Thanks for answer. Yes that change fixes the problem reliably…
Richard

Thanks. I made that change (commit 00cb683d).

-Kevin

1 Like