UART ports not working.

I am using JetPack 3.1 and L4T 28.1.

ttys0-3 and ttyTHS1-3 is visible in /dev and I have tried a simple loopback test for UART ports 1,3 and 7 but n one of them seem to work.

Do we have to enable UART ports? If so kindly provide the procedure.

Serial console (ttyS0) and J17 (ttyTHS2) should be enabled by default (I don’t know about the others). ttyS0 is of course reserved only for serial console (J21). You will find CTS/RTS flow control not used on those and default to 115200 8N1 (no flow control).

Note that the NVIDIA UARTs are compatible as both the 16550A compatible UART and with NVIDIA’s DMA enabled drivers (the “compatible” line in the device tree reflects what drivers can be used). If the NVIDIA driver is used it’ll have the “ttyTHS#” syntax, and if the older style it’ll be the “ttyS#” syntax. Both might exist at once, but only one can be active at a time (it’s a bad idea to have two drivers accessing the same hardware at the same time :P).

If you are looking at some specific pin on the dev board you might mention…or if using something other than the dev carrier perhaps that information. BSP differs depending on carrier.

I am using a third party carrier board.

I want to use UART 1,3 and 7. None of them seem to work.

The different carrier boards require a different device tree (the Board Support Package…the “BSP”…provides this). You may have to ask the provider of the BSP how to enable these. If you didn’t flash specifically for that carrier board, then that would be the reason it fails.

Thank you.

Further i have designed a custom carrier board and i am using UART ports 1,3 and 7. Does UART ports need enabling?

UARTs need device tree setup, and this will differ depending on what carrier board you use and L4T release. If you will be customizing device tree here are some random URLs which might help.

First, the PINMUX spreadsheet. It has macros to help create a device tree. Go here, search for “pinmux” (you have to enable macros when running this if you want it to be useful):

If you want to start with your current system’s device tree, then you can extract it:

dtc -I fs -O dts -o extracted.dts /proc/device-tree

You can hand edit a dts file, then convert to dtb:

dtc -I dts -O dtb -o extracted_then_compiled.dtb extracted.dts

If using R28.2, then you may find you need a patch to flash just the dtb (lately each release has slightly different instructions for device tree flash). See: