Jump to content
924 posts in this topic

Recommended Posts

Little update: V1.5b

- Recompiled 32-bit kext binary for 10.5 and above

- Recompiled 64-bit kext binary for 10.6 and above

- Merged both binaries in one universal binary so the kext now works on 10.5 and better

So it now works on 10.5 and better fully.


 

SomeOne made inject 5000conroller

http://www.osx86.net/view/3970-hd_5xxx.html

Hi Andy, I try to make for our 6950/6970 Can you fix this AMD6000Injector please

 

This is ori ati kexts from 10.9 dp2

http://www.mediafire.com/download/bfnhi7b9lsexe69/ati_ori_10.9_dp2.zip

 

I'll check.

Could you give me your .ioreg file from IORegistryExplorer please?

Thanks

EDIT: Test the attached file, it should work with controller and Cayman IOAccelerator

AMD6000Injector.kext.zip

  • Like 1

Hi Andy,

 

First of all grat app! I've used it for my esternal Majestic (broken EDID) TV LCD HDMI (now an iMac display ahahah) :)

 

I'm curious and I've seen the source of the app.

 

When you grep the DeviceID and other ID you use for four time the function system and then you parse each file and the code is very very very long!  :shock:

 

I've changed the code and I attach at this post the diff files.

 

P.S. I've made a function that convert the hex string (w/o the "0x") in long int to convert the DisplayProductID and DisplayVendorID without re-run the task...

 

Tell me if the code was helpful...

AppDelegate.m.diff.zip

  • Like 1

my ioreg rename AMDRadeonX3000 look inside folder

give me 5 mts i test your kext and detail.

10.9 dp26950.zip

Hi Andy After install your kest with all ort kexts. graphics with dsdt


stack there look image


view this image ple


http://www.mediafire.com/?pb7kcps4n640480


Hi Andy,

 

First of all grat app! I've used it for my esternal Majestic (broken EDID) TV LCD HDMI (now an iMac display ahahah) :)

 

I'm curious and I've seen the source of the app.

 

When you grep the DeviceID and other ID you use for four time the function system and then you parse each file and the code is very very very long! :shock:

 

I've changed the code and I attach at this post the diff files.

 

P.S. I've made a function that convert the hex string (w/o the "0x") in long int to convert the DisplayProductID and DisplayVendorID without re-run the task...

 

Tell me if the code was helpful...

Thanks for your contribution.

I'll check it this evening :D

I've made a function that convert the hex string (w/o the "0x") in long int to convert the DisplayProductID and DisplayVendorID without re-run the task...

 

Tell me if the code was helpful...

Thanks Marchrius, I added the routine in ObjC manner and changed the routine that sets the values.

The code was very useful.

Thanks a lot again for your contribution, it really speeds up the set routine (3 ioreg parses instead of 5)

 

New version: V1.7

- Added version override to EDID V1.4 (fixes some issues)

- Added option for adding / fixing monitor ranges descriptor (missing in some EDID's but required by EDID V1.3 or V1.4)

- Option for adding / fixing monitor ranges is by default enabled but can be disabled by unchecking the checkbox

Hi andy always black screen come with original kexts with AMD6000Injector.kext with out injector also same


I note AMD GraphicsAcc   Device in slot —1


Can look my image I was upload ioreg.


Thank you


Hi Anvy,

 

I'm here again! :P

 

-(void)GetScreenVendorDevice:(id)sender
{
    ScreenNrString = [ScreenNr stringValue];
    screennr = atoi([ScreenNrString cStringUsingEncoding:NSUTF8StringEncoding]);

    if (screennr == 0)
    {
        NSRunAlertPanel(@"Invalid screen nr!", @"Correct the screen nr!", @"OK", nil, nil);

        return;
    }
    
    NSMutableDictionary *displayInfo = [[NSMutableDictionary alloc] init];
    NSString* outStr;
    NSTask *task = [NSTask  new];
    NSPipe *pipe = [NSPipe pipe];

    //IODisplayPrefsKey
    [task setLaunchPath:@"/bin/sh"];
    
    [task setArguments:[NSArray arrayWithObjects:@"-c", @"ioreg -lxw0 |  grep IODisplayPrefsKey | cut -d\"=\" -f2 | cut -d\"\\\"\" -f2",  nil]];
    [task setStandardOutput:pipe];
    [task launch];
    
    outStr = [[[NSString alloc] initWithData:[[pipe fileHandleForReading] readDataToEndOfFile] encoding:NSUTF8StringEncoding] autorelease];
    outStr = [outStr substringToIndex:[outStr length]-1];
    [displayInfo setObject:outStr forKey:@"IODisplayPrefsKey"];
    outStr = [outStr lastPathComponent];
    [displayInfo setObject:[[outStr componentsSeparatedByString:@"-"] objectAtIndex:1] forKey:@"DisplayVendorID"];
    [displayInfo setObject:[[outStr componentsSeparatedByString:@"-"] objectAtIndex:2] forKey:@"DisplayProductID"];


    [DeviceID setStringValue:[displayInfo objectForKey:@"DisplayProductID"]];
    
    [DeviceDecID setStringValue:[NSString stringWithFormat:@"%ld",hex2int((char*)[[displayInfo objectForKey:@"DisplayProductID"] UTF8String])]];
    
    [VendorID setStringValue:[displayInfo objectForKey:@"DisplayVendorID"]];
    
    [VendorDecID setStringValue:[NSString stringWithFormat:@"%ld",hex2int((char*)[[displayInfo objectForKey:@"DisplayVendorID"] UTF8String])]];
    
    [DisplayPrefsKey setStringValue:[displayInfo objectForKey:@"IODisplayPrefsKey"]];

    if ([[[DisplayPrefsKey stringValue] lastPathComponent] rangeOfString:@"AppleDisplay"].length>0)
    {
        [DisplayClassButton selectItemAtIndex:0];
        displayclass = 1;
    } else if ([[[DisplayPrefsKey stringValue] lastPathComponent] rangeOfString:@"AppleBacklightDisplay"].length>0) {
        [DisplayClassButton selectItemAtIndex:1];
        displayclass = 2;
    }
}
With this part you can do only one ioreg call (trought the nstask) and you can speed up the function.

 

Replace, if you haven't make modifications to this function, and tell me is all ok...

  • Like 1

Hi Anvy,

 

I'm here again! :P

-(void)GetScreenVendorDevice:(id)sender
{
    ScreenNrString = [ScreenNr stringValue];
    screennr = atoi([ScreenNrString cStringUsingEncoding:NSUTF8StringEncoding]);

    if (screennr == 0)
    {
        NSRunAlertPanel(@"Invalid screen nr!", @"Correct the screen nr!", @"OK", nil, nil);

        return;
    }
    
    NSMutableDictionary *displayInfo = [[NSMutableDictionary alloc] init];
    NSString* outStr;
    NSTask *task = [NSTask  new];
    NSPipe *pipe = [NSPipe pipe];

    //IODisplayPrefsKey
    [task setLaunchPath:@"/bin/sh"];
    
    [task setArguments:[NSArray arrayWithObjects:@"-c", @"ioreg -lxw0 |  grep IODisplayPrefsKey | cut -d\"=\" -f2 | cut -d\"\\\"\" -f2",  nil]];
    [task setStandardOutput:pipe];
    [task launch];
    
    outStr = [[[NSString alloc] initWithData:[[pipe fileHandleForReading] readDataToEndOfFile] encoding:NSUTF8StringEncoding] autorelease];
    outStr = [outStr substringToIndex:[outStr length]-1];
    [displayInfo setObject:outStr forKey:@"IODisplayPrefsKey"];
    outStr = [outStr lastPathComponent];
    [displayInfo setObject:[[outStr componentsSeparatedByString:@"-"] objectAtIndex:1] forKey:@"DisplayVendorID"];
    [displayInfo setObject:[[outStr componentsSeparatedByString:@"-"] objectAtIndex:2] forKey:@"DisplayProductID"];


    [DeviceID setStringValue:[displayInfo objectForKey:@"DisplayProductID"]];
    
    [DeviceDecID setStringValue:[NSString stringWithFormat:@"%ld",hex2int((char*)[[displayInfo objectForKey:@"DisplayProductID"] UTF8String])]];
    
    [VendorID setStringValue:[displayInfo objectForKey:@"DisplayVendorID"]];
    
    [VendorDecID setStringValue:[NSString stringWithFormat:@"%ld",hex2int((char*)[[displayInfo objectForKey:@"DisplayVendorID"] UTF8String])]];
    
    [DisplayPrefsKey setStringValue:[displayInfo objectForKey:@"IODisplayPrefsKey"]];

    if ([[[DisplayPrefsKey stringValue] lastPathComponent] rangeOfString:@"AppleDisplay"].length>0)
    {
        [DisplayClassButton selectItemAtIndex:0];
        displayclass = 1;
    } else if ([[[DisplayPrefsKey stringValue] lastPathComponent] rangeOfString:@"AppleBacklightDisplay"].length>0) {
        [DisplayClassButton selectItemAtIndex:1];
        displayclass = 2;
    }
}
With this part you can do only one ioreg call (trought the nstask) and you can speed up the function.

 

Replace, if you haven't make modifications to this function, and tell me is all ok...

Can this handle multiple displays?

It doesn't look like it.

In case of multiple displays this indeed does not work right but it is a fun idea.

I'll adapt it ;)

EDIT: I also tested 3 displays

iMac and LED Cinema display can handle HDMI audio

Thunderbolt display can't handle HDMI audio

Cinema HD display and MacBook Pro display (obviously not needed for HDMI) not tested. 

 

@Marchrius: Thanks another time for your contribution, I adapted it to be able to handle multiple display entries and it still is very close to your code.

It now works really fast. (1 run through NSTask into and NSPipe directly instead of 3 separate system ran tasks with file reading)

It also gets the vendor and device id from the IODisplayPrefs key now.

Feel free to look at the code from FixEDID V1.8 ;)

New version: V1.9

Fully implemented Marchrius his improvements which he gave me over PM.

Credits for the improvements of 1.9 fully go to Marchrius.

See opening post for changes :D

Please... make a description why is this needed exactly... and why this is better (if it's better) than using the display as it is. :)

The advantages are:

- Better colors

- Apple recognized display instead of default display

Hi Andy  work for me but... kernel extensions not signed... from Maverick DP2...seems that in the future we all have problems with extensions :ninja:

 

3ujo.png

Epic horizontal resolution there... lol

 

Btw you can fix that warning window by editing AppleKextExcludeList.kext.

  • Like 1

lol

 

 this is Funny

 

not identified Dev  ...on the other hand mentioned at least 10 times in the Exclude.kext .  :jester:

 

 

 

Btw you can fix that warning window by editing AppleKextExcludeList.kext.

and it allready comes in handy that suspicious {censored}  ;)

Hi Andy

My graphics card 6950 in 10.9 {AMD Cayman Graphics Accelerator Device in SLOT 1} after this Black screen

Any idia Thank you.

Hi, Andy

It works good. Thank you !!

I install DisplayMergeNub.kext to S/L/E now.

I use Clover bootloader, so I try to use clover's kext injection function.

I put DisplayMergeNub.kext in EFI/Clover/Kexts/10.8, and delete DisplayMergeNub.kext of S/L/E.

After reboot I can see the DisplayMergeNub.kext inject properly by clover in clover's boot log, but it doesn't work.

Is DisplayMergeNub.kext works only installed in S/L/E ?

×
×
  • Create New...