Several aspects of the communication environment must be configured.
Ensure the monitor is enabled for DDC communication
Nearly all monitors manufactured since the mid 2000's support DDC/CI, as do many made earlier. For most monitors that support DDC/CI, whether DDC/CI comminication is actually enabled is controlled by a setting in the on screen display. The item is typically found in a submenu named something like "Other Settings"
The video driver must support I2C bus communication. All major open source drivers (nouveau, radeon, admdgpu, i915) support I2C bus communication, as do the Nvidia and old AMD fglrx proprietary drivers.
If using Nvidia's proprietary video driver, special settings may be necessary. See Special Nvidia Driver Settings
For the Rapberry Pi, see the section Raspberry Pi.
Ensure that the /dev/i2c-N devices exist
Typically, the I2C buses are exposed as devices named /dev/i2c-N. (The one exception is the older proprietary AMD fglrx driver, which instead provides an API for I2C communication.) If using an open source video driver, kernel module i2c-dev must be loaded to create the /dev/i2c-N devices. See Kernel Module Configuration
Grant read/write permission for the /dev/i2c-N devices representing monitors
ddcutil users require read/write permission to /dev/i2c-N devices. With varying complexity, this can be effected in several ways.
Run ddcutil as root.
Grant everyone RW access to the /dev/i2c devices.
Add a file with the following line to /etc/udev/rules.d
- If /dev/i2c-N devices are already assigned to group i2c, add users to that group.
This is the case, for example, if package i2c-tools has been installed on a Debian derived distribution (e.g. Ubuntu). In that case, file /lib/udev/rules/60-i2c-tools.rules is installed.
Add the users who will run ddcutil to that group.
usermod -G i2c -a <yourname>
- Create group i2c to manage access.
The most general case entails creating group i2c, creating a UDEV rule assigning /dev/i2c-N devices to group i2c, and adding users to group i2c. See section
For a full discussion, see Device Permissions.
- USB connected monitors
For details about USB device permissions for those monitors using USB instead of I2C to communicate the Monitor Control Command Set, see see Device Permissions.
If ddcutil installs successfully but execution fails, command
can be used to probe the I2C environment and may provide clues as to the problem.
For USB connected monitors, use command
i2cdetect (typically found in package i2ctools) provides an
independent check of whether the DDC slave address (X37) is active on an I2C bus.