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

20 KiB

Monitor Control - User Guide

A Windows application for controlling DDC/CI-enabled monitors. Adjust brightness, contrast, input sources, and power settings through a simple system tray interface or WPF management window.

Table of Contents


Features

  • Brightness & Contrast Control: Adjust monitor brightness and contrast via sliders (VCP codes 10 and 12)
  • Input Source Switching: Switch between HDMI, DisplayPort, DVI, VGA, and other inputs (VCP code 60)
  • Power Management: Turn monitors on/off or put them to sleep (VCP code D6)
  • Quick-Switch Toolbar: Create custom buttons for frequently-used input sources
  • Port Configuration: Rename ports, hide unused inputs, and detect undiscovered ports
  • System Tray Integration: Lightweight tray icon with popup control panel
  • Multi-Monitor Support: Manage all DDC/CI-enabled monitors from one interface
  • 9-Language Localization: English, Spanish, French, German, Chinese, Japanese, Portuguese, Italian, Hindi
  • Automatic Updates: Checks for new releases from git.marketally.com

System Requirements

  • Operating System: Windows Vista or later (tested on Windows 11)
  • .NET Runtime: .NET 9.0 (included in installer)
  • Hardware: DDC/CI-enabled monitor(s) connected via digital cable (HDMI, DisplayPort, DVI)
  • Cable Type: VGA cables often do not support DDC/CI; use digital cables for best results
  • Graphics Driver: Up-to-date driver recommended for reliable DDC/CI communication

Note: Some monitors do not support all VCP features. Power control and input switching support varies by manufacturer.


Installation

  1. Download the latest .exe installer from git.marketally.com
  2. Run the installer and follow the prompts
  3. The application will launch automatically and add a tray icon
  4. Monitor Control will start with Windows by default

Option 2: Build from Source

  1. Clone the repository:

    git clone https://git.marketally.com/misc/ControlMyMonitorManagement.git
    cd ControlMyMonitorManagement
    
  2. Open ControlMyMonitorManagement.sln in Visual Studio 2022 or later

  3. Restore NuGet packages:

    dotnet restore
    
  4. Build the MonitorControl project:

    dotnet build MonitorControl/MonitorControl.csproj -c Release
    
  5. Run the executable:

    MonitorControl/bin/Release/net9.0-windows/MonitorControl.exe
    

Required Files: The application depends on ControlMyMonitor.exe (by NirSoft) which must be in the same directory as the main executable. This file is included in the repository under Library/Resource/.


Getting Started

First Launch

  1. After installation, look for the monitor icon in your system tray (near the clock)
  2. Click the tray icon to open the control panel
  3. The application will scan for DDC/CI monitors (takes 2-5 seconds)
  4. Your monitors will appear with available controls

Understanding the Interface

The control panel displays one section per detected monitor:

  • Monitor Name: Shown at the top of each section (e.g., "22EA53")
  • Brightness Slider: 0-100% range
  • Contrast Slider: 0-100% range
  • Input Dropdown: Lists available input sources (HDMI, DisplayPort, etc.)
  • Power Button: Shows current state (PowerOn, Sleep, PowerOff)
  • Config Button: Opens port configuration window

If No Monitors Appear

If you see "No DDC/CI monitors detected":

  1. Verify your monitor supports DDC/CI (check monitor OSD settings for "DDC/CI Enable")
  2. Use a digital cable (HDMI, DisplayPort, DVI) — VGA often lacks DDC/CI support
  3. Update your graphics card driver
  4. Try unplugging and reconnecting the monitor
  5. If using a KVM switch, try connecting directly to the computer
  6. Click "Show Log" (appears after 3 seconds) to view debug information

Common Workflows

Adjusting Monitor Settings

Brightness:

  1. Click the tray icon to open the control panel
  2. Find the "Brightness" slider for your monitor
  3. Drag the slider to adjust (0-100%)
  4. Release the mouse button to apply the change
  5. The monitor will update within 1-2 seconds

Contrast:

  1. Follow the same steps as brightness
  2. Use the "Contrast" slider instead

Tips:

  • Adjustments are applied when you release the mouse button, not while dragging
  • If the monitor doesn't respond, wait 3-5 seconds and try again
  • After waking from sleep, wait 8 seconds before adjusting settings (monitors need time to initialize)

Switching Input Sources

Manual Switching:

  1. Open the control panel
  2. Find the "Input" dropdown for your monitor
  3. Click the dropdown to see available sources:
    • DisplayPort-1, DisplayPort-2
    • HDMI-1, HDMI-2
    • DVI-1, DVI-2
    • VGA-1, VGA-2
    • And others depending on your monitor
  4. Select the desired input
  5. The monitor will switch within 2-3 seconds

Example: Switch from HDMI to DisplayPort

  1. Current input shows "HDMI-1"
  2. Click the dropdown
  3. Select "DisplayPort-1"
  4. Monitor switches to DisplayPort input

If an Input Doesn't Appear:

Some monitors don't report all available inputs via DDC/CI. See Detecting Additional Ports below.

Managing Power States

Turn Off Monitor:

  1. Click the Power button (shows "PowerOn")
  2. Monitor enters sleep/standby mode
  3. Button updates to "Sleep" or "PowerOff"

Turn On Monitor:

  1. Click the Power button (shows "Sleep" or "PowerOff")
  2. Monitor wakes up
  3. Button updates to "PowerOn"

Notes:

  • Some monitors don't support power control via DDC/CI (button will show "Power Unsupported")
  • Power state detection varies by monitor firmware
  • Turning off via DDC/CI is not the same as pressing the physical power button

Quick-Switch Toolbar

The quick-switch toolbar provides one-click buttons for frequently-used input sources.

Setup:

  1. Click the Config button next to a monitor name
  2. For each input port you want in the toolbar:
    • Check "Show in quick-switch toolbar"
    • Optionally set a custom label (e.g., "Gaming PC", "Laptop")
  3. Click Save
  4. The toolbar appears at the top of the control panel

Usage:

  1. Open the control panel
  2. Click any quick-switch button to instantly change input
  3. The corresponding dropdown updates automatically

Example Configuration:

Monitor: Dell U2720Q

  • Port: HDMI-1 → Label: "Work Laptop" → Quick-switch: ✓
  • Port: DisplayPort-1 → Label: "Gaming PC" → Quick-switch: ✓
  • Port: HDMI-2 → Hidden (unused)

Result: Two buttons appear: "Work Laptop" and "Gaming PC"


Configuration

Customizing Port Labels

By default, ports use generic names like "HDMI-1" or "DisplayPort-1". You can rename them:

  1. Click Config next to the monitor name
  2. Find the port you want to rename
  3. Enter a custom label (e.g., "Xbox", "Work PC", "MacBook")
  4. Click Save
  5. The new label appears in the Input dropdown and quick-switch toolbar

Example:

Port Default Name Custom Label
VCP Value 17 HDMI-1 Gaming PC
VCP Value 15 DisplayPort-1 Work Laptop
VCP Value 18 HDMI-2 Streaming PC

Hiding Unused Ports

If your monitor reports inputs you don't use, you can hide them:

  1. Click Config
  2. Check the "Hide" checkbox next to unused ports
  3. Click Save
  4. Hidden ports won't appear in the Input dropdown

Important: The currently active input is never hidden, even if marked as hidden. This prevents confusion about which input is selected.

Detecting Additional Ports

Some monitors don't report all available inputs via DDC/CI. The port detection feature probes for undiscovered inputs.

How It Works:

  1. Click Config
  2. Click Detect
  3. Read the warning dialog carefully
  4. Click Yes to proceed
  5. The application will:
    • Save your current input
    • Try switching to common ports (DisplayPort-1, DisplayPort-2, HDMI-1, HDMI-2)
    • Wait 3 seconds per port to check if the switch succeeded
    • Restore your original input
  6. Any newly discovered ports are added to the configuration

Example Output:

Detected 2 new port(s):
  • DisplayPort-1
  • HDMI-2

Warnings:

  • Your screen may go black briefly during each probe
  • The process takes 10-20 seconds for 4 ports
  • Don't run detection repeatedly in a short time (can stress monitor scaler)
  • Click Cancel anytime to stop detection
  • Detection is safe for most monitors but use sparingly

When to Use Detection:

  • Your monitor has a port that doesn't appear in the dropdown
  • You know the monitor supports an input but it's not listed
  • After connecting a new cable type

When NOT to Use Detection:

  • All your ports already appear correctly
  • You just want to rename existing ports (use custom labels instead)
  • Your monitor is behaving strangely (wait for it to stabilize first)

Resetting Configuration

To restore default settings:

  1. Click Config
  2. Click Reset
  3. All custom labels are cleared
  4. All ports are unhidden
  5. Quick-switch toolbar is cleared
  6. Discovered ports are removed

Troubleshooting

Monitor Not Detected

Symptoms: "No DDC/CI monitors detected" message

Solutions:

  1. Enable DDC/CI in Monitor OSD:

    • Press the monitor's menu button
    • Look for "DDC/CI" or "External Control" setting
    • Set to "On" or "Enable"
  2. Check Cable Type:

    • VGA cables often lack DDC/CI support
    • Use HDMI, DisplayPort, or DVI instead
    • Try a different cable if available
  3. Update Graphics Driver:

    • Visit your GPU manufacturer's website (NVIDIA, AMD, Intel)
    • Download the latest driver
    • Restart after installation
  4. Direct Connection:

    • If using a KVM switch, try connecting directly to the PC
    • Some KVM switches block DDC/CI signals
  5. Restart Monitor:

    • Unplug monitor power cable
    • Wait 10 seconds
    • Plug back in and power on

Controls Not Responding

Symptoms: Sliders move but monitor doesn't change

Solutions:

  1. Wait After Sleep/Resume:

    • After waking PC from sleep, wait 8 seconds before adjusting
    • Monitor scalers need time to initialize DDC/CI
  2. Check Error Codes:

    • Click "Show Log" button (appears after 3 seconds of loading)
    • Look for error codes like 0xC0262582 or 0xC0262583
    • These indicate DDC/CI communication failure
  3. Reduce Command Frequency:

    • Don't drag sliders rapidly
    • Wait 1-2 seconds between adjustments
    • The application enforces 50ms minimum spacing between commands
  4. Monitor Timeout Cooldown:

    • If a command times out, the monitor is backed off for 3 seconds
    • Wait and try again
    • Persistent timeouts indicate hardware/firmware issue
  5. Firmware Update:

    • Check monitor manufacturer's website for firmware updates
    • Some bugs are fixed in newer firmware

Input Switching Fails

Symptoms: Input dropdown changes but monitor doesn't switch

Possible Causes:

  1. No Signal on Target Input:

    • The monitor may refuse to switch if no device is connected to that input
    • Connect a device to the target input first
  2. Monitor Doesn't Support DDC/CI Input Switching:

    • Some monitors allow brightness/contrast control but not input switching
    • Use the monitor's physical buttons instead
  3. Scaler Busy:

    • If you just switched inputs manually, wait 5 seconds before using DDC/CI
    • Monitor scaler may be locked during manual input changes

Power Control Doesn't Work

Symptoms: Power button shows "Power Unsupported" or doesn't respond

Explanation:

  • Power control (VCP code D6) is optional in the DDC/CI spec
  • Many monitors don't implement it or implement it incorrectly
  • This is a monitor firmware limitation, not a software bug

Workaround:

  • Use the monitor's physical power button
  • Use Windows display settings to turn off displays
  • Some monitors support power control only in specific modes (check OSD settings)

Application Crashes or Hangs

Symptoms: Window freezes, doesn't respond, or closes unexpectedly

Solutions:

  1. Check Debug Log:

    • Click "Show Log" button
    • Click "Open Log File" to view full log
    • Look for exceptions or error messages
    • Copy log when reporting issues
  2. Restart Application:

    • Right-click tray icon → Exit
    • Launch again from Start Menu
  3. Reinstall:

    • Uninstall via Windows Settings → Apps
    • Download latest version
    • Reinstall
  4. Report Issue:

    • Copy debug log
    • Note your monitor model and connection type
    • Report at git.marketally.com/misc/ControlMyMonitorManagement/issues

Error Code Reference

Error Code Meaning Solution
0xC0262582 DDC/CI device not found Enable DDC/CI in monitor OSD
0xC0262583 DDC/CI communication timeout Update graphics driver, try different cable
Exit Code -1 Command timeout (5 seconds) Wait for cooldown, check monitor health

Best Practices

DDC/CI Command Spacing

  • Don't spam commands: The application enforces 50ms minimum spacing, but monitors appreciate longer gaps
  • Wait after sleep: Always wait 8 seconds after system resume before sending commands
  • One adjustment at a time: Don't drag multiple sliders simultaneously

Post-Sleep Behavior

When your PC wakes from sleep:

  1. Monitor scalers need 5-8 seconds to fully initialize
  2. The application activates an 8-second grace period automatically
  3. Commands sent during this period are delayed until it expires
  4. This prevents scaler lockout and command failures

KVM Switch Users

If you use a KVM switch:

  • DDC/CI may not work through the KVM (depends on model)
  • Try connecting one monitor directly to test
  • Some KVMs have "DDC/CI passthrough" settings — enable if available

Multiple Monitors

  • The application manages all monitors independently
  • Each monitor has its own command queue and rate limiting
  • Switching inputs on multiple monitors simultaneously is safe
  • Configuration is saved per monitor (by serial number)

Firmware Quirks

Different monitor brands have different DDC/CI implementations:

  • Dell: Generally excellent DDC/CI support
  • LG: Good support, some models have slow response times
  • Samsung: Variable support, some models don't report current input correctly
  • ASUS: Usually good, gaming monitors sometimes have limited VCP codes
  • BenQ: Mixed support, check DDC/CI setting in OSD

If your monitor doesn't report its current input correctly, the application will still attempt to add it to the list when detected.


Multi-Language Support

The application automatically detects your Windows language and uses the best matching translation.

Supported Languages:

  • English (en)
  • Spanish (es)
  • French (fr)
  • German (de)
  • Chinese (zh)
  • Japanese (ja)
  • Portuguese (pt)
  • Italian (it)
  • Hindi (hi)

Changing Language:

The application uses Windows system language. To change:

  1. Open Windows Settings → Time & Language → Language
  2. Add or set preferred language
  3. Restart Monitor Control

Fallback: If your language isn't supported, the application defaults to English.


Technical Notes

DDC/CI Protocol

Monitor Control uses the DDC/CI (Display Data Channel / Command Interface) protocol to communicate with monitors over the video cable. This is a standardized protocol (VESA DDC/CI 1.1) supported by most modern monitors.

VCP Codes Used:

VCP Code Feature Read/Write
10 Brightness Read/Write
12 Contrast Read/Write
60 Input Source Read/Write
D6 Power Mode Read/Write

ControlMyMonitor.exe

This application wraps ControlMyMonitor by NirSoft (freeware). The ControlMyMonitor.exe binary is included in the Library/Resource/ folder and must be present for the application to function.

License: ControlMyMonitor is freeware by Nir Sofer. See Library/Resource/readme.txt for details.

Configuration Storage

Monitor configurations are stored in JSON format at:

%APPDATA%\MonitorControl\config.json

Structure:

{
  "Monitors": [
    {
      "SerialNumber": "ABC123",
      "MonitorName": "Dell U2720Q",
      "Ports": [
        {
          "VcpValue": 17,
          "DefaultName": "HDMI-1",
          "CustomLabel": "Gaming PC",
          "IsHidden": false,
          "ShowInQuickSwitch": true
        }
      ]
    }
  ]
}

You can manually edit this file if needed (close the application first).

Debug Logging

Debug logs are written to:

%TEMP%\CMM\debug.log

To view logs:

  1. Click "Show Log" button in the control panel (appears after 3 seconds of loading)
  2. Click "Open Log File" to view in Explorer
  3. Click "Copy to Clipboard" to paste into bug reports

Logs include:

  • Monitor scan results
  • VCP command requests and responses
  • Error codes and timeout events
  • System resume events

Update Mechanism

The application checks for updates from:

https://git.marketally.com/api/v1/repos/misc/ControlMyMonitorManagement/releases/latest

Update checks occur:

  • On first launch
  • Once per hour while the application is running
  • When you click the tray icon (if more than 1 hour since last check)

If an update is available:

  • A banner appears at the top of the control panel
  • A balloon notification appears in the system tray
  • Clicking either opens the download page in your browser

Updates are not automatic — you must download and run the installer manually.

Rate Limiting and Throttling

To protect monitor scalers from command overload:

  1. Per-Monitor Command Spacing: Minimum 50ms between commands to the same monitor
  2. Post-Resume Grace Period: 8-second delay after system wake
  3. Timeout Cooldown: 3-second backoff after a command timeout
  4. Global DDC Lock: Prevents parallel commands from overwhelming the DDC/CI bus

These limits are enforced automatically and cannot be disabled.


Tips

  • Keyboard Shortcuts: None currently implemented (tray-only interface)
  • Startup Behavior: Application starts minimized to tray by default
  • Window Position: Control panel appears near the system tray (bottom-right)
  • Auto-Hide: Control panel closes when it loses focus (click elsewhere)
  • Config Persistence: All settings survive application restart
  • Monitor Hotplug: Disconnect/reconnect monitors are detected on next tray icon click

Credits

  • Original Project: ControlMyMonitorManagement by DangWang
  • Enhancements: Brightness/contrast controls, input switching, multi-language support, quick-switch toolbar by David H. Friedel Jr (MarketAlly)
  • DDC/CI Tool: ControlMyMonitor by Nir Sofer (NirSoft)

License

  • New Contributions: MIT License (see LICENSE file)
  • Original Code: No explicit license provided by DangWang
  • ControlMyMonitor.exe: Freeware by NirSoft (no commercial use, no modification)

For issues, feature requests, or contributions, visit:

https://git.marketally.com/misc/ControlMyMonitorManagement