NVIDIA Jetson AGX Xavier Setup

Introduction

Recently, I got an NVIDIA Jetson AGX Xavier Developer Kit. It turns out that setting up Jetson AGX Xavier is slightly more complicated than setting up Jetson Nano.

In this blog post, I would like to discuss some of the notes and the caveats that I found when I was setting up the device.

Setup

NVIDIA SDK Manager

The JetPack SDK and L4T OS can only be installed via NVIDIA SDK Manager. The SD Card image method is not supported for Jetson AGX Xavier.

We have to use a Ubuntu 16.04 LTS or Ubuntu 18.04 LTS machine to install NVIDIA SDK Manager. As of March 23rd 2021, Ubuntu 20.04 LTS is not supported by NVIDIA SDK Manager.

USB-C Hub

There are few available ports. It is thus recommended to have a USB-C hub.

Display Output

It only has a HDMI output port and no DP output port. Be prepared to have a HDMI to DP connector if the monitor only accepts DP cable. Some USB-C hubs have DP output port as well.

USB WIFI

There is no on-board WIFI. It is recommended to prepare a USB WIFI adapter. After the USB WIFI adapter is connected to Xavier, we might have problem SSH to Xavier over WIFI. sudo apt-get update && sudo apt-get upgrade -y should solve the problem if the USB WIFI adapter is supported by the OS.

External Hard Drive

Be prepared to have an external hard drive, as there is only 32GB storage space on the device.

Power Model

Jetson AGX Xavier supports different power models. The default 15W model is the most suitable for usages with display. To switch power models, we have to run nvpmodel.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
$ nvpmodel --version
nvpmodel: unrecognized option '--version'
Nvidia Power Model Tool Version 1.1.4
Usage:
nvpmodel [-h | --help] [--verbose] [-q | --query] [-p | --parse] [-u | --udata]
[-w | --wait <sec>] [--boot] [-m | --mode <mode>] [-f | --conf <filename>] [-o | --os <android,l4t>]
-h, --help:
Print this help info.
--verbose:
Enable verbose log.
--boot:
Exit and do nothing if it is sanity-flashed build.
-p, --parse:
Parse the config file only. Recommended to enable verbose log.
-m, --mode <mode>:
<mode> is one of the integer POWER_MODEL ID defined in config file. Switch to the specified power mode.
-d, --fmode:
specify the mode for thermal-fan-est and pwm-fan, such as cool/quiet,etc... .
-f, --conf:
explicitly specify the config file.
If it is the only option, then it sets the power mode as default mode configured in the file.
This option can be used for developer usage to specify a config file other than the default one.
-o, --os <android,l4t>:
Perform OS specific operations for power model settings. Argument is case insensitive.
-q, --query:
Query the current power mode.
-w, --wait:
delay exectuion by specified amount of seconds.
-u, --udata:
specify the absolute path for user data file when set or query power mode.
Examples:
nvpmodel -m 2: switch to POWER_MODEL ID=2 of which settings are defined in the default configuration file.
nvpmodel -m 2 -o android: switch to POWER_MODEL ID=2 and perform Android specific operations for power mode.
nvpmodel -m 2 -f pm.conf: switch to POWER_MODEL ID=2 of which settings are defined in pm.conf.
nvpmodel -m 2 -u /data/status: switch to POWER_MODEL ID=2 and store the active mode as user settings in /data/status.
nvpmodel -f pm.conf: read the active mode in user data file and set it as the power mode which is configured in pm.conf.
If user data file does not exist or the active mode value is invalid, set defalut mode instead.
nvpmodel -q: print the current power mode.
nvpmodel -q --verbose: print the current power mode with verbose info.
nvpmodel -p -f pm.conf: parse pm.conf and print the result.
nvpmodel -d mode_name: set mode_name to fan.

The power model IDs are explained on the L4T guide.

Issues

WIFI Connection Dropping Problem

My Edimax rtl8192cu USB WIFI chipset does not work very well with the L4T OS, as it drops quite frequently and it will not reconnect.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ lsmod
Module Size Used by
fuse 103969 3
bnep 16562 2
zram 25920 4
rtl8xxxu 115372 0
rtl8192cu 85379 0
rtl_usb 14074 1 rtl8192cu
rtl8192c_common 54245 1 rtl8192cu
rtlwifi 89092 3 rtl_usb,rtl8192c_common,rtl8192cu
mac80211 721935 4 rtl_usb,rtlwifi,rtl8192cu,rtl8xxxu
cfg80211 589932 2 mac80211,rtlwifi
overlay 48718 0
spidev 13282 0
userspace_alert 5756 0
nvgpu 1581474 40
bluedroid_pm 13912 0
ip_tables 19441 0
x_tables 28951 1 ip_tables

It looks like that it is not the power management problem.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ iwconfig
eth1 no wireless extensions.

usb0 no wireless extensions.

eth0 no wireless extensions.

wlan0 IEEE 802.11 ESSID:"RTX2080"
Mode:Managed Frequency:2.462 GHz Access Point: 3C:37:86:39:25:4B
Bit Rate=72.2 Mb/s Tx-Power=20 dBm
Retry short limit:7 RTS thr=2347 B Fragment thr:off
Power Management:off
Link Quality=70/70 Signal level=-25 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:112 Missed beacon:0

rndis0 no wireless extensions.

lo no wireless extensions.

l4tbr0 no wireless extensions.

dummy0 no wireless extensions.

After some quick googling, I found it is possible that the rtl8192cu Linux driver is problematic. I disabled the driver by running the following command.

1
$ echo "blacklist rtl8192cu" | sudo tee /etc/modprobe.d/blacklist-rtl8192cu.conf

After reboot, we found that the legacy universal driver rtl8xxxu is being used instead.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ lsmod
Module Size Used by
fuse 103969 2
bnep 16562 2
zram 25920 4
rtl8xxxu 115372 0
mac80211 721935 1 rtl8xxxu
cfg80211 589932 1 mac80211
overlay 48718 0
spidev 13282 0
userspace_alert 5756 0
nvgpu 1581474 40
bluedroid_pm 13912 0
ip_tables 19441 0
x_tables 28951 1 ip_tables

Although the bit rate becomes much slower, the connection is quite stable.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ iwconfig
eth1 no wireless extensions.

usb0 no wireless extensions.

eth0 no wireless extensions.

wlan0 IEEE 802.11 ESSID:"RTX2080"
Mode:Managed Frequency:2.462 GHz Access Point: 3C:37:86:39:25:4B
Bit Rate=1 Mb/s Tx-Power=20 dBm
Retry short limit:7 RTS thr=2347 B Fragment thr:off
Power Management:off
Link Quality=70/70 Signal level=-34 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:181 Missed beacon:0

rndis0 no wireless extensions.

lo no wireless extensions.

l4tbr0 no wireless extensions.

dummy0 no wireless extensions.

Enable WIFI at Startup

Because we often want to work with Jetson AGX Xavier headlessly, it is necessary to SSH to Xavier over WIFI at startup. However, the WIFI is not enabled at startup by default.

To enable the WIFI at startup, in the Network Connections, we have to make sure that options Automatically connect ... and All users may connect ... are checked.

References

Author

Lei Mao

Posted on

05-08-2021

Updated on

02-19-2023

Licensed under


Comments