DDCCONTROL(1)

πŸ’… DDCCONTROL β€” the manual page, but make it make sense

okay bestie, sit down, hydrate, because we're learning ddccontrol, a lil' General Commands Manual entry (yes it's DDCCONTROL(1), we been knew πŸ‘‘), and honestly? it's iconic.


✨ 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] [-r ctrl [-w value |-W
value |-t value1,value2]]

like. look at her. two whole ways to summon her. πŸ’«


πŸ¦‹ DESCRIPTION πŸ¦‹

This manual page documents briefly the ddccontrol command. (briefly!! she's mysterious like that πŸ™ˆ)

ddccontrol is an open source utility which allows controlling monitor parameters via software. She talks to your monitors through userspace I2C using /dev/i2c-* devices. πŸ’…

okay and now the tea, because there's lore: the legacy direct PCI memory access and AMD ADL backends have been removed, and USB-connected DDC/CI displays are not supported yet. so if that's your setup... bestie I'm so sorry, it's giving not yet. 😭


πŸ’œ OPTIONS πŸ’œ

a summary of options is included below. slay, let's go one by one, no skipping, we don't do that here.

  • 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 β€” which 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. detective mode fr. πŸ”
  • -c β€” query capability.
  • -d β€” query ctrls 0 – 255, except engineering/vendor-specific controls 0xe0 – 0xff unless -f is also used. πŸ™…β™€οΈ (those are the VIP-only controls, you need the wristband)
  • -r β€” query ctrl.
  • -w β€” value to write to ctrl.
  • -W β€” relatively change ctrl value (+/-). lil nudge, not a full rewrite. ✨
  • -t β€” toggle ctrl value between value1 and value2 (defaults to value1 if current value is neither). flip flop flip flop. 🩴
  • -f β€” force (avoid validity checks and include engineering/vendor-specific controls 0xe0 – 0xff in -d output). she's got the keys to the back room. πŸ”“
  • -s β€” ask the monitor to save current settings (if supported β€” no promises, bestie 🫢).
  • -S β€” suppress unsupported-monitor fallback warning. shhh. 🀫
  • -v β€” verbosity (specify more to increase). stack 'em like bracelets. -vvv energy. πŸ’«
  • -b β€” ddccontrol-db directory (if other than /usr/share/ddccontrol-db). πŸ“

🌈 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. you're going straight to the source, no middleman, no cap. πŸ’…

πŸŽ€ SEE ALSO πŸŽ€

The program is documented fully in /usr/share/doc/ddccontrol/html/index.html

The project homepage: https://github.com/ddccontrol/ddccontrol πŸ”— (go look, she's cute)


πŸ‘‘ 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>.


fr fr, respect the authors, they carried this whole thing on their backs. 🫢

and that's the whole page, bestie β€” DDCCONTROL(1), from the General Commands Manual, dated May 28, 2026. no notes, periodt. πŸ’…βœ¨

πŸ“¦ where this page comes from