# Display bus access

## `/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.