kfix / ddcctl Goto Github PK
View Code? Open in Web Editor NEWDDC monitor controls (brightness) for Mac OSX command line
License: GNU General Public License v3.0
DDC monitor controls (brightness) for Mac OSX command line
License: GNU General Public License v3.0
On my build with your current tool, I could neither set nor read any parameters.
By replacing part of your code from DDCWrite() with code from this post, I manage to correctly modify all the settings on my Dell U2715H (connected to a GTX 970 by display port, using Nvidia Web drivers).
Here's the code for the modified DDCwrite
bool DDCWrite(CGDirectDisplayID displayID, struct DDCWriteCommand *write) {
IOI2CRequest request;
UInt8 data[128];
bzero( &request, sizeof(request));
request.commFlags = 0;
request.sendAddress = 0x6E;
request.sendTransactionType = kIOI2CSimpleTransactionType;
request.sendBuffer = (vm_address_t) &data[0];
request.sendBytes = 7;
data[0] = 0x51;
data[1] = 0x84;
data[2] = 0x03;
data[3] = write->control_id;
data[4] = 0x64 ;
data[5] = write->new_value ;
data[6] = 0x6E ^ data[0] ^ data[1] ^ data[2] ^ data[3]^ data[4]^
data[5];
request.replyTransactionType = kIOI2CNoTransactionType;
request.replyBytes = 0;
bool result = DisplayRequest(displayID, &request);
return result;
}
I basically replaced the code that fills the request structure... To me it looks like instead of setting request.sendSubAddress to 0x51, this value of 0x51 is set in the first element of request.data (which is one element bigger). This code doesn't work well on a mac mini connected to another Dell monitor. I don't know what is the proper solution (looks like it could be depend on how this request structure is layed out in memory).
Hello.
I'm using a Dell P2415Q with a MacBook Pro (13-inch, 2016, Four Thunderbolt 3 Ports) on OS X 10.13.3 through a USB-C to DP cable.
Here are the outputs.
$ ./ddcctl -d 1 -b ?
2018-03-09 17:05:06.976 ddcctl[10727:3423095] D: NSScreen #724073921 (1920x1080 0°) HiDPI
2018-03-09 17:05:06.976 ddcctl[10727:3423095] I: found 1 external display
2018-03-09 17:05:06.976 ddcctl[10727:3423095] I: polling display 1's EDID
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:41150 SN:808800834 UN:1 IN:15107 Serial:
2018-03-09 17:05:06.992 ddcctl[10727:3423095] I: got edid.serial: 3VV1478B05RB
2018-03-09 17:05:06.992 ddcctl[10727:3423095] I: got edid.name: DELL P2415Q
2018-03-09 17:05:06.992 ddcctl[10727:3423095] D: action: b: ?
2018-03-09 17:05:06.992 ddcctl[10727:3423095] D: querying VCP control: #16 =?
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:41150 SN:808800834 UN:1 IN:15887 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
......repeat for 8 more times......
E: No data after 10 tries!
2018-03-09 17:05:07.584 ddcctl[10727:3423095] E: DDC send command failed!
2018-03-09 17:05:07.584 ddcctl[10727:3423095] E: VCP control #16 (0x10) = current: 0, max: 0
But when I tried this on a older MacBook Pro through Thunderbolt2(mDP) to DP on the same screen everything worked well.
Thank you.
Is there a way how to get the current monitor volume? I cannot see how to simply get a current value, only how to change it! dcctl -d 1 -v +0
does not work since it still gives me a popup on my external monitor.
This isn't really a bug report as I'm sure that this is an issue with my monitor, but I just wanted to confirm with others.
So I have a Dell U2415 monitor and when I change my brightness, from say 80% to 20%, with ddcctl, or any other DDC-based tool, this is what happens:
The problem is with the initial flash to 20%, which is really annoying. It's not that noticeable when making small steps, but with a larger jump it's really annoying.
It doesn't happen when changing contrast, only brightness. I assume it has to do with the fade which wasn't coded and tested very well in the monitor (although I fail to see how the manufacturer could let such an egregious issue slide!).
Does anyone else face this? Could you help me out by writing what monitor(s) you have and whether this happens to you? I want to get a monitor in the future that doesn't do this...
When I have my Dell UP2715k hooked up for 5k using its dual DP cable to two Thunderbolt 2 ports on a 2013 Mac Pro running 10.14.2, I can't get ddcctl to read or set brightness.
Dell's DDM monitor application works (looks like it also uses DDC/CI) with this dual DP setup in a Windows 10 Bootcamp install. And if I run the monitor in 4k on the Mac side with its single miniDP cable instead, ddcctl works great too.
Below is what I get running a debug install with the set and read brightness commands. I couldn't find any known issues with dual DP setups so I'm wondering if this limitation is already known or if there's any other output I can provide to help?
Great job BTW! Very cool to see this working when I used the single miniDP cable.
$ ddcctl -d 1 -b 50
2019-01-14 20:31:52.035 ddcctl[7327:988547] D: NSScreen #722475221 (2560x1440 0°) HiDPI
2019-01-14 20:31:52.035 ddcctl[7327:988547] I: found 1 external display
2019-01-14 20:31:52.036 ddcctl[7327:988547] I: polling display 1's EDID
Framebuffer: AMDFramebufferSI
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,IkuraS@5/AMDFramebufferSI/display0/AppleDisplay
VN:37036 PN:16566 SN:808990035 UN:5 IN:14339 Serial:
2019-01-14 20:31:52.047 ddcctl[7327:988547] I: got edid.serial: F1JCM581085S
2019-01-14 20:31:52.048 ddcctl[7327:988547] I: got edid.name: DELL UP2715K
2019-01-14 20:31:52.048 ddcctl[7327:988547] D: action: b: 50
2019-01-14 20:31:52.048 ddcctl[7327:988547] D: setting VCP control #16 => 50
Framebuffer: AMDFramebufferSI
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,IkuraS@5/AMDFramebufferSI/display0/AppleDisplay
VN:37036 PN:16566 SN:808990035 UN:5 IN:17695 Serial:
$ ddcctl -d 1 -b ?
2019-01-14 19:46:36.529 ddcctl[7108:899067] D: NSScreen #722475221 (2560x1440 0°) HiDPI
2019-01-14 19:46:36.529 ddcctl[7108:899067] I: found 1 external display
2019-01-14 19:46:36.529 ddcctl[7108:899067] I: polling display 1's EDID
Framebuffer: AMDFramebufferSI
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,IkuraS@5/AMDFramebufferSI/display0/AppleDisplay
VN:37036 PN:16566 SN:808990035 UN:5 IN:17411 Serial:
2019-01-14 19:46:36.545 ddcctl[7108:899067] I: got edid.serial: F1JCM581085S
2019-01-14 19:46:36.545 ddcctl[7108:899067] I: got edid.name: DELL UP2715K
2019-01-14 19:46:36.545 ddcctl[7108:899067] D: action: b: ?
2019-01-14 19:46:36.545 ddcctl[7108:899067] D: querying VCP control: #16 =?
D: IOI2CTransactionTypes: 0x0f (15)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
E: IOI2CDisplayPortNativeTransactionType unsupported
Framebuffer: AMDFramebufferSI
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,IkuraS@5/AMDFramebufferSI/display0/AppleDisplay
VN:37036 PN:16566 SN:808990035 UN:5 IN:16683 Serial:
D: IOI2CTransactionTypes: 0x0f (15)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
E: IOI2CDisplayPortNativeTransactionType unsupported
Framebuffer: AMDFramebufferSI
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,IkuraS@5/AMDFramebufferSI/display0/AppleDisplay
VN:37036 PN:16566 SN:808990035 UN:5 IN:14375 Serial:
D: IOI2CTransactionTypes: 0x0f (15)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
E: IOI2CDisplayPortNativeTransactionType unsupported
Framebuffer: AMDFramebufferSI
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,IkuraS@5/AMDFramebufferSI/display0/AppleDisplay
VN:37036 PN:16566 SN:808990035 UN:5 IN:15911 Serial:
D: IOI2CTransactionTypes: 0x0f (15)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
E: IOI2CDisplayPortNativeTransactionType unsupported
Framebuffer: AMDFramebufferSI
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,IkuraS@5/AMDFramebufferSI/display0/AppleDisplay
VN:37036 PN:16566 SN:808990035 UN:5 IN:14631 Serial:
D: IOI2CTransactionTypes: 0x0f (15)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
E: IOI2CDisplayPortNativeTransactionType unsupported
Framebuffer: AMDFramebufferSI
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,IkuraS@5/AMDFramebufferSI/display0/AppleDisplay
VN:37036 PN:16566 SN:808990035 UN:5 IN:15655 Serial:
D: IOI2CTransactionTypes: 0x0f (15)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
E: IOI2CDisplayPortNativeTransactionType unsupported
Framebuffer: AMDFramebufferSI
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,IkuraS@5/AMDFramebufferSI/display0/AppleDisplay
VN:37036 PN:16566 SN:808990035 UN:5 IN:15399 Serial:
D: IOI2CTransactionTypes: 0x0f (15)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
E: IOI2CDisplayPortNativeTransactionType unsupported
Framebuffer: AMDFramebufferSI
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,IkuraS@5/AMDFramebufferSI/display0/AppleDisplay
VN:37036 PN:16566 SN:808990035 UN:5 IN:15143 Serial:
D: IOI2CTransactionTypes: 0x0f (15)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
E: IOI2CDisplayPortNativeTransactionType unsupported
Framebuffer: AMDFramebufferSI
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,IkuraS@5/AMDFramebufferSI/display0/AppleDisplay
VN:37036 PN:16566 SN:808990035 UN:5 IN:14887 Serial:
D: IOI2CTransactionTypes: 0x0f (15)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
E: IOI2CDisplayPortNativeTransactionType unsupported
Framebuffer: AMDFramebufferSI
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,IkuraS@5/AMDFramebufferSI/display0/AppleDisplay
VN:37036 PN:16566 SN:808990035 UN:5 IN:21799 Serial:
D: IOI2CTransactionTypes: 0x0f (15)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
E: IOI2CDisplayPortNativeTransactionType unsupported
Framebuffer: AMDFramebufferSI
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/GFXB@3/IOPP/GFX2@0/ATY,IkuraS@5/AMDFramebufferSI/display0/AppleDisplay
VN:37036 PN:16566 SN:808990035 UN:5 IN:22055 Serial:
E: No data after 10 tries!
2019-01-14 19:46:37.323 ddcctl[7108:899067] E: DDC send command failed!
2019-01-14 19:46:37.323 ddcctl[7108:899067] E: VCP control #16 (0x10) = current: 0, max: 0
ddcctl -d 1 -i $val
could setting the new source,
but if I want to switch source loop, how could I get the current source value?
Build:
Mac Mini (Late 2018)
MacOS Catalina 10.15.3
Razer X Core eGPU w/ AMD Radeon VII (Connected via USB-C to USB-C)
Dell U3219Q (Connected via Displayport - Displayport through Razer Core X)
I've tried every permutation I can think of of setting brightness to no avail:
~/ddcctl master
❯ ./ddcctl -d 1 -b 50
D: NSScreen #724041876 (3008x1692 0°) HiDPI
I: found 1 external display
I: polling display 1's EDID
I: got edid.serial: 8QLNWP2
I: got edid.name: DELL U3219Q
D: action: b: 50
D: setting VCP control #16 => 50
❯ ./ddcctl -d 1 -i 15 -b 50
D: NSScreen #724041876 (3008x1692 0°) HiDPI
I: found 1 external display
I: polling display 1's EDID
I: got edid.serial: 8QLNWP2
I: got edid.name: DELL U3219Q
D: action: i: 15
D: setting VCP control #96 => 15
D: action: b: 50
D: setting VCP control #16 => 50
~/ddcctl master
❯ ./ddcctl -d 1 -i 16 -b 50
D: NSScreen #724041876 (3008x1692 0°) HiDPI
I: found 1 external display
I: polling display 1's EDID
I: got edid.serial: 8QLNWP2
I: got edid.name: DELL U3219Q
D: action: i: 16
D: setting VCP control #96 => 16
D: action: b: 50
D: setting VCP control #16 => 50
Nothing seems to work. It works perfectly when my computer is connected directly to the monitor via USB-C:
~/ddcctl master
❯ ./ddcctl -d 1 -b 100
D: NSScreen #724042060 (3008x1692 0°) HiDPI
I: found 1 external display
I: polling display 1's EDID
I: got edid.serial: 8QLNWP2
I: got edid.name: DELL U3219Q
D: action: b: 100
D: setting VCP control #16 => 100
Hi there - I want to use your Program because "Brightnes Menulet by superduper crashes my machine.
But: I can't install your program.
heres what I did (did I even do the right thing?)
First I cloned your Git via Terminal. that works.
then I enter cd //Users/laptop/ddcctl/
I enter "make install"
and I recieve the following errors- what do the mean and how can I solve this problem ? :
Schlappy:ddcctl laptop$ make install
gcc -Wall -o ddcctl -lobjc -framework IOKit -framework AppKit -framework Foundation DDC.o ddcctl.m
In file included from ddcctl.m:20:
./DDC.h:87:5: warning: declaration does not declare anything
[-Wmissing-declarations]
union inputbitmap {
^
./DDC.h:185:13: warning: declaration does not declare anything
[-Wmissing-declarations]
union sync {
^
ddcctl.m:160:20: warning: missing terminating '"' character [-Winvalid-pp-token]
MyLog(@"Usage:\n
^
ddcctl.m:160:19: error: unexpected '@' in program
MyLog(@"Usage:\n
^
ddcctl.m:168:24: warning: missing terminating ' character [-Winvalid-pp-token]
----- Settings that don't always work -----
^
ddcctl.m:178:38: warning: missing terminating '"' character [-Winvalid-pp-token]
-X + (increases setting X by NN)");
^
ddcctl.m:182:2: error: expected '}'
}
^
ddcctl.m:60:1: note: to match this '{'
{
^
5 warnings and 2 errors generated.
make: *** [ddcctl] Error 1
I am trying this program on out ASUS MB169B+ Portable Display which is powered and has data transferred from a USB 3.0 port, and it is showing me the message below (on Macbook Pro):
D: NSScreen #339234107 (1080x1920 90°) 141.00 DPI
I: found 1 external display
I: polling display 1's EDID
E: Failed to poll display!
I read the README.md and I could not find a USB 3.0 option from the list of supported inputs. I am wondering if USB 3.0 input is supported by this program or not. If not, is there any chance to add the support for USB 3.0 input?
Really appreciate the incredible effort to support this program!
Following setup:
Setting the brightness/contrast appears to just do nothing 🙁
Output from a debug build:
$ ./ddcctl -d 1 -b 42 -c 26
2018-12-02 23:30:37.003 ddcctl[2043:40754] D: NSScreen #724070914 (1920x1080 0°) HiDPI
2018-12-02 23:30:37.003 ddcctl[2043:40754] I: found 1 external display
2018-12-02 23:30:37.003 ddcctl[2043:40754] I: polling display 1's EDID
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@2/display0/AppleDisplay
VN:4268 PN:41157 SN:825312066 UN:2 IN:14083 Serial:
2018-12-02 23:30:37.010 ddcctl[2043:40754] I: got edid.serial: G3D7F89Q11CB
2018-12-02 23:30:37.010 ddcctl[2043:40754] I: got edid.name: DELL P2415Q
2018-12-02 23:30:37.010 ddcctl[2043:40754] D: action: b: 42
2018-12-02 23:30:37.010 ddcctl[2043:40754] D: setting VCP control #16 => 42
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@2/display0/AppleDisplay
VN:4268 PN:41157 SN:825312066 UN:2 IN:14371 Serial:
2018-12-02 23:30:37.138 ddcctl[2043:40754] D: action: c: 26
2018-12-02 23:30:37.138 ddcctl[2043:40754] D: setting VCP control #18 => 26
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@2/display0/AppleDisplay
VN:4268 PN:41157 SN:825312066 UN:2 IN:17715 Serial:
First, thanks so much for this!
Would be great to have the option of passing some options to OSDisplay, like
-l value
-i path to image-file
-m message (string)
-d delay
I'm sorry to bother you with this, but was wondering if you had any idea why this may be happening:
fots ~ > ddcctl $ ./ddcctl -b 10 -d 1
D: NSScreen #1952343752 (1600x900 0°) 68.00 DPI
I: found 1 external display
I: polling display 1's EDID
I: got edid.serial: M3D10118SL0
I: got edid.name: BenQ GW2760HS
D: action: b: 10
D: setting VCP control #16 => 10
E: Failed to send DDC command!
Thanks so much in advance!
Fotis
I'm currently working on adding an auto mode
functionality that tracks the main laptop display and sets all the other displays to match.
On top of that, I've added an Xcode project and I'm looking at making this a menu bar application (plus some other features, like biasing). Considering these are quite large changes to the current codebase, would you want me to make a fork and develop a separate app or would you want to receive a pull request with the changes?
Cheers,
Cat
relates to #42
minReplyDelay
should be overridable at the command line (or via env var).
If not overridden, the default should vary based on the vendor of the framebuffer and use a known maybe-good value for the major ones (AMD, Nvidia, Intel).
I can't figure out how to get OSDisplay.app... is it available online, or is it compiled with the application?
BTW, thanks for writing this, it works beautifully with my Dell U3415W.
How did you come up with the logic for the "reply checksum" below?
Line 223 in 4818757
For the Samsung monitors I'm testing with (U28E590 & S22E310), the checksum is failing, so I'm wondering if maybe that logic isn't 100% correct.
D: NSScreen #188978397 (3440x1440 0°) 110.00 DPI
I: found 1 external display
I: polling display 1's EDID
I: got edid.name: C34J79x
Monitor: Samsung CJ79
Connection: Thunderbolt 3
System: MacBook Pro 15 2016
OS: macOS 10.14
I'm guessing this is just due to the implementation of the monitor, but I'm wondering if there is something I could look at for having volume at 0 be actually silent. Currently setting volume to 0 on this monitor results in a comfortable listening volume. However it won't go lower.
Within the monitors own display menu I can set it to 0 which will effectively mute it.
ddcctl -d 2
2017-01-09 14:56:04.210 ddcctl[38472:10532946] D: NSScreen #69733378 (1680x1050) DPI is 129.00
2017-01-09 14:56:04.212 ddcctl[38472:10532946] D: NSScreen #722475281 (2560x1440) DPI is 109.00
2017-01-09 14:56:04.212 ddcctl[38472:10532946] I: found 2 displays
2017-01-09 14:56:04.212 ddcctl[38472:10532946] I: polling display 2's EDID
VN:4268 PN:16573 SN:1095185996 UN:5 IN:15619 AMDFramebufferVIB IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG0@1/IOPP/GFX0@0/ATY,Berbice@3/AMDFramebufferVIB/display0/AppleDisplay
2017-01-09 14:56:04.226 ddcctl[38472:10532946] D: command arg-pair: d: 2
Judging by the code, I should be seeing the serial and name logged as well.
Adjusting the brightness of my mac isn't working as expected.
Using ddcctl -d 1 -b ?
to query the brightness, if I use my function keys to set brightness:
(notch = little square on the overlay graphic when you use the function keys to set brightness)
notch 0 = current: 16, max: 255 (lowest)
notch 1 = current: 138, max: 255
notch 2 = current: 127, max: 255
notch 3 = current: 72, max: 255
notch 4 = current: 255, max: 255
notch 5 = current: 32, max: 255
...
last notch = current: 182, max: 255 (brightest)
When I try to set the brightness, no matter what value I pass, it always results in the same level (approximately 70% of full brightness if I had to guess). If I use function keys to increase to 100% and then set brightness to X, it'll go to about 70%. If I use function keys to decrease to 0% and then set brightness to X, it'll go to about 70%.
It's no big deal if you can't spend time looking at this, but maybe you know what's up.
Thanks again!
This line of ddcctl.m
should read @"v": @AUDIO_SPEAKER_VOLUME, //pg94
in order to match the help text on this line.
Thanks for this very useful utility! 😄
When running ddcctl to increase/decrease brightness/contrast (relative setting) on OS X 10.11 Beta (15A278b), MacBook Pro w/ Retina, Dell U3415W connected via DisplayPort, the system would stop processing input from keyboard and mouse. Setting brightness/contrast to a specified value worked.
Checking the repository which was the source of some of the code found this issue: jontaylor/DDC-CI-Tools-for-OS-X#4
Applying the same workaround helped in ddcctl case as well. After commenting out the following line (https://github.com/kfix/ddcctl/blob/master/DDC.c#L183) and recompiling, I am able to use relative setting.
I would have submitted a Pull Request, but not sure if minReplyDelay could simply be discarded or should be lowered.
Unless I'm missing something, it'd seem it should be filtered out while looping - e.g. around here
System
Monitors
Connections
Issue
When either of the displays is connected, addressing them works fine and brightness, contrast and standby controls work. However, when both of the displays are connected, one displays responds to the commands for both display 2 and 3.
Command
Single external monitor connected
redacted@redacted ~ ddcctl -d 2 -b 100
2016-12-09 19:18:24.615 ddcctl[25191:3378607] D: NSScreen #69733248 (1440x900) DPI is 110.50
2016-12-09 19:18:24.615 ddcctl[25191:3378607] D: NSScreen #188930901 (1080x1920) DPI is 82.00
2016-12-09 19:18:24.615 ddcctl[25191:3378607] I: found 2 displays
2016-12-09 19:18:24.615 ddcctl[25191:3378607] I: polling display 2's EDID
VN:19501 PN:2656 SN:1515733847 UN:1 IN:15619 AppleIntelFramebuffer IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay-Portrait
2016-12-09 19:18:24.649 ddcctl[25191:3378607] D: command arg-pair: d: 2
2016-12-09 19:18:24.649 ddcctl[25191:3378607] D: command arg-pair: b: 100
2016-12-09 19:18:24.649 ddcctl[25191:3378607] D: setting VCP control #16 => 100
VN:19501 PN:2656 SN:1515733847 UN:1 IN:16651 AppleIntelFramebuffer IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay-Portrait
Two external monitors connected
Monitor 1
redacted@redacted ~ ddcctl -d 2 -b 100
2016-12-09 19:20:26.103 ddcctl[25276:3380721] D: NSScreen #69733248 (1280x800) DPI is 98.00
2016-12-09 19:20:26.103 ddcctl[25276:3380721] D: NSScreen #188930901 (1080x1920) DPI is 82.00
2016-12-09 19:20:26.103 ddcctl[25276:3380721] D: NSScreen #188930903 (1920x1080) DPI is 82.00
2016-12-09 19:20:26.103 ddcctl[25276:3380721] I: found 3 displays
2016-12-09 19:20:26.104 ddcctl[25276:3380721] I: polling display 2's EDID
VN:19501 PN:2656 SN:1515733847 UN:1 IN:15619 AppleIntelFramebuffer IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay-Portrait
2016-12-09 19:20:26.133 ddcctl[25276:3380721] D: command arg-pair: d: 2
2016-12-09 19:20:26.133 ddcctl[25276:3380721] D: command arg-pair: b: 100
2016-12-09 19:20:26.133 ddcctl[25276:3380721] D: setting VCP control #16 => 100
VN:19501 PN:2656 SN:1515733847 UN:1 IN:16651 AppleIntelFramebuffer IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay-Portrait
Monitor 2
redacted@redacted ~ ddcctl -d *3* -b 100
2016-12-09 19:19:26.787 ddcctl[25254:3379875] D: NSScreen #69733248 (1280x800) DPI is 98.00
2016-12-09 19:19:26.787 ddcctl[25254:3379875] D: NSScreen #188930901 (1080x1920) DPI is 82.00
2016-12-09 19:19:26.788 ddcctl[25254:3379875] D: NSScreen #188930903 (1920x1080) DPI is 82.00
2016-12-09 19:19:26.788 ddcctl[25254:3379875] I: found 3 displays
2016-12-09 19:19:26.788 ddcctl[25254:3379875] I: polling display 3's EDID
VN:19501 PN:2656 SN:1515733847 UN:3 IN:15619 AppleIntelFramebuffer IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay-Portrait
2016-12-09 19:19:26.815 ddcctl[25254:3379875] D: command arg-pair: d: 3
2016-12-09 19:19:26.815 ddcctl[25254:3379875] D: command arg-pair: b: 100
2016-12-09 19:19:26.815 ddcctl[25254:3379875] D: setting VCP control #16 => 100
VN:19501 PN:2656 SN:1515733847 UN:3 IN:16651 AppleIntelFramebuffer IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay-Portrait
I'm curious, the README mentions color preset control, ddcctl -h
doesn't show me an option to query or set this.
I imagine this is for monitors like mine that come with preset settings? For example "Default" , " Gaming", "Movie" etc.
So it would be possible to do something like, ddcctl -preset Gaming
or something to switch to those settings.
I'm trying this on a 2014 Mac Mini with a Lenovo L220 (over HDMI) and a Dell UP3214Q (monitor's Displayport connected to Mini's Thunderbolt port). Observations so far:
Any ideas how to prevent the freeze?
I'm running macOS Mojave 10.14.1 on a MBA (mid 2012, intel hd 4000). I have been using ddcctl without problems for a long time -- thanks! -- through a mini displayport to VGA adapter, and a plain VGA cable to a Dell 2209WA monitor.
Today I changed this setup to a mini displayport to HDMI adapter, and a HDMI to DVI-D cable to the same monitor, and for some reason the monitor stopped reacting to ddcctl. I'm unsure of how to isolate the problem.
The debug output (4818757) of running the only command I ever use (brightness):
$ ./ddcctl -d 1 -b 100
2019-01-08 04:16:39.999 ddcctl[15913:6144277] D: NSScreen #725364749 (1680x1050 0°) 90.00 DPI
2019-01-08 04:16:39.999 ddcctl[15913:6144277] I: found 1 external display
2019-01-08 04:16:39.999 ddcctl[15913:6144277] I: polling display 1's EDID
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61457 SN:844117068 UN:1 IN:14339 Serial:
2019-01-08 04:16:40.034 ddcctl[15913:6144277] I: got edid.serial: H735H99M2P4L
2019-01-08 04:16:40.034 ddcctl[15913:6144277] I: got edid.name: DELL 2209WA
2019-01-08 04:16:40.034 ddcctl[15913:6144277] D: action: b: 100
2019-01-08 04:16:40.034 ddcctl[15913:6144277] D: setting VCP control #16 => 100
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61457 SN:844117068 UN:1 IN:14891 Serial:
The result of this is that the monitor sits unchanged at zero brightness.
All suggestions welcome. I can compare the outputs for VGA/DVI if it helps.
$ ./ddcctl -d 1 -b ?
VGA output (using 3d38860 to prevent freezing the OS):
$ ./ddcctl -d 1 -b ?
2019-01-08 15:00:38.503 ddcctl[1356:9468] D: NSScreen #725364813 (1680x1050 0°) 90.00 DPI
2019-01-08 15:00:38.503 ddcctl[1356:9468] I: found 1 external display
2019-01-08 15:00:38.503 ddcctl[1356:9468] I: polling display 1's EDID
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61456 SN:844117068 UN:1 IN:18179 Serial:
2019-01-08 15:00:38.894 ddcctl[1356:9468] I: got edid.serial: H735H99M2P4L
2019-01-08 15:00:38.894 ddcctl[1356:9468] I: got edid.name: DELL 2209WA
2019-01-08 15:00:38.895 ddcctl[1356:9468] D: action: b: ?
2019-01-08 15:00:38.895 ddcctl[1356:9468] D: querying VCP control: #16 =?
D: IOI2CTransactionTypes: 0x1f (31)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61456 SN:844117068 UN:1 IN:14095 Serial:
2019-01-08 15:00:39.020 ddcctl[1356:9468] I: VCP control #16 (0x10) = current: 0, max: 100
DVI/HDMI output:
$ ./ddcctl -d 1 -b ?
2019-01-08 04:56:13.875 ddcctl[978:8458] D: NSScreen #725364749 (1680x1050 0°) 90.00 DPI
2019-01-08 04:56:13.875 ddcctl[978:8458] I: found 1 external display
2019-01-08 04:56:13.875 ddcctl[978:8458] I: polling display 1's EDID
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61457 SN:844117068 UN:1 IN:13827 Serial:
2019-01-08 04:56:13.912 ddcctl[978:8458] I: got edid.serial: H735H99M2P4L
2019-01-08 04:56:13.912 ddcctl[978:8458] I: got edid.name: DELL 2209WA
2019-01-08 04:56:13.912 ddcctl[978:8458] D: action: b: ?
2019-01-08 04:56:13.912 ddcctl[978:8458] D: querying VCP control: #16 =?
D: IOI2CTransactionTypes: 0x1f (31)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61457 SN:844117068 UN:1 IN:17679 Serial:
D: IOI2CTransactionTypes: 0x1f (31)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61457 SN:844117068 UN:1 IN:17447 Serial:
D: IOI2CTransactionTypes: 0x1f (31)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61457 SN:844117068 UN:1 IN:17191 Serial:
D: IOI2CTransactionTypes: 0x1f (31)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61457 SN:844117068 UN:1 IN:16935 Serial:
D: IOI2CTransactionTypes: 0x1f (31)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61457 SN:844117068 UN:1 IN:16679 Serial:
D: IOI2CTransactionTypes: 0x1f (31)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61457 SN:844117068 UN:1 IN:14631 Serial:
D: IOI2CTransactionTypes: 0x1f (31)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61457 SN:844117068 UN:1 IN:16423 Serial:
D: IOI2CTransactionTypes: 0x1f (31)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61457 SN:844117068 UN:1 IN:16167 Serial:
D: IOI2CTransactionTypes: 0x1f (31)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61457 SN:844117068 UN:1 IN:14887 Serial:
D: IOI2CTransactionTypes: 0x1f (31)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
D: IOI2CDDCciReplyTransactionType supported
D: IOI2CCombinedTransactionType supported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@1/display0/AppleDisplay
VN:4268 PN:61457 SN:844117068 UN:1 IN:15143 Serial:
E: No data after 10 tries!
2019-01-08 04:56:14.373 ddcctl[978:8458] E: DDC send command failed!
2019-01-08 04:56:14.373 ddcctl[978:8458] E: VCP control #16 (0x10) = current: 0, max: 0
I'm not sure if this is possible but is there a way to make the screen entirely black/dark on macOS similar to how setting the brightness all the way down on a macbook will make the screenblack?
I use ./ddcctl -d 1 -d 2 -b 0 -c 0
to try to turn the brightness and contrast to 0 for both external monitors but it doesn't make it black/dark all the way.
Hello,
I was very excited to see this project. Awesome job!
I can control the brightness of my iMac display. I can control the contrast of my two ASUS VE248 displays. Unfortunately, the brightness doesn't seem to be controllable. Is there anything I can do to get that working, or is the hardware simply not able to support it?
Thanks for the great tool!
I use DELL U2720Q which corresponds HDR and MacBook Pro(2019, 15').
Although I don't know whether its cause is by ddcctl, the monitor brightness isn't changed when HDR option is enabled.
By the way, my environment details is like below.
Model: MacBook Pro 2019, 15-inch
CPU: Core i9-9880H, 8-core 2.3 GHz
RAM: 16GB
GPU: Radeon Pro 560X, 4GB VRAM
Monitor: DELL U2720Q
I use USB-C to output to U2720Q.
Specs:
-Computer: 2018 Macbook Pro 13",
-OS: Latest Mojave 10.14.4
-Monitor: Acer et241ybmi 23.8"
-Cable: USB-C to HDMI
Debug steps:
-Confirmed success with above setup with a different monitor (Phillips) I: got edid.serial: AU01821005798, I: got edid.name: PHL 246E7
, therefore cable, video card, etc. should be good and issue must specific to the Acer monitor.
-DDC/CI option is set to ON via the montor's onscreen menu.
Debug version installed, response:
2019-04-10 23:28:22.222 ddcctl[5554:43158] D: NSScreen #478240582 (1920x1080 0°) 93.00 DPI
2019-04-10 23:28:22.222 ddcctl[5554:43158] I: found 1 external display
2019-04-10 23:28:22.222 ddcctl[5554:43158] I: polling display 1's EDID
2019-04-10 23:28:22.225 ddcctl[5554:43158] E: Failed to poll display!
What are the steps to debug further and determine to which extend the DDC standard is implemented?
This is great, thank you!
I built OSDisplay; it works from command line.
Then I tried make CCFLAGS=-DOSD clean ddcctl
But running a ddcctl
command does not trigger a bezel display.
I also tried my own script that runs ddcctl
and OSDisplay right after ... but then I have to wait for the OSDisplay 'delay' to complete before I can turn up the brightness. Is there a way to make it work like the native brightness, where you can trigger it multiple times in succession rapidly?
Can't seem to change brightness or contrast on my Dell 2209WA. A similar app for Windows works flawlessly on the same hardware.
$ ddcctl -d 1 -b 50
2015-11-02 00:04:04.319 ddcctl[652:7297] D: NSScreen #725364749 (1680x1050) DPI is 90.00
2015-11-02 00:04:04.320 ddcctl[652:7297] D: NSScreen #69680128 (1440x900) DPI is 126.00
2015-11-02 00:04:04.320 ddcctl[652:7297] I: found 2 displays
2015-11-02 00:04:04.320 ddcctl[652:7297] I: polling display 1's EDID
2015-11-02 00:04:04.345 ddcctl[652:7297] I: got edid.serial: H735H99M2P4L
2015-11-02 00:04:04.345 ddcctl[652:7297] I: got edid.name: DELL 2209WA
2015-11-02 00:04:04.345 ddcctl[652:7297] D: command arg-pair: d: 1
2015-11-02 00:04:04.345 ddcctl[652:7297] D: command arg-pair: b: 50
2015-11-02 00:04:04.345 ddcctl[652:7297] D: setting VCP control #16 => 50
$ ddcctl -d 1 -b 1
2015-11-02 00:04:25.177 ddcctl[654:7406] D: NSScreen #725364749 (1680x1050) DPI is 90.00
2015-11-02 00:04:25.178 ddcctl[654:7406] D: NSScreen #69680128 (1440x900) DPI is 126.00
2015-11-02 00:04:25.178 ddcctl[654:7406] I: found 2 displays
2015-11-02 00:04:25.179 ddcctl[654:7406] I: polling display 1's EDID
2015-11-02 00:04:25.202 ddcctl[654:7406] I: got edid.serial: H735H99M2P4L
2015-11-02 00:04:25.203 ddcctl[654:7406] I: got edid.name: DELL 2209WA
2015-11-02 00:04:25.203 ddcctl[654:7406] D: command arg-pair: d: 1
2015-11-02 00:04:25.203 ddcctl[654:7406] D: command arg-pair: b: 1
2015-11-02 00:04:25.203 ddcctl[654:7406] D: setting VCP control #16 => 1
Neither command had any effect.
Having just discovered this for OSX with my new monitor I can't test vs other versions of OSX, nor another display right now, I'm not sure if this is an issue with my setup or a code issue or just the monitor doesn't support this.
I can set brightness / contrast on a 1 to 100 scale but can't incrementally update the levels.
I can power off the display with -p 5 or kind of sleep the display with -p 4 (power button stays on and USB is active but doesn't work properly) both power states can be restored with -p 1.
Currently using "spark" to run AppleScript using some blank F-keys to have a couple preset levels, but an ability to increase in steps would be a much more elegant solution.
Currently connected via HDMI, but I have an adapter on the way for MiniDP (thunderbolt2) to DP, doubtful that will change this but will allow me to also test against another monitor type that I think also supports DDC-CI as I'll be able to have them both connected. This is a Mid-2014 rMBP 15" on 10.12.6 for the record.
Debug output if it is useful:
osx:ddcctl-master user$ make debug install
rm *.o ddcctl
/usr/bin/gcc -DOSD -DDEBUG -Wall -c -o DDC.o DDC.c
/usr/bin/gcc -DOSD -DDEBUG -Wall -o ddcctl -lobjc -framework IOKit -framework AppKit -framework Foundation DDC.o ddcctl.m
install ddcctl /usr/local/bin
osx:ddcctl-master user$ md5 /usr/local/bin/ddcctl
MD5 (/usr/local/bin/ddcctl) = 52c438c84986c58dc736f055a35f5565
osx:ddcctl-master user$ ddcctl -d 1 -b ? -c ? -p ?
2017-08-07 10:41:40.528 ddcctl[13009:1287180] D: NSScreen #724067475 (2560x1440 0°) 123.00 DPI
2017-08-07 10:41:40.528 ddcctl[13009:1287180] I: found 1 external display
2017-08-07 10:41:40.528 ddcctl[13009:1287180] I: polling display 1's EDID
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:15619 Serial:
2017-08-07 10:41:40.555 ddcctl[13009:1287180] I: got edid.serial: TN5PP6CQ0FTS
2017-08-07 10:41:40.555 ddcctl[13009:1287180] I: got edid.name: DELL P2416D
2017-08-07 10:41:40.555 ddcctl[13009:1287180] I: got edid.serial: Uÿ�
2017-08-07 10:41:40.555 ddcctl[13009:1287180] D: action: b: ?
2017-08-07 10:41:40.555 ddcctl[13009:1287180] D: querying VCP control: #16 =?
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:18191 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:18475 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:18731 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:18987 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:19243 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:19499 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:19755 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:20011 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:20267 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:20523 Serial:
E: No data after 10 tries!
2017-08-07 10:41:41.123 ddcctl[13009:1287180] E: DDC send command failed!
2017-08-07 10:41:41.123 ddcctl[13009:1287180] E: VCP control #16 (0x10) = current: 0, max: 0
2017-08-07 10:41:41.226 ddcctl[13009:1287180] D: action: c: ?
2017-08-07 10:41:41.226 ddcctl[13009:1287180] D: querying VCP control: #18 =?
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:20779 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:21035 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:21291 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:21547 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:21803 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:22059 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:22315 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:22571 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:22827 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:23083 Serial:
E: No data after 10 tries!
2017-08-07 10:41:41.773 ddcctl[13009:1287180] E: DDC send command failed!
2017-08-07 10:41:41.773 ddcctl[13009:1287180] E: VCP control #18 (0x12) = current: 0, max: 0
2017-08-07 10:41:41.877 ddcctl[13009:1287180] D: action: p: ?
2017-08-07 10:41:41.878 ddcctl[13009:1287180] D: querying VCP control: #214 =?
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:23339 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:23595 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:23851 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:24107 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:24363 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:24619 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:24875 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:25131 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:25387 Serial:
D: IOI2CTransactionTypes: 0x13 (19)
D: IOI2CNoTransactionType supported
D: IOI2CSimpleTransactionType supported
E: IOI2CDDCciReplyTransactionType unsupported
E: IOI2CCombinedTransactionType unsupported
D: IOI2CDisplayPortNativeTransactionType supported
Framebuffer: AppleIntelFramebuffer
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@3/display0/AppleDisplay
VN:4268 PN:41155 SN:809915475 UN:3 IN:25643 Serial:
E: No data after 10 tries!
2017-08-07 10:41:42.439 ddcctl[13009:1287180] E: DDC send command failed!
2017-08-07 10:41:42.439 ddcctl[13009:1287180] E: VCP control #214 (0xd6) = current: 0, max: 0
How to uninstall this software clean
Errors are a warning for you (the unknown monitor & Mac owner) and
do not in-and-of-themselves mean there is a bug in ddcctl
.
You must include pertinent information on your monitors, Macintosh, and macOS, or else
your issue will get an incomplete
tag.
Making & running a debug build (make debug
) and reproducing your issue to provide
detailed output for the report is highly encouraged!
I will close reports about these issues out-of-hand:
You're on your own with Hackintoshes.
This is already known: #17
No patch has been submitted to resolve this, but the essential facts have
been gathered to work from.
Any suggestion to revert the master branch to an obsolete version
to work-around this will be rejected.
Release and mantain your own fork if this bothers you.
I do not work for you and will not be providing backports for your convienience.
The DDC standard is very loosely implemented by monitor manufacturers beyond sleeping the display.
VGA cables seem to wreak havoc with DDC comms.
Use DVI/DisplayPort/Thunderbolt if you can.
Please consider that there is no team working on ddcctl
, it is a fun-time project
that has long-since been considered "finished".
Bad, incomplete, or lazy reports and non-bugs are not fun to work on
so I will be cranky towards their reporters who didn't heed these instructions.
Hi,
Thanks for your work on this.
I'm assuming nothing can be done here but I figured I would post this anyway.
Mac Pro 2019, AMD Graphics Card, 3 LG Monitors (2 attached via DisplayPort to Mac Pro, 1 attached via HDMI to Mac Pro and DisplayPort to MacBook Pro), 1 LG TV (attached HDMI to Mac Pro)
I can see all 4 displays and I can change the input if the current input is set to DisplayPort and it's active.
For example:
MacBook Pro DisplayPort connection active, I run ddcctl -d 4 -i 17
to switch the HDMI1 (which is connected to the Mac Pro) and it switches fine. But trying to switch back does NOT work. it does NOT give me an error - it 'seems' like it works in the terminal anyway but it doesn't actually switch.
Also I tried dumping all the values and this works but ONLY the DisplayPort connection is active. When I run this dump I actually receive errors for each value read.
Thanks!
not really an issue. just a thanks from here. works like a charm on a Dell 2715q.
minor compile warnings. can be ignored.
perhaps mention a typical use in the readme.md?
# ddcctl -b 1 -d 1
D: NSScreen #724058892 (1600x1200 0°) 111.00 DPI
I: found 1 external display
I: polling display 1's EDID
I: got edid.serial: MY5468281HKL
I: got edid.name: DELL 2007FP
D: action: b: 25
D: setting VCP control #16 => 25
I can set Brightness, Reset, Color profiles OK, but I cannot read any value from the display
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
can it be fixed? Thanks
I am using this on a Mac Mini 2018 with a Dell P2715Q to switch between the inputs (HDMI-1 and DP-1) which works great! But, I'd like to be able to toggle between these two ports using a shortcut or something and I was wondering if it is possible to read the current input? so based on the current state switch to the other one?
Running ddcctl -d 1 -i ?
gives me:
D: NSScreen #722475277 (3840x2160 0°) 163.00 DPI
I: found 1 external display
I: polling display 1's EDID
I: got edid.serial: 54KKD75RA56L
I: got edid.name: DELL P2715Q
D: action: i: ?
D: querying VCP control: #96 =?
E: No data after 10 tries!
E: DDC send command failed!
E: VCP control #96 (0x60) = current: 0, max: 0
The display is connected to mac using a USB-C to DP cable.
I have one U3415W and one U3417W display running on my MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports) running macOS Sierra 10.12.6 (16G1710)
One of the displays are connected through a Dell WD15 docking station via the HDMI port. The other goes in over HDMI through an Apple USB Type-C Digital AV Adapter.
Whatever I do, I can't control the one display connected through the docking station. I get the following:
$ ./ddcctl -d 2 -b 1
D: NSScreen #724048205 (2560x1080 0°) 72.00 DPI
D: NSScreen #724072846 (2560x1080 0°) 72.00 DPI
I: found 2 external displays
I: polling display 2's EDID
I: got edid.serial: FR3PK7BG03NL
I: got edid.name: DELL U3417W
D: action: b: 1
D: setting VCP control #16 => 1
E: Failed to send DDC command!
It doesn't matter if it's this display or the other. I can't control the one that's hooked up to the dock. If I hook it through the USB-C adapter I can control it just fine.
I'd really like to have this feature so I want to do whatever I can to fix this. So if you need more debug info, I can provide. Meanwhile I'm fiddling with the source myself. What could be the cause of this?
Errors are a warning for you (the unknown monitor & Mac owner) and
do not in-and-of-themselves mean there is a bug in ddcctl
.
You must include pertinent information on your monitors, Macintosh, and macOS, or else
your issue will get an incomplete
tag.
Making & running a debug build (make debug
) and reproducing your issue to provide
detailed output for the report is highly encouraged!
I will close reports about these issues out-of-hand:
You're on your own with Hackintoshes.
This is already known: #17
No patch has been submitted to resolve this, but the essential facts have
been gathered to work from.
Any suggestion to revert the master branch to an obsolete version
to work-around this will be rejected.
Release and mantain your own fork if this bothers you.
I do not work for you and will not be providing backports for your convienience.
The DDC standard is very loosely implemented by monitor manufacturers beyond sleeping the display.
VGA cables seem to wreak havoc with DDC comms.
Use DVI/DisplayPort/Thunderbolt if you can.
Please consider that there is no team working on ddcctl
, it is a fun-time project
that has long-since been considered "finished".
Bad, incomplete, or lazy reports and non-bugs are not fun to work on
so I will be cranky towards their reporters who didn't heed these instructions.
Suggesting a good open source license... maybe MIT ?
gcc -Wall -c -o DDC.o DDC.c
In file included from DDC.c:13:
./DDC.h:87:5: warning: declaration does not declare anything [-Wmissing-declarations]
union inputbitmap {
^
./DDC.h:185:13: warning: declaration does not declare anything [-Wmissing-declarations]
union sync {
^
DDC.c:99:24: warning: 'CGDisplayIOServicePort' is deprecated: first deprecated in OS X 10.9 [-Wdeprecated-declarations]
if ((framebuffer = CGDisplayIOServicePort(displayID))) { // FIXME: DEPRECATED!
^
/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDisplayConfiguration.h:355:24: note:
'CGDisplayIOServicePort' has been explicitly marked deprecated here
CG_EXTERN io_service_t CGDisplayIOServicePort(CGDirectDisplayID display)
^
DDC.c:168:19: warning: unused variable 'kr' [-Wunused-variable]
kern_return_t kr;
^
DDC.c:16:21: warning: unused function 'IOServicePortFromCGDisplayID' [-Wunused-function]
static io_service_t IOServicePortFromCGDisplayID(CGDirectDisplayID displayID)
^
5 warnings generated.
gcc -Wall -o ddcctl -lobjc -framework IOKit -framework AppKit -framework Foundation DDC.o ddcctl.m
In file included from ddcctl.m:20:
./DDC.h:87:5: warning: declaration does not declare anything [-Wmissing-declarations]
union inputbitmap {
^
./DDC.h:185:13: warning: declaration does not declare anything [-Wmissing-declarations]
union sync {
^
2 warnings generated.
install ddcctl /usr/local/bin
Hi,
Title says it all, it used to work on El Capitain, doesn't work on Sierra anymore.
[xlarue@SYS0758 ddcctl (master %)]$ ./ddcctl -d 1 -c ?
D: NSScreen #724069582 (1920x1080 0°) HiDPI
I: found 1 display
I: polling display 1's EDID
I: got edid.serial: G3D7F62J0NCL
I: got edid.name: DELL P2415Q
D: action: c: ?
D: querying VCP control: #18 =?
E: No data after 10 tries!
E: DDC send command failed!
E: VCP control #18 (0x12) = current: 0, max: 0
[xlarue@SYS0758 ddcctl (master %)]$ ./ddcctl -d 1 -b ?
D: NSScreen #724069582 (1920x1080 0°) HiDPI
I: found 1 display
I: polling display 1's EDID
I: got edid.serial: G3D7F62J0NCL
I: got edid.name: DELL P2415Q
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
[xlarue@SYS0758 ddcctl (master %)]$
Any idea?
The Linux tools dcci-tool
(https://github.com/bhuvanchandra/ddcci.git) and ddccontrol
(https://github.com/ddccontrol/ddccontrol) both have the ability to query a monitor about its capabilities by sending an 0xf3
command (which they both call DDCCI_COMMAND_CAPS
).
Seems like a great ability for ddcctl
to have! So logical, in fact, that I can't help but fear there's a technical reason it isn't already in there.
Before I take a stab at it, I'm hoping @kfix or someone else might be able to tell me if it is already known to be unworkable under macOS, in which case I won't waste my time :) Thanks!
hi! it would be great to have this available via homebrew for macOS so one can install it using just brew install ddcctl
On my system, the workaround to the deprecation of CGDisplayIOServicePort()
breaks ddcctl. In particular:
io_service_t framebuffer = IOServicePortFromCGDisplayID(displayID);
IOResult result = IOFBGetI2CInterfaceCount(framebuffer, &busCount);
assert(result == KERN_SUCCESS, "Failed to get the interface count.");
returns KERN_SUCCESS
, but busCount
is 0.
If that first line is changed to use CGDisplayIOServicePort(displayID)
then the correct bus count is returned.
I'm on a 15" Mid-2015 MBP running 10.11.6.
I'm not familiar with either of the functions, or with Core Graphics in general. Is there something more nuanced that needs to be done w/r/t the call to IOServicePortFromCGDisplayID()? Or is this maybe Apple's bug?
Hello there, thanks so much for this tool, it works great for me! 😄
What I noticed is that it takes around 2 seconds to change a setting and so I started to poke around in the code to see why.
On my screen (BenQ GW2760HS), there seems to be no need for the sleep delay that's added in this line:
sleep(1); //stagger comms to these wimpy I2C mcu's
My monitor seems to handle it just fine and still updates with this off, but the speed of the app is so much faster.
e.g.
with sleep on
real 0m2.153s
user 0m0.011s
sys 0m0.034s
with sleep off
real 0m0.154s
user 0m0.013s
sys 0m0.034s
Would you consider making this optional via a CLI switch for the monitors that can handle it?
Thanks so much!
Fotis
I'll start a new issue for this, to see if there are any suggestions.
OS X 10.11.2, hackintosh, GTX 960, web driver 346.03.04f02. I suppose I can update to latest OS X/web driver if you think that might help.
Simple brightness writes are fine.
Brightness query results in:
06:48.454 ddcctl[875:32303] D: command arg-pair: b: ?
06:48.454 ddcctl[875:32303] D: querying VCP control: #16 =?
06:58.931 ddcctl[875:32303] E: DDC send command failed!
06:58.931 ddcctl[875:32303] E: VCP control #16 = current: 0, max: 0
and the display freezes immediately after the "querying" line. Both displays freeze, in fact. Note that the timestamps indicate the error lines only appear after I power down the affected monitor. Power-cycling the unaffected monitor has no effect.
Similarly for relative changes:
09:14.194 ddcctl[970:36261] D: command arg-pair: b: 30+
09:14.194 ddcctl[970:36261] D: querying VCP control: #16 =?
09:18.419 ddcctl[970:36261] E: DDC send command failed!
09:18.419 ddcctl[970:36261] E: VCP control #16 = current: 0, max: 0
09:18.419 ddcctl[970:36261] D: relative setting: 0 + 30 = 30
09:18.419 ddcctl[970:36261] D: setting VCP control #16 => 30
09:18.934 ddcctl[970:36261] E: Failed to send DDC command!
Again, note the timestamps.
Now, with a wait of 0.3 sec, brightness is not read correctly, but at least the display doesn't freeze:
14:48.944 ddcctl[1101:45318] D: command arg-pair: w: 300000
14:48.944 ddcctl[1101:45318] D: command arg-pair: b: 50+
14:48.944 ddcctl[1101:45318] D: querying VCP control: #16 =?
14:49.046 ddcctl[1101:45318] E: DDC send command failed!
14:49.046 ddcctl[1101:45318] E: VCP control #16 = current: 0, max: 0
14:49.047 ddcctl[1101:45318] D: relative setting: 0 + 50 = 50
14:49.347 ddcctl[1101:45318] D: setting VCP control #16 => 50
With a wait of 1 sec, the brightness is read correctly (sort of: my suspicion is that the monitor does not properly implement the "value changed" function, so ddcctl "reads" the last software-set value, rather than the current value, set by OSD or software).
17:24.445 ddcctl[1106:48548] D: command arg-pair: w: 1000000
17:24.445 ddcctl[1106:48548] D: command arg-pair: b: 30+
17:24.445 ddcctl[1106:48548] D: querying VCP control: #16 =?
17:24.547 ddcctl[1106:48548] I: VCP control #16 = current: 20, max: 100
17:24.547 ddcctl[1106:48548] D: relative setting: 20 + 30 = 50
17:25.548 ddcctl[1106:48548] D: setting VCP control #16 => 50
But even so, the supposed "setting VCP control #16" doesn't happen. The monitor stays at its original brightness.
Now trying much longer wait times (4 sec, 5 sec), on one occasion I got a correct read w/o freeze and on one occasion I got a correct read w/o freeze (but no correct set). Mostly I just got freezes again.
Setting the wait to 15 seconds got better results on the freezes (none, the whole two times I tested it), but still to go on actually setting the final brightness.
Thoughts?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.