[GH-ISSUE #364] Implementation MCCS via USB (EIZO) #287

Closed
opened 2026-05-05 05:41:18 -06:00 by gitea-mirror · 11 comments
Owner

Originally created by @gustavneustadt on GitHub (Jan 5, 2021).
Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/364

I have a EV2785 and sadly MonitorControl doesnt work for me. I had contact with EIZO support and they confirmed to me that they do not build DDC/CI controllers in their monitors anymore. They seem to use their own proprietary windows software. (#351)

I found dccutil supports the MCCS protocol which is necessary (?) for monitors from Eizo. It communicates not via hdmi/dp but via usb with the monitors to control them. I didnt tried it, because I was not able to build it on my mac.

Would be nice to see a implementation of this.

Originally created by @gustavneustadt on GitHub (Jan 5, 2021). Original GitHub issue: https://github.com/MonitorControl/MonitorControl/issues/364 I have a EV2785 and sadly MonitorControl doesnt work for me. I had contact with EIZO support and they confirmed to me that they do not build DDC/CI controllers in their monitors anymore. They seem to use their own proprietary windows software. (#351) I found [dccutil](https://github.com/rockowitz/ddcutil/) supports the MCCS protocol which is necessary (?) for monitors from Eizo. It communicates not via hdmi/dp but via usb with the monitors to control them. I didnt tried it, because I was not able to build it on my mac. Would be nice to see a implementation of this.
gitea-mirror 2026-05-05 05:41:18 -06:00
Author
Owner

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

You are right, this could be a useful feature. I'll try to add this in the future (but no promises).

"Alternatively, some monitors (e.g. Eizo ColorEdge, Apple Cinema) provide a USB interface to the VCP, as described in the USB Monitor Control Class Specification. ddcutil can communicate with these monitors over USB instead of I2C."

<!-- gh-comment-id:901675523 --> @waydabber commented on GitHub (Aug 19, 2021): You are right, this could be a useful feature. I'll try to add this in the future (but no promises). "Alternatively, some monitors (e.g. Eizo ColorEdge, Apple Cinema) provide a USB interface to the VCP, as described in the USB Monitor Control Class Specification. ddcutil can communicate with these monitors over USB instead of I2C."
Author
Owner

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

For future reference - ddcctl seems to use this to detect such displays:

39ce66b423/src/usb/usb_displays.c (L693-L743)

Also, for Apple branded external displays standard DisplayService calls should work (this is now limited to the internal display only). The following could be used to detect such displays using a whitelist method and direct them to use DisplayService instead of DDC:

let ULTRAFINE_NAME = "LG UltraFine"
let THUNDERBOLT_NAME = "Thunderbolt"
let LED_CINEMA_NAME = "LED Cinema"
let CINEMA_NAME = "Cinema"
let CINEMA_HD_NAME = "Cinema HD"
let COLOR_LCD_NAME = "Color LCD"
let APPLE_DISPLAY_VENDOR_ID = 0x05AC

(credits for this goes to @alin23)

@gustavneustadt - a question: does the built in MacOS brightness slider control the Eizo display? Or even though it implements a similar protocol to Apple's Cinema display it is not being controlled by the OS? Thank you!

<!-- gh-comment-id:901721400 --> @waydabber commented on GitHub (Aug 19, 2021): For future reference - ddcctl seems to use this to detect such displays: https://github.com/rockowitz/ddcutil/blob/39ce66b42305b304816d635b42a5b38ce280e2dd/src/usb/usb_displays.c#L693-L743 Also, for Apple branded external displays standard DisplayService calls should work (this is now limited to the internal display only). The following could be used to detect such displays using a whitelist method and direct them to use DisplayService instead of DDC: let ULTRAFINE_NAME = "LG UltraFine" let THUNDERBOLT_NAME = "Thunderbolt" let LED_CINEMA_NAME = "LED Cinema" let CINEMA_NAME = "Cinema" let CINEMA_HD_NAME = "Cinema HD" let COLOR_LCD_NAME = "Color LCD" let APPLE_DISPLAY_VENDOR_ID = 0x05AC (credits for this goes to @alin23) @gustavneustadt - a question: does the built in MacOS brightness slider control the Eizo display? Or even though it implements a similar protocol to Apple's Cinema display it is not being controlled by the OS? Thank you!
Author
Owner

@alin23 commented on GitHub (Aug 19, 2021):

One can easily test if DisplayServices works for their monitor using the Lunar CLI.

  1. Install the CLI from the menu bar as seen here: https://lunar.fyi/#cli
  2. Get the Serial/UUID of the display you want to test using this command:
lunar displays | egrep '^\s+Name:|Serial:'
  1. And then test DisplayServicesSetBrightness and CoreDisplay_Display_SetUserBrightness using the following commands (run them one by one to see which one works)
Set brightness 20 for UUID 37D8832A-2D66-02CA-B9F7-8F30A301B230 using DisplayServices
lunar display-services SetBrightness 37D8832A-2D66-02CA-B9F7-8F30A301B230 20
Set brightness to 20 for UUID 37D8832A-2D66-02CA-B9F7-8F30A301B230 using CoreDisplay
lunar core-display SetUserBrightness 37D8832A-2D66-02CA-B9F7-8F30A301B230 20
<!-- gh-comment-id:901753410 --> @alin23 commented on GitHub (Aug 19, 2021): One can easily test if DisplayServices works for their monitor using the Lunar CLI. 1. Install the CLI from the menu bar as seen here: https://lunar.fyi/#cli 2. Get the Serial/UUID of the display you want to test using this command: ```sh lunar displays | egrep '^\s+Name:|Serial:' ``` 3. And then test `DisplayServicesSetBrightness` and `CoreDisplay_Display_SetUserBrightness` using the following commands (run them one by one to see which one works) ##### Set brightness `20` for UUID `37D8832A-2D66-02CA-B9F7-8F30A301B230` using `DisplayServices` ```sh lunar display-services SetBrightness 37D8832A-2D66-02CA-B9F7-8F30A301B230 20 ``` ##### Set brightness to `20` for UUID `37D8832A-2D66-02CA-B9F7-8F30A301B230` using `CoreDisplay` ```sh lunar core-display SetUserBrightness 37D8832A-2D66-02CA-B9F7-8F30A301B230 20 ```
Author
Owner

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

Thanks @alin23 !

@gustavneustadt - please let us know if you have the results. Thank you!

<!-- gh-comment-id:901836703 --> @waydabber commented on GitHub (Aug 19, 2021): Thanks @alin23 ! @gustavneustadt - please let us know if you have the results. Thank you!
Author
Owner

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

Thank you very much! I am currently on vacation but will try it for sure.

UPDATE:

@waydabber

does the built in MacOS brightness slider control the Eizo display? Or even though it implements a similar protocol to Apple's Cinema display it is not being controlled by the OS? Thank you!

Which one? Didnt find any software slider. If you mean the keyboard controls: No, this do not work.

@alin23

One can easily test if DisplayServices works for their monitor using the Lunar CLI.

Install the CLI from the menu bar as seen here: https://lunar.fyi/#cli
Get the Serial/UUID of the display you want to test using this command:

lunar displays | egrep '^\s+Name:|Serial:'

And then test DisplayServicesSetBrightness and CoreDisplay_Display_SetUserBrightness using the following commands (run them one by one to see which one works)

Set brightness 20 for UUID 37D8832A-2D66-02CA-B9F7-8F30A301B230 using DisplayServices

lunar display-services SetBrightness 37D8832A-2D66-02CA-B9F7-8F30A301B230 20

Set brightness to 20 for UUID 37D8832A-2D66-02CA-B9F7-8F30A301B230 using CoreDisplay

lunar core-display SetUserBrightness 37D8832A-2D66-02CA-B9F7-8F30A301B230 20

Sadly this does not work for me.
Since I am using a Hackintosh, the problem may come from faulty usb mapping or other hacky stuff – at the moment I have no other way to test this.

<!-- gh-comment-id:903176542 --> @gustavneustadt commented on GitHub (Aug 21, 2021): Thank you very much! I am currently on vacation but will try it for sure. UPDATE: @waydabber > does the built in MacOS brightness slider control the Eizo display? Or even though it implements a similar protocol to Apple's Cinema display it is not being controlled by the OS? Thank you! Which one? Didnt find any software slider. If you mean the keyboard controls: No, this do not work. @alin23 > One can easily test if DisplayServices works for their monitor using the Lunar CLI. > > Install the CLI from the menu bar as seen here: https://lunar.fyi/#cli > Get the Serial/UUID of the display you want to test using this command: > > lunar displays | egrep '^\s+Name:|Serial:' > > And then test DisplayServicesSetBrightness and CoreDisplay_Display_SetUserBrightness using the following commands (run them one by one to see which one works) > > Set brightness 20 for UUID 37D8832A-2D66-02CA-B9F7-8F30A301B230 using DisplayServices > > lunar display-services SetBrightness 37D8832A-2D66-02CA-B9F7-8F30A301B230 20 > > Set brightness to 20 for UUID 37D8832A-2D66-02CA-B9F7-8F30A301B230 using CoreDisplay > > lunar core-display SetUserBrightness 37D8832A-2D66-02CA-B9F7-8F30A301B230 20 Sadly this does not work for me. Since I am using a Hackintosh, the problem may come from faulty usb mapping or other hacky stuff – at the moment I have no other way to test this.
Author
Owner

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

Hi,

just a qick feedback:

I was able to test the Lunar stuff described by @alin23 with a MacBook and an Eizo EV2785 connected via USB-C. Lunar is NOT able to change the brightness of the display.

<!-- gh-comment-id:905457328 --> @deg0nz commented on GitHub (Aug 25, 2021): Hi, just a qick feedback: I was able to test the Lunar stuff described by @alin23 with a MacBook and an Eizo EV2785 connected via USB-C. Lunar is NOT able to change the brightness of the display.
Author
Owner

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

@gustavneustadt,

I meant the Dispaly Brightness slider in Big Sur's control center. But if the keyboards don't work, then probably EIZO displays are not regarded the same way as Apple displays even though they use a similar protocol.

Screen Shot 2021-08-25 at 18 41 11

@deg0nz,

thanks for the feedback.

We should probably divide this issue into two - supporting Apple displays is easy by using DisplayServices while supporting MCCS via USB is an entirely different thing to do.

<!-- gh-comment-id:905698781 --> @waydabber commented on GitHub (Aug 25, 2021): @gustavneustadt, I meant the Dispaly Brightness slider in Big Sur's control center. But if the keyboards don't work, then probably EIZO displays are not regarded the same way as Apple displays even though they use a similar protocol. <img width="338" alt="Screen Shot 2021-08-25 at 18 41 11" src="https://user- images.githubusercontent.com/37590873/130830955-34e6499d-9f49-45b1-9f8a-ff94396e7987.png"> @deg0nz, thanks for the feedback. We should probably divide this issue into two - supporting Apple displays is easy by using DisplayServices while supporting MCCS via USB is an entirely different thing to do.
Author
Owner

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

Apple branded displays will be handled here:

https://github.com/MonitorControl/MonitorControl/issues/539

<!-- gh-comment-id:905704923 --> @waydabber commented on GitHub (Aug 25, 2021): Apple branded displays will be handled here: https://github.com/MonitorControl/MonitorControl/issues/539
Author
Owner

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

One more update:

I digged into this a little bit, compiled ddcutil in a Linux VM and tried if I could change/access my monitor's settings by redirecting the USB device of the monitor into the VM.

Unfortunately, it didn't work.

I also stumbled across https://github.com/rockowitz/ddcutil/issues/68 and this part about the EV2785 in the docs at http://www.ddcutil.com/monitor_notes/ (Which is basically the same content as the issue):

Eizo EV2785

Reports EDID ad I2c bus address x.50. Does not support DDC/CI (bus address x37).

Uses USB for monitor control, but uses manufacturer-defined usage pages for communication, i.e. does not support the USB Monitor Control Class Specification.

So this means, unless someone is willing and able to reverse engineer this stuff for the EV2785, there is not much hope.

But different EIZO monitors seem to work (at least partially) according to the ddcutil docs. For example the Coloredge CG19 seems to follow the MCCS specs (see link to monitor notes above).

<!-- gh-comment-id:905752479 --> @deg0nz commented on GitHub (Aug 25, 2021): One more update: I digged into this a little bit, compiled `ddcutil` in a Linux VM and tried if I could change/access my monitor's settings by redirecting the USB device of the monitor into the VM. Unfortunately, it didn't work. I also stumbled across https://github.com/rockowitz/ddcutil/issues/68 and this part about the EV2785 in the docs at http://www.ddcutil.com/monitor_notes/ (Which is basically the same content as the issue): > Eizo EV2785 > > Reports EDID ad I2c bus address x.50. Does not support DDC/CI (bus address x37). > > Uses USB for monitor control, but uses manufacturer-defined usage pages for communication, i.e. does not support the USB Monitor Control Class Specification. So this means, unless someone is willing and able to reverse engineer this stuff for the EV2785, there is not much hope. But different EIZO monitors seem to work (at least partially) according to the `ddcutil` docs. For example the Coloredge CG19 seems to follow the MCCS specs (see link to monitor notes above).
Author
Owner

@waydabber commented on GitHub (Sep 3, 2021):

For those with Apple displays, there is a link to a test build with proper support in this issue: https://github.com/MonitorControl/MonitorControl/issues/539

Unfortunately this will not work for EIZO displays.

<!-- gh-comment-id:912827834 --> @waydabber commented on GitHub (Sep 3, 2021): For those with Apple displays, there is a link to a test build with proper support in this issue: https://github.com/MonitorControl/MonitorControl/issues/539 Unfortunately this will not work for EIZO displays.
Author
Owner

@waydabber commented on GitHub (Oct 16, 2021):

I am afraid MCCS over USB probably won't happen unless somebody who actually has an EIZO display that supports this protocol and has the ability to port the relevant codes from this over to Swift/macOS does the job.

(Of course if somebody is willing to donate a display like this to the cause then the core dev team can work on it as well but even then it's gonna be a lot of work so I don't really see this as a feasible alternative).

I'll convert this issue into a discussion since it makes no sense to have this sit here forever while letting the stalebot eat the issue does not seem to be the proper way to handle this either.

<!-- gh-comment-id:944880646 --> @waydabber commented on GitHub (Oct 16, 2021): I am afraid MCCS over USB probably won't happen unless somebody who actually has an EIZO display that supports this protocol and has the ability to port the relevant codes from [this](https://github.com/rockowitz/ddcutil/tree/39ce66b42305b304816d635b42a5b38ce280e2dd/src/usb) over to Swift/macOS does the job. (Of course if somebody is willing to donate a display like this to the cause then the core dev team can work on it as well but even then it's gonna be a lot of work so I don't really see this as a feasible alternative). I'll convert this issue into a discussion since it makes no sense to have this sit here forever while letting the stalebot eat the issue does not seem to be the proper way to handle this either.
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#287
No description provided.