Add 650+ line GUIDE.md covering installation, configuration, and usage of Monitor Control application. Includes step-by-step instructions for adjusting brightness/contrast, switching input sources, managing power states, configuring ports, troubleshooting DDC/CI issues, and technical notes on rate limiting. Update README.md with improved feature descriptions and link to new user guide.
8.8 KiB
Monitor Control Manager
A lightweight Windows utility for controlling monitor settings via DDC/CI. Adjust brightness, contrast, input source, and power settings directly from your system tray.
Table of Contents
- Features
- Requirements
- Installation
- Usage
- Configuration
- Command-Line Options
- Troubleshooting
- Credits
- License
Features
- System Tray Integration - Clean popup interface accessible from taskbar
- Multi-Monitor Support - Control all DDC/CI compatible displays
- Brightness & Contrast - Slider controls with real-time feedback
- Input Source Switching - Auto-detects available inputs (HDMI, DisplayPort, DVI, VGA)
- Port Configuration - Customize port labels, hide unused ports, and create quick-switch buttons
- Quick-Switch Toolbar - One-click switching between frequently-used input sources
- Port Detection - Automatically discover available input ports on your monitor
- Power Management - On, Sleep, and Off controls
- Multi-Language - Auto-detects system language (English, Spanish, French, German, Chinese, Japanese, Portuguese, Italian, Hindi)
- Auto-Update Check - Notifies you when new versions are available
- System Resume Protection - Prevents DDC/CI commands during monitor wake-up to avoid scaler lockout
Requirements
- Windows 10/11
- .NET 9.0 Runtime
- DDC/CI compatible monitor(s)
Note: Most external monitors support DDC/CI, but some laptop internal displays and certain monitors may not support this protocol. If you encounter error codes like
0xc0262582or0xc0262583, see the Troubleshooting section.
Installation
From Release
- Download the latest release from the releases page
- Extract the archive to a folder of your choice
- Run
MonitorControl.exe - The app will appear in your system tray
Build from Source
git clone https://git.marketally.com/misc/ControlMyMonitorManagement.git
cd ControlMyMonitorManagement
dotnet build
dotnet run --project MonitorControl
Usage
Basic Operation
- Launch the application - it minimizes to the system tray
- Click the tray icon to open the control panel
- Adjust brightness/contrast with sliders
- Select input source from dropdown (if multiple available)
- Toggle power state with the power button
- Click outside the popup to close
Port Configuration
Click the Config button next to any monitor name to customize input ports:
- Custom Labels - Rename ports (e.g., "HDMI-1" → "PC", "DisplayPort-1" → "Laptop")
- Hide Ports - Remove unused ports from the dropdown
- Quick-Switch - Add frequently-used ports to the toolbar for one-click switching
- Port Detection - Click Detect to automatically discover available input ports
Port Detection Warning: This feature temporarily switches your monitor's input source to probe for available ports. Your screen may go dark briefly during each probe. This is safe for most monitors but should not be run repeatedly in a short time. You can cancel detection at any time.
Quick-Switch Toolbar
After configuring ports with "Show in quick-switch toolbar" enabled, buttons will appear in the main window for instant switching between configured inputs across all monitors.
Configuration
Configuration Files
Monitor settings are stored in JSON format:
Windows: %APPDATA%\MonitorControl\config.json
Configuration Structure
{
"Monitors": [
{
"SerialNumber": "ABC123456",
"MonitorName": "Dell U2720Q",
"Ports": [
{
"VcpValue": 15,
"DefaultName": "DisplayPort-1",
"CustomLabel": "Laptop",
"IsHidden": false,
"ShowInQuickSwitch": true
},
{
"VcpValue": 17,
"DefaultName": "HDMI-1",
"CustomLabel": "Desktop PC",
"IsHidden": false,
"ShowInQuickSwitch": true
}
]
}
]
}
VCP Codes Reference
The application uses DDC/CI VCP (Virtual Control Panel) codes to communicate with monitors:
| Code | Function | Values |
|---|---|---|
10 |
Brightness | 0-100 |
12 |
Contrast | 0-100 |
60 |
Input Source | See table below |
D6 |
Power Mode | 1=On, 4=Sleep, 5=Off |
Input Source Values
| VCP Value | Input Type |
|---|---|
| 1 | VGA-1 |
| 2 | VGA-2 |
| 3 | DVI-1 |
| 4 | DVI-2 |
| 15 | DisplayPort-1 |
| 16 | DisplayPort-2 |
| 17 | HDMI-1 |
| 18 | HDMI-2 |
Command-Line Options
The application can be controlled via command-line using ControlMyMonitor.exe (included in the installation):
Set Brightness
ControlMyMonitor.exe /SetValue Primary 10 70
Set Contrast
ControlMyMonitor.exe /SetValue "ABC123456" 12 65
Switch Input Source
# Switch to HDMI-1
ControlMyMonitor.exe /SetValue "\\.\DISPLAY1\Monitor0" 60 17
# Switch to DisplayPort-1
ControlMyMonitor.exe /SetValue Primary 60 15
Power Control
# Turn on
ControlMyMonitor.exe /TurnOn Primary
# Turn off (some monitors use 4 instead of 5)
ControlMyMonitor.exe /SetValue Primary D6 5
# Sleep
ControlMyMonitor.exe /SetValue Primary D6 4
Get Current Value
# Get brightness (returns value as exit code)
ControlMyMonitor.exe /GetValue Primary 10
echo %errorlevel%
Switch Between Values
# Toggle between 30%, 50%, and 90% brightness
ControlMyMonitor.exe /SwitchValue Primary 10 30 50 90
# Toggle monitor on/off
ControlMyMonitor.exe /SwitchValue Primary D6 1 5
Export/Import Settings
# Save current monitor settings
ControlMyMonitor.exe /SaveConfig "c:\backup\monitor.cfg" Primary
# Load saved settings
ControlMyMonitor.exe /LoadConfig "c:\backup\monitor.cfg" Primary
Monitor Identifiers
You can use several identifiers in place of Primary:
Primary- Primary monitorSecondary- Secondary monitor"ABC123456"- Serial number"\\.\DISPLAY1\Monitor0"- Device path"22EA53"- Monitor name
To find your monitor's identifier, open the control panel and press Ctrl+M (if supported by the full WPF application).
Troubleshooting
Error 0xc0262582 / 0xc0262583
These errors indicate Windows cannot communicate with your monitor via DDC/CI. Try these solutions:
- Update Graphics Driver - Ensure you have the latest driver from your GPU manufacturer
- Try Different Cable/Port - Switch between VGA, DVI, HDMI, or DisplayPort
- Remove KVM Switch - Connect monitor directly to the computer
- Enable DDC/CI in Monitor OSD - Some monitors have a setting to enable/disable DDC/CI
- Check Windows Display Settings - Ensure the monitor is properly detected
Monitor Not Detected
- Verify your monitor supports DDC/CI (check manufacturer specifications)
- Laptop internal displays often do not support DDC/CI
- Some USB-C/Thunderbolt adapters may not support DDC/CI passthrough
Commands Not Working After Sleep/Resume
The application automatically detects system resume and enforces an 8-second grace period before sending DDC/CI commands. This prevents scaler lockout on monitors that need time to fully wake up.
Slow Response or Timeouts
- DDC/CI communication can be slow (50-100ms per command)
- Multiple monitors increase total response time
- Some monitors have slower DDC/CI implementations
- If timeouts occur frequently, the application will automatically back off for 3 seconds
Debug Logging
If the control panel takes more than 3 seconds to load, a Show Log button will appear. Click it to view detailed debug information including:
- Monitor detection results
- DDC/CI command timing
- Error messages and stack traces
Log files are saved to: %TEMP%\CMM\debug.log
Credits
- Original Project: rictirse - ControlMyMonitorManagement base
- DDC/CI Engine: Nir Sofer - ControlMyMonitor (freeware)
- Enhancements: David H Friedel Jr - System tray UI, input switching, port configuration, quick-switch toolbar, localization, update checker, DDC/CI reliability improvements
License
MIT License - See LICENSE for details.
Note: ControlMyMonitor.exe is freeware by Nir Sofer (free distribution, no modification). The original ControlMyMonitorManagement code by DangWang has no explicit license. New contributions (system tray application, port configuration, quick-switch, DDC/CI improvements) are MIT licensed.