How to get ssh to work without plugging in to a monitor once powered on?

Hello, I flashed my Xavier NX with the respective image and setup everything successfully. I also enabled ssh but found out that for ssh to work, I need to plug in the Xavier to a monitor once it is powered on. After it is powered on I can use ssh, and even disconnect the monitor and still use ssh. But once I shut it down and repower it I have to repeat the process. I’m planning to use the Xavier in a competition where I won’t have access to a monitor so is there any way I can get ssh to startup with the initial power on? Thank you.

ssh should always be present. What typically fails is that someone uses WiFi for networking, and the network is mandatory for ssh to work. In most cases WiFi setup is “personalized” for the login account, and thus WiFi does not typically start unless the GUI is logged in to. I have not done so myself, but WiFi can be set up to activate at the same time as wired, and to not require the GUI. Someone who has done this will need to provide the steps.

Another issue you might find is that some applications need a GPU “context” to identify how to use the GPU for hardware acceleration help. Obviously something like an OpenGL program needs the GUI, but it is sometimes less obvious that CUDA and AI programs might need a GPU context as well. This is done by providing the identifying GPU with the “DISPLAY” environment variable. That variable is almost always done by pointing at a GUI. Kill the GUI and the GPU-dependent program will also die, so once you have WiFi up, be sure to find out if your program still needs a “DISPLAY” context.

If you do need a “DISPLAY” context, then you have three ways of fulfilling this:

  • Point at the local Jetson’s GUI (not feasible for your case).
  • Provide a virtual desktop on the Jetson which has the ability to remote display elsewhere (very likely what you want). Anything needing a GPU context cannot tell the difference between a virtual DISPLAY and one going to an actual hardware monitor.
  • Remote display to the GUI of the PC you are accessing the Jetson from. This is unlikely to be what you want in many cases. Whereas a virtual display forwards the result of work done through a GPU event to the remote system, a forwarded display sends events to the remote system, and the remote system then performs that work. The GPU of a Jetson being forwarded to a PC stops being used, and all software and hardware support must then be provided by the PC. If the PC does not support the exact same GPU support (e.g., OpenGL libraries, OpenGLES libraries, a GPU of the correct architecture, CUDA support for the exact same release, so on), then this will fail. Plus, as soon as the PC disconnects, any CUDA or other AI software will cease to function. You would be dependent upon the PC always being connected…and since you don’t use the GPU anymore with forwarded events you might as well get something less powerful and not having a GPU.
1 Like

ssh doesn’t require a display. Unless graphical access is required.
However, first start of Jetson after flashinfg might need a display to set up username/ password etc.
Sometimes when I miss ssh I do

sudo apt install openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd