DDCutil Cheat Sheet
A compact but comprehensive reference for controlling external monitors using ddcutil. Includes detection, querying, setting values, troubleshooting, and advanced usage.
DDCutil communicates with monitors that implement the Monitor Control Command Set (MCCS) using the DDC/CI protocol on an I2C bus. Normally, the video driver for the monitor exposes the I2C bus as devices named /dev/i2c-n.
Alternatively, ddcutil can communicate with monitors that use USB to communicate MMCS, provided the monitors meet the USB Monitor Control Class Specification.
Install ddcutil on Gentoo Linux
echo "app-misc/ddcutil X usb-monitor user-permissions" > /etc/portage/package.use/ddcutil
emerge --ask app-misc/ddcutil
Files where edid is stored
cat /sys/class/drm/card0-HDMI-A-{1,2}/enabled
cat /sys/class/drm/card0-HDMI-A-2/dpms
cat /sys/class/drm/card0-HDMI-A-2/enabled
cat /sys/class/drm/card0-HDMI-A-2/status
cat /sys/class/drm/card0-HDMI-A-2/connector_id
cat /sys/class/drm/card0-DP-1/dpms
cat /sys/class/drm/card0-DP-1/enabled
cat /sys/class/drm/card0-DP-1/status
cat /sys/class/drm/card0-DP-1/connector_id
cat /sys/bus/i2c/devices/i2c-0/name
cat /sys/bus/i2c/devices/i2c-3/name
cat /sys/bus/i2c/devices/i2c-5/name
cat /sys/class/drm/card0-DP-3/dpms
cat /sys/class/drm/card0-DP-3/enabled
cat /sys/class/drm/card0-DP-3/status
cat /sys/class/drm/card0-DP-3/connector_id
cat /sys/bus/i2c/devices/i2c-1/name
cat /sys/bus/i2c/devices/i2c-2/name
cat /sys/bus/i2c/devices/i2c-3/name
cat /sys/bus/i2c/devices/i2c-4/name
cat /sys/bus/i2c/devices/i2c-5/name
cat /sys/bus/i2c/devices/i2c-6/name
To allow non-root users access to the /dev/i2c-* devices
- users to the i2c group:
usermod -aG i2c $(whoami) - Restart the computer or reload the
i2c-devmodule to activate the new udev rule. - For more information read:
http://www.ddcutil.com/i2c_permissions/ - Running
udev control --reloadfor reloading rules and databases ..
usermod -aG i2c $(whoami)
Show all VCP Features Codes
ddcutil getvcp known
Report VCP feature value(s)
ddcutil getvcp supportedi
Set VCP feature value
ddcutil setvcp <feature-code> [+|-] <new-value>
Write color profile related settings to file
ddcutil dumpvcp (filename)
Load profile related settings from file
ddcutil loadvcp <filename>
Store current settings in monitor's nonvolatile storage
ddcutil scs
Probe execution environment
ddcutil environment
Probe for USB connected monitors
ddcutil usbenv
Probe monitor abilities
ddcutil probe
Report everything possible
ddcutil interrogate
Check if USB device is monitor (for UDEV)
ddcutil chkusbmon
List traceable functions
ddcutil traceable-functions
DDCutil capabilities
Command ddcutil capabilities shows the capabilities sring reported by the monitor that ddcutil has identified as display number
Capabilities / Cache / DSA / Discard
Discard all capabilities
ddcutil discard all capabilities
Discard capabilities
ddcutil discard capabilities
Discard DSA data
ddcutil discard dsa
Discard cached data
ddcutil discard cache
!!! Example "VCP Info (General)
Show brief VCP info
ddcutil vcpinfo --brief
Show verbose VCP info
ddcutil vcpinfo --verbose
Show VCP info
ddcutil vcpinfo
Command ddcutil – Feature Information
Reports everything that ddcutil knows about a particular feature, including feature values.
VCP Info (Specific Features)
Verbose VCP info for code 60
ddcutil vcpinfo 60 --verbose
VCP info for code CF
ddcutil vcpinfo CF
Extract VCP codes using grep and awk
ddcutil vcpinfo|grep "VCP code"|awk 'OFS=":" {print $3}'
Verbose VCP info
ddcutil vcpinfo -v
Capabilities (Display-Specific)
Brief capabilities for display 4
ddcutil capabilities --brief --display 4
Show capabilities
ddcutil capabilities
Show brief capabilities
ddcutil capabilities --brief
Show verbose capabilities
ddcutil capabilities --verbose
Verbose capabilities for display 4 (short syntax)
ddcutil --dis 4 cap --verbose
Detecting Displays
Verbose display detection
ddcutil detect --verbose
Brief display detection
ddcutil detect --brief
Terse display detection
ddcutil detect --terse
Detect displays (default)
ddcutil detect -
USB Options
Enable USB support
ddcutil --enable-usb
Disable USB support
ddcutil --dosable-usb
DDC Checks
Set async minimum DDC checks
ddcutil detect --ddc-checks-async-min 3
Get VCP Values
Get VCP value for 'color'
ddcutil getvcp color
Get VCP values 10 and 12
ddcutil getvcp 10 12
Verbose capabilities for display 4
ddcutil --dis 4 cap --verbose
!!! Example "Set VCP Values
Set VCP 10 to 50
ddcutil setvcp 10 50
Set VCP 10 to hex 0x32
ddcutil setvcp 10 0x32
Set VCP 73 to hex x5304
ddcutil setvcp 73 x5304
Set VCP 60 to multi-byte value
ddcutil setvcp 60 01020304F1F2FEFF
Set VCP 10 to 85
ddcutil setvcp 10 85
Set VCP 10 to 85 without verification
ddcutil setvcp 10 85 --noverify
MCCS / Tables / Profiles
Show VCP info for MCCS 2.1
ddcutil vcpinfo --mccs 2.1
Show VCP info table
ddcutil vcpinfo table
Show VCP profile (terse)
ddcutil vcpinfo profile --terse
USB Monitor Check
Check USB monitor by device path
ddcutil chkusbmon /dev/usb/hiddev
Check USB monitor by index
ddcutil chkusbmon 3
Check USB monitor by device
ddcutil chkusbmon device
Check USB monitor by name
ddcutil chkusbmon name
Check USB monitor by hiddev
ddcutil chkusbmon hidev
Miscellaneous
Show SCS information
ddcutil scs
Get VCP 10
ddcutil getvcp 10
Show environment
ddcutil environment
Show USB environment
ddcutil usbenvironmen
Output Level Options
- Options
--terse (alt --brief)and--versbosedecrease or increase the amount of output for many commands. - Multiple feature/new-value pairs can be given on a single setvcp command. For example:
ddcutil setvcp 10 50 12 75
Monitor Detection
List all detected displays
ddcutil detect
Presents a summary report of each detected display
ddcutil detect --brief
Show additional information, including the EDID
ddcutil detect --verbose
List displays with bus numbers
ddcutil detect --verbose
ddcutil detect --terse
Probe a specific I²C bus
ddcutil detect --bus=3
Query Monitor Capabilities
Dump all capabilities
- Find mfg by: Manufacturer
ddcutil capabilities
ddcutil capabilities --display=1
ddcutil capabilities --mfg VSC
List supported VCP codes
ddcutil vcpinfo
ddcutil vcpinfo --display=1
ddcutil vcpinfo --verbose
Show raw EDID
ddcutil get-edid
ddcutil get-edid --display=1
ddcutil get-edid --verbose
Read VCP Values
Read a single VCP code
ddcutil getvcp 10 # Brightness
ddcutil getvcp 12 # Contrast
ddcutil getvcp D6 # Input source
Read from a specific display
ddcutil getvcp 10 --display=1
Read multiple VCP codes
ddcutil getvcp 10 12 D6
Read all readable VCP values
ddcutil getvcp --all
Set VCP Values
Set brightness
ddcutil setvcp 10 50
ddcutil setvcp 10 100 --display=1
Set contrast
ddcutil setvcp 12 70
Set input source
Common values:
01VGA03DVI0FDisplayPort11HDMI 112HDMI 2
ddcutil setvcp D6 11 # HDMI 1
ddcutil setvcp D6 0F # DisplayPort
Set multiple values in sequence
ddcutil setvcp 10 30 && ddcutil setvcp 12 60
Profiles & Bulk Operations
Load settings from a file
ddcutil loadvcp myprofile.txt
Save current settings
ddcutil savevcp current.txt
Apply settings to a specific display
ddcutil loadvcp profile.txt --display=2
Testing & Debugging
Test DDC communication
ddcutil test
ddcutil test --display=1
Enable debug output
ddcutil --debug getvcp 10
Check I²C permissions
ddcutil environment
Advanced Usage
Use a specific I²C bus
ddcutil --bus=4 getvcp 10
Force sleep between commands
ddcutil --sleep-multiplier=2 setvcp 10 80
Use USB‑C / docking station quirks
ddcutil --usb --display=1 getvcp 10
Disable MCCS checksum validation
ddcutil --noverify setvcp 10 40
Raw I²C command
ddcutil i2cget 0x37 0x10
ddcutil i2cset 0x37 0x10 0x64
Common VCP Codes (Quick Reference)
| Code | Meaning | Notes |
|---|---|---|
10 | Brightness | 0–100 |
12 | Contrast | 0–100 |
14 | Select color preset | sRGB, 6500K, etc |
16 | Red gain | RGB calibration |
18 | Green gain | RGB calibration |
1A | Blue gain | RGB calibration |
52 | Audio volume | Some monitors |
60 | Power mode | On/Off/Standby |
D6 | Input source | HDMI/DP/DVI |
Example Workflows
Set brightness on all monitors
for d in $(ddcutil detect --terse | awk '{print $1}'); do
ddcutil --display=$d setvcp 10 40
done
Switch all displays to DisplayPort
ddcutil setvcp D6 0F --display=1
ddcutil setvcp D6 0F --display=2
Backup and restore monitor settings
ddcutil savevcp backup.txt
ddcutil loadvcp backup.txt
Troubleshooting Tips
-
Add your user to the
i2cgroup:sudo usermod -aG i2c $USER -
Ensure kernel modules are loaded:
sudo modprobe i2c-dev -
Disable Wayland if DDC fails under GNOME.
- Some monitors block DDC over USB‑C hubs; try direct DisplayPort.