You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
SDO transfert abort 0x05040000 because the library is loosing device answer's frame. #623
Issue: "Transfer aborted by client with code 0x05040000" (= client timeout) even if the device answer within 10ms of the request and the timeout is not touched (Default found in the library code=300ms).
Investigation: This always append in this context. A SYNC frame is send by the command
network.sync.start(0.04).
If the SDO request (nodes[dev_num].sdo.download(SDO_INDEX, sub_index, val_bytes)) appears on the bus just few µs before the SYNC and the device answer is just after the SYNC. The answer seems not to be read by the library which declare a timeout and send the abort frame (300ms after the initial request). This behavior is systematic.
On the can dump, you may see the SDO upload request answering within 10ms of the request, nevertheless the library sent the abort 300ms later.
In the dump, the SDO arrive 0.3µs before the SYNC and the answer is just after the SYNC.
If the SDO is well spaced from the next SYNC and the device had time to answer before the SYNC, it is working fine. In the example below, it is working fine .
I also check network bus error but there is none:
PS:
The device which answer SDO request is a true hardware device on the network and so has a different clocking crystal then the PC.
The candump software is also on the same PC than the program which use the library, so the PC is correctly receiving the frame.
Hi and thanks for the report. Unfortunately, it's hard for me to tell what's going wrong here. Definitely seems odd that the library behaves differently around the SYNC. But I'm afraid you'll need to investigate on the real network to find the root cause. Try enabling debug logging, maybe add some extra log calls to the SDO reception, see what code paths it is taking that lead to sending the SDO abort.
This sure looks like an SDO abort frame, but you labelled it as SDO DOWNLOAD_RESP. From the dump, it's not 100 % clear that this is actually sent by the library -- an SDO abort from the device (server) would look identical. Just a thought, as such timing problems are more common on CAN embedded hardware with less sophisticated buffering.
Activity
acolomb commentedon May 29, 2026
Hi and thanks for the report. Unfortunately, it's hard for me to tell what's going wrong here. Definitely seems odd that the library behaves differently around the SYNC. But I'm afraid you'll need to investigate on the real network to find the root cause. Try enabling debug logging, maybe add some extra log calls to the SDO reception, see what code paths it is taking that lead to sending the SDO abort.
This sure looks like an SDO abort frame, but you labelled it as SDO DOWNLOAD_RESP. From the dump, it's not 100 % clear that this is actually sent by the library -- an SDO abort from the device (server) would look identical. Just a thought, as such timing problems are more common on CAN embedded hardware with less sophisticated buffering.