CAN BUS OFF issue in jetson orin nano

Hi everyone,
I am using jetson orin nano for our application that have 8 nodes and some of the isolated power supply and some of the non isolated power supply. I am getting BUS OFF in orin nano board while sending data from this but there was no issue while receiving data from all other nodes. Further the BUS OFF is not occurring immediately but after a period of time the TX error increases and decreases and at one point it will go to more 249 and will enter into BUS OFF state. This is keep on happening after to do CAN0 down and UP also.
attached ip link detals and dmesg for your reference,
14: can0: <NO-CARRIER,NOARP,UP,ECHO> mtu 16 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 10
link/can promiscuity 0 minmtu 0 maxmtu 0
can state BUS-OFF (berr-counter tx 252 rx 0) restart-ms 0
bitrate 500000 sample-point 0.870
tq 20 prop-seg 43 phase-seg1 43 phase-seg2 13 sjw 1
mttcan: tseg1 2..255 tseg2 0..127 sjw 1..127 brp 1..511 brp-inc 1
mttcan: dtseg1 1..31 dtseg2 0..15 dsjw 1..15 dbrp 1..15 dbrp-inc 1
clock 50000000
re-started bus-errors arbit-lost error-warn error-pass bus-off
0 1241 0 45 41 1 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
RX: bytes packets errors dropped overrun mcast
2532236 476249 1243 0 2 0
TX: bytes packets errors dropped carrier collsns
102390 13005 0 0 0 0
Dmesg :
[Mon Jul 28 12:59:55 2025] mttcan c310000.mttcan can0: IR 0x8000000 PSR 0x75d
[Mon Jul 28 12:59:56 2025] mttcan c310000.mttcan can0: entered error warning state
[Mon Jul 28 12:59:56 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 12:59:56 2025] mttcan c310000.mttcan can0: IR 0x9000000 PSR 0x75d
[Mon Jul 28 12:59:56 2025] mttcan c310000.mttcan can0: mttcan_poll_ir: some msgs lost on in Q0
[Mon Jul 28 12:59:56 2025] mttcan c310000.mttcan can0: mttcan_poll_ir: some msgs lost on in Q0
[Mon Jul 28 12:59:56 2025] mttcan c310000.mttcan can0: entered error warning state
[Mon Jul 28 12:59:56 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 12:59:56 2025] mttcan c310000.mttcan can0: IR 0x9000000 PSR 0x75d
[Mon Jul 28 12:59:56 2025] mttcan c310000.mttcan can0: IR 0x8001a01 PSR 0x748
[Mon Jul 28 12:59:57 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 12:59:57 2025] mttcan c310000.mttcan can0: IR 0x8000000 PSR 0x71d
[Mon Jul 28 12:59:58 2025] mttcan c310000.mttcan can0: entered error warning state
[Mon Jul 28 12:59:58 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 12:59:58 2025] mttcan c310000.mttcan can0: IR 0x9000000 PSR 0x75d
[Mon Jul 28 12:59:58 2025] mttcan c310000.mttcan can0: IR 0x8001a01 PSR 0x748
[Mon Jul 28 12:59:58 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 12:59:58 2025] mttcan c310000.mttcan can0: IR 0x8000000 PSR 0x75d
[Mon Jul 28 12:59:59 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 12:59:59 2025] mttcan c310000.mttcan can0: IR 0x8000000 PSR 0x75d
[Mon Jul 28 12:59:59 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 12:59:59 2025] mttcan c310000.mttcan can0: IR 0x8000000 PSR 0x75d
[Mon Jul 28 12:59:59 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 12:59:59 2025] mttcan c310000.mttcan can0: IR 0x8000000 PSR 0x75d
[Mon Jul 28 13:00:00 2025] mttcan c310000.mttcan can0: entered error warning state
[Mon Jul 28 13:00:00 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 13:00:00 2025] mttcan c310000.mttcan can0: IR 0x9000000 PSR 0x75d
[Mon Jul 28 13:00:00 2025] mttcan c310000.mttcan can0: IR 0x8001a01 PSR 0x748
[Mon Jul 28 13:00:00 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 13:00:00 2025] mttcan c310000.mttcan can0: IR 0x8000000 PSR 0x75d
[Mon Jul 28 13:00:01 2025] mttcan c310000.mttcan can0: entered error passive state
[Mon Jul 28 13:00:01 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 13:00:01 2025] mttcan c310000.mttcan can0: IR 0x8800000 PSR 0x77d
[Mon Jul 28 13:00:01 2025] mttcan c310000.mttcan can0: IR 0x8001a01 PSR 0x768
[Mon Jul 28 13:00:01 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 13:00:01 2025] mttcan c310000.mttcan can0: IR 0x8000000 PSR 0x77d
[Mon Jul 28 13:00:01 2025] mttcan c310000.mttcan can0: IR 0x8001a01 PSR 0x768
[Mon Jul 28 13:00:01 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 13:00:01 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 13:00:02 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 13:00:02 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 13:00:03 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 13:00:03 2025] mttcan c310000.mttcan can0: Format Error Detected
[Mon Jul 28 13:00:03 2025] mttcan c310000.mttcan can0: Format Error Detected
[Mon Jul 28 13:00:03 2025] mttcan c310000.mttcan can0: Format Error Detected
[Mon Jul 28 13:00:03 2025] mttcan c310000.mttcan can0: Format Error Detected
[Mon Jul 28 13:00:03 2025] mttcan c310000.mttcan can0: Format Error Detected
[Mon Jul 28 13:00:03 2025] mttcan c310000.mttcan can0: Format Error Detected
[Mon Jul 28 13:00:04 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 13:00:04 2025] mttcan c310000.mttcan can0: Format Error Detected
[Mon Jul 28 13:00:04 2025] mttcan_poll_ir: 14 callbacks suppressed
[Mon Jul 28 13:00:04 2025] mttcan c310000.mttcan can0: IR 0x8000000 PSR 0x772
[Mon Jul 28 13:00:04 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 13:00:04 2025] mttcan c310000.mttcan can0: IR 0x8000000 PSR 0x77d
[Mon Jul 28 13:00:04 2025] mttcan c310000.mttcan can0: IR 0x8001a01 PSR 0x768
[Mon Jul 28 13:00:04 2025] mttcan c310000.mttcan can0: entered bus off state
[Mon Jul 28 13:00:04 2025] mttcan c310000.mttcan can0: Bit0 Error Detected
[Mon Jul 28 13:00:04 2025] mttcan c310000.mttcan can0: IR 0xa000000 PSR 0x7e5

Uname -a :
Linux palletmover-testbench 5.10.120-tegra #2 SMP PREEMPT Fri Jan 12 14:13:00 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux

Thanks in advance for your support

Hi malakondareddy,

Are you using Jetpack 5.1.2?
If so, could you update to the latest Jetpack 5.1.5 to verify?
We have the patch in later release to fix Bus-Off related issue.

Please also share the block diagram of the connection for CAN.

Thanks for your reply ,
Attached block diagram for your reference and also the output of sudo apt-cache show nvidia-jetpack
Package: nvidia-jetpack
Version: 5.1.2-b104
Architecture: arm64
Maintainer: NVIDIA Corporation
Installed-Size: 194
Depends: nvidia-jetpack-runtime (= 5.1.2-b104), nvidia-jetpack-dev (= 5.1.2-b104)
Homepage: Jetson - Embedded AI Computing Platform | NVIDIA Developer
Priority: standard
Section: metapackages
Filename: pool/main/n/nvidia-jetpack/nvidia-jetpack_5.1.2-b104_arm64.deb
Size: 29304
SHA256: fda2eed24747319ccd9fee9a8548c0e5dd52812363877ebe90e223b5a6e7e827
SHA1: 78c7d9e02490f96f8fbd5a091c8bef280b03ae84
MD5sum: 6be522b5542ab2af5dcf62837b34a5f0
Description: NVIDIA Jetpack Meta Package
Description-md5: ad1462289bdbc54909ae109d1d32c0a8

In the attached block diagram CBT is internal 120 ohm terminated board and CBE (CAN T type board ) is only extended board without 120 ohm.
orin_nan0pdf.pdf (61.9 KB)

Please also verify with the latest Jetpack 5.1.5 to check if it could help for your case.

Have you tried only connecting one CBT with one 120Ohm resistor in your setup?

Yes I tried with only one CBT 120 ohm but still have same issue. However I used orin NX to compare with orin Nano and have not seen any issue in orin nx.
Further there is no jetpack difference between orin nano and nx.

Is there way to use that patch fix without rebuilding image and pushing.

Do you mean that the issue is specific to Orin Nano?
If so, have you compared both device tree and dmesg in both cases(Orin NX and Nano)?
As my understanding, Orin NX and Nano should have similar design/behavior in CAN.

You can also run the following commands for both Orin NX and Nano.

$ cat /etc/nv_boot_control.conf
$ cat /etc/nv_tegra_release

Please find the output of your commands on nano and nx,

Orin Nano:
cat /etc/nv_boot_control.conf
TNSPEC 3767-300-0003-S.1-1-1-jetson-orin-nano-devkit-
COMPATIBLE_SPEC 3767–0003–1–jetson-orin-nano-devkit-
TEGRA_LEGACY_UPDATE false
TEGRA_BOOT_STORAGE nvme0n1
TEGRA_EMMC_ONLY false
TEGRA_CHIPID 0x23
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0
cat /etc/nv_tegra_release

R35 (release), REVISION: 4.1, GCID: 33958178, BOARD: t186ref, EABI: aarch64, DATE: Tue Aug 1 19:57:35 UTC 2023

Orin Nx:
cat /etc/nv_boot_control.conf
TNSPEC 3767-301-0000-G.1-1-0-jetson-orin-nano-devkit-
COMPATIBLE_SPEC 3767-000-0000–1–jetson-orin-nano-devkit-
TEGRA_LEGACY_UPDATE false
TEGRA_BOOT_STORAGE nvme0n1
TEGRA_EMMC_ONLY false
TEGRA_CHIPID 0x23
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0

cat /etc/nv_tegra_release

R35 (release), REVISION: 4.1, GCID: 33958178, BOARD: t186ref, EABI: aarch64, DATE: Tue Aug 1 19:57:35 UTC 2023

No I have not compared the device tree and for your reference attached dmesg

orin_nx.txt (133.0 KB)
orin_nano.txt (98.0 KB)

[   23.052375] mttcan_controller_config: ctrlmode 0
[   23.052399] mttcan c310000.mttcan can0: Bitrate set
[   23.053713] mttcan c310000.mttcan can0: entered error warning state
[   23.060283] mttcan c310000.mttcan can0: entered error passive state
..
[   35.916954] mttcan c310000.mttcan can0: entered error warning state
[   35.923556] mttcan c310000.mttcan can0: entered error passive state
[   35.937077] mttcan c310000.mttcan can0: entered bus off state

Is the bus-off issue happening during boot up?

Is there any CAN data sent by your other CAN device when Jetson device is booting up?

Is the bus-off issue happening during boot up?
Yes, sometimes this will happen while boot up and will never come normal even if we do CAN down and up also. Only way is power cycle to fix this.
Further Sometimes even single time power cycle will not help us, in this time we will keep do power cycle still to fix this.
Is there any CAN data sent by your other CAN device when Jetson device is booting up?
Yes, This will happen the moment other nodes will get power and power will go same time to other nodes along the jeston Orin nano and Nx. Do you I need to wait to send until this boot up ?

second problem : ( this clearly mentioned previous messages )
The bus off issue observed after time of sending data from jeston orin nano to other nodes but have not seen this in orin NX.

Thanks

Have you tried reload the mttcan driver to check if it could recover?

$ sudo rmmod mttcan
$ sudo modprobe mttcan

Yes, I would suggest you not sending the CAN data during boot up to check it it could help.

Have you also checked them from scope to find any difference?
Orin NX and Nano should use similar SW package and have similar design in CAN.

Have you tried reload the mttcan driver to check if it could recover?

** **$ sudo rmmod mttcan** **$ sudo modprobe mttcan** **
This did not help us from CAN BUS OFF recovery and the only way is power cycle the board still that fixes. Since many times ran the above command and did not help us.
Yes, I would suggest you not sending the CAN data during boot up to check it it could help.
This can be done at our end but need to understand why this creating the problem only sometimes
Have you also checked them from scope to find any difference?
Orin NX and Nano should use similar SW package and have similar design in CAN.
Yes measured CAN H and CAN L waveforms and observed noise on the lines. However the orin NX did not show CAN BUS OFF with the same noise level and have seen CAN BUS OFF issue on orin nano.
Attached image for your reference,

Labels : Top : CAN L , middle : CAN H and bottom : CAN H - CAN L

My suspect is on CAN transceiver IC , since both SW packages same as per you.

Could you help to clarify where’s the noise coming from?
I suspect it might be caused from one of your CAN device.

There’s only CAN-TX CAN-RX no matter you are using Orin NX or Orin Nano.
Which CAN transceiver you are using in both cases?