Jetson Nano - Issues Communicating with Arduino through UART

According to the following tutorial:

you should see


after connecting the Arduino to the Jetson’s TX and RX pins.

However, when I do this, the device doesn’t show up at all. I have tried both sets of TX/RX pins on the Jetson–the first one being the pins on J44, and the second being GPIO pins 8 and 10. For each case, I have made sure to connect the Arduino’s TX to the Jetson’s RX, and vice versa.

What could the problem be?


Let’s take a step back. What exactly are you trying to accomplish?

What Arduino are you using (R3, Mega, etc…) and what is the bus voltage (5.0V, 3.3V)?
Which pins on the Arduino are you connecting to which pins on J44?

hello agrtgrape,

please also check NVIDIA Jetson Nano J41 Header Pinout for the pinouts.

I am using an Arduino Nano to control some motors and get input from a few sensors. The pinout is the following:

Right now, I have pin 1 on the Arduino (TXD) going to GPIO pin 10 on the Jetson, and Arduino pin 0 (RXD) to Jetson GPIO pin 8. I’m not sure about the bus voltage, but the Arduino is running on 5V.

Previously I was using J44 for UART (with the proper connections: TX to RX and vice versa), but then I was unable to SSH into the Jetson for some reason, so I switched to the wiring mentioned above.


So a few things:

  1. The devices also need to share a common ground connection. Nano-J41.9 to Arduino pin GND
  2. The devices need to share a common baud rate, number of bits, and parity – as length of wire between devices inscreases, the baud rate should decrease – get it working at 9600,8,1,n before you shoot for 15200.
  3. The devices need to share a common bus-voltage, or you need to use a voltage-level (logic-level) translator or shifter. While a 3.3V device might be 5V tolerant, it also might fry it. It is also possible that a 3.3V device does not rise to the level to activate a 5V input. (just to clarify – this would be on long wire runs, or at very high data speeds)
  4. Once those preconditions have been met, you can start playing with code. I don’t know enough about the nano to tell you what the device-tree looks like, hopefully someone else can chime in. But /dev/ttyUSB0 might be the wrong device. I’ll try to research it some after work today.

Thanks, I think the lack of a shared ground connection might be the main issue, so I’ll try adding one in a bit. About the bus voltages, the Arduino Nano should be 5V, but how do I figure out the Jetson’s bus voltage? I tried looking online but couldn’t find anything. Could it 5V as well since the Jetson is powered off 5V?

/dev/ttyUSB0 should be the right device for the Arduino Nano, since that’s what I get when I plug it into my PC.

My knee-jerk answer is that it isn’t 5V – it’s either going to be 3.3, 1.8, or 0.9, and my money is on 3.3V. But I don’t have access to one until after work. If you have a scope/multimeter handy – you can probe the GPIO pins to find out – all of the digital pins should have the same voltage.

 An oscilloscope tied to the Tx pins of each device should let you know which one is transmitting and help you to narrow down your issues.

I just pulled out my oscilloscope to check – it’s a 3.3V bus. So you’ll either want to interface with a 3.3V Arduino, or get a logic-level shifter. You might get away with it for a while – but it’ll eventually bite you in the butt one day in the future.

While you are waiting, hook up an oscilloscope to the NVidia Tx Pin and see if you can get some data out – that’ll let you know you’ve got functioning code – UART will transmit data whether or not you’ve got something hooked up to the ports.

Also – NVIDIA people – looks like my new board is from an older spin than my old board. The carrier board had silkscreen errors on J41

Hi, thanks, we are checking internally.

This silkscreen problem is fixed in new version board. The earlier production version will still show this problem because they were built prior to us catching this problem. Thanks again.

Even though this issue is fixed, I’m adding a note here for anyone finding it and wanting to get their 5v devices’(like the Arduino Nano/Uno/Mega etc) serial connection working with their Jetson Nano(3.3v)…

Once you flash the code to the arduino(any other board which has a virtual serial port/FTDI) through USB, you can connect the same device to the Jetson Nano through USB. This will make the arduino nano show up as a serial device such as /dev/ttyUSB0 on the Jetson Nano. Any code you then want to run on the nano can use the serial/UART connection to pass data both ways.

This will, in my understanding, cause the same effect as connecting the Arduino through a logic level converter and then onto the Rx/Tx pins.