CAN0, CAN1 not working even after enabling in PIN MUX spreadsheet

Hi All,

CAN0, CAN1 for my Jetson Xavier AGX Industrial customised board are not working even after enabling them in the PIN MUX sheet. Please let me know should we manually edit .DTSI files related to CAN as shown below and do any other changes??

mttcan@c310000 {
status = “okay”;
};
mttcan@c320000 {
status = “okay”;
};

Hi nagesh_accord,

What’s your Jetpack version in use?

Could you share the full steps how you verify CAN interfaces?

we are working on the latest Jetson Linux for tegra version
NVIDIA - Jetson™ Linux version 35.4.1 GA

  1. firstly I enabled the CAN pins(CAN0IN, CAN0OUT, CAN1IN, CAN1OUT) in PIN MUX spreadsheet and generated DTSI files ( PIN MUX , GPIO, PAD) frm it.
  2. Later generated .CFG file from PINMUX and GPIO dtsi file using the python script.
  3. After this copied the .CFG file to the corresponding folder so that my Flash.sh will refer to it by reading the .Conf file for my board.

Then we did the build process , copied the update DtB files, image file to the respective folder and flashed the image to the target board.

But we are not able to see the CAN entry in the target PC with “ipconfig” command.

Also pls let us know is the below link sufficient for enabling CAN:
https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/HR/ControllerAreaNetworkCan.html

tegra19x-jetson_agx_industrial-gpio-default.txt (2.4 KB)
tegra19x-jetson_agx_industrial-padvoltage-default.txt (1.3 KB)
tegra19x-jetson_agx_industrial-pinmux.txt (54.3 KB)

pls find the three dtsi files generated from my PIN MUX sheet for your reference.

Yes, all the necessary commands are included in this instruction.

What you were doing is for pinmux.

Please also refer to To load the CAN kernel drivers and Loopback test part to setup the CAN.

Please also share the result of the following command on your board for further check.

$ sudo busybox devmem 0x0c303018 
$ sudo busybox devmem 0x0c303010
$ sudo busybox devmem 0x0c303008
$ sudo busybox devmem 0x0c303000

I want to know, if we need to load the CAN drivers manually through commands always?

because we want it be loaded as part of our kernel driver or image during flashing itself and it should work straight away. Please let us know how to install the CAN drivers as part of our kernel building which involved the lib modules.

You could modify the kernel config and configure it as “y” to built-in.
Or just add the module name to /etc/modules-load.d/modules.conf and it would load this module automatically during boot up.

1 Like

Could not find the kernel-config file in the /etc folder. Please find the below snapshot for details.

Also pls let me know how to add the CAN driver modules in the " /etc/modules-load.d/modules.conf " file with some example. In which folder can we get the CAN driver loadable kernel modules and there names to be added here. Thanks.

Please confirm if this is the place inside the kernel folder, where I need to make it
“default Y”

so that it is enabled during the kernel image build time itself and CAN drivers are automatically loaded on my target board once it is flashed( permanently) and it reboots.

what I mean is defconfig, which is included in kernel source.
You have to download the kernel source and re-build the kernel image/dtb.
Kernel Customization — Jetson Linux Developer Guide documentation (nvidia.com)

/lib/modules/5.10.152-tegra/kernel/drivers/net/can/mttcan/native/mttcan.ko

No.
It’s the defconfig with the following line.

- CONFIG_MTTCAN=m
+ CONFIG_MTTCAN=y

Sorry, my hardware is getting stuck in the middle of booting process from two days, not sure if it is hardware loose connection issue or due to my changes in device tree files inside platform and SOC folder also.

Will. Provide the log details as soon as the hardware boots. Thanks.

Just a small query for my understanding want to ask. This path on my Ubuntu Host PC as many kernal versions foler, though I am building the same tegra linux version r35.4.1 all the time,Any idea why so many kernel versions folder are created with different revision numbers for each build as shown in the below image:

The path here is from Jetson AGX Xavier… not from your host PC.

For the kernel module on host PC, you should find it in <Linux_for_Tegra>/rootfs/…

Having some issue opening this roots folder on the host PC

What’s your issue?
Do you have complete BSP package and rootfs on your host PC?

I meant I have a folder called “root” and not “roofs” under the “/” directory as shown below:

what’s your path of BSP package on the host?

The path is:
/home/trident/Downloads/r35_4_1/Linux_for_Tegra

Please share the result of the following command on your host.

$ ls -l /home/trident/Downloads/r35_4_1/Linux_for_Tegra/rootfs