Jump to content

Editing Custom connector info for Intel HD 3000 Graphics (sandy bridge, OSX Lion)


bcc9
 Share

221 posts in this topic

Recommended Posts

bcc9 -- thanks for the note, my current solution when i want to use the LCD (laptop screen) is to use Quartz Debug and turn off 2D acceleration.

 

Otherwise i shut the LID to turn off LVDS and use an external monitor. That turns the laptop into a desktop box - not ideal for travel... as i need the screen!

 

so are you saying the 10.8 drivers work fine with a laptop screen?

I was only noting that it seems the driver event ring bug was fixed with 10.8. Assuming others can confirm, then the need to modify the connectorinfo going forward, as in post #1, goes away.

I do not have a hackintosh with LVDS to test against. I would think theres a high chance event ring hangs would go away in configs with actual LVDS hardware as well.

On the other hand, since genuine macs are able to use this driver just fine with LVDS-only hardware, I thought there was already a working solution for LVDS hackintosh users. (Setting your board-id to a good value such as MacBookPro8,1, and injecting the right AAPL00,DualLink entry via your dsdt).

Link to comment
Share on other sites

bcc9, very interesting thought. I was looking in the EDID, and my display is declared as a single link. I wonder if osx wants the LVDS to be a dual link.

It's not an original idea, or my idea, but there are plenty of posts claiming that as the solution. I'm not sure where the definitive thread is however. Beyond the scope of this thread anyways (other than it would be nice to have a link to a definitive thread about LVDS specific support).

I would love to test 10.8 but don't have a mac developer license.

Since it's now GM you could hold tight about 2 weeks, or perhaps test with someone who does have the developer access.
Link to comment
Share on other sites

I will explore the EDID angle some more.

 

currenly this is where I am at with my Lenovo T420 with HD3000 only on 10.7.4.

 

1) DSDT - which includes "AAPL00,DualLink" definition

2) LVDS alone - lots of hangs

(mods to SNBGraphics dont eliminate hangs. 4GB or 8GB memory, VRAMOveride - no diff etc.

3) LVDS+HDMI - extended desktop - lots of hangs

-note: mirrored - no hangs.

-note: rotated LVDS - no hangs. (useless)

4) shut lid (or suffer slow graphics) and use external monitor alone - no hangs.4

5) for LCD usage, use Quartz Debug to turn off 2D acceleration when in Laptop mode

- this is the only fix that makes the Laptop usable, in my experience.

Link to comment
Share on other sites

When executing `lipo -detailed_info AppleIntelSNBGraphicsFB ` i get the following problem:

 

 

 

input file AppleIntelSNBGraphicsFB is not a fat file
Non-fat file: AppleIntelSNBGraphicsFB is architecture: x86_64

 

It is a OS X 10.8 Mountain Lion GM System.

Link to comment
Share on other sites

Yes, all the kext binaries are 64-bit only in 10.8, not FAT.

This makes patching kexts easier as you can skip the FAT offset calculation.

However, as far as I know, there's no need to patch the kext under 10.8.

I'm using the GM release via displayport, no driver event ring problems at all.

Link to comment
Share on other sites

I am having very much graphics artefacts (nearly unusable) and also alot of stuck on main ring hangs. Any idea?

I will post my connector info in a moment so you can have a look at it.

 

Edit:

So the offset I am looking for is the one that nm returns?

Link to comment
Share on other sites

And i can answer myself: Yes it is.

 

So this is my default connector info table:

 

0000000: 0102 0400 1007 0000 1007 0000  ............
000000c: 0503 0000 0200 0000 3000 0000  ........0...
0000018: 0205 0000 0004 0000 0700 0000  ............
0000024: 0304 0000 0004 0000 0900 0000  ............
0000030: 0406 0000 0004 0000 0900 0000  ............

 

I am using a Dell L702x with Intel HD 3000. The panel is connected with lvds. It also has a HDMI output which is connected to the (unusable) 555M, so this won't work anyways. Also a mini displayport which is connected to the Intel HD 3000. I could not test it yet, because i own no display port monitor or adapter.

 

As i've written above, I am having problems with screen artefacts and `Looks like MAIN ring is stuck waiting on an event` hangs.

 

To what do I need to change the above connector info table to get my laptop screen working?

 

Edit 1 (Additional Info):

Because of someones suggestion on one of the last pages I changed the second line to

000000c: 0503 0000 0000 0000 3000 0000

Sadly, the issues are remaining.

Link to comment
Share on other sites

I am using a Dell L702x with Intel HD 3000. The panel is connected with lvds.

See my post about lvds http://www.insanelym...dpost&p=1832406

and also the other threads & posts discussing working lvds support for the hd3000.

I assume you didn't have a working solution under 10.7, and are just trying this setup with 10.8 (or do you have a working 10.7 solution that just doesn't seem to work under 10.8)?

In any case, my only lvds hd3000 hardware is a genuine macbook air so I don't have anything to add over those other threads&posts.

Link to comment
Share on other sites

I want to share the working configuration and files for my laptop, using the factory MacbookPro8,1 table of connectors. Because I only have HD3000 iGPU.

 

System: Mountain Lion 10.8 GM (12A269)

Versión of AppleIntelSNBGraphicsFB = 8.0.0 (8.0.51)

Hardware device-id = 0x0116 (1366 x 768)

 

I am using a little modified script patcher to simplify the work. Of course all credits go to bcc9 and modigliani (big thanks guys). This is how, but please read all before do anything:

- Put the "Patch_HD3000_ML" folder into your /Extra

- Put your vanilla or base "AppleIntelSNBGraphicsFB.kext" into the new folder "/Extra/Patch_HD3000_ML"

- Run (execute) "modgliani-intelHD3000"

- Edit the "hex" file (e.g. with "Hex Fiend.app") for customize the table of connectors, and save it.

- Run (execute) "modgliani-intelHD3000_Patch"

- Install the new patched "AppleIntelSNBGraphicsFB.kext", rebuild cache and repair permissions (whit Disk Utility).

 

- I specially needed (was necessary) in my case for three (3) functional connectors (frame buffers) add this code to my IGPU device into DSDT, to avoid black screen (backlight off) at login. My graphics injection for ML 10.8:

 

		Method (_DSM, 4, NotSerialized)
	{
		Store (Package ()
			{
				"AAPL,NumFramebuffers", /*the key factor for me, in ML*/
				Buffer (0x04)
				{
					0x03, 0x00, 0x00, 0x00
				},

				"AAPL,snb-platform-id", /*Maybe is not necessary, but I leave it there*/
				Buffer (0x04)
				{
					0x00, 0x00, 0x01, 0x00
				},

				"built-in", /*optional*/
				Buffer (One)
				{
					0x00
				},

				"hda-gfx",
				Buffer (0x0A)
				{
					"onboard-1"
				},

				"subsystem-id", /*optional*/
				Buffer (0x04)
				{
					0xEB, 0x00, 0x00, 0x00
				},

				"subsystem-vendor-id", /*optional*/
				Buffer (0x04)
				{
					0x6B, 0x10, 0x00, 0x00
				}
			}, Local0)
		DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
		Return (Local0)
	}

 

 

Some results:

Here tested VGA (ok) = Extended ONLY (enough for me) - mirror not working at all is working perfect from VGA.

HDMI not tested yet, but I am expecting mirror function from this port, is working as expected. I have full support for VGA (602) & HDMI (406).

 

I hope this is fine, and helps. Good Luck to everyone.

Patch_HD3000_ML.zip

  • Like 6
Link to comment
Share on other sites

Out of curiosity I reinstalled Snow Leopard on my LVDS rig and interestingly I found out that I also have the ring stall issue on Snow! Now it doesn't happen very often, so I didn't notice it before, but one look in the log made it all clear.

 

I also think that ring stall is connected with artifacts on HD3000, as every time it happens I get artifacts on my screen in SL, Lion and ML.

 

 

I have no idea how to fix that for LVDS rigs. I've seen someone get results with using EDID, maybe I'll try that.

 

 

EDIT:

Another interesting thing: apparently on Lion HDMI connection doesn't work, when using MacBookPro8,3 smbios. With 8,1 it works fine, haven't check 8,2 yet.

Link to comment
Share on other sites

  • 2 weeks later...

So I am happy and sad to report that I have resolved the issue.

 

The 10.7 (Lion) installation slowly got worse and eventually got completely unusable like 10.7.4 So I loaded 10.8 (Mountain Lion) onto the machine hoping to solve the issue but it really made no difference. So based on the information that we learned by disabling the internal display the stall goes away, not all HD3000 laptops have this issue, and every laptop basically has the same connections to the LVDS port everything seemed to point to the display itself.

 

I'm not certain on this but it seems that the original display in this computer had bad EDID data. Most of the EDID data was zeros and the build date was from Quarter 1 2004, far before AU Optronics made an 1366x768 11.6 display. I couldn't find a way to get the correct data to override the bad data so the only solution I could come up with was to swap the display. I happened to have an Acer 1810T which is also an 11.6 inch laptop. I opened up the 1810T and it had the same display connector so all it took was pulling the old one out and dropping the new one in. I haven't seen a single ring stall or artifact.

 

Thanks guys

 

 

 

The bad display was: AUO Optronics B116XW02 V.0 F/W 1

The good display is: CHI MEI Optoelectronics N116B6-L02 REV:C1

Link to comment
Share on other sites

I have read this thread from top to bottom a couple of times. I am tring to follow bcc9's directions on the first page, and I too can't get past the "nm" command. I am using OS 10.7.4 and I have Xcode installed. When in a terminal window and I type in "nm" , it comes back with a "command not found" I get this regardless if whether I precede this with "sudo" or not. I thought "nm" was a basic Unix command. Why can't I get it to recognize it? I don't know what I am doing wrong.

 

Thanks for all of the great info in this thread!

Link to comment
Share on other sites

I have read this thread from top to bottom a couple of times. I am tring to follow bcc9's directions on the first page, and I too can't get past the "nm" command. I am using OS 10.7.4 and I have Xcode installed. When in a terminal window and I type in "nm" , it comes back with a "command not found" I get this regardless if whether I precede this with "sudo" or not. I thought "nm" was a basic Unix command. Why can't I get it to recognize it? I don't know what I am doing wrong.

 

Thanks for all of the great info in this thread!

 

Make sure Command line tools is installed look for it in Xcode preference/Downloads

Link to comment
Share on other sites

Thanks for the help. I installed the command line tools as suggested and that worked great. I had previously tried to update my path, but I must have done something wrong since it didn't seem to work.

 

I have edited my connector info, and I am experimenting with editing entries other than just the first one. I want to see if I can get the Mac Mini connector table properly edited so that I can try changing my system definition from Mac Book Pro to Mac Mini.

Link to comment
Share on other sites

I don't know what I did,but I can't get my VGA output to work after booting any more. I was experimenting with various connector info table entries and trying to use multiple monitors (VGA and DVI), and now I can only boot with the DVI monitor. If I look in System Preferences -> Displays, both monitors are being detected, but I can't get the VGA monitor to work anymore. I rolled back my AppleIntelSNBGraphicsFB.kext to the one that I had working first with the VGA monitor. It had only one entry modified.

 

Is there some sort of Display Preferences file (I can't find one) that I should delete so that I can get back to where I was?

 

Edit: I found a thread that indicated /L/P/com.apple.windowserver.plist is the preferences file I am looking for. However, when I deleted it, my problem was not solved. I still can't get OS 10.7.4 to boot on the VGA display. As soon as the boot screen goes away the screen goes blank.

Link to comment
Share on other sites

I finally got it to boot again with the HD3000 Built-in graphics VGA output. I used the boot option "GraphicsEnabler=No". This was not necessary in the past, so something is screwed up that causes this to be necessary. Is there a file or setting somewhere that I have messed up?

 

My org.chameleon.Boot.plist that I have been using has GraphicEnabler=Yes, but now this won't work. What's up?

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...

Just upgraded to 10.7.5 and noticed that the location of the connector information in AppleIntelSNBGraphicsFB apparently has changed. modigliani's binary now creates the following -

 


0000000: cffa edfe 0700 0001 0300 0000 ............
000000c: 0b00 0000 0600 0000 7804 0000 ........x...
0000018: 8500 0000 0000 0000 1900 0000 ............
0000024: 3801 0000 5f5f 5445 5854 0000 8...__TEXT..
0000030: 0000 0000 0000 0000 0000 0000 ............

 

Instead of

 


0000000: 0102 0200 1007 0000 1007 0000 ............
000000c: 0304 0000 0004 0000 0900 0000 ............
0000018: 0205 0000 0004 0000 0700 0000 ............
0000024: 0000 0000 0000 0000 0000 0000 ............
0000030: 0000 0000 0000 0000 0000 0000 ............

 

I guess this is a simple enough fix unless the whole HD3000 driver was rewritten for 10.7.5 (If so it is probably using a similar driver as for 10.8.)

 

Just wanted to throw this out there as modigliani's patch was instrumental in fixing the ring stall issue on my system. Would be nice to be able to implement this on 10.7.5 as well.

 

EDIT: it looks like this may at least partly be caused by 'D _PlatformInformationList' now being 'd _PlatformInformationList' (lowercase d). Gotta love these nonsensical changes.

 


/System/Library/Extensions/AppleIntelSNBGraphicsFB.kext/Contents/MacOS $ nm -arch x86_64 AppleIntelSNBGraphicsFB | grep 'PlatformInformationList'
000000000002a620 d _PlatformInformationList
000000000000bffd t __GLOBAL__D_PlatformInformationList
000000000000bfec t __GLOBAL__I_PlatformInformationList

Link to comment
Share on other sites

  • 1 month later...

Hi, I have a dell n5110r 8gb intel hd 3000 no nvidia and Mountain Lion 10.8.2

 

I would like to know how i can fix the internal display with this cable connector mod for the internal display, hdmi is working for me as well as mirroring haven't tried vga, gpu recognised as 512mb intel hd 3000

Link to comment
Share on other sites

I want to share the working configuration and files for my laptop, using the factory MacbookPro8,1 table of connectors. Because I only have HD3000 iGPU.

 

System: Mountain Lion 10.8 GM (12A269)

Versión of AppleIntelSNBGraphicsFB = 8.0.0 (8.0.51)

Hardware device-id = 0x0116 (1366 x 768)

 

I am using a little modified script patcher to simplify the work. Of course all credits go to bcc9 and modigliani (big thanks guys). This is how, but please read all before do anything:

- Put the "Patch_HD3000_ML" folder into your /Extra

- Put your vanilla or base "AppleIntelSNBGraphicsFB.kext" into the new folder "/Extra/Patch_HD3000_ML"

- Run (execute) "modgliani-intelHD3000"

- Edit the "hex" file (e.g. with "Hex Fiend.app") for customize the table of connectors, and save it.

- Run (execute) "modgliani-intelHD3000_Patch"

- Install the new patched "AppleIntelSNBGraphicsFB.kext", rebuild cache and repair permissions (whit Disk Utility).

 

- I specially needed (was necessary) in my case for three (3) functional connectors (frame buffers) add this code to my IGPU device into DSDT, to avoid black screen (backlight off) at login. My graphics injection for ML 10.8:

 

		Method (_DSM, 4, NotSerialized)
	{
		Store (Package ()
			{
				"AAPL,NumFramebuffers", /*the key factor for me, in ML*/
				Buffer (0x04)
				{
					0x03, 0x00, 0x00, 0x00
				},

				"AAPL,snb-platform-id", /*Maybe is not necessary, but I leave it there*/
				Buffer (0x04)
				{
					0x00, 0x00, 0x01, 0x00
				},

				"built-in", /*optional*/
				Buffer (One)
				{
					0x00
				},

				"hda-gfx",
				Buffer (0x0A)
				{
					"onboard-1"
				},

				"subsystem-id", /*optional*/
				Buffer (0x04)
				{
					0xEB, 0x00, 0x00, 0x00
				},

				"subsystem-vendor-id", /*optional*/
				Buffer (0x04)
				{
					0x6B, 0x10, 0x00, 0x00
				}
			}, Local0)
		DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
		Return (Local0)
	}

 

 

Some results:

Here tested VGA (ok) = Extended ONLY (enough for me) - mirror not working at all is working perfect from VGA.

HDMI not tested yet, but I am expecting mirror function from this port, is working as expected. I have full support for VGA (602) & HDMI (406).

 

I hope this is fine, and helps. Good Luck to everyone.

 

Hi, I get the following when i run your patch

 

 

60+0 records in

60+0 records out

60 bytes transferred in 0.000439 secs (136622 bytes/sec)

 

0000000: 0000 0000 0000 0000 0000 0000 ............

000000c: 0000 0000 0000 0000 0000 0000 ............

0000018: 0000 0000 0000 0000 0000 0000 ............

0000024: 0000 0000 0000 0000 0000 0000 ............

0000030: 0000 0000 0000 0000 0000 0000 ............

 

Conectors total: 0000

 

Now please, edit the hex file for customize the table of conectors...

 

Can you please tell me what I have to do ? I'm on a Dell n5110r Laptop 15inch

Link to comment
Share on other sites

  • 2 weeks later...
 Share

×
×
  • Create New...