Mttcan not enabled on Jetson Orin

The internal loop-back test works but not able to communicate with CAN bus when connected with transceiver. I’ve set the pmux pins and tried everything there is on the internet. I do not think mttcan module is enable but I can see it in lsmod. Any help to resolve this is appriciated

Hello,

Thanks for visiting the NVIDIA Developer forums! Your topic will be best served in the Jetson category.

I will move this post over for visibility.

Cheers,
Tom

Hi shrujanus,

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

Please share the block diagram of your conenctions.

Please share the full dmesg and device tree for further check.

You can also run the following command to check its status in device tree instead.

$ cat /proc/device-tree/bus@0/mttcan@c310000/status

Hey Kevin,
Thank you for your reply,

  1. I am using the Devkit from Nvidia with Jetpack version 6.1.

2)


Basically I have CAN0 RX and TX connected to a transciever and from that transceiver we are connecting CAN L and CAN H to the Odrives

  1. cat /proc/device-tree/bus@0/mttcan@c310000/status → okay


This is my script to setup can bus on Orin


After running the setup script above

After trying to send any data through cansend cmd

It seems the configuration for mttcan is enabled in device tree.

Could you try using the following command to setup can0 instead?

$ sudo ip link set can0 up type can bitrate 100000 berr-reporting on restart-ms 1000

I’m curious about why do you have 2 mttcan interfaces available.
Are you using Orin Nano or AGX Orin?

Please also share the result of cat /etc/nv_boot_contorl.conf and full dmesg for further check.

I am using the Nvidia AGX Orin with 2 CAN interfaces
image
dmesg.log (133.4 KB)

Okay, I’ve moved your topic to correct category for AGX Orin.

Sorry for the typo, please run the following command instead.

$ cat /etc/nv_boot_control.conf
[176618.737724] mttcan c310000.mttcan can0: Acknowledgement Error Detected
[176618.737732] mttcan c310000.mttcan can0: IR 0x8000000 PSR 0x77b

This error may be caused from wrong connection.

Could you refer to the connections and the setup in Jetson/L4T/peripheral/ - eLinux.org?
You should connect CAN transceiver on each CAN interface.

To my understanding, all the connections seem correct!! I have Rx-Rx and Tx-Tx GND-GND and 3.3-3.3

It seems you only connect CAN0 to CAN transceiver and left CAN-H/CAN-L disconnected.
Do you have another CAN transceiver for CAN1?

You can refer to the connection like Jetson/L4T/peripheral/ - eLinux.org

Hey Kevin, My connections seem correct. In this image, I was probing the CAN bus so the module pins are left disconnected but the screw holes are connected to the OdriveCAN module. I am still getting the same error. Is there something I can do with recompiling the kernel modules?

Have you verified transmitting CAN data from can0 to can1 (which are both from internal mttcan)?

Are you using the same bitrate for both mttcan and your OdriveCAN module? (250k or 100k?)