I am running Jetpack 5.1.2 on my Jetson Xavier AGX. After some time the FDCAN bus locks up. dmesg -w confirms that we go into a bus off state. I also get TX queue full error messages when trying to send.
If we restart everything the bus resumes working. Another solution I have found is to do sudo rmmod mttcan && sudo modprobe mttcan && sudo ip link set can0 up .... This reloads the mttcan kernel module. But this does not seems like a good long-term solution. restart-ms does not work as suggested by other posts.
Increasing the TX buffer size also helps but this also seems inadequate.
The preferred solution would be just to flush the TX queue when it gets full and skip those messages. This is essentially the same as a bus restart I think.
Should I try to set the clock source to PLLAON? We are using a pretty high FD bitrate (1 Mbit/s). If I wanted to change that, would sudo ./flash.sh -k bpmp-fw-dtb jetson-xavier nvme0n1p1 modify my EXT4 filesystem? Or would it preserve it?
update: I ran the above no problem and was able to achieve 1 Mbit/s exactly. Kept the filesystem in tact :)
It will try to restart CAN interface after the timeout specified in restart-ms once.
If you didn’t recover the connection at this moment, it would not recover unless you re-configure CAN interface.