Jetson Orin Nano Super can't read or transmit CAN messages

Hi everyone,

I’ve been working on getting CAN communication running on my Jetson Orin Nano Super Developer Kit, and I’m stuck on an issue that I can’t seem to resolve. I’m trying to connect a Keya KY173 steering motor, which communicates over CAN, directly to the Jetson through a WaveShare SN65HVD230 CAN transceiver.

I followed NVIDIA’s official Control Area Network (CAN) setup guide for the Orin Nano. The setup seemed to go,I used the busybox devmem commands to configure the pinmux registers, loaded the mttcan driver, and brought up the interface with:

sudo ip link set can0 type can bitrate 250000
sudo ip link set can0 up

The loopback test works perfectly. When I run cansend and candump on the Jetson, I can send and receive frames locally, so the software side of SocketCAN seems fine.

The problem appears when I connect the actual hardware.
If I connect the motor directly to the Jetson’s transceiver (CAN_H, CAN_L, and common ground), and run candump can0, I don’t see any messages,not even heartbeat frames. The motor definitely transmits, because when I connect it back to my Windows laptop using the manufacturer’s USB-to-CAN adapter and their own configuration/debug software, everything works: I can control the motor, change modes, and see continuous feedback.

To dig deeper, I tried connecting all three devices, the Windows laptop, Jetson, and motor, in parallel on the same CAN bus. In that setup, the Windows tool still communicates perfectly with the motor, but the Jetson still sees nothing in candump. I also wrote a simple Python SocketCAN script to monitor frames; same result…silence.

I’ve triple-checked the baud rate (250 kbit/s) on both the motor and the Jetson, and ensured that the bus is properly powered and terminated. The WaveShare board is powered at 3.3 V from the Jetson, and the EN pin is tied high. Termination resistors are in place,120 Ω at both physical ends. Grounds are shared.

Here’s what puzzles me:
If loopback works, and the Windows setup proves that the motor and cabling are fine, then the issue must be either with the transceiver wiring/configuration, the Jetson’s pinmux, or possibly acknowledgment/timing on the bus. It feels like the Jetson’s CAN controller never actually sees the differential signal, or it’s in some passive or listen-only state.

Running ip -details -statistics link show can0 shows the interface as UP, but the RX counters never increase. The TX side increments if I send with cansend, but there are no RX errors, which makes me think the hardware is simply not detecting anything on the bus rather than receiving corrupted frames.

When I connect the USB-CAN dongle to the Jetson and test through that instead of the WaveShare transceiver, everything works,I can both send and receive frames. So I’m fairly sure the issue lies in how the built-in CAN interface and SN65HVD230 board are configured on the Orin Nano.

Has anyone successfully used the WaveShare SN65HVD230 with the Orin Nano Dev Kit?
Do I perhaps need to adjust the devmem addresses for the “Super” version of the developer kit, or is there something subtle about the pinmux that prevents external RX from working even though loopback passes? Any working example (register values or device tree overlay) would be extremely helpful.

Thanks in advance, I feel like I’m one step away from making this work, but missing a key hardware or pinmux detail.

*** Please note that this reply is generated by LLM automatically ***

Based on the provided context, it appears that you are experiencing issues with CAN communication on your Jetson Orin Nano Super Developer Kit. You have tried various troubleshooting steps, including loopback testing, connecting the motor to a Windows laptop, and using a USB-to-CAN adapter.

The problem seems to be related to the configuration of the built-in CAN interface and the SN65HVD230 transceiver on the Orin Nano. You have mentioned that the loopback test works perfectly, but when you connect the actual hardware, you don’t see any messages, not even heartbeat frames.

To help you resolve this issue, I’ll provide some general information about CAN communication on the Jetson Orin Nano and some potential solutions.

CAN Communication on Jetson Orin Nano

The Jetson Orin Nano has a built-in CAN controller that supports CAN 2.0 and CAN FD. The CAN interface is connected to the SN65HVD230 transceiver, which is a common transceiver used for CAN communication.

Pinmux Configuration

The pinmux configuration is critical for CAN communication on the Jetson Orin Nano. The pinmux registers need to be configured correctly to enable the CAN interface. You can use the jetson-io tool to configure the pinmux registers.

Device Tree Overlay

A device tree overlay is required to enable the CAN interface on the Jetson Orin Nano. The device tree overlay defines the pinmux configuration and other settings for the CAN interface.

Potential Solutions

  1. Check the pinmux configuration: Verify that the pinmux registers are configured correctly for the CAN interface. You can use the jetson-io tool to check the pinmux configuration.
  2. Check the device tree overlay: Verify that the device tree overlay is configured correctly for the CAN interface. You can use the dtc tool to check the device tree overlay.
  3. Adjust the addresses for the Super version: If you are using the Super version of the developer kit, you may need to adjust the addresses for the CAN interface. Check the documentation for the Super version to see if there are any specific requirements.
  4. Use a different transceiver: If you are using a different transceiver, such as the MCP2518FD, you may need to adjust the pinmux configuration and device tree overlay accordingly.
  5. Check the CAN bus termination: Verify that the CAN bus is properly terminated with 120-ohm resistors at both physical ends.

Working Example

Here is an example of a device tree overlay for the CAN interface on the Jetson Orin Nano:

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/pinctrl.h>

/ {
    model = "Jetson Orin Nano";
    compatible = "nvidia,jetson-orin-nano";

    can0: can@0 {
        compatible = "nvidia,can";
        reg = <0x0 0x1000000>;
        interrupts = <0 38 0x4>;
        clocks = <&tegra_car 0 0x4>;
        resets = <&tegra_car 0 0x4>;
        status = "okay";

        pinctrl-names = "default";
        pinctrl-0 = <&can0_pins>;

        can-tdo;
        can-tdi;
        can-rx;
        can-tx;
    };

    can0_pins: pinmux_can0 {
        groups = "can0";
        function = "can";
    };
};

This device tree overlay defines the pinmux configuration and other settings for the CAN interface on the Jetson Orin Nano.

Comparison with Other Devices

The Jetson Orin Nano has a similar CAN interface to other NVIDIA devices, such as the Jetson AGX Xavier. However, the pinmux configuration and device tree overlay may differ between devices.

In summary, the issue you are experiencing with CAN communication on your Jetson Orin Nano Super Developer Kit is likely related to the configuration of the built-in CAN interface and the SN65HVD230 transceiver. By checking the pinmux configuration, device tree overlay, and CAN bus termination, you should be able to resolve the issue.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

Hi ferdibk,

What’s the Jetpack version in use? JP6.2.1(L4T r36.4.4) as you are using super mode!?

If loopback test for CAN works as expected, it means that you’ve configured the pinmux and setup for CAN correctly.

Could you refer to the following thread and check if adding sjw 4 can help for your case?
Jetson AGX Orin Dev kit CAN not working - #7 by KevinFFF

Hi KevinFFF,

I’m using the JP 6.2.1 (L4T r36.4.7) version.

The solution command you shared in the thread worked perfectly! Could you please explain what the additional parameters do?

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

Thank you for the help!

You can refer to my explanation in CAN Message from Jetson Orin Nano not detected - #10 by KevinFFF

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