Open
Description
CANopen version 2.3.0
I have this CANopen node that boots twice during an update. Here is the relevant code:
print(f"Awaiting first bootup {time.ctime()}")
node.nmt.wait_for_bootup(20)
print(f"First bootup found! {time.ctime()}")
print(f"Awaiting second bootup {time.ctime()}")
node.nmt.wait_for_bootup(20)
print(f"Second bootup found! {time.ctime()}")
Waiting for the first bootup message always works exactly as expected. Waiting for the second one fails randomly. What is weird is that the second boot message is definitely there:
Awaiting first bootup Mon Feb 24 09:13:03 2025
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 0
First bootup found! Mon Feb 24 09:13:03 2025
Awaiting second bootup Mon Feb 24 09:13:03 2025
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 0
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
DEBUG:canopen.nmt:Received heartbeat can-id 1804, state is 127
But it gets ignored, somehow? Eventually the second wait_for_bootup times out.
As said, sometimes this works, but most often it does not seem to work.