DPMS not working for DisplayPort connections on GTX 970 with driver version 370.28

I am having an issue very similar to this thread from last year: https://devtalk.nvidia.com/default/topic/791786/linux/dpms-not-working-on-gtx980-with-displayport-connection

Here are logs and other resources: https://www.dropbox.com/sh/tn7rfxn3gs08c9m/AAA2nO-A46t5yTI7w_tGFkr_a?dl=0

Specifically nvidia-bug-report.log.gz: https://www.dropbox.com/s/oa7s19rdzu38v8x/nvidia-bug-report.log.gz?dl=0

I have a 3 display multihead setup on Arch Linux 4.8.4-1-ARCH, with GTX 970, and nvidia-370.28-2 installed.

                  .o+`                 user@hostname
                 `ooo/                 OS: Arch Linux 
                `+oooo:                Kernel: x86_64 Linux 4.8.4-1-ARCH
               `+oooooo:               Uptime: 1h 23m
               -+oooooo+:              Packages: 1200
             `/:-:++oooo+:             Shell: bash 4.3.46
            `/++++/+++++++:            Resolution: 5760x1080
           `/++++++++++++++:           DE: Gnome 
          `/+++ooooooooooooo/`         WM: GNOME Shell
         ./ooosssso++osssssso+`        WM Theme: Adwaita
        .oossssso-````/ossssss+`       GTK Theme: Adwaita [GTK2/3]
       -osssssso.      :ssssssso.      Icon Theme: Adwaita
      :osssssss/        osssso+++.     Font: Cantarell 11
     /ossssssss/        +ssssooo/-     CPU: Intel Core i7-3820 CPU @ 3.8GHz
   `/ossssso+/:-        -:/+osssso+-   GPU: GeForce GTX 970
  `+sso+:-`                 `.-/+oso:  RAM: 5482MiB / 32119MiB
 `++:.                           `-/+/
 .`                                 `/
[user@hostname ~]$ nvidia-settings -v
nvidia-settings:  version 370.28  (builduser@felix)  Fri Sep  9 15:21:20 CST 2016

  The NVIDIA X Server Settings tool.

  This program is used to configure the NVIDIA Linux graphics driver.
  For more detail, please see the nvidia-settings(1) man page.

2 of my displays are connected via DisplayPort to DVI adapters. 1 is connected directly to DVI. All are the same monitors all purchased at the same time: 24" Acer H243H.

Dual booting with Windows 10 – all displays turn off perfectly fine in Windows. But only the one connected directly to DVI properly goes into dpms off mode. It doesn’t matter which display I connect to that port - #1, #2, #3 will all turn off correctly when plugged in via DVI. The other ones simply blank, but the backlights remain on.

xrandr displays them as follows:

[user@hostname ~]$ xrandr
Screen 0: minimum 8 x 8, current 5760 x 1080, maximum 16384 x 16384
DVI-I-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 connected primary 1920x1080+1920+0 (normal left inverted right x axis y axis) 531mm x 298mm
   1920x1080     59.93*+
   1680x1050     59.95  
   1600x1200     60.00  
   1440x900      74.98    59.89  
   1280x1024     75.02    60.02  
   1152x864      75.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   640x480       75.00    72.81    59.94  
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 connected 1920x1080+3840+0 (normal left inverted right x axis y axis) 531mm x 298mm
   1920x1080     59.93*+
   1680x1050     59.95  
   1600x1200     60.00  
   1440x900      74.98    59.89  
   1280x1024     75.02    60.02  
   1152x864      75.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   640x480       75.00    72.81    59.94  
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 298mm
   1920x1080     59.93*+
   1680x1050     59.95  
   1600x1200     60.00  
   1440x900      74.98    59.89  
   1280x1024     75.02    60.02  
   1152x864      75.00  
   1024x768      75.03    70.07    60.00  
   800x600       75.00    72.19    60.32    56.25  
   640x480       75.00    72.81    59.94  
DP-5 disconnected (normal left inverted right x axis y axis)

xrandr seems to work properly… the following commands properly enforce dpms off:

xrandr --output DP-2 --off
xrandr --output DP-4 --off

I can bring them back with:

xrandr --output DP-2 --auto
xrandr --output DP-4 --auto

Here’s an odd thing. I have a spare DisplayPort to DVI adapter, and when I use that one instead on one of the displays that doesn’t work, it starts working properly.

So what changed? I think it’s in how the driver recognizes the display. The “not working” ones seem to have some issue in that the driver recognizes them as HDMI for some reason. See the screenshots below, representing when I am having the issue with 2 monitors not entering DPMS off:

nvidia_DFP-4_hdmi_dpmserror.png: https://www.dropbox.com/s/897qv5bjck1el31/nvidia_DFP-4_hdmi_dpmserror.png?dl=0
nvidia_DFP-6_hdmi_dpmserror.png: https://www.dropbox.com/s/xd7i8951v6r2dvg/nvidia_DFP-6_hdmi_dpmserror.png?dl=0

Neither of these displays dpms off correctly, and both are recognized as HDMI.

This is the direct DVI connection, recognized as TMDS, and it works just fine:

nvidia_DFP-0_tmds_dpmsok.png: https://www.dropbox.com/s/ytagfgstxj1je3i/nvidia_DFP-0_tmds_dpmsok.png?dl=0

So what about the DisplayPort to DVI adapter that works? It is recognized as TMDS too, and DFP-6 disappears and I instead get DFP-7. See the screenshot:

nvidia_DFP-7_tmds_dpmsok.png: https://www.dropbox.com/s/0whrah81q6e4vvb/nvidia_DFP-7_tmds_dpmsok.png?dl=0

And dpms off works properly. So with this configuration, I only have 1 monitor that doesn’t enter DPMS off correctly – the ones that say HDMI, and both the ones listed as TMDS work correctly.

Here is the nvidia-bug-report.log.gz file with this configuration: https://www.dropbox.com/s/r4wqrdrir1uomcb/nvidia-bug-report_1dpmserror.log.gz?dl=0

So it seems the bulk of the issue is when the nvidia driver recognizes the display as DisplayPort via HDMI instead of via TMDS. It should be noted that no matter which of the 2 DisplayPorts I use on the GTX, with this adapter, and no matter which monitor, it behaves as it should.

Any ideas or thoughts?

Is this a regression between one driver and another?

This sort of problem typically indicates a bug in the monitor that causes it to not respond properly to the power off command. Windows doesn’t typically run into this sort of problem because it does the equivalent of an xrandr --off whenever it wants to power down displays. Xorg puts control of that into the hands of X clients, so it’s not the driver’s place to do that sort of thing behind the X server’s back.

DVI / TMDS work differently and don’t have this sort of monitor-side confusion between DPMS and shutting off the source signal.

@aplattner Thanks for your reply.

Well, it may be regression in the driver codebase. As far as on the system, this is a fresh installation of Arch Linux where no other driver but NVIDIA 370.28 has been installed.

It’s just odd to me that the DisplayPorts work fine depending on which DP2DVI adapter I use. The monitor turns off fine when the others suspend, provided I use the DP2DVI adapter that the driver picks up as TMDS, as opposed to the DP2DVIS adapter that is picked up as DisplayPort / HDMI. My point is, with the DP2DVIS adapter - which is literally the model - the monitor is picked up incorrectly as HDMI.

Here are the adapters:

DP2DVI = https://www.startech.com/AV/Displayport-Converters/DisplayPort-to-DVI-Adapter-Cable~DP2DVI
DP2DVIS = https://www.startech.com/AV/Displayport-Converters/Active-DisplayPort-to-DVI-Adapter~DP2DVIS

DP2DVI allows dpms suspend correctly - the monitor turns off when the timeout threshold is reached.
DP2DVIS does not turn off. Screen blanks, backlight remains.

DP2DVI listing in the driver (dpms works as expected): https://www.dropbox.com/s/0whrah81q6e4vvb/nvidia_DFP-7_tmds_dpmsok.png?dl=0

DP2DVIS listing in the driver (dpms doesn’t work as expected): https://www.dropbox.com/s/xd7i8951v6r2dvg/nvidia_DFP-6_hdmi_dpmserror.png?dl=0

A “fix” would be to pick up another DP2DVI adapter and use it instead of the DP2DVIS. But it’s just odd to me that the driver picks up the adapter, which doesn’t have HDMI at all, as HDMI. It seems to assume that means it’s connected to a TV.

I’ve had what I think is the same issue (for several months now). I use Gnome desktop with an automatic screen lock after 5 mins of no activity. This used to lock and blank the screen.

I recently switched to Nouveau driver and I got back the original (correct) behavior, but when I return to using the Nvidia driver, my screen never gets locked and blanked after 5 minutes. I spent a good deal of time trying to debug Gnome lock screen stuff, DPMS settings, etc and got nowhere. Manually using ‘xset dpms force standby’ does standby the monitor.

I’m currently on version 370.28, but like I said, it’s been happening much longer than this driver release. I have two monitors (one use DVI and one uses DP). The graphics card is “NVIDIA Corporation GM107GL [Quadro K620] (rev a2)” according it lspci.

The “DP2DVI” adapter is passive, which means it shows up to the video card as a TMDS device, and the video card puts the DisplayPort connector into a mode where it drives TMDS over the DisplayPort wires. As far as the GPU and driver are concerned, this is a normal DVI or HDMI device (although sometimes with an unusually low pixel clock limit). DisplayPort only has enough pins for single-link DVI. Using it this way is a feature that’s part of “DP++”, which NVIDIA GPUs support.

The DP2DVIS adapter you linked is an active adapter, which means that it talks to the GPU using the DisplayPort protocol. Usually you’d use this to achieve higher bandwidths. E.g., DP on one side and dual-link DVI or HDMI 2.0 on the other side. It sounds like this StarTech active adapter doesn’t actually support any higher resolutions than the passive adapter and it’s really just for DisplayPort sources that don’t have DP++ (i.e., they can do DisplayPort but can’t switch into TMDS mode).

Anyway, to make a long story short, the active adapter is a DisplayPort device which uses DisplayPort signaling (and power management) and the passive adapter is a TMDS device which uses the DVI-style power management signaling. It sounds like the DP2DVIS active adapter doesn’t properly translate DisplayPort power management into TMDS power management.

Hi, it seems this was finally structurally addressed with the ‘HardDPMS’ setting in the new 415 driver.

There’s not much documentation around this yet, but it can be set in “Monitor” and “Screen” sections in xorg.conf:

Section "Monitor"
    Option         "HardDPMS" "true"
Section "Screen"
    Option         "HardDPMS" "true"

It’s supposed to become the default in a future release, but works great on my GTX970 and GTX1080.