Configuring Nvidia Jetson Orin Nano Dev Kit for Flexible Display Output
Issue Overview
Users of the Nvidia Jetson Orin Nano Dev Kit are experiencing difficulties in configuring the device to switch between a low-resolution dummy monitor for VNC access when no physical display is connected, and a higher resolution output when a DisplayPort cable is plugged in. This issue is particularly relevant for applications where the device needs to operate headlessly (e.g., on autonomous drones) but also requires occasional direct monitor connection for development or debugging purposes.
The problem is exacerbated by differences in behavior compared to older models like the Xavier NX, suggesting changes in the Orin Nano’s display handling. Users have reported challenges in achieving hot-plugging functionality and issues with automatic display detection.
Possible Causes
-
Configuration Limitations: The default configuration may not support automatic switching between physical and virtual displays.
-
Software Changes: Updates in the Jetpack or Ubuntu versions used on the Orin Nano may have altered display handling mechanisms.
-
Hardware Differences: The Orin Nano’s hardware architecture might differ from previous models, affecting display detection and configuration.
-
Xorg Configuration Issues: Incorrect or incomplete Xorg configuration files may prevent proper display switching.
-
Timing Issues: The script for detecting display connections may run before all necessary system components are fully initialized.
Troubleshooting Steps, Solutions & Fixes
-
Implement a Custom Switching Script:
Create a script that checks for display connections and adjusts the configuration accordingly. Here’s an example implementation:a. Create a dummy configuration file
/etc/X11/xorg.conf.d/97-dummy.conf.disabled
:Section "Device" Identifier "dummy_videocard" Driver "dummy" Option "IgnoreEDID" "1" EndSection Section "Monitor" Identifier "dummy_monitor" HorizSync 28.0-80.0 VertRefresh 48.0-75.0 Modeline "1280x720" 74.50 1280 1344 1472 1664 720 723 728 748 +HSync +VSync EndSection Section "Screen" Identifier "dummy_screen" Device "dummy_videocard" Monitor "dummy_monitor" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1280x720" EndSubSection EndSection
b. Create a script
/usr/local/bin/vnc-display.sh
:#!/bin/bash LOG_FILE="/var/log/vnc_script.log" DUMMY_DISABLED="/etc/X11/xorg.conf.d/97-dummy.conf.disabled" if [ -e $DUMMY_DISABLED ]; then if xrandr | grep -q "DP-[0-9]\+\(\.[0-9]\+\)\? connected"; then echo "display port was detected" >> "$LOG_FILE" mv /etc/X11/xorg.conf.d/97-dummy.conf /etc/X11/xorg.conf.d/97-dummy.conf.disabled else echo "display port was not detected" >> "$LOG_FILE" mv /etc/X11/xorg.conf.d/97-dummy.conf.disabled /etc/X11/xorg.conf.d/97-dummy.conf sleep 30 service gdm restart sleep 10 fi else mv /etc/X11/xorg.conf.d/97-dummy.conf /etc/X11/xorg.conf.d/97-dummy.conf.disabled fi
c. Add a
.desktop
file to~/.config/autostart
:[Desktop Entry] Type=Application Exec=sudo /usr/local/bin/vnc-display.sh Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true Name[en_CA]=monitor check Name=monitor check Comment[en_CA]=Check if display port monitor is plugged in and enable dummy for VNC if not Comment=Check if display port monitor is plugged in and enable dummy for VNC if not
-
Use xrandr for Resolution Setting:
If no monitor is connected, you can set a specific resolution using xrandr:export DISPLAY=:0 xrandr --fb 1920x1080
Adjust the resolution as needed.
-
Consider Using a Dummy Display Plug:
A hardware solution involves using a Virtual Display Port Dummy Plug. This device emulates a connected display, allowing the system to configure output without software intervention. -
Restart Display Manager:
After configuring the correct/etc/X11/xorg.conf
, you can restart the display manager:sudo systemctl restart display-manager
-
VNC Server Configuration:
If using VNC, ensure it’s properly configured to start automatically. Create a.desktop
file in~/.config/autostart
to launch the VNC server. -
System Update:
Ensure your Jetson Orin Nano is running the latest Jetpack and L4T versions, as updates may include fixes for display-related issues. -
Monitor Connection Detection:
Usexrandr
to detect monitor connections in your scripts or applications.
While these solutions provide workarounds, it’s important to note that achieving seamless hot-plugging functionality may require further investigation or potential updates from NVIDIA. Users are encouraged to report persistent issues to NVIDIA support for potential inclusion in future software updates.