Jump to content

Different solutions


Andy Vandijck
 Share

925 posts in this topic

Recommended Posts

If work or not I can test Thank you.

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

my ioreg rename AMDRadeonX3000 look inside folder

give me 5 mts i test your kext and detail.

10.9 dp26950.zip

Link to comment
Share on other sites

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


Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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


Link to comment
Share on other sites

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
Link to comment
Share on other sites

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 ;)

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

The advantages are:

- Better colors

- Apple recognized display instead of default display

Now that is the thing I don't get... how I get better colors? The system just uses another color profile, or this is something different?

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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}  ;)

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

I tried to remove the fakesmc to test the system boots ... but it takes a long time because ... :: ACPI_SMC_PlatformPlugin registerLPCDriver - failed to locate SMC driver, so i have to continue to use the fakesmc lol

Link to comment
Share on other sites

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 ?

Link to comment
Share on other sites

 Share

×
×
  • Create New...