Serial ports (UART) on the Jetson TX2 and Nano

Hi all,

I’m currently working with the Jetson TX2 and the Jetson Nano. I’m having a hard time finding resources about the Serial Ports on these board. I’m finding blogs mentioning the available serial ports, but I’m not getting the full details on this. Is there an Nvidia resource center for this? What I need to find:

  • The serial ports exposed to the user. (The datasheet mentions 7 for TX2, but looks like only 2 are exposed)
  • What is the name of the port in /dev/tty* ?
  • On which serial ports is the serial console running.

Please help me out with this.
Thanks!

A partial answer…

Depending on driver, for the TX2, you will see “/dev/ttyS0” through “ttyS3”, or “/dev/ttyTHS0” through “ttyTHS3”. The numeric part of this will correspond to a given specific UART even though the “ttyS” or “ttyTHS” differs.

The driver associated with each UART is either the older legacy serial UART driver for those with “ttyS” syntax, and is the newer DMA-capable “Tegra Highspeed” driver for those with “ttyTHS” syntax. Avoid using two different drivers at the same time on a single UART.

For the TX2 “ttyS0” is the serial console on J21. “ttyTHS2” is the serial UART (not console) on J17 (this also happens to route to the camera connector, but in the default the camera does not use this).

The reason the legacy driver is used on serial console is because the bootloader does not have the THS driver available, and by sticking to the legacy driver during transition from bootloader to Linux kernel the UART remains fully functional without any gaps for loading a new driver.

Note: The device tree names a “serial@address” for each UART. Within this the “compatible” node contains a comma-delimited list of which drivers the UART is allowed to use.

That was a lot of useful information. Thank you!
How did you gather this information though? A link or two would be useful…

It’s just something I’ve used over the years since I’ve used it a lot. I don’t really have a source to quote other than pointing at my brain…which isn’t networked to any web servers. :P

Lol, ok…

You can get the carrier board design schematic here for TX2
https://developer.nvidia.com/embedded/dlc/jetson-tx1-tx2-developer-kit-carrier-board-c02-design-files

You can actually search by keyword “schematic” in search option here

thanks
Bibek

Hi Bibek,

Thank you for the response! I was able to figure out all the UART pins and where to get them.
But I’m still not sure which dev nodes these are mapped to and what voltage levels these work with. Also, I’m not sure on which of these ports the serial console is running.

Is there a document which can tell me all these things in a single place? What would be nice is something like the attached pic. Is there a document like that? Or is it by trial and error we need to find the mappings?

I can’t tell you in one place. However, J21 is the serial console (ttyS0), and J17 is unused (J17 also routes to the camera, but unless you added hardware to use this, then it is free), and is “/dev/ttyTHS2”.

Some of the labels between module and carrier board make it difficult to pick one label for a given routing. However, each UART does have a controller, and each controller is named in the device tree via its physical address. Look for any “serial@...” in the device tree, and you will find the part of the tree for enabling various features of that UART. Example:

cd /proc/device-tree
ls
cd serial@3100000/
ls

I couldn’t tell you how to relate TRM address to carrier board. There are also often level converters, and what is 1.8V on the module will often be 3.3V on the carrier board.

Thank you linuxdev. This will surely help! Some of the 1.8V pins have a level converter before exposing onto the dev board, But from what I saw, some of them don’t. In that case I might end up spoiling the 1.8V pins with a 3.3V (Maybe I can add a resistor, but could still spoil it).

Hi jayanth,
For Jetson-Tx2:
If you have not connected any debugger on 60-pin connector (Port: J10) then UART signals will come on 40-pin connector (J21).
J21 UART: serial@3100000: HSUART : /dev/ttyTHS1
J17 UART: serial@c280000: HSUART : /dev/ttyTHS2
Both the UART are High speed and for 3.3V voltage levels.

Thanks,
Shubhi

Thank you Shubi, for the info. Could you please point me to a document for this, if there is one?

Currently I’ll be working on multiple boards: the Nano, TX2, Xavier and the drive boards. I want to figure out the serial ports on these boards as well, along with the voltage levels for each. Can you please help me with this information (Or possibly point me to doc where I can find all this info myself)?

Hi jayanth,
From the board design guide, you will get all exposed UART ports. Generally, serial console is available on 40-pin header and one port other than 40-pin. Like for Tx2, it is on J17, similarly, on Nano: J44. You can get this info either from board design guides or schematics. You will get controller address from Tegra Reference Manual. Ex: For TX2, UART3 corresponds to serial@c280000. Generally, THS number is one less than the controller number. Please refer board schematics, design manual and tegra reference manual for more info.

Thanks,
Shubhi

Thank you for the tips and pointers Shubhi! I’ll try to gather all the information.