2
0
Files
logikonline 148c4ffef2 docs(ci): add comprehensive user guide for Monitor Control
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.
2026-01-29 22:41:33 -05:00

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.

.NET 9.0 Platform License

Table of Contents

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 0xc0262582 or 0xc0262583, see the Troubleshooting section.

Installation

From Release

  1. Download the latest release from the releases page
  2. Extract the archive to a folder of your choice
  3. Run MonitorControl.exe
  4. 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

  1. Launch the application - it minimizes to the system tray
  2. Click the tray icon to open the control panel
  3. Adjust brightness/contrast with sliders
  4. Select input source from dropdown (if multiple available)
  5. Toggle power state with the power button
  6. 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 monitor
  • Secondary - 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:

  1. Update Graphics Driver - Ensure you have the latest driver from your GPU manufacturer
  2. Try Different Cable/Port - Switch between VGA, DVI, HDMI, or DisplayPort
  3. Remove KVM Switch - Connect monitor directly to the computer
  4. Enable DDC/CI in Monitor OSD - Some monitors have a setting to enable/disable DDC/CI
  5. 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.