GDDCcontrol issues with NVIDIA drivers (i2c/monitor/display/DDC) - DP/HDMI failing

GDDCControl doesn’t work for me with NVIDIA drivers 375.82. My monitor is connected via HDMI:

gddccontrol -v
ddcpci initing...
Starting /usr/bin/ddcpci 1 419563217 &...
Probing for available monitors...
Found PCI device (pci:01:00.0-0)
Found PCI device (pci:01:00.0-1)
Found PCI device (pci:01:00.0-2)
Device: pci:01:00.0-0
Error while reading write message answer: Bad message
Reading EDID 0x50 failed.
ddcci_open returned -2
Device: pci:01:00.0-1
Error while reading write message answer: Bad message
Reading EDID 0x50 failed.
ddcci_open returned -2
Device: pci:01:00.0-2
Error while reading write message answer: Bad message
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-7)
ioctl(): Input/output error
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-6)
ioctl(): Input/output error
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-5)
ioctl(): Input/output error
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-4)
Corrupted EDID at 0x50.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-3)
ioctl(): Input/output error
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-2)
ioctl(): Input/output error
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-1)
ioctl(): Input/output error
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2
Found I2C device (dev:/dev/i2c-0)
ioctl(): Operation not supported
ioctl returned -1
Reading EDID 0x50 failed.
ddcci_open returned -2

Exact same problem with DisplayPort on GTX1050 running 384.90. DDC/CI works perfectly on Windows.

From what I can gather from googling, DDC/CI over DP seems broken on Linux for this whole generation of cards. Yet there’s no mention of it as a known issue in the driver’s release notes. Is this ever going to be fixed?

Considering this problem’s age I can’t believe it’ll be solved at all.

Using Linux-x86_64 NVIDIA Driver 387.34 Xorg 1.19.5 GeForce GTX 1080 with one DVI display and one DisplayPort display.

In Linux DDC only detects DVI display, no DDC through DisplayPort.
In Windows 10 both displays DDC are detected and work perfectly.

So has to be an issue with the NVIDIA Linux/Xorg driver.

just a heads up, had flaky issues trying to dim/brighten my hp 27es monitor connected via hdmi to a gt710 (ubuntu 16 lts).

found this article and it works much better now after creating the file and rebooting, added the keyboard shortcuts for some pre-selects and I’m in business. Thanks ddcutil and everyone sorting this stuff out.

http://www.ddcutil.com/nvidia/

I hadn’t seen it suggested yet, so for anyone using KMS/nvidia-drm or otherwise loading the nvidia kernel module early on who can’t get the xorg.conf setting to fix DDC on newer cards, I’ve had to add the following to modprobe.conf or modprobe.d/whatever.conf instead:

options nvidia NVreg_RegistryDwords=RMUseSwI2c=0x01;RMI2cSpeed=100

It took me a while to realise the workaround wasn’t even being applied, for a while I assumed it just didn’t fix things on my system. To confirm that the settings are working:

$ grep RegistryDwords /proc/driver/nvidia/params
RegistryDwords: "RMUseSwI2c=0x01;RMI2cSpeed=100"

This makes DDC over HDMI work with my Pascal card and fixes the “invalid EDID” errors at least, and also doesn’t require starting X to use it, should help with wayland, etc. The second issue reported in this thread still persists however: monitors connected over DisplayPort do not show up nor respond on I2C at all.

That’s “amazing”.

NVIDIA was made aware of this issue 4 years ago and they just don’t give a fuck.

arcnmx,

I’ve cited your post on ddcutil’s page for special Nvidia driver settings, (http://www.ddcutil.com/nvidia)

If you’d like some less anonymous credit, drop me an email at rockowitz@minsoft.com with your name or other way you’d like to be identified.

Sanford

GDDCcontrol doesn’t see my monitor over DP, but DDCUTIL does and can control it from the command line.
I have tried GDDCcontrol as sudo and made/confirmed the nvidia registry tweaks.
Any suggestions?

sudo ddcutil detect
Display 1
   I2C bus:             /dev/i2c-4
   Supports DDC:        true
   EDID synopsis:
      Mfg id:           SAM
      Model:            U32H85x
      Serial number:    HTOJ600075
      Manufacture year: 2017
      EDID version:     1.3
   VCP version:         2.0

You say you can control your display with ddcutil over DisplayPort? I’ve been unable to do this and have been forced to use the Nouveau drivers. Could you confirm what drivers you’re using, what GPU, and what connections you are using? Would love to finally get VSync to even work on my Linux machine, but Nvidia doesn’t care about their Linux users. I’m planning to move over to Rx Vega as soon as I can once prices go down because this isn’t getting any support from Nvidia.

Edit: Just tested nvidia-396.24-12, but nothing has changed.

CORRECTION
Ddcutil working perfectly on HDMI using latest Nvidia driver from negativo17 repository.
GTX1060
Works on two different monitors.
Doesn’t work on DP.
I made the nvidia tweaks.

(G)ddccontrol doesn’t work reports:

No monitor supporting DDC/CI available.

Probably just needs a profile. For now I am happy only nuisance is I have to sudo script each time I run

ddcutil setvcp 10 + 10

Buddy23,

To avoid the need for sudo when running ddcutil, ensure that group i2c exists and has RW permissions to the /dev/i2c-* devices. Then add your user to group i2c. For details, see http://www.ddcutil.com/config/

Also, running command:

ddcutil environment

as root provides configuration suggestions.

Sanford

Thanks I forgot about i2C now my keyboard shortcuts work for instant dimming and brightening ! !

Incidentally I fell back from Nvidia to Nouveau and noticed both monitors (DP and HDMI) work with DDCutil and Noveau as well as Gddccontrol. On Nvidia driver only HDMI works in DDCutil. I’ll probably swap out for both HDMI an I feel certain they will both work.

I noticed another detail. My 4k monitor has two HDMI ports, one is HDMI 1.4 (30hz) and the other HDMI 2.0 60hz. DDC only works on the HDMI 1.4 port at 30hz. On the hdmi 2.0 port no DDC “DDC communication failed”.

Tried multiple HDMI cables, they all support 2.0.
Maybe 4k 60hz HDMI doesn’t have bandwidth for DDC channel?
Nvidia card supports HDMI 2.0.

FWIW I’m using a pascal card (1050) with nvidia drivers and a 4k@60hz monitor over HDMI and DDC is indeed working properly on it, though it does not work over DP as reported previously.

Thanks, I’m on Nouveau currently I suspect that is it. I seem to remember having DDC on 60hz with Nvidia driver. I’ll report back after testing.

My HDMI 1.4 monitor connected using HDMI doesn’t work with NVIDIA binary drivers (GTX 1060) but works fine under nouveau, so even HDMI DDC support is in a semi-broken state in regard to NVIDIA drivers.

That’s pretty maddening.

Under Windows there are zero issues as always.

NVIDIA seems not to give a sh*t about this.

Ah well, I’m just here waiting for Rx Vega prices to come down so I can switch to AMD again. This is the only thing Nvidia has got to do to keep me from buying AMD hardware atm.
https://youtu.be/_36yNWw_07g?t=10s

Ok the thicken plots. I tried a Lenovo monitor and now DDC works at 4k 60hz on HDMI Noveau.
As much as I love to hate Nvidia maybe it’s not entirely their fault this once.