Headless setup is completely broken!

This is a bit of a rant, so apologies ahead.

As I don’t have extra displays, mice, and keyboards laying around, I’ve always planned on using the Jetson nano as a headless development board. from previous experience On beaglebone black and RPi, it was as simple as installing NoMachine and voila, but x11vnc and other options also worked as well.

On the jetson nano, It seems an almost impossible proposition. I’ve been trying to get any sort of remote GUI display to work with that board for the last few days and nothing seems to work.

Using the recommended default SD image.
read through a dozen forum posts, with various bug fixes and options tweaking. with nothing working.
the “README-vnc.txt” is also quite useless, as it presumes you already have a GUI access.
NoMachine just presents a blank black screen.
finally got x11vnc to work, and I’m getting an empty X screen (instead of the normal desktop)

I believe that, with the jetson nano being an embedded product, using it headless (or at least logging every now and then remotely) would be the main use case.
I just can’t understand why such a simple usage scenario could be so broken on a board supported by a major company (and a graphics hardware one at that), while open hardware boards like the beaglebone and raspberry pi with much fewer resources can make it seem a breeze.

I’m also using nv-jetson-nano-sd-card-image-r32.3.1.zip

I had no problem booting up with a monitor, keyboard and mouse to set up the system as a desktop system. But I too have found it impossible to set this thing up as a headless system. I’d like it to boot up and run a server that I can connect to, but the WiFi doesn’t work until I log in. So I got a new SD card and tried again connecting to the serial port since I read online that if you do that, you’ll get a setup menu on the serial console. Well, I get all the boot up messages, but no setup menu.

I know the serial port works because the system that I set up using a monitor, keyboard, and mouse works and I can log in through the serial port.

I posted here asking for help (in another thread) and someone told me to use another terminal program. Well, I don’t even see garbage showing up on the serial port. There’s nothing. Unfortunately my USB to serial adapter doesn’t have RTS/CTS, so I ordered a new one that should arrive tonight. Hopefully that’ll help. In the mean time I just set up another SD card using a monitor, keyboard , and mouse, and noticed that one of the options was whether I needed to sign in to use the network or something like that.

It’s kind of cool that I can use this thing as a desktop and all, but, well, that’s not what I bought it for.

Headless setup is only supported over the serial port interface provided over micro-usb from what I’m aware. Nvidia also provides a script to create a default user before first boot.

Once you get past the initial setup, which can be done over serial, HDMI, DP, or by a script, ssh -X should work out of the box to launch gui programs remotely, however I wouldn’t recommend anything graphically intensive over ssh -X.

VNC should be the same setup as on Ubuntu. There are many threads on the forum covering differnet solutions. If you ask for help, people are usually pretty quick to respond. I agree it would be nice if Nvidia would provide an accelerated VNC solution out of the box, however, I don’t think it would be possible to initial setup securely, and as a result many people would not something like this enabled.

Please see this guide for headless serial setup over MicroUSB:

is not supported for first boot setup. Only the serial interface provided by MicroUSB. Please see the above linked jetsonhacks video tutorial for an easy to follow howto.

Once the initial setup is complete, you can completely disable the gui with:


sudo systemctl isolate multi-user.target


sudo systemctl set-default multi-user.target

Then you can log in, either locally via one of the virtual ttys (like any other Ubuntu machine), or remotely via ssh (or ssh -X). Please not that because of the way X works, graphical apps will still work remotely even if the gui is disabled on the Nano itself.

mdegans, I’m aware of that guide, I’ve used it in the initial setup.
It does not address the remote GUI issue.
I’ve also read a number of posts on the forum regarding this issue, and followed the advice posted.
It seems many people are having issues with it. and at least NoMachine doesn’t seem to work for anybody.
‘ssh -X’ is not a IMHO a working solution.

It really shouldn’t be that complicated. the hardware is the same for everyone, and so is the initial SD image.
It’s just a matter of fixing the bugs and providing, either a working script to set up an environment or at least a functional step by step guide.
I appreciate the liveliness of this community, but it’s not about looking for help for a specific problem but rather fixing a problem many people seem to experience.

Regarding the initial setup, I see no reason why It couldn’t be an option, and those willing to take the risk of opening a VNC port accepting that risk via a checkbox.

If I understand you correctly, I need to give up on the serial ports and only work through the Micro USB port on the Nano? And this should work with, “nv-jetson-nano-sd-card-image-r32.3.1.zip”?

Any idea what the settings should be? Should I enable hardware flow control via RTS/CTS on whatever terminal program that I use? Is this even relevant when the serial connection is through a USB cable?

@http://michael.zl.prime, I guess you want X Windows running, but not on a local monitor. I don’t even want X Windows. All I want is a shell through SSH and the ability to log in through the serial ports and/or the USB.

Yes. MicroUSB provides multiple devices when plugged into a host, including a network interface and a serial port.

I was trying to explain this in the other thread. I am sorry If I wasn’t clear enough.

Once you do the inital setup, ssh is already running on the default port (22), and the instructions for disabling X11 are above.

You’re right. Nvidia could provide an accelerated graphical remote access solution, however at the moment they don’t. VNC works. Ssh -X works. NoMachine is a closed source product with no aarch64 (64 it arm) version, so it can’t work. Fwiw I haven’t gotten it to work reliably on X86 either, but it could be my specific configuration. Ssh -X is just my personal goto, YMMV.

I think part of the issue may be that x11 is kind of a whale and having the Ubuntu desktop run eats up half the board’s memory. Many people who have Nanos, like myself, often run them headless (or at least without X active). To stream video off-site, gstreamer is available with various network sinks, and ffmpeg support has been announced for further releases.

With ffmpeg support, many packages that depend on it may “just work” after rebuilding them, including some that stream the whole desktop. You will proabably get what you want in time even if Nvidia does nothing specific related to desktop streaming.

Have you tried the tips from the NoMachine website? (you can find a link from this other topic https://devtalk.nvidia.com/default/topic/1051287/cloud-remote-connection-options-for-jetson-nano/?offset=18#5427028)

In the end i’ve gone the path of least resistance and ordered the HDMI plug terminal simulator for a few bucks.

NoMachine is working quite well for me and others on the Nano.
See https://devtalk.nvidia.com/default/topic/1054819/jetson-nano/jetson-nano-desktop-sharing-problem/post/5347348/#5347348 for the arm64 version.