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

Hi Timp,

i would like to get VGA port working on my Hackintosh GA-H67N-USb3-B3 mobo with intel i5-2500K and Intel Hd 3000 video ID:0112 ...

I have installed OSX Lion 10.7.1 , Chimera 1.5.4 / Macmini5.1 smbios.plist /DSDT.aml and everything works on HDMI port, but i want to use my VGA monitor because i use my PC with dual boot with Windows and i don't want to connect pc to TV when i want to use OSX .

 

GA-H67N-USb3-B3 mobo has one VGA port and two HDMI ports ( no DVI)

Info here http://www.gigabyte.us/products/product-pa...spx?pid=3783#sp

 

I'm relative new on patching to get VGA Port working ... so can give me some hints to see the light ... ?

Thanks a lot

 

Best Regards

 

PippoX0

Link to comment
Share on other sites

Editing the table as bcc9 suggested works fine in the first boot but...¿why the display freezes showing the same message (kernel: stampWait: Overflowed checking for stamp 0x39fa8 on Main ring: called from

)? In my case it doesn´t matter the program I´m using, I can even spend two days without this problem, but suddenly it happens again...

 

 

regards

Link to comment
Share on other sites

Hey Timp,

Can you elaborate on your dsdt edit/

Thanks,

 

Sure:

 

			 Device (IGPU)
				   {
					   Name (_ADR, 0x00020000)

					   Method (_DSM, 4, NotSerialized)
					   {
						   Store (Package (0x06)
						   {
							   "hda-gfx", Buffer (0x09) {"onboard-2"},
							   "device-id", Buffer (0x04) {0x16, 0x01, 0x00, 0x00},
							   "AAPL01,override-no-edid", Buffer (0x80) {
								  0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
								  0x10, 0xAC, 0x0F, 0xA0, 0x53, 0x59, 0x56, 0x31,
								  0x32, 0x0F, 0x01, 0x03, 0x08, 0x34, 0x21, 0x78,
								  0xE8, 0xEE, 0x50, 0xA3, 0x54, 0x4C, 0x9B, 0x26,
								  0x0F, 0x50, 0x54, 0xA5, 0x4B, 0x00, 0xB3, 0x00,
								  0x95, 0x00, 0x81, 0x00, 0xA9, 0x40, 0xD1, 0xC0,
								  0x8B, 0xC0, 0x81, 0xC0, 0x90, 0x40, 0x28, 0x3C,
								  0x80, 0xA0, 0x70, 0xB0, 0x23, 0x40, 0x30, 0x20,
								  0x36, 0x00, 0x07, 0x44, 0x21, 0x00, 0x00, 0x1A,
								  0x00, 0x00, 0x00, 0xFE, 0x00, 0x44, 0x53, 0x44,
								  0x54, 0x20, 0x56, 0x47, 0x41, 0x20, 0x50, 0x6F,
								  0x72, 0x74, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x56,
								  0x67, 0x61, 0x4D, 0x6F, 0x6E, 0x69, 0x74, 0x6F,
								  0x72, 0x0A, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0xFD,
								  0x00, 0x38, 0x4C, 0x1E, 0x51, 0x11, 0x00, 0x0A,
								  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0xF4
							   }
						   }, Local0)
						   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
						   Return (Local0)
					   }

 

I would get the EDID from your monitor as this may not work with all monitors.

 

Power Saving also doesn't work as this is also controlled by the I2C bus.

 

I notice that the display sometimes freezes. Like only the mouse pointer moves but you can't click on anything. I think it's related to the Intel display driver too but haven't been able to isolate it for sure. I can still connect with ssh. HD 3000 graphics on Mac all seem a bit dodge to me. Wonder if Apple or Intel wrote the driver..

 

BTW this is on a Dell Vostro 3350 with a I5-2410M and Intel HD 3000 graphics only.

 

Good luck.

 

 

 

Hi All,

I wasn't happy with the DSDT edid thing so I tried some more numbers in the AppleIntelSNBGraphics binary to see if I could get the EDID from the monitor via the VGA connector. I found 0602 instead of 0607 works! There are still a few issues. Like have to sleep/wake the machine to get the VGA out working in some cases, or unplug the display, detect displays plug in the display again and detect again..

 

Below are the numbers I'm currently using that give me internal LCD + HDMI or Internal LCD + VGA. Connecting both doesn't work as the HD3000 only seems to support 2 monitors at a time. I tried removing the line for the internal LCD to see if I could get dual display on VGA and HDMI but that didn't seem to work, but maybe I did something wrong.

 

The four lines are

0503 - Internal LCD

0205 - HDMI

0602 - VGA

0000 - unused.

 

Still don't know if the order is important or what the number is the fifth column means.

 

	 0102 0300 1007 0000 1007 0000
  0503 0000 0200 0000 3000 0000
  0205 0000 0004 0000 0700 0000
  0602 0000 1000 0000 0900 0000
  0000 0000 0100 0000 4000 0000

 

My IGPU now only has

			 Store (Package (0x04)
			  {
				  "hda-gfx", Buffer (0x09) {"onboard-2"},
				  "device-id", Buffer (0x04) {0x16, 0x01, 0x00, 0x00}
			  }, Local0)
			  DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
			  Return (Local0)
		  }

Link to comment
Share on other sites

  • 2 weeks later...

Eureka ! :wacko:

I got my VGA port working on my Hackintosh GA-H67N-USb3-B3 mobo with intel i5-2500K and Intel Hd 3000 video ID:0112 ... on OSX Lion 10.7.1 , Chimera 1.5.4 / MacBookPro8.1 smbios.plist /DSDT.aml and everything works with

QE/CI enabled !!

 

i finally can use iMovie and iWorks ...

 

I followed as described on first post the hex editing in the AppleIntelSNBGraphics binary

thanks to Bcc9 and Timp. ( i use 602 values suggested by timp)

 

AppleIntelSNBGraphics FrameBuffer to be binary patched

 

0102 0400 1007 0000 1007 0000

0503 0000 0200 0000 3000 0000

0205 0000 0004 0000 0700 0000

0304 0000 0004 0000 0900 0000

0406 0000 0004 0000 0900 0000

 

Patch 0503->0602

From internal LCD port to VGA port ...

 

I patched also my DSDT to get ID:116 instead of ID:112 (real one)

 

Mod. IGD0

 

			Device (IGD0)
			  {
				  Name (_ADR, 0x00020000)

				  Method (_DSM, 4, NotSerialized) 
				  {

				  Store (Package (0x04)
					{
						"hda-gfx", Buffer (0x09) {"onboard-2"},
						"device-id", Buffer (0x04) {0x16, 0x01, 0x00, 0x00}
					}, Local0)
					DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
					Return (Local0)
				}

		 OperationRegion (IGDP, PCI_Config, 0x40, 0xC0)

 

what to fix:

my Monitor Acer AL1914 has 1280x1024 res, but i got 1152x864.

If i try to change resolution i lost qe/ci and get black screen

( I need to boot with " -x -v" option and delete /Library/Preferences/com.apple.windowserver.plist to

get back 1152x864 resolution and fix black screen)

 

Best Regards !!

 

post-161756-1320480469_thumb.png

Link to comment
Share on other sites

Hi All,

I wasn't happy with the DSDT edid thing so I tried some more numbers in the AppleIntelSNBGraphics binary to see if I could get the EDID from the monitor via the VGA connector. I found 0602 instead of 0607 works! There are still a few issues. Like have to sleep/wake the machine to get the VGA out working in some cases, or unplug the display, detect displays plug in the display again and detect again..

 

Below are the numbers I'm currently using that give me internal LCD + HDMI or Internal LCD + VGA. Connecting both doesn't work as the HD3000 only seems to support 2 monitors at a time. I tried removing the line for the internal LCD to see if I could get dual display on VGA and HDMI but that didn't seem to work, but maybe I did something wrong.

 

The four lines are

0503 - Internal LCD

0205 - HDMI

0602 - VGA

0000 - unused.

 

Still don't know if the order is important or what the number is the fifth column means.

 

	 0102 0300 1007 0000 1007 0000
  0503 0000 0200 0000 3000 0000
  0205 0000 0004 0000 0700 0000
  0602 0000 1000 0000 0900 0000
  0000 0000 0100 0000 4000 0000

 

My IGPU now only has

			 Store (Package (0x04)
			  {
				  "hda-gfx", Buffer (0x09) {"onboard-2"},
				  "device-id", Buffer (0x04) {0x16, 0x01, 0x00, 0x00}
			  }, Local0)
			  DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
			  Return (Local0)
		  }

 

thanks

no need for dsm method on igpu

 

and there is wrong on vga connector code

 

i got the vga to works thanks for your 0602 code how did you get it ? :D

 

i made only lvds and vga as idont need hdmi and here is my edit

 

0000000: 0102 0200 1007 0000 1007 0000 ............

000000c: 0503 0000 0200 0000 3000 0000 ........0...

0000018: 0602 0000 0010 0000 0900 0000 ............

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

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

 

 

now vga and lvds works with full resloution and qe/cl

 

just need to detect vga display i think this is normal ;)

 

 

 

thanks very much

Link to comment
Share on other sites

I've successfully managed to get HDMI + VGA output working on my HP ProBook 4730s.

The only problem is: the hangs still appear.

It's even more annoying if the hangs appear when using things like Mission Control or Launchpad.

I've even modified the kext to use LVDS only.. still no luck.

However what I've found out is that the hangs disappear when flipping the display by 90°, 180° and/or 270°.

I've used SwitchResX for this, but you can do it the using an alternative way:

Press and hold [Alt] + [Command] keys,  -> System preferences -> Display settings and releasing the keys.

Of course, it's not very practical to use a laptop with stuff being shown upside down.

I've dumped the IORegistry before and after rotating the screen + diffed the files. You can take a look at it.

I've noticed that with SwitchResX all resolutions except of the current one were gone after rotating, so I'm not sure if the IOReg would look the same with the alternative method.

I'm pretty sure we have to change more stuff in the connector info.

Here's my current connector setup:

0000000: 0102 0300 1007 0000 1007 0000  ............
000000c: 0503 0000 0200 0000 3000 0000  ........0...
0000018: 0406 0000 0008 0000 0600 0000  ............
0000024: 0602 0000 0001 0000 0700 0000  ............
0000030: 0000 0000 0000 0000 0000 0000  ............

Hangs_IORegs.zip

Link to comment
Share on other sites

thanks

no need for dsm method on igpu

 

and there is wrong on vga connector code

.

.

 

Hi Mohamed,

Are you sure the code is wrong?

 

 #define CONNECTORTYPE_LVDS	0x00000002	/* Ie internal Low Voltage display, such as laptop */
#define CONNECTORTYPE_DP	  0x00000400	/* Displayport */
#define CONNECTORTYPE_HDMI	0x00000800

 

HDMI is 0800 which flips to 0008 and DP is 0400 which flips to 0004. etc.. I assumed these are the same as the ATI connector type codes. They have VGA as 10, so flipped it's 1000. Are you saying that the VGA connetor is really 1000? Where did you find that? I don't think it's used for anything anyway but it would be nice to know what the correct code is..

Link to comment
Share on other sites

Hi Mohamed,

Are you sure the code is wrong?

 

 #define CONNECTORTYPE_LVDS	0x00000002	/* Ie internal Low Voltage display, such as laptop */
#define CONNECTORTYPE_DP	  0x00000400	/* Displayport */
#define CONNECTORTYPE_HDMI	0x00000800

 

HDMI is 0800 which flips to 0008 and DP is 0400 which flips to 0004. etc.. I assumed these are the same as the ATI connector type codes. They have VGA as 10, so flipped it's 1000. Are you saying that the VGA connetor is really 1000? Where did you find that? I don't think it's used for anything anyway but it would be nice to know what the correct code is..

 

you are correct it is 1000

 

but any way it also work with 0010

 

so from that what about 0004 !!

Link to comment
Share on other sites

1) On my laptop i.e. (expecting to see LVDS connector in IOReg) is always blank (00 00 00 00) I'm guessing that means my display is not being detected. So I can't get my connectors sorted.

 

Can someone point me in the right direction as I can only use LVDS on Lion without HDGraphics and SNB loaded. If I load them I end up at a blank laptop display. VGA works. but prefer to be able to use LCD on laptop.

 

i.e. SNB buffer not shown up... Or Buffer pool allocate, but no display.

 

2) Because of 1) any change to my connector tables may be useless.. However can you work out which one of the sets of connectors you are using or do you have to update them until it works.

 

Cheers

 

Chris

Link to comment
Share on other sites

1) On my laptop i.e. (expecting to see LVDS connector in IOReg) is always blank (00 00 00 00) I'm guessing that means my display is not being detected. So I can't get my connectors sorted.

 

Can someone point me in the right direction as I can only use LVDS on Lion without HDGraphics and SNB loaded. If I load them I end up at a blank laptop display. VGA works. but prefer to be able to use LCD on laptop.

 

i.e. SNB buffer not shown up... Or Buffer pool allocate, but no display.

 

2) Because of 1) any change to my connector tables may be useless.. However can you work out which one of the sets of connectors you are using or do you have to update them until it works.

 

Cheers

 

Chris

Have you applied the DualLink patch in your DSDT?

Method (_DSM, 4, NotSerialized)
{
  Store (Package (0x02)
  {
			  "AAPL00,DualLink", 
			  Buffer (0x04)
			  {
					0x01, 0x00, 0x00, 0x00
			   }
   }, Local0)
   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
   Return (Local0)
}

Link to comment
Share on other sites

Toshiba Portege r830

 

Don't know if this is new but I discovered that if you set the connector ID in the AppleIntelSNBGraphicsFB connector to 00 on the LVDS line of a Macbook pro the LCD display works on my Toshiba r830 where it did not work when the connector was set to 02 00 originally before.

 

There is still an issue with the frame buffer not being created properly which means acceleration for you tube dosent work and open GL is not available.

 

If I VNC in when the connector is 0200 i can see in IO reg that the framebuffer is set up. However not when the connector is 00 to get the LCD to work.

 

VGA and HDVI connectors work as normal.

 

Cheers

 

Chris

Link to comment
Share on other sites

Toshiba Portege r830

 

Don't know if this is new but I discovered that if you set the connector ID in the AppleIntelSNBGraphicsFB connector to 00 on the LVDS line of a Macbook pro the LCD display works on my Toshiba r830 where it did not work when the connector was set to 02 00 originally before.

 

There is still an issue with the frame buffer not being created properly which means acceleration for you tube dosent work and open GL is not available.

 

If I VNC in when the connector is 0200 i can see in IO reg that the framebuffer is set up. However not when the connector is 00 to get the LCD to work.

 

VGA and HDVI connectors work as normal.

 

Cheers

 

Chris

 

I think this is a strong indicator as well. I have a 1920x1080 LVDS which freezes every 5 seconds, and when I switch to my external monitor (also 1920x1080) I don't get any freezing, and SwitchResX correctly shows all the monitor information. IORegistryExplorer also reports full information for AAPL,DisplayPipe, audio-codec-info, av-signal-type etc on my external monitor but just 00s for the LVDS. It must be something to do with the framebuffer not being set up correctly.

 

Has anyone had perfect (ie: full QE/CI, no freezing, pressing F9 to view all windows works seamlessly etc) display performance on a single LVDS display greater than 1440x900, and if so, could they post the IORegistry data from the AppleIntelFramebuffer key?

 

Cheers

jkbuha

Link to comment
Share on other sites

We have patched this kext and have no freezing problems, and we have HDMI audio as well.

 

But we have this problem where when people turn on their laptops, they have to plug in HDMI and unplug it in order to make the laptop screen become activated (because this refreshes the connectors.) Here is my table below, what should I change? We are using SMBIOS of a MBP8,1 and have a device id of 0116

 

Thanks!

 

0000000: 0102 0300 1007 0000 1007 0000 ............

000000c: 0503 0000 0200 0000 3000 0000 ........0...

0000018: 0406 0000 0008 0000 0900 0000 ............

0000024: 0602 0000 0001 0000 0700 0000 ............

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

Link to comment
Share on other sites

We have patched this kext and have no freezing problems, and we have HDMI audio as well.

 

But we have this problem where when people turn on their laptops, they have to plug in HDMI and unplug it in order to make the laptop screen become activated (because this refreshes the connectors.) Here is my table below, what should I change? We are using SMBIOS of a MBP8,1 and have a device id of 0116

 

Thanks!

 

0000000: 0102 0300 1007 0000 1007 0000 ............

000000c: 0503 0000 0200 0000 3000 0000 ........0...

0000018: 0406 0000 0008 0000 0900 0000 ............

0000024: 0602 0000 0001 0000 0700 0000 ............

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

 

If you change the 0200 in the second row to 0000 the laptop lvds may be enabled it's self..

 

It would be good if you could try this and let me know if you have any issues watching youtube videos on the LCD using your plug-unplug method and when you change the connection type to 0000.

 

Also if you have any benchmarking/frame rate measuring sw to see if there is any performance difference.

 

I have a concern that when you change the connector the framebuffer may not be being set up correctly.

 

Might not be perfect but hope that helps

 

Chris

Link to comment
Share on other sites

If you change the 0200 in the second row to 0000 the laptop lvds may be enabled it's self..

 

It would be good if you could try this and let me know if you have any issues watching youtube videos on the LCD using your plug-unplug method and when you change the connection type to 0000.

 

Also if you have any benchmarking/frame rate measuring sw to see if there is any performance difference.

 

I have a concern that when you change the connector the framebuffer may not be being set up correctly.

 

Might not be perfect but hope that helps

 

Chris

 

Why would that enable it?

Link to comment
Share on other sites

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

I've successfully done the edits so that I only have one output device: HDMI.

 

Every now and then though (especially when I have multiple windows open and trying to watch a video), I get a crash like this:

 

 

10.1.2012 10.15.43,000 kernel: stampWait: Overflowed checking for stamp 0x18a2cf on Main ring: called from 
10.1.2012 10.15.43,000 kernel: timestamp = 0x18a2cd
10.1.2012 10.15.43,000 kernel: ****  Debug info for apparent hang in Main graphics engine  ****
10.1.2012 10.15.43,000 kernel: ring head    = 0x7f202abc, wrap count = 0x3f9
10.1.2012 10.15.43,000 kernel: ring tail    = 0x00003318 ring control = 0x00003001   enabled, auto report disabled, not waiting, semaphore not waiting, length = 0x004 4KB pages
10.1.2012 10.15.43,000 kernel: timestamps = 0x18a2cd
10.1.2012 10.15.43,000 kernel: Semaphore register values:
10.1.2012 10.15.43,000 kernel: VRSYNC: (0x12044) = 0x18a2cd
10.1.2012 10.15.43,000 kernel: BRSYNC: (0x22040) = 0x0
10.1.2012 10.15.43,000 kernel: RVSYNC: (0x 2040) = 0x0
10.1.2012 10.15.43,000 kernel: BVSYNC: (0x22044) = 0x0
10.1.2012 10.15.43,000 kernel: RBSYNC: (0x 2044) = 0x0
10.1.2012 10.15.43,000 kernel: VBSYNC: (0x12040) = 0x0
10.1.2012 10.15.43,000 kernel: kIPEHR: 0xfff0ffff
10.1.2012 10.15.43,000 kernel: kINSTDONE: 0xffffffff
10.1.2012 10.15.43,000 kernel: kINSTDONE_1: 0xbfffffff

 

Does anyone have any clues on how to remedy this? I'd also like to point out that I do in fact get random artifacts every now and then (glitchy lines here and there).

 

I have a custom DSDT with a custom device id injected, while I've also hex-edited the kext in question manually.

Link to comment
Share on other sites

I've made a few observations.

 

First of all, the hang issue I randomly get while working on my hackintosh is not the kind of "slow UI" hang, but instead, it *actually* hangs, though the mouse keeps moving.

 

Now, initially I had 4Gb of RAM, which means that the integrated HD3000 was using 384Mb of RAM, just like OS X showed it.

While I only had 4Gb of RAM, the hanging issue appeared once or twice in a month, so not that bad at all.

 

I've now upgraded to 8Gb of RAM and the HD3000 is now using 512Mb of RAM.

Now I'm getting the crash/hang every single day, atleast once, usually several times per day.

 

Why do I get the feeling that either OS X is exhausting all that RAM and doesn't know what to do when the GPU has no more memory to use, OR, OS X doesn't properly assign/reserve that 512Mb of RAM, and after it's past using 384Mb (which worked okayish before), it'll hang.

 

I dunno, but I'd like to get some answers, might have to contact someone like RevoGirl about this though.

Link to comment
Share on other sites

  • 2 weeks later...

Hello,

 

When I type into terminal nm -arch x86_64 etc., I get:

nm: command not found

I am obviously missing something. Can someone help me out?

 

-Jugz

Link to comment
Share on other sites

Did you install Xcode? nm won't be in your OS X install by default, but if you go to the Appstore and grab the Xcode (free) and let it install, you should be good to go! =)

 

 

Hello,

 

When I type into terminal nm -arch x86_64 etc., I get:

nm: command not found

I am obviously missing something. Can someone help me out?

 

-Jugz

Link to comment
Share on other sites

Did you install Xcode? nm won't be in your OS X install by default, but if you go to the Appstore and grab the Xcode (free) and let it install, you should be good to go! =)

 

Just installed it last night. I believe I read a little farther after I made the comment and saw something about Xcode. Thank you though. 1st post? Nice.

Link to comment
Share on other sites

 Share

×
×
  • Create New...