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 does the Nvidia proprietary driver.
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. 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 many ways.
Run ddcutil as root.
Grant everyone RW access to the /dev/i2c devices for the current boot.
$ sudo chmod a+rw /dev/i2c-*
- Assign the /dev/i2c devices to a group (normally i2c) and assign users who will run ddcutil to that group. For details, see I2C 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 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.