Hi all,
I found a display issue on TK1 R21.8 and the reproduce steps as show below:
Step 1 : TK1 connect to the 4K monitor via HDMI first and then boot into ubuntu system.
Step 2 : Set the display resolution to 4K.
Step 3 : Unplug the HDMI cable.
Step 4 : TK1 connect to another monitor that it supports the maximum resolution is 1080p.
Step 5 : All of the toolbar and menu disappear on the ubuntu desktop.
Then I checked the setting of the display via following command:
$ cat /sys/kernel/debug/tegradc.1/mode
And it showed as below:
pclk: 148500000
h_ref_to_sync: 1
v_ref_to_sync: 1
h_sync_width: 44
v_sync_width: 5
h_back_porch: 148
v_back_porch: 36
h_active: 1920
v_active: 1080
h_front_porch: 88
v_front_porch: 4
stereo_mode: 0
Please give me any suggestion, thanks.
Best Regards,
Michael
Is the new monitor also HDMI without adapters? I am guessing it is, but need to confirm.
In the case where you are running the 4K monitor check what the EDID shows up as:
sudo -s
egrep -H -i '*' `find /sys -name 'edid'`
exit
Then, after unplugging and replugging with the different monitor, check EDID again. Does the EDID change? Hopefully the answer is “yes” since this means the automatic function for asking the monitor what is specs are worked. If not, then that is the problem (failure to hot plug detect EDID would cause the GPU to think the old monitor is still there).
Another test is to fresh boot with the 4K monitor, then run “dmesg --follow
” and also run “tail -f /var/log/Xorg.0.log
” and see what each log says as the old monitor is unplugged and the new monitor is replugged. Note that you can do this monitoring from serial console or from ssh if you want to, but not running from the GUI implies you need to set the DISPLAY
environment variable. You can enter the GUI and in a console run command “echo $DISPLAY
” to find out what the ssh or serial terminal should export as. Usually this is “:0
”, but sometimes it is “:1
”. The number in the log file Xorg.0.log
is actually dependent upon the “:0
”, and if there were a “:1
”, then the log would instead be “Xorg.1.log
”. Even if the monitor does not behave nicely any log should still be valid.
Hi linuxdev,
Thanks for your reply, the EDID is changed after the new monitor is replugging.
I used the below the command to check the EDID:
$cat /sys/kernel/debug/edid1
When running the 4K monitor at the beginning, the EDID as show below:
edid[000] = 00 ff ff ff ff ff ff 00 1e 6d 08 5b 18 b9 03 00
edid[010] = 04 1c 01 03 80 3c 22 78 ea 30 35 a7 55 4e a3 26
edid[020] = 0f 50 54 21 08 00 71 40 81 80 81 c0 a9 c0 d1 c0
edid[030] = 81 00 01 01 01 01 08 e8 00 30 f2 70 5a 80 b0 58
edid[040] = 8a 00 58 54 21 00 00 1e 04 74 00 30 f2 70 5a 80
edid[050] = b0 58 8a 00 58 54 21 00 00 1a 00 00 00 fd 00 38
edid[060] = 3d 1e 87 3c 00 0a 20 20 20 20 20 20 00 00 00 fc
edid[070] = 00 4c 47 20 55 6c 74 72 61 20 48 44 0a 20 01 39
edid[080] = 02 03 30 71 4d 90 22 20 05 04 03 02 01 61 60 5d
edid[090] = 5e 5f 23 09 07 07 6d 03 0c 00 10 00 b8 3c 20 00
edid[0a0] = 60 01 02 03 67 d8 5d c4 01 78 80 03 e3 0f 00 06
edid[0b0] = 02 3a 80 18 71 38 2d 40 58 2c 45 00 58 54 21 00
edid[0c0] = 00 1a 56 5e 00 a0 a0 a0 29 50 30 20 35 00 58 54
edid[0d0] = 21 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 00
edid[0e0] = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
edid[0f0] = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 aa
Then unplug the 4K monitor and plug the monitor that supports the maximum resolution is 1080p. The EDID as show below:
edid[000] = 00 ff ff ff ff ff ff 00 09 d1 a1 78 45 54 00 00
edid[010] = 2c 15 01 03 80 30 1b 78 2e 35 85 a6 56 48 9a 24
edid[020] = 12 50 54 a5 6b 80 d1 c0 b3 00 a9 c0 81 80 81 00
edid[030] = 81 c0 01 01 01 01 02 3a 80 18 71 38 2d 40 58 2c
edid[040] = 45 00 dd 0c 11 00 00 1e 00 00 00 fd 00 32 4c 1e
edid[050] = 53 15 00 0a 20 20 20 20 20 20 00 00 00 fc 00 42
edid[060] = 65 6e 51 20 47 4c 32 32 35 30 48 0a 00 00 00 ff
edid[070] = 00 32 31 32 31 32 31 32 31 32 31 32 0a 20 01 3d
edid[080] = 02 03 24 f1 4f 10 05 04 13 03 12 07 16 01 14 15
edid[090] = 1f 06 11 02 23 09 07 07 83 01 00 00 67 03 0c 00
edid[0a0] = 10 00 38 2d 8c 0a d0 8a 20 e0 2d 10 10 3e 96 00
edid[0b0] = dd 0c 11 00 00 18 01 1d 00 72 51 d0 1e 20 6e 28
edid[0c0] = 55 00 dd 0c 11 00 00 1e 01 1d 00 bc 52 d0 1e 20
edid[0d0] = b8 28 55 40 dd 0c 11 00 00 1e 8c 0a d0 90 20 40
edid[0e0] = 31 20 0c 40 55 00 dd 0c 11 00 00 18 8c 0a a0 20
edid[0f0] = 51 20 18 10 18 7e 23 00 dd 0c 11 00 00 98 00 be
Then types the command as show below:
$tail -f /var/log/Xorg.0.log
It shows the log as below:
[ 17.863] (II) XKB: reuse xkmfile /var/lib/xkb/server-B20D7FC79C7F597315E3E501AEF10E0D866E8E92.xkm
[ 17.913] (II) XKB: reuse xkmfile /var/lib/xkb/server-B20D7FC79C7F597315E3E501AEF10E0D866E8E92.xkm
[ 20.239] (II) XKB: reuse xkmfile /var/lib/xkb/server-34CEB476A3CB596DA76FD7010A029F76732EF824.xkm
[ 193.582] (II) NVIDIA(0): Setting mode “DFP-1:nvidia-auto-select”
[ 195.132] () NVIDIA(0): Using HorizSync/VertRefresh ranges from the EDID for display
[ 195.132] () NVIDIA(0): device DFP-1 (Using EDID frequencies has been enabled on
[ 195.132] (**) NVIDIA(0): all display devices.)
[ 195.296] (II) NVIDIA(0): Setting mode “DFP-1:nvidia-auto-select”
[ 195.655] (II) NVIDIA(0): Setting mode “NULL”
[ 195.713] (II) NVIDIA(0): Setting mode “HDMI-0: nvidia-auto-select @1920x1080 +0+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}”
Thanks,
Michael
For reference for anyone interested, this is the failing monitor’s EDID without the file name prefix on each line:
00 ff ff ff ff ff ff 00 09 d1 a1 78 45 54 00 00
2c 15 01 03 80 30 1b 78 2e 35 85 a6 56 48 9a 24
12 50 54 a5 6b 80 d1 c0 b3 00 a9 c0 81 80 81 00
81 c0 01 01 01 01 02 3a 80 18 71 38 2d 40 58 2c
45 00 dd 0c 11 00 00 1e 00 00 00 fd 00 32 4c 1e
53 15 00 0a 20 20 20 20 20 20 00 00 00 fc 00 42
65 6e 51 20 47 4c 32 32 35 30 48 0a 00 00 00 ff
00 32 31 32 31 32 31 32 31 32 31 32 0a 20 01 3d
02 03 24 f1 4f 10 05 04 13 03 12 07 16 01 14 15
1f 06 11 02 23 09 07 07 83 01 00 00 67 03 0c 00
10 00 38 2d 8c 0a d0 8a 20 e0 2d 10 10 3e 96 00
dd 0c 11 00 00 18 01 1d 00 72 51 d0 1e 20 6e 28
55 00 dd 0c 11 00 00 1e 01 1d 00 bc 52 d0 1e 20
b8 28 55 40 dd 0c 11 00 00 1e 8c 0a d0 90 20 40
31 20 0c 40 55 00 dd 0c 11 00 00 18 8c 0a a0 20
51 20 18 10 18 7e 23 00 dd 0c 11 00 00 98 00 be
The checksum is valid, therefore, if the GPU driver has a mode to work with this, then it should succeed. Not all modes in the EDID will be supported, e.g., extension modes won’t work, but there were many modes which should have succeeded. Your log in fact shows it succeeded at 1920x1080, so it is a bit confusing that the display is not actually functioning.
Does the same display work if it is plugged in from the very beginning, prior to powering up the Jetson?
If you have this monitor connected while failed, and you use either ssh
(without any -X
or -Y
option) or serial console (or even a local console not in X11), and then run this command, what do you see?
DISPLAY=:0 xrandr
Hi linuxdev,
If plug in the HDMI (1080P monitor) first and then power on Jetson TK1. The display is working successfully. And the EDID are the same with above.
If type the command:
DISPLAY=:0 xrandr
It shows as below:
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 16384 x 16384
DP-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1920x1080 60.0*+ 60.0 50.0 30.6 25.5
1680x1050 60.0
1600x900 60.0
1280x1024 75.0 60.0
1280x800 60.0
1280x720 60.0 59.7 50.0
1152x864 75.0
1024x768 60.0
832x624 75.0
800x600 75.0
720x400 70.0
640x480 75.0 61.0 60.0
So I do not understand why it can not work normally if plug in the 4K monitor first and then change to 1080P monitor. The driver seems to work fine… I can see the cursor work normally but the toolbar and menu disappear on the screen.
I think maybe it is X server issue but I am not sure. I am trying to upgrade the X server to version 1.5 from version 1.4. But I can not upgrade it successfully now…
Best Regards,
Michael
I think you may have found a bug. According to xrandr
the monitor is indeed running at 1080p (assuming the xrandr
is run when the second monitor is not working).
There are certain events which trigger searching for an EDID, and whenever a new EDID is found the GPU driver should set up for that new EDID. Cold boot is one trigger, and in your case, this is a hot plug event. The EDID is indeed being read upon hot plug, and the rest of the system seems to think the port is actively running a mode based on that EDID. Even so, the monitor does not display.
It could be related to the specific monitor, in which case I am wondering if, when failing, you leave the cable to the monitor connected, but then power the monitor off and back on, does it then work? Or what would happen if you unplug the monitor again, and plug it back in?
If it turns out to be due to a driver I’m not sure what to do since the TK1 is only on maintenance support. If it turns out to be related to the specific monitor, then perhaps there is some other workaround.
One more test: If you start with the failing monitor from the start (you said this works ok, it is only hot plug failing), and then plug in the 4k monitor, does it have the same issue, or does the 4k monitor work from hot plug (versus from start, or cold plug)? If the 4k monitor is the hot plug case and the issue goes away, then I tend to think it is an issue with the other monitor; if the issue follows hot plug regardless of which monitor is used, then I tend to think that this is related to drivers.
Hi,
If the issue occurs and it does not work either re-plug the HDMI again or leaves the cable to the monitor connected then power the monitor off and back on. BTW, even if re-plug in the 4K monitor’s HDMI cable in this status, it still not work. The only way is that reboot the system.
If connected the 1080P monitor first and boot into the system, the display work normally. Then unplug the 1080P monitor HDMI cable and plug in the 4K monitor HDMI cable. The display still work normally.
This issue only occurs in below situation :
Step 1 : Connect the 4K monitor first and the boot into the ubuntu system.
Step 2 : Set the display resolution to 4K.
Step 3 : Unplug the 4K monitor HDMI cable and then plug in the monitor that support the maximum resolution is 1080p HDMI cable.
Step 4 : The issue occurs.
I don’t think it is the specific monitor’s issue, because I try to use another monitor that supports the maximum resolution is 1080p. It still have same problem.
I successfully upgraded the X server to version 1.5 yesterday, but it still had the same issue…
Best Regards,
Michael
It is worth noting that the monitor query uses i2c protocol, and the power to the i2c circuitry is actually provided by the graphics card over the HDMI cable. This allows hot plug events and detection of a monitor to work even if the monitor is turned off. Turning the monitor off and on is a good thing to test just because the monitor itself may have quirks, but detection of hot plug and EDID will succeed even if the monitor has no power source.
You may have found a driver bug. Unfortunately the TK1 is old enough it reached end of life on support quite some time ago. Someone may have suggestions though since many TK1s are still in service.
How important is it to find a workaround? Is there some use case on an existing product, or is this just a bug you noticed that won’t actually break something for you?