Jetson TX2 cannot boot when UART0 J21 is connected to a GNSS INS GPS embedded device

Problem description:
I have a GNSS INS GPS connected to my Jetson TX2 via UART#0 which described in JetsonTX1_TX2_Developer_Kit_Carrier_Board_Specification.pdf document in
Table 16. Expansion Header (J21) Pin Descriptions
At lines 8 and 10:
8 UART1_TXD_HDR_3V3 UART0_TX UART #0 Transmit Output 3.3V 24mA / -24mA 4
10 UART1_RXD_HDR_3V3 UART0_RX UART #0 Receive Input 3.3V – 4

From L4T pont of view the UART#0 file descriptor is /dev/ttyS0

The GNSS INSS GPS state is continuous which means that it send data every 10 ms.

When I reboot the Jetson TX2 while the GNSS INS GPS is connected the, boot process stuck while the connected monitor display the NVIDIA logo.
Only when I disconnect the GNSS INS GPS and then reboot the Jetson TX2 it successfully boot.

I also have an additional IMU embedded device which connect to the UART#1 J17.
From L4T pont of view the UART#0 file descriptor is /dev/ttyTHS2
When I reboot the Jetson TX2 while only the IMU is connected the, boot process doesn’t stuck and everything is working fine.

Please advise.

My platform:
Jetson TX2 developer kit board:
Linux distro and version –
Ubuntu 16.04.5 LTS (Xenial Xersus)
L4T - #R28 (release), REVISION 2.1, GCID: 11272647, BOARD: t186ref, EABI: aarch64, DATE: Thu May 17 07:29:06 UTC 2018
GPU type - As part of the Jetson TX2 developer kit board
JetPack – 3.2.1 (But TensorRT and CUDNN were updated according to JetPack 3.3 versions)
nvidia driver version - As part of the JetPack
CUDA version - Release 9.0, V9.0.252
CUDNN version - 7.1.5
Python version – Not used
TensorRT version –

The J21 UART is already in use as a serial console. What you are seeing is that U-Boot is being told to halt if it sees console keyboard activity (“hit any key” to go to a U-Boot prompt). J17 ("/dev/ttyTHS2") is free to use, otherwise you’ll have a significant effort to rebuild U-Boot without serial console to “ttyS0”.

Thank you very much for your quick answer.


  1. Is UART#2 J18: 22 UART2_RXD UART2_RX UART #2 Receive 32 UART2_TXD UART2_TX UART #2 Transmit also free to use? Can I connect the GPS to it?
  2. Suppose the answer is No: Where can I find a knowledge about the U-Boot changes that will be required to be done in order to disable the console access to the ttyS0? And what are the system impacts due to these changes?


I am not familiar with whether anything uses the J18 UART. This seems to be part of the M.2, and so I suspect it could be used so long as you don’t have an M.2 card (or maybe even then it could be used if the card doesn’t touch the UART…any M.2 card of that key might use PCIe, UART, or both)…but there might be some sort of M.2 related configuration…don’t know. I can tell you it wouldn’t hurt to try with any 3.3V UART. As an example, if you wired J17 TX to J18 RX, and J17 RX to J18 TX (preferably with a low speed of 115200 or lower…and twisted pair), then a terminal program on each of these would show echo on the other. Sorry, I don’t know which “/dev/tty” is associated with J18.

U-Boot modification for this might differ depending on release, but it has been a common topic. Methods of installing device tree in R28.1 versus newer releases has changed, but some of what you find here will be correct so far as actual modification (but be careful about instructions for installing changes, especially device tree):

The above is about changing which UART is serial console, but you could just ignore the enable of serial console part. Do keep in mind though that serial console is a majorly important debug tool, and so you will be at a disadvantage for debugging failures.

Thank you for all detailed information