CAN External Loopback Issue on AGX Orin SOM with R35.5 Release

Hello Team,

We’re working on the AGX Orin SOM with a custom build using the R35.5 release and followed the link Jetson AGX Xavier Developer Kit CAN commmunication error - #8 by KevinFFF for an external loopback with CAN buses. However, I am encountering an issue with the external loopback.

When I enter the command candump can1 in one terminal and cansend can1 123#abcdabcd in another terminal, no data is returned. After entering cansend can1 123#abcdabcd for the first time, I can see the data on the CAN1_DOUT port signal in the CRO. However, subsequent attempts do not show any data.

I would appreciate your support in identifying what might be missing or incorrect.

sudo busybox devmem 0x0c303018 w 0xc458
sudo busybox devmem 0x0c303010  w 0xc400
sudo busybox devmem 0x0c303008 w 0xc458
sudo busybox devmem 0x0c303000 w 0xc400

sudo busybox devmem 0x0c303018
0x0000C458

sudo busybox devmem 0x0c303010
0x0000C400

sudo busybox devmem 0x0c303008
0x0000C458

sudo busybox devmem 0x0c303000
0x0000C400

dmesg log

[ 2335.434227] mttcan_controller_config: ctrlmode 30
[ 2335.434262] mttcan c310000.mttcan can0: Bitrate set
[ 2335.434271] mttcan c310000.mttcan can0: wait for bus off seq
[ 2335.446330] mttcan c310000.mttcan can0: Bit0 Error Detected
[ 2335.446531] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready
[ 2335.452125] mttcan c310000.mttcan can0: IR 0xa000000 PSR 0x70d
[ 2339.819424] mttcan_controller_config: ctrlmode 30
[ 2339.819458] mttcan c320000.mttcan can1: Bitrate set
[ 2339.819468] mttcan c320000.mttcan can1: wait for bus off seq
[ 2339.831569] mttcan c320000.mttcan can1: Bit0 Error Detected
[ 2339.831940] IPv6: ADDRCONF(NETDEV_CHANGE): can1: link becomes ready
[ 2339.837368] mttcan c320000.mttcan can1: IR 0xa000000 PSR 0x70d
[ 2354.755103] mttcan c320000.mttcan can1: Bitrate set
[ 2360.401922] mttcan c310000.mttcan can0: Bitrate set
[ 2363.971340] mttcan_controller_config: ctrlmode 30
[ 2363.971377] mttcan c320000.mttcan can1: Bitrate set
[ 2367.763986] mttcan_controller_config: ctrlmode 30
[ 2367.764025] mttcan c310000.mttcan can0: Bitrate set
[ 2377.557929] mttcan c320000.mttcan can1: Bit0 Error Detected
[ 2377.563761] mttcan c320000.mttcan can1: IR 0x8010000 PSR 0x71d
[ 2377.569858] mttcan c310000.mttcan can0: Stuff Error Detected
[ 2377.575732] mttcan c310000.mttcan can0: IR 0x8010000 PSR 0x711
[ 2377.581842] mttcan c320000.mttcan can1: entered error warning state
[ 2377.588365] mttcan c320000.mttcan can1: entered error passive state
[ 2377.594888] mttcan c320000.mttcan can1: entered bus off state
[ 2377.600847] mttcan c320000.mttcan can1: Bit0 Error Detected
[ 2377.606624] mttcan c320000.mttcan can1: IR 0xb800000 PSR 0x7e5
[ 2377.613434] mttcan c310000.mttcan can0: entered error warning state
[ 2377.619915] mttcan c310000.mttcan can0: entered error passive state
[ 2382.027729] mttcan c310000.mttcan can0: Bit0 Error Detected
[ 2382.033566] mttcan c310000.mttcan can0: IR 0x8010000 PSR 0x77d
[ 2382.039844] mttcan c310000.mttcan can0: entered bus off state
[ 2382.045773] mttcan c310000.mttcan can0: Bit0 Error Detected
[ 2382.051536] mttcan c310000.mttcan can0: IR 0xa000000 PSR 0x7e5

Thank you for your support.

Regards,
Parashuram

Hi Parashuram.Biradar,

Are you using the devkit or custom board for AGX Orin?

May I know why you run candump and cansend both for can1?

Have you also verified internal loopback test before?
If not, you can refer to Controller Area Network (CAN) — NVIDIA Jetson Linux Developer Guide 1 documentation for internal loopback test.

Hello Team,

We are using a custom board with the AGX Orin SOM.

Apologies for the typo. I used candump can0 in one terminal and entered cansend can1 123#abcdabcd in the other terminal.

I have attached a captured image from the CRO showing the initial signal.

Yes, I have verified the internal loopback and it’s working fine.

Regards,
Parashuram

Do you have the devkit to reproduce the same issue?
We’ve verified the loopback test as yours sending data from CAN0 and received at CAN1 working on AGX Orin devkit+R35.5.0.
Could you also share the block diagram of your connection?

It seems you enter in to bus-off state. Is there any chance that CAN-H/CAN-L shorted in your case?
Please refer to the following thread to apply the change and check if it could help.
Jetson AGX orin can0 - #7 by KevinFFF

Hello,

Thank you for your reply.

I have updated the m_ttcan_linux.c drivers as suggested in the post. However, the issue persists. I have tested it on both a custom board and the AGX Orin Devkit with the following methods:

Custom Board:

  • We have connected a transceiver as shown in the image below:
    image
    Connections are for AGX orin not Xavier.
  • Followed the commands for CAN1 and CAN0 as mentioned in the post.
  • The issue remains unresolved.

AGX Orin Devkit:

  • No transceivers were connected. Instead, CAN1_Dout was directly connected to CAN0_In, and CAN0_Dout was connected to CAN1_Din.
  • The issue persists in this setup as well.

I am attaching the dmesg logs for both setups for your reference.

dmesg log for Custom Board →
orin.log (1.3 KB)

dmesg log for AGX Orin Devkit →
orinev.log (1.7 KB)

Please let me know if there are any additional steps or configurations I should try.

Regards,
Parashuram

Hello Team,

We have successfully performed the internal loopback on the custom board and AGX Orin EV Kit and now seek guidance on performing an external loopback.

Specifically, we would like to understand whether it is possible to test an external loopback by directly connecting the pins as follows in the EV kit:

  • CAN0_Dout to CAN1_Din
  • CAN1_Dout to CAN0_Din

without using a transceiver circuit? Is this possible, or is a CAN transceiver circuit required for external loopback?

We have designed the CAN transceiver circuit on our custom board but want to ensure that the EV Kit is functioning correctly first.

Your support will be highly appreciated.

Regards,
Parashuram

No, you have to use CAN transceiver to transform CAN-TX/CAN-RX to CAN-H/CAN-L.
It is the requirement for CAN communication. You can simply get the CAN transceiver module(SN65HVD230) as I used and connect them externally.

Hello Kevin,

Thanks for your reply.
I will try with an external circuit.

Regards,
Parashuram

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.