Conversation
Older Apple displays such as the ADC Studio and Cinema Displays don't support DDC and current macOS doesn't drive them, so MonitorControl could only dim them in software. They implement the USB Monitor Control class instead: brightness is a HID feature control (usage page 0x82, usage 0x10) on their USB connection. USBDisplayControl reads and writes that control through IOKit HID, presenting it on the usual 0-100 DDC scale. DisplayManager pairs each Apple display that ends up as an OtherDisplay with its USB connection, by EDID model number (normally the USB product ID), or, when a single display is left over, with the one USB display that macOS doesn't drive itself. A paired display uses USB for brightness instead of DDC, and contrast and volume are marked unavailable since the USB control only offers brightness. Settings shows it as "Hardware (USB)". Displays without such a USB connection behave exactly as before. Tested on macOS 12 with an Apple Studio Display 15" (ADC, via Apple's DVI to ADC adapter) next to an Apple Cinema HD Display. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
|
This is a great addition! Although I have no way of testing it. Will keep it here as a fork recommendation for those who have such displays. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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