Hello, i’m trying to update the output resolution from Jetson NX display port.
It’s connected to a Samsung 4K display and automatically configures the resolution to the maximum, 3840x2160 60Hz.
I need to configure the resolution to 3840x1200 60Hz.
I found many post with usage of xrandr command and with updating the X.org.conf file, but eventually no luck.
When i tried to use xrandr command, it failed when i’m trying to use --addmode argument, please see attached file with the terminal log:
This might be the NX not supporting the resolution. I’ll suggest that you add Option "ModeDebug" to the right place in “/etc/X11/xorg.conf”. What this will do is cause the X server (which has the GPU driver loaded) to log what it thinks of every single mode. You’ll perhaps see that some modes are rejected due to exceeding capabilities, but more likely you’ll find some modes are extension modes, and none of those are supported (interlaced modes are also rejected, but it is hard to imagine a 4k display using interlaced).
In the /etc/X11/xorg.conf, in Section "Device": Option "ModeDebug"
The log, if this is $DISPLAY of “:0”, will be “/var/log/Xorg.0.log" (or if ":1", then "/var/log/Xorg.1.log`”). You can post that log here after adding that change and rebooting with the monitor connected (you don’t need to attempt that mode since the log will contain a comment on every single mode the monitor reports).
I didn’t find the wanted resolution in this file.
Does it mean that this resolution is not supported by the Jetson or the display itself (i got the display with assurance that it supposed to support it)?
Which Xorg log goes with the terminal in question? Even if it is at the wrong resolution you should be able to run this command and see it is “:0” or “:1”: echo $DISPLAY
For the “:0” log, I see this:
[ 12.934] (II) NVIDIA(GPU-0): Validating Mode "3840x2160_60":
[ 12.935] (II) NVIDIA(GPU-0): Mode Sources: EDID, Detailed
[ 12.935] (II) NVIDIA(GPU-0): 3840 x 2160 @ 60 Hz
[ 12.935] (II) NVIDIA(GPU-0): Pixel Clock : 533.33 MHz
[ 12.935] (II) NVIDIA(GPU-0): HRes, HSyncStart : 3840, 3888
[ 12.935] (II) NVIDIA(GPU-0): HSyncEnd, HTotal : 3920, 4000
[ 12.935] (II) NVIDIA(GPU-0): VRes, VSyncStart : 2160, 2163
[ 12.935] (II) NVIDIA(GPU-0): VSyncEnd, VTotal : 2168, 2222
[ 12.935] (II) NVIDIA(GPU-0): H/V Polarity : +/-
[ 12.935] (II) NVIDIA(GPU-0): Mode "3840x2160_60" is valid.
So that mode is valid and should work. If you specified something seeming to be the same mode, but if it somehow used different timings, it might still exceed timing capabilities of hardware.
For “:1” it should be the same:
[ 28.226] (II) NVIDIA(GPU-0): --- Building ModePool for Samsung U28E590 (DFP-1) ---
[ 28.226] (II) NVIDIA(GPU-0): Validating Mode "3840x2160_60":
[ 28.226] (II) NVIDIA(GPU-0): Mode Sources: EDID, Detailed
[ 28.226] (II) NVIDIA(GPU-0): 3840 x 2160 @ 60 Hz
[ 28.226] (II) NVIDIA(GPU-0): Pixel Clock : 533.33 MHz
[ 28.226] (II) NVIDIA(GPU-0): HRes, HSyncStart : 3840, 3888
[ 28.226] (II) NVIDIA(GPU-0): HSyncEnd, HTotal : 3920, 4000
[ 28.226] (II) NVIDIA(GPU-0): VRes, VSyncStart : 2160, 2163
[ 28.226] (II) NVIDIA(GPU-0): VSyncEnd, VTotal : 2168, 2222
[ 28.226] (II) NVIDIA(GPU-0): H/V Polarity : +/-
[ 28.226] (II) NVIDIA(GPU-0): Mode "3840x2160_60" is valid.
The brief list can be found in each log as “ModePool”. An example from one of your logs:
[ 13.320] (II) NVIDIA(GPU-0): --- Modes in ModePool for Samsung U28E590 (DFP-1) ---
[ 13.320] (II) NVIDIA(GPU-0): "nvidia-auto-select" : 3840 x 2160 @ 60.0 Hz (from: EDID, Detailed)
[ 13.320] (II) NVIDIA(GPU-0): "3840x2160" : 3840 x 2160 @ 60.0 Hz (from: EDID, Detailed)
[ 13.320] (II) NVIDIA(GPU-0): "3840x2160_60" : 3840 x 2160 @ 60.0 Hz (from: EDID, Detailed)
[ 13.320] (II) NVIDIA(GPU-0): "3840x2160_30" : 3840 x 2160 @ 30.0 Hz (from: EDID, CEA, Detailed)
[ 13.320] (II) NVIDIA(GPU-0): "2560x1440" : 2560 x 1440 @ 60.0 Hz (from: EDID, Detailed)
[ 13.320] (II) NVIDIA(GPU-0): "2560x1440_60" : 2560 x 1440 @ 60.0 Hz (from: EDID, Detailed)
[ 13.320] (II) NVIDIA(GPU-0): "1920x1080" : 1920 x 1080 @ 60.0 Hz (from: EDID, CEA, Detailed)
[ 13.320] (II) NVIDIA(GPU-0): "1920x1080_60" : 1920 x 1080 @ 60.0 Hz (from: EDID, CEA, Detailed)
[ 13.320] (II) NVIDIA(GPU-0): "1920x1080_60_0" : 1920 x 1080 @ 60.0 Hz (from: EDID, CEA)
[ 13.320] (II) NVIDIA(GPU-0): "1920x1080_60_1" : 1920 x 1080 @ 59.9 Hz (from: EDID, CEA)
[ 13.320] (II) NVIDIA(GPU-0): "1680x1050" : 1680 x 1050 @ 60.0 Hz (from: EDID)
[ 13.320] (II) NVIDIA(GPU-0): "1680x1050_60" : 1680 x 1050 @ 60.0 Hz (from: EDID)
[ 13.320] (II) NVIDIA(GPU-0): "1600x900" : 1600 x 900 @ 60.0 Hz (from: EDID)
[ 13.320] (II) NVIDIA(GPU-0): "1600x900_60" : 1600 x 900 @ 60.0 Hz (from: EDID)
[ 13.320] (II) NVIDIA(GPU-0): "1440x900" : 1440 x 900 @ 59.9 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1440x900_60" : 1440 x 900 @ 59.9 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1280x1024" : 1280 x 1024 @ 75.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1280x1024_75" : 1280 x 1024 @ 75.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1280x1024_60" : 1280 x 1024 @ 60.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1280x800" : 1280 x 800 @ 59.8 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1280x800_60" : 1280 x 800 @ 59.8 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1280x720" : 1280 x 720 @ 60.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1280x720_60" : 1280 x 720 @ 60.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1152x864" : 1152 x 864 @ 75.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1152x864_75" : 1152 x 864 @ 75.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1024x768" : 1024 x 768 @ 75.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1024x768_75" : 1024 x 768 @ 75.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1024x768_70" : 1024 x 768 @ 70.1 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "1024x768_60" : 1024 x 768 @ 60.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "832x624" : 832 x 624 @ 75.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "832x624_75" : 832 x 624 @ 75.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "800x600" : 800 x 600 @ 75.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "800x600_75" : 800 x 600 @ 75.0 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "800x600_72" : 800 x 600 @ 72.2 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "800x600_60" : 800 x 600 @ 60.3 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "800x600_56" : 800 x 600 @ 56.3 Hz (from: EDID)
[ 13.321] (II) NVIDIA(GPU-0): "720x400" : 720 x 400 @ 70.0 Hz (from: EDID)
[ 13.322] (II) NVIDIA(GPU-0): "720x400_70" : 720 x 400 @ 70.0 Hz (from: EDID)
[ 13.322] (II) NVIDIA(GPU-0): "640x480" : 640 x 480 @ 75.0 Hz (from: EDID)
[ 13.322] (II) NVIDIA(GPU-0): "640x480_75" : 640 x 480 @ 75.0 Hz (from: EDID)
[ 13.322] (II) NVIDIA(GPU-0): "640x480_73" : 640 x 480 @ 72.8 Hz (from: EDID)
[ 13.322] (II) NVIDIA(GPU-0): "640x480_67" : 640 x 480 @ 67.1 Hz (from: EDID)
[ 13.322] (II) NVIDIA(GPU-0): "640x480_60" : 640 x 480 @ 59.9 Hz (from: EDID)
[ 13.322] (II) NVIDIA(GPU-0): --- End of ModePool for Samsung U28E590 (DFP-1): ---
Thanks.
So if i understand your answer correctly, according to the log files the Jetson NX cannot be configured to the 3840x1200 60Hz resolution by using standard X windowing commands.
Did I understand correctly?
It’s strange to me that Jetson can output 3840x1260 60Hz resolution, but not smaller.
Maybe there’s another way to configure it (using other commands than X windowing)?
Maybe by some changes in the kernel drivers?
If the log does not show 3840x1200 at all, then the monitor itself did not report that as a valid setting. If the value shows up, then the monitor reported this via EDID, and you would then look for whether or not it “is valid”. I didn’t see this listed. This tends to say the monitor itself cannot use that mode, at least not according to its own mode list.
You could copy and paste the EDID data into http://www.edidreader.com/ and look directly at the EDID data to confirm. You can see what EDID the Jetson sees:
sudo -s
cat `find /sys -name 'edid'`
exit
Note that there will be a possible EDID for each “$DISPLAY”. With only one monitor plugged in there should be only one edid file with content.
When i connected a Linux PC to the same display, i got the same EDID data, without “No EDID” message at the end.
i tried to understand the EDID data by using http://www.edidreader.com/ and it’s looked like not full list at Timing Bitmap section, because i don’t see the used resolution “3840x2160_60”.
The “No EDID” is because there is more than one video port, e.g., HDMI plus eDP. Unless you have a monitor plugged in to both ports you won’t get EDID on both.
There are a number of “standard” modes, none of which are 3840x2160 or 3840x1200. However, in the detailed timing descriptors there is 3840x2160. The 1200 one is missing. Thus, the monitor does not support 3840x1200 and the driver will not be willing to even attempt that resolution.
Thanks for the detailed explanation.
So is there any way to check if the Jetson NX supports the wanted resolution without having a special display that supports it too?
I’m trying to verify it, before I’m going to search and purchase the display that supports it.
There is likely an edid file in the kernel source with the list, but I’m not sure which one. Can anyone here suggest which kernel file might show the list of all available EDID modes so he can check for 3840x1200@60Hz before actually spending money on such a monitor?
Such questions have been asked for many other users before, so you can search similar keywords for those posts too.
The logic behind this is if you don’t see that mode is showing up in xorg.0.log, it means that mode is already being filtered out by the lower-level software. The lower level means the kernel driver.
We have a mode filter in kernel driver /kernel/nvidia/drivers/video/tegra/dc/dp.c. This function will check detail for each coming mode. If it does not match what we support, then it will be removed.