Remotely control the Nvidia Jetson TX2 on a local network is straightforward thanks to the default tools provided by Ubuntu.
The problem comes when you need to remotely control a Nvidia Jetson TX2 over Internet. Firewall, router ports to be opened, VPN, VNC configuration… a battle that not always we can win.
TeamViewer and ARM64
One of the best software that allows to access a remote device over Internet is the well known TeamViewer. With TeamViewer you can forget everything, you simply install the softwares on the host and on the client, you enter the identification code of the host and the passwordm then the magic happens: you can do everything like if you are in front of the remote device.
If you have a TeamViewer account it’s even simpler: you add the host device to the list of your trusted devices and you are ready to connect to it without entering codes and passwords.
The problem with the Nvidia Jetson boards is that they have an ARM64 processors running a 64 bit version of Ubuntu which is not directly supported by TeamViewer.
On the TeamViewer download page, under TeamViewer host what you can find for an ARM-based device is only the armv7 32bit version, not directly compatible with the Jetson.
Searching on the TeamViewer forum an user provided a good solution to be able to install and use the 32bit version on the 64 bit Jetson:
- Download the latest debian package from the TeamViewer website: https://www.teamviewer.com/it/download/linux/
You can find the link scrolling down the web page up to the “TeamViewer Host” section, click “↓ armv7 32bit“ in the subsection “Debian, Ubuntu, Raspbian”
- Note: At the time of writing this tutorial the name of the downloaded file is teamviewer-host_14.1.3399_armhf.deb
- Open a console and install the missing 32bit libraries (that’s the trick!)
- $ sudo dpkg --add-architecture armhf
- $ sudo apt update
- $ sudo apt install libxtst6:armhf
- Install TeamViewer
- Move to the folder containing the downloaded file, for example $ cd ~/Downloads
$ sudo dpkg -i teamviewer-host_14.1.3399_armhf.deb
- Note: check if the filename as changed from the version available at the time of writing this tutorial
- Ignore “compatibility errors” and force the installation
- $ sudo apt install -f
- Start TeamViewer as daemon and start the service:
- $ sudo teamviewer --daemon enable
- $ sudo service teamviewerd start
- A “licence agreement” window opens, accept it and you are ready
- Start TeamViewer
- $ teamviewer
- Enter the credential for your account (or create a new one)
- When you try to connect to your account on a new device for the fist time you should receive an email with subject Device authorization needed
- Open the email and click on the link Add to trusted devices. The TX2 is now added to the list of your TeamViewer devices
- Enter the credential again to activate TeamViewer on the TX2
- Now you can open the TeamViewer client on a remote PC and connect to the new device. You can find the Jetson TX2 in the Computers and Contacts list
Note: I tested TeamViewer client for Android. It correctly connects to the host on the TX2, but the mouse and the keyboard do not work.
Virtual display resolution
If the Nvidia Jetson board is not connected to an HDMI display, the remote connection will have the unusable default resolution of 640×480.
You can change the default resolution editing the file /etc/X11/xorg.conf
$ gedit /etc/X11/xorg.conf
[crayon-5d0beb62a7545683064011 inline="true" ]
Option "AllowEmptyInitialConfiguration" "true"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Default Device"
Virtual 1600 900
You can set your favorite resolution changing the values
Virtual 1600 900.
It is highly recommended to use a resolution with 16:9 ratio (i.e. 1920×1080, 1600×900, 1280×720, …).
Finally we can use TeamViewer on the Nvidia Jetson TX2 waiting for the official ARM64 version of the host.
The solution should work also on Jetson TX1 and Jetson Xavier, but I have not yet tried it.
Let me know if you have problems, suggestions and better solutions writing an email to firstname.lastname@example.org
Procedure – https://community.teamviewer.com/t5/Linux/armv8-64bit-TeamViewer-build/m-p/44529/highlight/true#M2577
Resolution – https://devtalk.nvidia.com/default/topic/995621/jetson-tx1/jetson-tx1-desktop-sharing-resolution-problem-without-real-monitor/post/5159559/#5159559