table of contents
| DDCCONTROL(1) | General Commands Manual | DDCCONTROL(1) |
NAME¶
ddccontrol - A utility to control monitor parameters via software
SYNOPSIS¶
ddccontrol
-p
[-cdfsvS] [-b datadir] [-r ctrl
[-w value |-W value |-t
value1,value2]]
ddccontrol dev:/dev/i2c-N [-cdfsvS] [-b
datadir] [--monitor-file PNPID.xml] [-r
ctrl [-w value |-W value |-t
value1,value2]]
DDCCONTROL_NO_DAEMON=1 ddccontrol --monitor-file PNPID.xml
[selector] [options]
DESCRIPTION¶
This manual page documents briefly the ddccontrol command.
ddccontrol is an open source utility which allows controlling monitor parameters via software. It communicates with monitors through userspace I2C using /dev/i2c-* devices. Legacy direct PCI memory access and AMD ADL backends have been removed, and USB-connected DDC/CI displays are not supported yet.
OPTIONS¶
A summary of options is included below.
- dev
- a device specifier, for example: dev:/dev/i2c-0, or a monitor selector string (exact match against the PnP ID, the monitor name shown by -p (may include the PnP ID in brackets), or the database model name). Use selector to select all matching (DDC/CI-supported) monitors and selector/N (for example SAM083C/0) to select one match by zero-based index.
- -p
- probe /dev/i2c-* devices to find monitor buses
- -c
- query capability
- -d
- query ctrls 0 - 255, except engineering/vendor-specific controls 0xe0 - 0xff unless -f is also used
- -r
- query ctrl
- -w
- value to write to ctrl
- -W
- relatively change ctrl value (+/-)
- -t
- toggle ctrl value between value1 and value2 (defaults to value1 if current value is neither)
- -f
- force (avoid validity checks and include engineering/vendor-specific controls 0xe0 - 0xff in -d output)
- -s
- ask the monitor to save current settings (if supported)
- -S
- suppress unsupported-monitor fallback warning
- -v
- verbosity (specify more to increase)
- -b
- ddccontrol-db directory (if other than /usr/share/ddccontrol-db)
- --monitor-file PNPID.xml
- Use a local monitor definition for the matching PnP ID during this run. Requires DDCCONTROL_NO_DAEMON=1 and permission to access /dev/i2c-* directly. The file must be named after its PnP ID, for example DEL1234.xml; relative and absolute paths are accepted. When no device or selector is given, select all connected, DDC/CI-supported monitors with that PnP ID. To select one of several identical monitors, provide an indexed selector such as DEL1234/0. An explicitly selected monitor must match the file's PnP ID. This option cannot be combined with -p.
- The installed database (or the directory selected with -b) still supplies options.xml and any included monitor definitions. The local file is read for this run only; relaunch after editing it. No database files are installed or changed, and no service restart is needed.
- -l profile.xml
- Load saved control values from a settings profile. This is distinct from a monitor definition loaded with --monitor-file.
EXAMPLES¶
Test a generated monitor definition without installing it or restarting the daemon:
DDCCONTROL_NO_DAEMON=1 ddccontrol --monitor-file ./DEL1234.xml
Read brightness using the local definition:
DDCCONTROL_NO_DAEMON=1 ddccontrol --monitor-file ./DEL1234.xml -r 0x10
Test the definition on a specific matching monitor:
DDCCONTROL_NO_DAEMON=1 ddccontrol --monitor-file ./DEL1234.xml dev:/dev/i2c-4
If needed for I2C permissions, prefix the command with sudo env.
ENVIRONMENT¶
- DDCCONTROL_NO_DAEMON
- When set to a non-empty value, ddccontrol bypasses the D-Bus daemon and accesses /dev/i2c-* devices directly. This can be useful for testing, debugging, or working around a daemon startup or connection problem.
SEE ALSO¶
The program is documented fully in
/usr/share/doc/ddccontrol/html/index.html
The project homepage: https://github.com/ddccontrol/ddccontrol
AUTHOR¶
ddccontrol was written by Oleg I. Vdovikin and Nicolas Boichat.
Copyright 2004-2005 Oleg I. Vdovikin (oleg@cs.msu.su)
Copyright 2004-2006 Nicolas Boichat (nicolas@boichat.ch)
Copyright 2004-2026 DDCcontrol authors and contributors (see AUTHORS and
CONTRIBUTORS)
This manual page was written by Roberto C. Sanchez <roberto@connexer.com>.
| September 22, 2026 |