DDCCONTROL-SCANMONITOR(1)

πŸ“¦ version 3.4.0, in nixpkgs unstable

πŸ’… ddccontrol-scanmonitor β€” like, the FULL manual, bestie

okay so this is the ddccontrol-scanmonitor(1) page from the General Commands Manual, and I'm gonna walk you through it like we're texting at 2am 🫢


✨ NAME ✨

ddccontrol-scanmonitor β€” generates a monitor database XML file. that's the whole vibe. it makes the file. slay. πŸŽ€


🌸 SYNOPSIS 🌸

ddccontrol-scanmonitor [dev:/dev/i2c-N] [--output FILE] [--db-path DIR]
ddccontrol-scanmonitor --list

πŸ¦‹ DESCRIPTION πŸ¦‹

So ddccontrol-scanmonitor pulls an editable XML file for the ddccontrol monitor database straight out of a connected DDC/CI monitor. iconic behavior, honestly. ✨

If you don't hand it a device argument, it does the polite thing: picks the only detected monitor automatically, or β€” if there's more than one hanging around β€” it asks you which monitor to scan. very considerate. For unattended use with several monitors though, you gotta specify a device explicitly, no cap.

The scanner always accesses /dev/i2c-* directly β€” no environment variable needed, periodt. You do need read and write permission on the device, so use sudo ddccontrol-scanmonitor if that's what it takes. πŸ’…

It reads EDID, capabilities and supported controls without changing any control values. good. we love a non-destructive king. πŸ‘‘

The generated XML enables known controls whose values could be read. Uncertain controls get left commented out for manual testing β€” lowkey a little homework, sorry. Control and value definitions come from the database's options.xml. And heads up: some monitor quirks, special initialization and unadvertised controls still need manual edits. it's giving "almost perfect, babes". 😭

By default the output is named after the monitor's PnP ID β€” for example DEL1234.xml β€” in the current directory. Existing files are never overwritten. protective. we stan. πŸ›‘οΈ


πŸŽ€ OPTIONS πŸŽ€

  • dev:/dev/i2c-N β€” scan this device instead of choosing from the detected monitors. direct. decisive. main character energy. ⭐
  • --list β€” list detected DDC/CI monitors and their device paths, then exit without writing XML. a little peek, no commitment. πŸ™ˆ
  • -o, --output FILE β€” write the XML to this file. the file must not already exist. πŸ“
  • -b, --db-path DIR β€” read control definitions from DIR/options.xml. By default it uses the database location configured at build time, usually /usr/share/ddccontrol-db or /usr/local/share/ddccontrol-db. use the same database with the preview application's -b option, iykyk. πŸ’œ
  • -h, --help β€” show usage information. 🫢
  • -V, --version β€” show the program version. 🌈

πŸ”₯ EXAMPLES πŸ”₯

create an XML file interactively

ddccontrol-scanmonitor

choose a monitor and output path explicitly

ddccontrol-scanmonitor dev:/dev/i2c-4 --output ./DEL1234.xml

try the generated file directly

replace the filename with your monitor's ID, bestie:

DDCCONTROL_NO_DAEMON=1 gddccontrol --monitor-file ./DEL1234.xml
DDCCONTROL_NO_DAEMON=1 ddccontrol --monitor-file ./DEL1234.xml

Keep the filename PNPID.xml and relaunch the application after editing it. No system database changes or service restart needed for this preview β€” literally none. Loading a local file requires DDCCONTROL_NO_DAEMON=1 and permission to access the I2C device directly. If needed, prefix the command with sudo env. πŸ’€

install a tested result into a typical package database and reload the service

sudo cp -i DEL1234.xml /usr/share/ddccontrol-db/monitor/DEL1234.xml
sudo systemctl restart ddccontrol.service

Use the database path printed by the scanner for your installation. Test the enabled controls with gddccontrol(1) or ddccontrol(1), edit the XML as needed, and relaunch with --monitor-file after each change. Then submit the tested file in a pull request to the ddccontrol-db repository. contributing arc!! 🌟

ngl, testing before submitting is the whole assignment. don't skip it. 🧚

⭐ EXIT STATUS ⭐

Zero indicates success. A nonzero exit status indicates invalid arguments, discovery or communication failure, an invalid database, or an output error. so if it's not zero, something's up β€” read the vibe check. 😀


πŸ’– SEE ALSO πŸ’–

Monitor database contribution guide: https://github.com/ddccontrol/ddccontrol-db/blob/master/doc/how-to-add-a-monitor.md


and that's the page!! this was the General Commands Manual entry for ddccontrol-scanmonitor(1), dated September 22, 2026 β€” go make some XML, bestie πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from