X Window System¶
X Window System provides windowing, graphic display, and device management services to graphic user interface (GUI) applications that run under Linux. X server is the standard implementation of X Window System, and is supported in Jetson Linux.
The official X Window System documentation is available on the X.Org Foundation’s X.Org documentation page.
The lightdm
or gdm3
service currently is not enabled by default.
Therefore, you must start X server manually. This differs from previous
releases, in which you could either start X server manually, or make it
run by default on the Ubuntu root file system started by lightdm
or gdm3
.
Starting X Server Manually¶
To start X server¶
Note
You can define the display configuration in xorg.conf
before starting the server. After the server starts, use xrandr
to set the runtime configuration. For more information, see
Using xrandr for Runtime Configuration.
Enter this command:
$ sudo -b X -ac -noreset -nolisten tcp
The command line arguments may vary depending on platform.
To stop X server¶
To get the PID of X server, enter this command:
$ ps aux | grep "X"
Then enter this command:
$ sudo kill <pid>
Where <pid>
is the PID displayed for X server by the first command.
Runtime Configuration¶
X server provides several mechanisms for setting configuration and run-time parameters:
Command line options
Environment variables
The configuration files
xorg.conf
andxorg.conf.d
Auto-detection
Fallback defaults
Jetson Linux provides utilities for changing the configuration and run-time parameters:
xrandr
: A standard X server utility for setting display propertiesnvidia-xconfig
: An NVIDIA tool that assists in configuringxorg.conf
Note
Customers who support hot plugging of an HDMI® display must implement an X11 client that reconfigures the HDMI display upon receipt of an RRScreenChangeNotify
X11 event. Typically, a gnome-settings-daemon
does this.
This solution is required to work around the X11 response to a hot-plugged HDMI display. X11 registers the HDMI output as connected but does not perform an automatic mode-set.
Using xrandr for Runtime Configuration¶
The NVIDIA® Jetson™ X Driver supports the RandR 1.2 (X11
Rotate and Resize) extension. This extension allows dynamic enabling,
resizing, positioning, and orienting of displays. The xrandr
command line utility enables you to control RandR. That utility is included
in the x11-xserver-utils
package. The drive-setup.sh
installation script
installs that package.
Querying Supported Displays and Screen Resolutions¶
You can use xrandr
to get information about supported displays and
screen resolutions.
To query attached displays and detect available modes¶
With X server running, enter this command:
$ xrandr
The output is similar to the following:
Screen 0: minimum 8 X 8, current 2560 X 1600, maximum 16384 X 16384
DP-0 connected primary 2560x1600+0+0 (normal left inverted right X axis y axis) 220mm X 140mm
2560x1600 60.0*+
HDMI-0 disconnected (normal left inverted right X axis y axis)
Obtaining Additional Help¶
The xrandr
utility provides a help menu that lists all supported options
and provides guidance on their use.
To get further help and view all available options¶
Enter this command:
$ xrandr --help
Modifying the Static Configuration (Optional)¶
The minimal xorg.conf
is installed on the target at /etc/X11/xorg.conf
.
Additionally, directories of *.conf
fragment files are located in these locations:
/etc/X11/xorg.conf.d/
/usr/share/X11/xorg.conf.d/
By default, xorg.conf
contains no specific settings for the screen
resolution, virtual desktop size, bit depth, and display select, but
instead queries the X driver for the optimum settings based on displays
enabled. The Jetson X Driver’s default settings, along with runtime
xrandr
commands and X server command-line arguments, are meant to be
sufficient for most needs. In cases where they are not sufficient, you
can configure appropriate settings for screen resolution, bit depth, and
display enablement to create custom defaults. You may still use xrandr
for runtime manipulation.
Note
NVIDIA recommends that you use the nvidia-xconfig
tool to edit the xorg.conf
file, rather than edit it by hand. You may have to edit by hand in some circumstances, though.
Using nvidia-xconfig to Configure xorg.conf¶
The NVIDIA X server configuration tool, nvidia-xconfig
, simplifies the
task of modifying your xorg.conf
file. It parses the file, saves a
backup, and modifies the configuration based on your choice of
command-line options.
Getting Help with nvidia-xconfig¶
The nvidia-xconfig
tool provides basic and advanced help.
To get help for nvidia-xconfig¶
To get basic information about the tool, enter this command:
$ nvidia-xconfig --help
To get information about options for modifying xorg.conf, enter this command:
$ nvidia-xconfig --advanced-help
Specifying a Custom EDID for the Display¶
The EDID (extended display identification data) is a collection of data in a display which lists its modes of operation (resolutions, refresh rates, etc.).
If X11 does not recognize the mode list of a particular model of
display, it may be because the display has an invalid EDID. In this case
the X driver cannot accurately determine the capabilities of the
display. You can correct this problem by using nvidia-xconfig
to specify
a valid EDID.
To specify a custom EDID for the display¶
Enter this command:
$ nvidia-xconfig --custom-edid=HDMI-<n>:<path>
Where:
<n>
is the index of the HDMI display for which the custom EDID is defined. It is 0 for the first HDMI display, 1 for the second, etc.<path>
is the complete path to a file that contains the custom EDID. The filetype of this file customarily is.bin
.
Setting Color Bit-Depth¶
You can use nvidia-xconfig
to set color bit-depth in the xorg.conf
file.
This makes X11 start with the specified color bit-depth.
To set color bit-depth¶
Enter this command:
$ nvidia-xconfig --depth=<depth>
Where
<depth>
is one of the following supported color bit-depth values: 8, 15, 16, 24, and 30.
For example:
$ nvidia-xconfig --depth=16
Specifying Modes¶
Use nvidia-xconfig
to set a display’s display mode (resolution) in xorg.conf
.
To add a mode to the mode list¶
In a terminal window, enter:
$ nvidia-xconfig -mode=<mode>
Where
<mode>
is the display mode expressed as X and Y pixels. For example:$ nvidia-xconfig -mode="1024x768"
If the system has more than one display, you must specify the display
whose mode list is to be changed. Enter nvidia-xconfig --help
for
information.
Enabling Debug Mode¶
You can use nvidia-xconfig
to enable debug mode in the xorg.conf
file.
When debug mode is enabled, the X driver logs verbose details about mode
validation in the X server log file. You can use this information to
troubleshoot mode database issues.
To enable debug mode¶
Enter this command:
$ nvidia-xconfig -mode-debug
To disable debug mode¶
Enter this command:
$ nvidia-xconfig -no-mode-debug
Multi-Display X Server Layout¶
Server layout refers to the number of displays attached to X server, which X screen each display appears on, and the position of each display on its X screen. For example, a server layout might specify that there are two displays, both of which map to one X screen, and display 1 is to the right of display 0 on the X screen.
For single-display systems, the default server layout is sufficient. For multi-display systems you must define your own server layout. NVIDIA X server current supports only a single X screen (a single virtual desktop) mapped to multiple displays.
The default configuration maps a different part of X screen to each display. You can also configure a mirrored layout, which maps the desktop or the same part of the desktop to more than one display. The size of the X screen is the smallest rectangle that covers all of the parts that are mapped to enabled displays.
To enable one X screen (default for span)¶
Enter this command:
$ nvidia-xconfig -only-one-x-screen
This is an illustration of a one X screen configuration with a side-by-side layout:
This xrandr
command specifies the layout shown above:
$ xrandr --output HDMI-0 --mode 1920x1080 --output DP-0 --mode 1280x1024 --right-of HDMI-0
To enable screen mirroring¶
Enter this command:
$ nvidia-xconfig --metamode-orientation=clone
To enable screen spanning¶
Enter this command:
$ nvidia-xconfig --metamode-orientation=<value>
Where <value>
specifies the position of display n+1 on the X screen, relative to display n:
RightOf
(the default)LeftOf
Above
Below
Configurations that Require Editing xorg.conf¶
This section describes configuration changes for which you must modify configuration files with a text editor, such as enabling screen saver features, EDID polling, blending, and video overlays.
Enabling Screen Saver Features¶
By default, X11 features for screen blanking and for suspending and disabling displays are all disabled. You can enable those features by editing this configuration file:
/etc/X11/xorg.conf.d/disable_screensaver.conf
Configuring EDID Polling and Native Resolution¶
Instead of statically setting the resolution used in the configuration file, the X driver can poll the EDID modes and use each display’s native resolution (usually its highest resolution).
EDID polling is always enabled in the Jetson X Driver. By default, it detects only EDID modes (those reported by the display itself). You can define additional modes as described in Specifying Modes. Remove the added modes to use only modes reported by EDID.
Enabling Blending and Video Overlays¶
TegraOverlayPriority
is a .conf
file setting that controls overlay
stacking order. Its range is 0 to 255 inclusive, and the default is 255.
Larger numbers represent greater depths; thus an overlay with priority 0
is in front of all others, and 255 is behind all others. The value has
no meaning when only one overlay is present on the display.
TegraOverlayBlendmode
determines how an X overlay is combined with
another overlay behind it during scanout. The possible modes are:
Opaque
(default)SourceAlphaBlend
PremultSourceAlphaBlend
This value has meaning only when an external process has created a display that is behind the X server.
To set blending and video overlay attributes¶
In the
Device
section ofxorg.conf
, add a setting in the following form:Option "MetaModes" "<mode_name> { <property> = <value>,... <setting> = <value> }"
Where:
<mode_name>
specifies the name of the mode whose overlay attributes are to be set. If no<mode_name>
is specified, it defaults tonvidia-auto-select
.<property>
is the name of a mode property, and <value> is its new value.
This is an example of a complete setting:
Option "MetaModes" "nvidia-auto-select { TegraOverlayBlendmode = PremultSourceAlphaBlend, TegraOverlayPriority = 0 }"
These properties are per-output and can also be queried and modified
during run-time via xrandr
. To specify a particular display in a
multi-display system, use the --output
option. For more information,
enter the command xrandr -q
.
To query the blending and video overlay values¶
Enter this command:
$ xrandr --prop
To modify the blending and video overlay properties¶
Enter these commands:
$ xrandr --output HDMI-0 --set TegraOverlayPriority 0 $ xrandr --output HDMI-0 --set TegraOverlayBlendmode PremultSourceAlphaBlend
Note
These blending and video overlay configuration options are supported only on NVIDIA® Jetson AGX Xavier™ or NVIDIA Jetson Xavier™ NX device.
X window system does not support alpha blending, so all alpha blending on the enabled display must be done through OpenGL® ES rendering. Alpha blending for natively rendered pixels is undefined.