Appendix C. Display bus access

Table of Contents

/dev/i2c-* userspace I2C support
Using NVIDIA proprietary drivers

/dev/i2c-* userspace I2C support

DDCcontrol accesses monitor DDC/CI busses only through /dev/i2c-* devices provided by the operating system. This uses the same kernel userspace I2C path as tools such as ddcutil for directly connected displays.

Legacy direct PCI memory access and AMD ADL support have been removed. Use the kernel graphics driver and i2c-dev support to expose monitor DDC busses as /dev/i2c-* devices.

USB-connected DDC/CI displays are not supported yet.

Using NVIDIA proprietary drivers

The NVIDIA proprietary driver exposes the I2C bus through the standard /dev/i2c-* interface. However, on modern drivers (particularly with monitors connected via DisplayPort or HDMI) the driver may fail to service I2C requests, causing DDC/CI communication to fail.

The fix is to force the driver to use software I2C by adding an Xorg configuration snippet. DDCcontrol ships a ready-made file at /usr/share/ddccontrol/90-nvidia-i2c.conf. Copy it to the Xorg configuration directory and restart your X session:

# cp /usr/share/ddccontrol/90-nvidia-i2c.conf /etc/X11/xorg.conf.d/

The file sets the following NVIDIA registry keys:

Option "RegistryDwords" "RMUseSwI2c=0x01; RMI2cSpeed=100"

See the NVIDIA developer forum for more background on this issue.


DDCcontrol homepage