Enabling ttyTCU0 as regular UART on Orin Nano

Hello all,

I’m trying to enable ttyTCU0 as a regular UART. It seems that I can disable it as the combined UART and console log by:

  1. Disabling serial-getty@ttyTCU0 service
  2. Using a device tree overlay to disable combined-uart in the device tree
  3. Removing console=ttyTCU0,115200 from the bootargs

However then I have no serial device connected to that UART. I think I need to add a serial entry to the device tree to replace the combined-uart entry that I disabled but it’s not clear what that might look like.

Any suggestions?

btw, I’ve had a look at all of the following but they haven’t helped (sometimes because the target device is different).

Hi dave.jennings,

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

Actually, we don’t suggest and support for this use case since combined UART includes the log output from several firmware not only in kernel, but also bootloader, MB1/MB2.

If you just want to use it after kernel boot up, please check the device tree node uartc@c280000, which should be enabled and configured correctly.

Thanks Kevin, we’re using a Forecr DSBOARD-ORNX. And Jetpack 5.1.2.

I used the following overlay to disable the combined-uart and enable uartc.

/dts-v1/;
/plugin/;

/ {
    overlay-name = "disable combined-uart";
    compatible = "nvidia,p3768-0000+p3767-0004nvidia,p3767-0004nvidia,tegra234nvidia,tegra23";
    fragment@0 {
        target-path = "/";
        __overlay__ {
            combined-uart {
                compatible = "nvidia,tegra194-tcu";
                status = "disable";
            };
        };
    };
    fragment@1 {
        target = <&uartc>;
        __overlay__ {
            status = "okay";
        };
    };
};

On restart ttyTCU0 was gone and ttyTHS2 had appeared. dmesg showed that it was using c280000.

But when I tested by connecting TX and RX pins together and running the following simple test I got nothing on the receive side:

term1$ sudo cat /dev/ttyTHS2
term2$ echo hello | sudo tee /dev/ttyTHS2

I also removed the console=tttTCU0 entry from bootargs and disabled serial-getty@ttyTCU0.service.
Is there something else that I’m missing?

Have you open the UART interface with baudrate before send packet?
You can run the following command for loopback test.

$ sudo su
# stty -F /dev/ttyTHS2 115200 raw -echo
# cat /dev/ttyTHS2 &
# echo "test" > /dev/ttyTHS2

Could you get a scope to check if there’s any signal when you are performing loopback tes?

Thanks Kevin. I’ve lost access to the device for a few days but as soon as I get it back I’ll give this a try.

Hi Kevin, I’ve had a chance to do the test above.

  1. Nothing on the scope on the TX pin
  2. The “echo” command just hangs

Any further ideas for investigation? We’re willing to give it up at this point but it would be nice to solve if possible.

Are there any error messages showed in dmesg?

As I noted before, we haven’t verified and suggested for this use case to disable combined UART and use it as normal UART. If you need more UART interfaces, we would suggest using AGX Orin or some modules like USB to UART or expander.