How to use UART1 and UART2 in the General Expansion Header on Jetson TK1?

I have completed level shifting, from 1.8V to target level, like 3.3V. But, when I use python to open these two UARTs, depend on pyserial package, it report an error, “input/output error”. I was trying to open /dev/ttyS1 or /dev/ttyS2 or /dev/ttyS3, report the same error, but I could see these UARTs in the device list and /dev/ttyS0 is working fine. What should I do? Thanks!

according to the video from jetsonhack, I find something different. The serial port should be /dev/ttyTHS0. But, it is not in the device list, I do not know why.

The serial ports have the ability to use a regular/generic (meaning available in any kernel) UART driver which is compatible with the 16550A (or some variants). The hardware in the TK1 can also enable DMA transfers, but needs the Tegra High Speed driver (“HSUART”). You can’t use both drivers simultaneously, although the device tree has both listed as “compatible”. When the generic driver is used, then the port is accessed via the “/dev/ttyS#” syntax; when the DMA-capable driver is used, then the port is accessed via the “/dev/ttyTHS#” syntax.

Thanks to your help, let me know more about this!

There isn’t much to say, just that the serial console uses ttyS0 because U-Boot also has a standard driver…which implies to keep continuity of service for serial console logging the same driver must control the UART when going from bootloader to kernel. The others should be using the “ttyTHS#” version.