====== Remote Desktop: Better HEADLESS! ====== Here they show and compare some remote connection alternatives for Jetson boards. ===== VNC ===== VNC stands for Virtual Network Computing, it is a graphical desktop sharing system that uses the Remote Frame Buffer (RFB) protocol which allows you to control a remote computer through a network connection, capturing keyboard and mouse events and updating the graphical window on both computers by retransmitting the changes through a network. The graphical user interface (GUI) is server-side rendered, that means that everything we see on our remote connection is also on our server. You can also connect several clients to the same server but all of them will see the same graphical environment. Currently (02/22/2021) the official support for remote connection on Jetson boards is VNC, although it is not the smoothest working option. A tutorial for setting up a remote connection can be found at **[[workshops:nvidia_jetson:xavier_nx:vnc_configuration|VNC Configuration]]**. More details about VNC at [[https://en.wikipedia.org/wiki/Virtual_Network_Computing|Virtual Network Computing]] Problem: It seems a monitor has to be connected to the Jetson. ===== NX ======= **NX technology**, commonly known as Nomachine, is a proprietary software for remote access, desktop sharing, virtual desktop and file transfer between computers. The design of NX was derived from the DXPC (Differential X Protocol Compressor) project, like VNC it has a client-server architecture for remote connection and also renders the graphical environment on the server side. NX renders the GUI faster than VNC because it only renders the areas that underwent changes while VNC renders the whole environment including those parts that did not under changes, this makes NX have a smoother performance compared to VNC. Although Nomachine does not have [[https://forums.developer.nvidia.com/t/has-anyone-had-success-installing-nomachine-on-their-nano/75535/2 | official support]], the official Nomachine website has an article called [[https://www.nomachine.com/AR02R01074 | Tips for using NoMachine on NVIDIA Jetson Nano]] in which they state that Nomachine can be installed on a Jetson Nano, this article was tested on a Jetson Xavier NX and it also works fine. A tutorial for how to setup Nomachine is on the way. More details about NX at [[https://en.wikipedia.org/wiki/NX_technology|NX technology]] VNC and NoMachine require that a monitor is connected! -> **Better headless with rdp and xfce4?** ===== xRDP with xfce4 ===== RDP (Remote Desktop Protocol) is a proprietary protocol developed by Microsoft which provides a user with a graphical interface to connect to another computer over a network connection. Although RDP uses client-server architecture, the rendering of the graphical environment occurs on the client side and the environment is different from the environment running on the remote computer. However currently (22/02/2021) RPD in many users (including me) presents an error, in which when establishing the connection the NVDIA logo appears and the connection is closed and the RDP client is closed. Here many users present the same [[https://forums.developer.nvidia.com/t/issue-with-xrdp/110654|problem]]. The solution to render the environment is to install xfce on Jetson boards and use xfce as the graphical environment but the performance slows down and becomes almost unusable. A tutorial for how to setup RDP and xfce is on the way. More details about RDP at [[https://en.wikipedia.org/wiki/Remote_Desktop_Protocol|Remote Desktop Protocol]] ===== SSH and X.Org Server ===== **SSH** or **Secure Shell** is a cryptographic network protocol for operating network services securely over an unsecured network, also has capabilities for remote command line, remote login and remote command execution. SSH by itself is not capable of rendering client-side graphical windows, but it can make use of the **X Window System protocol** commonly known as **X11**, which allows composing and rendering graphical windows in bitmap format, the rendering job is performed on what is known as the **X Server** which runs on the client side. X11 captures the keyboard and mouse events and transmits them to the X Server which in turn communicates with the **X Client** on the remote computer side, X Client sends packets over the **Reply** channel that when they reach the X Server are delivered to the composer that composes the graphic window and returns it to the X Server that displays it on the remote connection side. On Jetson SSH boards SSH works perfectly without any problem, but because of X11's own architecture all the graphics processing is done on the computer side (on the remote computer's X Server), which means that it is not the Jetson's GPU that does the work. So the remote PC must have the correct CUDA libraries, the correct OpenGL libraries, etc, which wastes the Jetson's GPU. A forum on this at [[https://forums.developer.nvidia.com/t/running-graphical-cuda-sample-over-ssh-from-within-l4t-docker-container/113027|Running graphical CUDA sample over ssh from within l4t docker container]]] A tutorial for how to setup SSH and X.Org Server is on the way. More details about the X11 architecture at [[https://en.wikipedia.org/wiki/X_Window_System_protocols_and_architecture|X Window System protocols and architecture]] ===== X2Go ===== X2Go is an open source remote desktop software for Linux that uses a modified NX 3 protocol. X2Go gives remote access to a Linux system's graphical user interface. It can also be used to access Windows systems through a proxy. The main difference with Nomachine which is based on the NX protocol is that X2Go produces a graphical environment separate from the graphical environment of the Jetson board, whereas in Nomachine the graphical environment is a copy of the environment seen on the Jetson. X2Go also allows you to select the desktop environment you want to use (recommended to use LXDE), among them MATE, GNOME, LXDE, XFCE and some others. A tutorial for how to setup SSH and X.Org Server is on the way. More details about the X2Go at [[https://wiki.x2go.org/doku.php/doc:start| X2Go Documentation]]. IS THIS THE SOLUTION? * https://www.hackster.io/news/getting-started-with-the-nvidia-jetson-nano-developer-kit-43aa7c298797 * https://blog.joaopedromartins.net/2020/06/setting-up-and-configuring-nvidia.html?m=1 * https://www.youtube.com/watch?v=Ch1NKfER0oM&feature=youtu.be