ddcutil
ddcutil.com
What it is
ddcutil is a free Linux program for controlling monitor settings such as brightness, color levels and input source. It communicates with monitors through DDC/CI over I²C and supports monitors implementing MCCS over USB. Commands can find monitors, show capabilities, read or change VCP feature values, and save or restore color-related settings. The companion ddcui provides a Qt graphical interface with Summary, Capabilities and Features views, with the last allowing changes to modifiable values. For profile workflows, dumpvcp saves current settings to a file and loadvcp restores them. Developers can use the C API through libddcutil.so to read and write VCP values and handle profile-related features. The program is released under GNU GPL version 2. Setup requires the Linux kernel i2c-dev module, and non-root users need permissions to run it. It does not support laptop displays, which use a special API rather than I²C, and generally will not run in virtual machines because virtual video drivers do not implement I²C. For MCCS-over-USB table features, support is limited; the capabilities command synthesizes a response.
Spec sheet
- Purpose
- ddcutil is a Linux program for managing monitor settings such as brightness, color levels, and input source.Read 4 Oct 2026 · ddcutil.com
- Intended users
- The documentation describes color profile management as a primary use and also presents a C API for programs that need monitor control.Read 4 Oct 2026 · ddcutil.com
- Platforms
- Prebuilt packages are listed for Linux distributions including Arch, Debian, Fedora, Gentoo, Manjaro, openSUSE, and Raspbian, with source builds available when packages are unavailable.Read 4 Oct 2026 · ddcutil.com
- API
- The C API is exposed through the shared library libddcutil.so and includes functions for reading and writing VCP values and saving and restoring profile related features.Read 3 Oct 2026 · ddcutil.com
- Support
- The project directs technical support questions, bug reports, and feature requests to its GitHub issue tracker.Read 4 Oct 2026 · ddcutil.com
- License
- ddcutil and ddcui are released under the GNU General Public License, version 2.Read 4 Oct 2026 · ddcutil.com
- Maker
- The documentation identifies Sanford Rockowitz as ddcutil’s developer and maintainer.Read 3 Oct 2026 · ddcutil.com
- C API
- The C API is exposed through the shared library libddcutil.so, with installed header files and sample client programs.Read 4 Oct 2026 · ddcutil.com
- Color profiles
- The dumpvcp and loadvcp commands save and restore color related monitor settings for color profile workflows.Read 4 Oct 2026 · ddcutil.com
- Display limits
- ddcutil does not support laptop displays, which are controlled through a special API rather than I²C.Read 3 Oct 2026 · ddcutil.com
- Graphical interface
- ddcui is a Qt graphical interface with summary, capabilities, and features views, and can change modifiable feature values.Read 4 Oct 2026 · ddcutil.com
- Installation
- The maker documents prebuilt packages and source builds; its project maintained packages include builds for some Debian, openSUSE, and Ubuntu releases, with Launchpad and Fedora COPR packages also described.Read 3 Oct 2026 · ddcutil.com
- Integration
- The documentation describes running ddcui alongside DisplayCAL's monitor adjustment phase and using the C or C++ API for dump and load services.Read 4 Oct 2026 · ddcutil.com
- Laptop display limit
- ddcutil does not support laptop displays because they use a special API rather than I²C.Read 4 Oct 2026 · ddcutil.com
- Linux distributions
- The documentation says ddcutil is included in Arch, Debian, Fedora, Gentoo, Manjaro, openSUSE, and Raspbian.Read 3 Oct 2026 · ddcutil.com
- Monitor communication
- It primarily communicates with monitors implementing MCCS through DDC/CI over I²C, and also supports some monitors using USB for MCCS.Read 4 Oct 2026 · ddcutil.com
- Monitor controls
- Its commands can detect monitors, report capabilities, read and set VCP feature values, and save or restore color related settings.Read 3 Oct 2026 · ddcutil.com
- Settings automation
- Its commands can detect monitors, read and set VCP features, and save or restore monitor settings.Read 4 Oct 2026 · ddcutil.com
- Setup requirements
- ddcutil requires the Linux kernel i2c-dev module, and permissions must be granted for non-root users to run it.Read 3 Oct 2026 · ddcutil.com
- Table features
- Reading and writing MCCS table type features is implemented but the project says it has not been tested due to lack of a monitor for testing.Read 4 Oct 2026 · ddcutil.com
- USB limits
- For MCCS over USB, table type features are unsupported and the capabilities command synthesizes a response because the specification has no mechanism to query a capabilities string.Read 3 Oct 2026 · ddcutil.com
- Virtual machine limit
- The documentation says ddcutil generally will not run in a virtual machine because virtual video drivers do not implement I²C.Read 4 Oct 2026 · ddcutil.com
Plans and prices
Strong points and limits
Strong points
- Reads and changes monitor VCP feature values.
- Saves and restores color-related settings.
- Includes the ddcui Qt graphical interface.
- C API is available through libddcutil.so.
- Free under GNU GPL version 2.
Limits
- Does not support laptop displays.
- Generally will not run in virtual machines.
- Requires the Linux i2c-dev module and user permissions.
- MCCS-over-USB table features are unsupported.
Who it suits
It suits Linux users managing external monitor settings, especially people handling color profiles, and developers needing monitor control through a C API.
ddcutil in depth
Read the full write-up
ddcutil is a Linux monitor-control toolkit, with command-line, graphical and C API options. It is strongest for Linux users managing external displays, automating adjustments or preserving color settings. Its reliance on monitor-side DDC/CI and Linux I²C support makes compatibility the deciding factor.
Overview
ddcutil communicates with monitors over DDC/CI on I²C, and also supports monitors that implement MCCS over USB. Its commands can discover displays, report capabilities, and read or set VCP values for controls such as brightness, color levels and input source. That combination gives Linux users a useful way to manage compatible monitors without a vendor-specific application, but it is not a general control layer for every display.
The command line is suited to repeatable adjustments and scripts. For direct visual control, ddcui is a Qt interface with Summary, Capabilities and Features views; the Features view can change values the monitor allows. The two routes make ddcutil more flexible than a command-only tool, though the GUI remains tied to the same hardware and setup requirements.
Key features
Monitor discovery and adjustment: Commands detect monitors, inspect their capabilities, and read or write VCP values. Input switching is supported, alongside common brightness and color controls.
Save and restore color settings: dumpvcp saves current color-related monitor settings to a file, and loadvcp restores them. This makes ddcutil a practical fit for workflows that need to return a display to known settings.
Programming interface: The shared library libddcutil.so exposes a C API for reading and writing VCP values and saving or restoring profile-related features. Installed headers and sample client programs give developers a starting point; C and C++ programs can also use the dump/load services.
Color workflow integration: ddcui can be used alongside DisplayCal’s monitor adjustment phase, making the tool relevant to users managing color profiles as well as everyday monitor controls.
Pricing
ddcutil and its graphical interface, ddcui, are free: each plan is free under the GNU General Public License, version 2 (GPLV2). There is no paid tier to unlock the command-line, GUI or API routes. The trade-off is that setup and compatibility remain the user's responsibility rather than being abstracted away by a commercial support or compatibility layer.
Platforms
ddcutil supports Linux. It requires the Linux kernel i2c-dev module, and non-root users need appropriate permissions to run it. The documentation describes inclusion in Arch, Debian, Fedora, Gentoo, Manjaro, openSUSE and Raspbian, and the maker also documents prebuilt packages and source builds, including project-maintained builds for some Debian, openSUSE and Ubuntu releases, plus Launchpad and Fedora COPR packages.
There are significant hardware boundaries. Laptop displays are unsupported because they use a special API rather than I²C, and ddcutil generally will not run in a virtual machine because virtual video drivers do not implement I²C. For MCCS over USB, table-type features are unsupported; the capabilities command synthesizes a response because the specification provides no way to query a capabilities string. Table-feature reading and writing is implemented, but has not been tested due to lack of a monitor for testing.
Who it's for
Choose ddcutil if you use Linux with compatible external monitors and want command-line control, saved color settings, or a C API to build monitor control into software. Its profile tools also suit color-management workflows, including use alongside DisplayCal’s adjustment phase. It is a poor fit for laptop-only display control, virtual machines, or anyone who cannot meet the i2c-dev and permission requirements.
Pros and cons
Pros
Several ways to work: CLI commands, the ddcui interface and a C API serve scripting, interactive adjustment and software integration without changing tools.
Useful profile support: dumpvcp and loadvcp save and restore color-related monitor settings, a meaningful benefit for repeatable color workflows.
Free and open source: Both named plans cost nothing and use GPLV2; the source is hosted on GitHub.
Cons
Linux and I²C dependent: The i2c-dev module and non-root permissions add setup work, while virtual video drivers generally prevent use in virtual machines.
No laptop display support: Displays controlled through a special API rather than I²C fall outside its reach.
Uneven USB coverage: MCCS-over-USB table features are unsupported, and table-feature reading and writing has not been tested.
Alternatives
Monitor Control Software is the broader category to browse when ddcutil’s Linux and I²C requirements do not match your setup.
Lunar is a macOS option with a free version and a free trial, for readers looking outside Linux.
Monitor Switch is another free, open-source Linux option, but its listed plan is usable and not yet released and requires a Raspberry Pi.
AOC G-Menu is a free Windows choice for supported AOC devices.
ASUS DisplayWidget Center is a free download for compatible ASUS monitors on macOS or Windows.
DeepPurge is a free option across Linux, macOS and Windows.
DisplayBuddy is a paid alternative for macOS and Windows, with a free trial and one-time Personal and Pro plans.
Monitor Brightness Control is a free Linux tool if brightness adjustment is the narrower need; it requires a DDC/CI-compatible monitor and I²C access.
Twinkle Tray is a free Windows option for Windows 10 and 11, covering most laptops and DDC/CI-enabled monitors.
Verdict
For Linux users with compatible external monitors, ddcutil is a strong free choice when scripting, color-setting profiles or a C API matter more than effortless setup. Its command-line, GUI and library routes cover distinct needs without a license cost. Look elsewhere if you need laptop-display control, virtual-machine support or a tool that avoids Linux I²C configuration.
Verdict
ddcutil offers command-line, graphical and API routes to monitor control on Linux. Its hardware and setup limits matter, particularly for laptop displays and virtual machines.
Where Specifiction places it
- Monitor Control Software#3 of 248.4