Jetson AGX Orin Dev kit CAN not working

Hello, my name is Claudio, and I’m considering using the Jetson AGX Orin in one of my projects. It is very important that we are able to communicate with motors using CAN connection.
However I’m facing difficulties, as you can see in the image below, I’ve concluded the tutorial but nothing seems to be sent in the candump.

As far as I know, even if the device receiving the CAN message is faulty, the message should be sent, am I right? I also connected the PINs to an oscilloscope and detecteded no signal change coming from the Jetson.
The image below shows my setup.

Untitled Diagram.drawio

Extra info:

  • Jetpack version is 5.1.1
  • The loopback test is a sucess.
  • the command ip -details -statistics link show can0 prints this:
    can <BERR-REPORTING,FD> state ERROR-PASSIVE

Hi Claudio,

From your image, it seems you are still doing loopback test. (because you are dump the packet on can0 and also send the packet from can0).

Why you say loopback test success but you have issue above?
Or you mean this result from you adding loopback on in ip link commmand?

Which CAN transceiver are you using?

Could you share the result of the following command?

$ sudo ip -d -s link show can0

and the full dmesg as file here for further check.

Because it’s happening like the tutorial says:

I don’t understand, how am I in the loop test if I’m not using the loopback command? What I want to do is send CAN messages (cansend) through my transceiver, and finally reaching my motor, and also receive message from the motor, all in can0. I am using candump to see what goes in and out can0. I should be able to send something.

wcmcu-1051, I’ve tested this transceiver isolated and it works

log2.txt (898 Bytes)

log.txt (1.2 KB)

Okay, they seems the different tests.
The loopback on is the internal loopback test which means you don’t need to connect any cable for the test. ----> It worked.

Your CAN communication with the motor. ----> It failed.
Is my understanding correct?

can state ERROR-PASSIVE (berr-counter tx 128 rx 0) restart-ms 0
[  160.564831] mttcan c310000.mttcan can0: entered error warning state
[  160.571356] mttcan c310000.mttcan can0: entered error passive state

It seems there’s wrong packet sent causing it entering into ERROR-PASSIVE state.

How did you setup can0 and the full packet(ID, length, data) you send to the motor?

Yes

The image below shows my setup, I’ve tried other baudrates and other messages as well.

What bugs me is that I can’t even send the message. Even if my transceiver is not working, and my motor is not working, the Jetson should be able to send something, but the candump is empty.

using the command
sudo ip link set can0 up type can bitrate 1000000 dbitrate 2000000 restart-ms 1000 berr-reporting on fd on

I get
log3.txt (1020 Bytes)
and
log4.txt (90.6 KB)

The command

sudo cat /sys/kernel/debug/bpmp/debug/clk/can1/parent

shows pll_aon

and
sudo cat /proc/device-tree/mttcan@c310000/pll_source
shows pllaon

Do you confirm what’s the bitrate for your motor?
and what’s the ID for your motor?

Could you also try to add sjw 4 in your command to setup can0?

$ sudo ip link set can0 up type can bitrate 500000 sjw 4 restart-ms 100 berr-reporting on

It worked!! Thank you so much.

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