Contribute
Register

Controlling Your Monitor with OSX: DDC Panel

Joined
Aug 7, 2012
Messages
7
Motherboard
PowerMac G5
CPU
AMD
Graphics
ATI
Mac
Classic Mac
Mobile Phone
I've published my command line app to GitHub to better track changes. I don't plan to install Yosemite untill its released, but I'm curious if others could test this.

https://github.com/kfix/ddcctl
 
Joined
Aug 23, 2014
Messages
1
Mac
Classic Mac
Mobile Phone
Hey Joey!

what would need to be done in order to also support internal laptop panels?

thank you!
 
Joined
Oct 2, 2010
Messages
22
Motherboard
Intel DH87MC Motherboard
CPU
Intel i5-4670K @ 3.4GHz (Haswell)
Graphics
ASUS 8800GT-512 with Apple Firmware
Mac
iMac, MacBook Pro
Classic Mac
Mobile Phone
iOS
Joined
Jul 6, 2013
Messages
1
Mac
Classic Mac
Mobile Phone
This is a great App. Unfortunately the mute does not work and the audio is way too loud. I have set my Samsung S27C750 to Volume "1" and also DCC Panel to Volume 1 and it is very loud. It would be great, if i could chance the volume slider to work just between 0 and 1.
 
Joined
Feb 28, 2015
Messages
1
Motherboard
iMac
CPU
i7
Graphics
GeForce GT 650M
Mac
Classic Mac
Mobile Phone
Thanks for a great app. Unfortunately it doesn't work on my OS/X Yosemite iMac. Do you have any idea if it's an OS/X issue or a H/W issue?
I'm getting request->result = 36 in DDCRead->DisplayRequest after IOI2CSendRequest.
The error code seems to be KERN_NOT_DEPRESSED. It might have been added on OS/X 10.10 as I can find it in OS/X API Diffs in Darwin Changes.

Thanks,
Yuval.
 
Joined
Mar 3, 2015
Messages
1
Mac
Classic Mac
Mobile Phone
I've been getting the same request->result value (-536870206) as already posted earlier. I.e. all the sliders are inactive in the GUI.

I'm wondering if you have any idea how to debug this value? It doesn't seem to be defined in IOReturn.h, it's not random, and it is definitely the result of the call to IOI2CSendRequest. It looks as if some data is written to the result field that was intended for somewhere else, but then again I haven't read up on the specs that are used to create the IOI2CRequest. The creation of the request would take some time to understand well.

There doesn't seem to be any problem with timing between read and write since my breakpoints in AppDelegate::setValue never fire at all, i.e. no writing takes place.
 
Joined
Jan 8, 2012
Messages
87
Motherboard
Z68-UD3H-B3 (U1L UEFI, clover)
CPU
i5-2500K @ 4.0 GHz
Graphics
gigabyte GTX 970
Mac
MacBook Pro
Classic Mac
Mobile Phone
iOS
On my hack 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 http://lists.apple.com/archives/colorsync-users/2011/Feb/msg00026.html, I manage to 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

Code:
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). 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).
 
Joined
Mar 21, 2011
Messages
37
Motherboard
X79-Turbo v1.01
CPU
i7-3930K
Graphics
GTX 750 Ti
Mac
MacBook Pro
Mobile Phone
iOS
Hello there, your application is awesome..thanks for sharing sources.
I tried to make your app to change brightness with keystrokes (f1-f2 like real mac) but i cant find a working way to handle keystrokes when application is in background. Also im searching a way to trick osx built in brightness control to controlled by your application so when user change brightness the os will shows the brightness level on screen. (may need fake lpnf device and some kernel extension to work)
If you have free time and you can help with that i will appreciated.
Thanks!
 
Top