NVIDIA 535.43.03 breaks DDC/CI for some monitors

I just upgraded from 525.116.04 to 535.43.03 and DDC/CI stopped working for one of my two monitors.

I’m using ddcutil to issue DDC/CI commands from the GUI tool vdu_controls. I’ve tried ddcutil 1.4.1 and 2.0.0-rc1, both behave the same way. After the upgrade only one of the two monitors is detected by:

% ddcutil detect

I’m running OpenSUSE Tumbleweed with kernel 6.3.7-1-default. I have always used the RegistryDwords settings - and I’ve confirmed they’re still set:

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

The monitor that is no longer detected is a old HP ZR24w which was detected fine with 525.116 and earlier. My newer LG monitor works fine with DDC/CI and 535.43.03, so the newer driver’s DDC/CI implementation still works with some monitors. Both monitors are connected via DisplayPort to an Nvidia 1650 SUPER, but the HP is using a DisplayPort to DVI connector (DVI at the monitor end), where as the LG is DisplayPort at both ends.

With kernel 6.3.7-1-default, reverting the driver from 535.43.03 to 525.116.04 restores the correct behaviour, so it looks like the driver is the cause of the problem.

I’ve attached the nvidia-bug-report.log from kernel 6.3.7-1-default and driver 535.43.03.
nvidia-bug-report.log.gz (580.9 KB)

I haven’t found a fix, but there is a workaround (at least for the HP ZR24w and my 1650 Super). Switching the HP ZR24w connection to the 1650 Super to a pure DisplayPort to DisplayPort cable is a successful workaround.

Same problem on Fedora 38, via HDMI.

ddcutil detect
No displays found.

ddcutil environment
The following tests probe the runtime environment using multiple overlapping methods.
*** Basic System Information ***

ddcutil version: 1.4.1

   Linux version 5.17.13-300.fc36.x86_64 (mockbuild@bkernel01.iad2.fedoraproject.org) (gcc (GCC) 12.1.1 20220507 (Red Hat 12.1.1-1), GNU ld version 2.37-27.fc36) #1 SMP PREEMPT Mon Jun 6 14:29:43 UTC 2022

Architecture:     x86_64
Distributor id:   Fedora
Release:          38
Found a known architecture

   BOOT_IMAGE=(hd1,gpt4)/vmlinuz-5.17.13-300.fc36.x86_64 root=UUID=43142523-3849-4079-bfe7-c6f0248c0404 ro rootflags=subvol=root rhgb quiet video=DP-1:3328x1872@75 video=DP-1:3840x2160@75 rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1 initcall_blacklist=simpledrm_platform_driver_init

*** Primary Check 1: Identify video card and driver ***

Obtaining card and driver information from /sys...
Primary video controller at PCI address 0000:04:00.0 (boot_vga flag is set)
   Device class:        x030000    VGA compatible controller
   Vendor:              x10de      NVIDIA Corporation
   Device:              x2489      GA104 [GeForce RTX 3060 Ti Lite Hash Rate]
   Subvendor/Subdevice: 1043/883c  ASUSTeK Computer Inc.
   Driver name:         nvidia
   Driver version:      535.54.03
   I2C device:          i2c-3      name: NVIDIA i2c adapter 5 at 4:00.0
   I2C device:          i2c-1      name: NVIDIA i2c adapter 1 at 4:00.0
   I2C device:          i2c-6      name: NVIDIA i2c adapter 8 at 4:00.0
   I2C device:          i2c-4      name: NVIDIA i2c adapter 6 at 4:00.0
   I2C device:          i2c-2      name: NVIDIA i2c adapter 3 at 4:00.0
   I2C device:          i2c-5      name: NVIDIA i2c adapter 7 at 4:00.0

*** Primary Check 2: Check that /dev/i2c-* exist and writable ***

Current user: mutlu (1000)

Checking /dev/i2c-* devices...

Devices /dev/i2c-* must exist and the logged on user must have read/write permission for those devices (or at least those devices associated 
with monitors).

Typically, this access is enabled by:
  - setting the group for /dev/i2c-* to i2c
  - setting group RW permissions for /dev/i2c-*
  - making the current user a member of group i2c

Alternatively, this can be enabled by just giving everyone RW permission
The following tests probe for these conditions.

Checking for /dev/i2c-* devices...
   crw-rw----+ 1 root i2c 89, 0 Jun 26 12:56 /dev/i2c-0
   crw-rw----+ 1 root i2c 89, 1 Jun 26 12:56 /dev/i2c-1
   crw-rw----+ 1 root i2c 89, 2 Jun 26 12:56 /dev/i2c-2
   crw-rw----+ 1 root i2c 89, 3 Jun 26 12:56 /dev/i2c-3
   crw-rw----+ 1 root i2c 89, 4 Jun 26 12:56 /dev/i2c-4
   crw-rw----+ 1 root i2c 89, 5 Jun 26 12:56 /dev/i2c-5
   crw-rw----+ 1 root i2c 89, 6 Jun 26 12:56 /dev/i2c-6

Current user (mutlu) has RW access to all /dev/i2c-* devices.

*** Primary Check 3: Check that module i2c_dev is loaded ***

Checking for driver i2c_dev...
   sysfs reports module i2c_dev is loaded.
   Module i2c_dev is NOT built into the kernel
   Loadable i2c-dev module found
   Module i2c_dev is loaded

*** Primary Check 4: Driver specific checks ***

Performing driver specific checks...

Checking for special settings for proprietary Nvidia driver 
(Needed for some newer Nvidia cards).
   Executing: grep -iH nvidia modprobe.conf modprobe.d/*
      grep: modprobe.conf: No such file or directory
      grep: modprobe.d/*: No such file or directory
   Executing: grep RegistryDwords /proc/driver/nvidia/params
      RegistryDwords: "RMUseSwI2c=0x01;RMI2cSpeed=100"
      RegistryDwordsPerDevice: ""

*** Additional probes ***

Examining /sys/bus/i2c/devices...
   /sys/bus/i2c/devices/i2c-0/name:   SMBus I801 adapter at 1000
   /sys/bus/i2c/devices/i2c-1/name:   NVIDIA i2c adapter 1 at 4:00.0
   /sys/bus/i2c/devices/i2c-2/name:   NVIDIA i2c adapter 3 at 4:00.0
   /sys/bus/i2c/devices/i2c-3/name:   NVIDIA i2c adapter 5 at 4:00.0
   /sys/bus/i2c/devices/i2c-4/name:   NVIDIA i2c adapter 6 at 4:00.0
   /sys/bus/i2c/devices/i2c-5/name:   NVIDIA i2c adapter 7 at 4:00.0
   /sys/bus/i2c/devices/i2c-6/name:   NVIDIA i2c adapter 8 at 4:00.0

   architecture:                  x86_64
   distributor_id                 Fedora
   Drivers detected:              nvidia
   /dev/i2c device numbers:       0 1 2 3 4 5 6
   sysfs_i2c_devices_exist:       true
   /sys/bus/i2c device numbers:   0 1 2 3 4 5 6
   dev_i2c_devices_required:      true
   module_i2c_dev_needed:         true
   module_i2c_dev_builtin:        false
   loadable_i2c_dev_exists:       true
   i2c_dev_loaded_or_builtin:     true
   group_i2c_checked:             true
   group_i2c_exists:              true
   dev_i2c_common_group_name:     i2c
   all_dev_i2c_has_group_i2c:     true
   any_dev_i2c_has_group_i2c:     true
   all_dev_i2c_is_group_rw:       true
   any_dev_i2c_is_group_rw:       true
   cur_uname:                     mutlu
   cur_uid:                       1000
   cur_user_in_group_i2c:         true
   cur_user_any_devi2c_rw:        true
   cur_user_all_devi2c_rw:        true

Configuration suggestions:
   Current user has RW access to all /dev/i2c-N devices.
   Skipping further group and permission checks

I experienced the same issue when upgrading from 5.30 to 5.35.
ddcutil no longer detects two of my monitors which are using hdmi.
I’m running arch.

Is there a bug report somewhere to track progress for squashing this issue?

This is still broken on 535.104. DDC/CI to my HP monitor connected using a DisplayPort to DVI connector (DVI at the monitor end) still does not work. This would be on Linux 6.5.3 (OpenSUSE Tumbleweed).

Connecting the monitor DisplayPort-DisplayPort at both ends is still an effective workaround.

Would I be better off switching to a 400 series driver?