[GH-ISSUE #279] DDC commands fail on macOS but work on Windows #218

Closed
opened 2026-05-05 05:26:04 -06:00 by gitea-mirror · 4 comments
Owner

Originally created by @quantumgolem on GitHub (Aug 21, 2020).
Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/279

Just a disclaimer, I posted this as an issue on the ddcctl repo, but I am reposting it here because I think a lot more people will see it, and also the author of ddcctl seems to get annoyed with some people so I figured I wouldn't get a response at all in that repo.


So here is a peculiar issue that I have been having. I have a $20 USB C hub that contains an HDMI port, and a $150 docking station which contains two HDMI ports.

When I connect my display via HDMI through the USB C hub (MacBook Pro — USB C Hub — HDMI to HDMI — Dell U2415), DDC commands work fine and all is well.

When I connect my display via HDMI through the docking station (MacBook Pro — USB 3.1 Gen 2 cable — USB C docking station — HDMI to HDMI — Dell U2415), things start going awry. The brightness doesn't get changed.

I tried using ddcctl and got a DDC failed error:

D: NSScreen #724068817 (1920x1200 0°) 94.00 DPI
I: found 1 external display
I: polling display 1's EDID
I: got edid.serial: XXXXXXXXXXXX
I: got edid.name: DELL U2415
D: action: b: ?
D: querying VCP control: #16 =?
E: No data after 10 tries!
E: DDC send command failed!
E: VCP control #16 (0x10) = current: 0, max: 0

I largely attributed this to the docking station not supporting DDC. However, I tried something recently which changed my mind.

I used a Windows laptop with USB C and attached it to the docking station. I then tried to control the brightness with Dell Device Manager, and to my surprise, it worked! I could control brightness, contrast, color temperature, color profiles, and even set up automatons to control the color profile based on the app that was in the foreground.

I then disabled DDC using the monitor'd HUD to test if it was using DDC or some other protocol to change these settings. Sure enough, it stopped working and DDM could no longer control the monitors settings.

So it seems as though the docking station supports DDC commands after all, and it works on Windows but does not work with ddcctl.

Any ideas why this might be the case, or what I could try?

Originally created by @quantumgolem on GitHub (Aug 21, 2020). Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/279 Just a disclaimer, I posted this as an issue on the `ddcctl` repo, but I am reposting it here because I think a lot more people will see it, and also the author of `ddcctl` seems to get annoyed with [some people](https://github.com/kfix/ddcctl/issues/17#issuecomment-367053530) so I figured I wouldn't get a response at all in that repo. *** So here is a peculiar issue that I have been having. I have a $20 USB C hub that contains an HDMI port, and a $150 docking station which contains two HDMI ports. When I connect my display via HDMI through the USB C hub (`MacBook Pro — USB C Hub — HDMI to HDMI — Dell U2415`), DDC commands work fine and all is well. When I connect my display via HDMI through the docking station (`MacBook Pro — USB 3.1 Gen 2 cable — USB C docking station — HDMI to HDMI — Dell U2415`), things start going awry. The brightness doesn't get changed. I tried using `ddcctl` and got a DDC failed error: ``` D: NSScreen #724068817 (1920x1200 0°) 94.00 DPI I: found 1 external display I: polling display 1's EDID I: got edid.serial: XXXXXXXXXXXX I: got edid.name: DELL U2415 D: action: b: ? D: querying VCP control: #16 =? E: No data after 10 tries! E: DDC send command failed! E: VCP control #16 (0x10) = current: 0, max: 0 ``` I largely attributed this to the docking station not supporting DDC. However, I tried something recently which changed my mind. I used a Windows laptop with USB C and attached it to the docking station. I then tried to control the brightness with Dell Device Manager, and to my surprise, it worked! I could control brightness, contrast, color temperature, color profiles, and even set up automatons to control the color profile based on the app that was in the foreground. I then disabled DDC using the monitor'd HUD to test if it was using DDC or some other protocol to change these settings. Sure enough, it stopped working and DDM could no longer control the monitors settings. So it seems as though the docking station supports DDC commands after all, and it works on Windows but does not work with `ddcctl`. Any ideas why this might be the case, or what I could try?
gitea-mirror 2026-05-05 05:26:04 -06:00
Author
Owner

@quantumgolem commented on GitHub (Aug 21, 2020):

I found some more information on Dell's website confirming that Dell Device Manager commands are sent through DDC:

This package contains the software application that allows users to configure their Dell monitor settings such as Brightness, Contrast and Preset Modes. This application requires Display Data Channel Command Interface (DDC/CI) to work. Dell monitors support DDC/CI on VGA, DVI, DP and HDMI inputs. DDC/CI is not supported on USB connection.

So that means my docking station must support DDC commands because I can use Dell Device Manager on Windows with no issues! So why would MonitorControl and ddcctl not work? Very interesting. I wonder how I could debug this.

<!-- gh-comment-id:678375761 --> @quantumgolem commented on GitHub (Aug 21, 2020): I found some more information on Dell's website confirming that Dell Device Manager commands are sent through DDC: > This package contains the software application that allows users to configure their Dell monitor settings such as Brightness, Contrast and Preset Modes. This application requires Display Data Channel Command Interface (DDC/CI) to work. Dell monitors support DDC/CI on VGA, DVI, DP and HDMI inputs. DDC/CI is not supported on USB connection. So that means my docking station must support DDC commands because I can use Dell Device Manager on Windows with no issues! So why would MonitorControl and ddcctl not work? Very interesting. I wonder how I could debug this.
Author
Owner

@JoniVR commented on GitHub (Sep 19, 2020):

iirc DDC.swift (which is used under the hood for MonitorControl) is based off of ddcctl, so it could be that they both contain the same bug, that could explain the issue. I would suggest opening an issue on the DDC.swift repo for this too then. Some fine detective work 😁🕵️‍♂️

<!-- gh-comment-id:695208539 --> @JoniVR commented on GitHub (Sep 19, 2020): iirc [DDC.swift](https://github.com/reitermarkus/DDC.swift) (which is used under the hood for MonitorControl) is based off of ddcctl, so it could be that they both contain the same bug, that could explain the issue. I would suggest opening an issue on the [DDC.swift](https://github.com/reitermarkus/DDC.swift) repo for this too then. Some fine detective work 😁🕵️‍♂️
Author
Owner

@waydabber commented on GitHub (Aug 21, 2021):

Hi sn0wyfall,

can you tell me what exactly is the model of the dock? If it is a DisplayLink solution then it will work with Windows but not with MacOS. This is because DisplayLink did not implement DDC control for Macs but implemented it for Windows.

Thank you!

<!-- gh-comment-id:903142253 --> @waydabber commented on GitHub (Aug 21, 2021): Hi sn0wyfall, can you tell me what exactly is the model of the dock? If it is a DisplayLink solution then it will work with Windows but not with MacOS. This is because DisplayLink did not implement DDC control for Macs but implemented it for Windows. Thank you!
Author
Owner

@waydabber commented on GitHub (Aug 25, 2021):

I'll close this issue for now but please feel free to comment if there is anything we can do. If the issue persists, we can reopen this issue! Thank you!

<!-- gh-comment-id:905691961 --> @waydabber commented on GitHub (Aug 25, 2021): I'll close this issue for now but please feel free to comment if there is anything we can do. If the issue persists, we can reopen this issue! Thank you!
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/MonitorControl#218
No description provided.