mirror of
https://github.com/MonitorControl/MonitorControl.git
synced 2026-10-23 08:07:35 -06:00
[PR #1918] Add USB brightness control for older Apple displays #1334
Labels
No labels
Status: Abandoned
arm64
beta
beta
bug
done
duplicate
enhancement
feedback needed from reporter
in progress
information
invalid
investigating
known Issue
monitor Issue
pull-request
translation
unable to reproduce
unreleased
x86
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
github-starred/MonitorControl#1334
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/MonitorControl/MonitorControl/pull/1918
Author: @minimum91
Created: 9/26/2026
Status: 🔄 Open
Base:
main← Head:usb-apple-displays📝 Commits (1)
87bf5d2Add USB brightness control for older Apple displays📊 Changes
6 files changed (+162 additions, -5 deletions)
View changed files
📝
MonitorControl.xcodeproj/project.pbxproj(+4 -0)📝
MonitorControl/Model/OtherDisplay.swift(+17 -1)📝
MonitorControl/Support/AppDelegate.swift(+9 -4)📝
MonitorControl/Support/DisplayManager.swift(+35 -0)➕
MonitorControl/Support/USBDisplayControl.swift(+94 -0)📝
MonitorControl/View Controllers/Preferences/DisplaysPrefsViewController.swift(+3 -0)📄 Description
This adds hardware brightness control for older Apple displays that current macOS doesn't drive, such as the ADC Apple Studio and Cinema Displays. They don't support DDC, so today MonitorControl can only dim them in software.
These displays implement the USB Monitor Control class instead: brightness is a HID feature control (usage page 0x82, usage 0x10) on their USB connection. macOS's own AppleUSBDisplays driver controls later Apple displays this way, but it explicitly excludes the ADC-era product IDs (for example 0x9215 to 0x9219).
Changes
USBDisplayControl.swift(new): finds Apple USB monitors (vendor 0x05AC, usage page 0x80) that have a brightness control. It reads and writes that control through IOKit HID, on the usual 0–100 DDC scale.DisplayManager.updateUSBDisplayControls(): pairs each AppleOtherDisplaywith its USB connection.configure()and after wake, next toupdateArm64AVServices().OtherDisplay: a display with ausbControlcounts as hardware-controlled.Displays without such a USB connection behave exactly as before. Only Apple displays that already end up as
OtherDisplayare considered; displays that macOS handles are skipped.Testing
Tested on macOS 12 (Monterey) with two displays connected at the same time:
Results:
The other ADC models (Studio Display 17", Cinema Display 20" and 23") use the same USB protocol but haven't been tested.
🤖 Generated with Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.