Trying to use UART2, but /dev/ttyTHS1 doesn't exist

I’m trying to use the UART pins on the J41 header, pins 8 and 10. I’m starting with the demo at But the problem I’m running into is that the device node, /dev/ttyTHS1 doesn’t exist.

I did try disabling nvgetty and rebooting. I’ve also connected a loopback wire and tried testing all of the other ttyTHS# nodes, but none of them seems to correspond to UART 2.

I did find one thread in the nvndia forums where someone else had this device node missing, but the problem seemed to be related to an unsupported carrier board, while I’m using the standard developer carrier.

There also isn’t a corresponding entry under /sys/class/tty for this.

Also, I checked, but there only seems to be a config for RTS/CTS, nothing for enabling/disabling the UART entirely. However, I tried enabling that option, but it didn’t have any effect.

How can the UART be missing entirely? What am I missing?

Hi theosib,

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

Are you using Jetson Nano or Orin Nano?
For 40-Pin Expansion Header on Orin Nano devkit is J12.

Please check the flash log to confirm which dtb in use and decompile it to check if the status for the desired UART interface has been enabled.

I’m using the devkit.

Package: nvidia-jetpack
Version: 5.1.1-b56

I’m using the Jetson Orin Nano. In any case, it’s the same header. The problem is that the /dev node for the serial port is missing.

As far as I can tell, the dbt file is kernel_tegra234-p3767-0003-p3768-0000-a0-user-custom.dtb. IRC, that’s what jetson-io said it was writing, and it’s the most recently written dbt file under /boot.

I decompiled it, but I don’t know what to look for. I searched for tty, and this was the only entry I found:

    chosen {
            bootargs = "console=ttyTCU0,115200";

What am I supposed to search for? Why is the entry for the serial port missing, and how do I restore it?


Also, there is another dtb file, kernel_tegra234-p3767-0003-p3768-0000-a0.dtb, which has a date stamp form the same day as when I first flashed the boot image. So this appears to be the original. I decompiled it too, but the only tty entry I see is the same.

There are also several others that have time stamps that are the oldest of any files on the drive. I tried decompiling one of those, but it didn’t have an entry for ttyTHS1 either.

It seems like support for ttyTHS1 is missing from the stock image entirely. How do I fix that? Even if there’s a newer image I can get, I’d really rather not have to rebuild everything from scratch right now.

Could you help to provide the full flash log and dmesg for further check?

and also tegra234-p3767-0003-p3768-0000-a0.dtb file.

/dev/ttyTHS1 should map to uartb@3110000, which you should find in the device tree.

For the UART on 40-pins expansion header, it should be uarta@3100000.
Which one would you like to enable?

dmesg.txt (79.0 KB)
kernel_tegra234-p3767-0003-p3768-0000-a0.dtb (337.4 KB)
kernel_tegra234-p3767-0003-p3768-0000-a0-user-custom.dtb (338.7 KB)

I’ve uploaded the dmesg file. There are two closely matching dtb files, and I’ve attached both.

I flashed this microSD from my Mac months ago, using balenaEtcher. Where might it have put a log? The image file was called

The serial port I’d like to enable is the one corresponding to pins 8 and 10 on the 40-pin header. Although I have a /dev/ttyTHS0, I have found multiple resources that say that the one for the 40-pin header should be /dev/ttyTHS1. Moreover, I have tried connecting pins 8 and 10 together and running a loopback test on /dev/ttyTHS0, and I get no data echoing back.

I just wanted to let you know that I solved the problem. /dev/ttyTHS0 is indeed the correct device. I connected a loopback wire, and I used the “cu” program to test this and found it to work properly.

The problem was caused by my own C program I’d been using to test this originally. Evidently, there are a number of terminal settings that do not default to values appropriate for my application.

Please see linux - "cu" can read from serial port, but my own C program cannot - Stack Overflow for more information.

Thank you for the help!

Yes, the PIN8 and PIN10 of 40-pins expansion header is /dev/ttyTHS0.

You could also verify loopback test with the following commands.

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

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