Using CAN-bus on Jetson AGX Orin

I have been trying to use CAN communication, and I’ve followed the CAN instructions from the NVidia website. Below are all the steps I took.

$ cat /proc/device-tree/mttcan@c310000/status
→ OK
$ sudo apt-get install busybox
$ busybox devmem 0x0c303018 w 0x458
$ busybox devmem 0x0c303010 w 0x400
$ busybox devmem 0x0c303008 w 0x458
$ busybox devmem 0x0c303000 w 0x400

$ modprobe can
$ modprobe can_raw
$ modprobe mttcan

$ ip link set can0 up type can bitrate 500000 dbitrate 1000000 berr-reporting on fd on
$ ip link set can1 up type can bitrate 500000 dbitrate 1000000 berr-reporting on fd on

$ sudo apt-get install can-utils

I routed CAN0 Tx to CAN1 Rx and vice-versa. But no message was received on either Rx.

$ candump can0
$ candump can1
$ cansend can0 123#abcdabcd
$ cansend can1 123#abcdabcd

I’ve also tried debugging using the loopback test, shorting CAN0 by connecting CAN0 Rx-> CAN0 Tx. This still didn’t work.

$ ip link set can0 type can bitrate 500000 loopback on
$ ip link set can0 up
$ candump can0
$ cansend can0 123#abcdabcd

I would appreciate any assistance and/or guidance on this issue.

Hi r9_pena,

Are you using the devkit or custom board for AGX Orin?
What’s your Jetpack version in use?

Do you connect 2 CAN transceivers for both can0 and can1?
You could refer to this connection.

If you are verifying with loopback test, acutally, you don’t need to connect any cable externally because they are connected and transmit/receive internally.
And you should receive the data what you send.

Maybe you could use Jetson-IO to configure the pinmux for these pins instead.

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