Jump to content

Intel HD Graphics / i7 2600


  • Please log in to reply
153 replies to this topic

#121
joefitz

joefitz

    InsanelyMac Protégé

  • Members
  • Pip
  • 2 posts
Thanks everyone on this thread for all the info. I finally managed to get (nearly) everything working on my system. For those in the same boat, i'll give a rundown of all the essential pieces.

update: attached my working DSDT. Remove the .pdf extension.

Hardware:
  • i7-2600k
  • Gigabyte H67N-USB3-B3 (mini itx)
  • and the rest doesn't really matter...
Short version of the Process:
  • install 10.6 then 10.6.8 combo update (i did the osinstall.mpkg method with the drive attached via usb to my working hackintosh)
  • Further modify the tonymac DSDT
  • Use ##### to install additional bootloaders/drivers
  • Modify smbios.plist
  • Boot and see/hear the welcome video
DSDT mods:
  • 10.6.8 UID/ADR fix to avoid [PCI Configuration Begin]
  • change all instances of IGD0 to IGPU
  • remove entire IGD1 section (what is it for, even?)
  • add 0x0126 deviceid to IGPU's DSM (could have been done by adding 0x0122 to the info.plists too?)
##### settings:
  • userdsdt
  • system utilities
  • voodoohda (my preference)
  • IOACHIBlockStorageInjector
  • Realtek drivers (preference)
  • 64-bit boot.plist
  • macpro 8,1

boot.plist mods:
  • added the AAPL,os-info device-properties. Could have done this in DSDT, but i'm hoping the new mac mini or macbook air values work better with my connectors
what works:
  • After doing all of the above from my working hackintosh on a drive connected by USB, i popped it in the system and it booted right up, played the welcome video at native resolution with sound. shutdown/restart/sleep all work fine.
  • According to kill-a-watt and an old power supply, the system is <40w idle, <9w sleep, and ~115W load (all 8 threads doing a handbrake transcode - half the power and 33% faster than my old i7-860+GF 220).
  • There's a bios setting to limit CPU wattage, default of 95. Setting it to 65 didn't seem to have any impact (no surprise, but would have been nice if it worked)
  • plug/unplugging any display triggers detect displays - but still only one detected.
Problems i ran into:
  • I need to use ALL of the above fixes for things to work. I tried taking each one out, one at a time, and they're ALL needed on this system.
  • hooking up the wrong connector results in either display corruption, no output, or kernel panic on plug/unplug
Problems remaining:
  • Hibernate works, but i lose usb
  • Board has USB3 that works with the modified LaCie drivers, but there's some sort of conflict and i have to remove IOSerialFamily.kext to boot. I have no USB3 devices or serial modems, so i don't really care either way.
  • Board has 3 outputs- VGA, HDMI left (under VGA) and HDMI right. Only HDMI left works as an output, and only works if system is booted with left HDMI + one other connected. Thank you for the dual VGA/DVI inputs on my monitor :)
  • sys info shows the first display device is not connected, and the second one in use. My guess is a different AAPL,os-info and/or SMBIOS, or lion and connector info edits would fix this and allow dual display.

Attached Files



#122
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,281 posts
  • Gender:Male

Thanks for the suggestion. I got device-id injection to work with my DSDT, but so far it's not helping. My actual device id is 0x0112, which is included in the list in AppleIntelHDGraphics, but not in AppleIntelSNBGraphicsFB. If I use my actual id, or any other id which is only in HDGraphics, I get the boot message "SNB Framebuffer did not show up, unload" twice during booting, and don't get HD graphics. If I use an id which is in both, which are 0x0106, 0x0116, and 0x0126 for key AppleIntelSNBGraphicsFB, then during the boot messages I get some graphics garbage at the top of the screen. Then at the time when booting would switch to high-resolution, the boot messages just stay on the screen. The system seems to still be up, because I get new messages if I unplug a USB stick after that. That also happens if I add 0x0112 to the framebuffer kext's device id list.

The device ids that end in 6 are for mobile graphics, and the ones that end in 2 are for desktop graphics. There is a list at http://www.insanelym...p...3754&st=698 It looks like the framebuffer kext is required, but doesn't work with my i5-2500K, and might only work for mobile graphics. But then why would my device code be in AppleIntelHDGraphics? I'd be grateful for any insights.

My gigabyte h67-ma-ud2h has PCI ID 8086:0122 for the intel on-chip graphics.
The information I posted about editing the connector info for intel integrated graphics:
http://www.insanelym...howtopic=259705
*is* applicable to desktop systems.
Sounds like you simply have a case of the wrong connector info. I'm assuming you didn't try to follow the suggestions in the above thread in conjunction with 10.7. I guess not, since you used a different SMboardproduct setting.

Like you, I do usually get garbage or stale display data before the driver finishes switching to full resolution.

#123
mz123

mz123

    InsanelyMac Protégé

  • Members
  • Pip
  • 12 posts
  • Location:CE

update: attached my working DSDT. Remove the .pdf extension.


it's still looks like a pdf file,although I have removed the pdf extension.

#124
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,281 posts
  • Gender:Male

My gigabyte h67-ma-ud2h has PCI ID 8086:0122 for the intel on-chip graphics.

Just an update.... I downgraded my h67's CPU to core i5-2500k, and the VGA PCI ID changed to 8086:0112.
I moved the core i7-2600k to a z68 motherboard, and the VGA PCI ID shows up as 8086:0122.
So the PCI ID seems to be tied into the CPU's on-die graphics feature/performance level.

In any case, all 3 configs work under lion's AppleIntelSNBGraphicsFB with my recommended DSDT patch for the device id.

#125
iLeopod

iLeopod

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 435 posts
  • Gender:Male
  • Location:Germany
  • Interests:ileopod.wordpress.com
This is what i have in dsdt:
Device (IGPU)
			{
				Name (_ADR, 0x00020000)
				Method (_DSM, 4, NotSerialized)
				{
					Store (Package (0x0A)
						{
							"AAPL,slot-name", 
							Buffer (0x09)
							{
								"built-in"
							}, 

							"subsystem-id", 
							Buffer (0x04)
							{
								0x00, 0x00, 0x00, 0x00
							}, 

							"subsystem-vendor-id", 
							Buffer (0x04)
							{
								0x6B, 0x10, 0x00, 0x00
							}, 

							"device-id", 
							Buffer (0x04)
							{
								0x02, 0x01, 0x00, 0x00
							}, 

							"model", 
							Buffer (0x17)
							{
								"Intel HD Graphics 3000"
							}
						}, Local0)
					MCDP (Arg2, RefOf (Local0))
					Return (Local0)
				}
   //...other stuff
}


#126
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,281 posts
  • Gender:Male
The only string one needs to inject to get the PCI match to occur without editing the driver's Info.plist is the device-id, in my experience.
I haven't seen any info about any benefit for injecting those other strings in your example.
"model" is set correctly by the driver automatically.
Your subsystem-id, subsystem-vendor-id key values don't match the genuine mac hardware.
AAPL,slot-name is not set on genuine mac hardware.

Lastly I notice you're using a different value for the device-id; I wonder if you've found a benefit to setting it to 0x0102?

#127
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,281 posts
  • Gender:Male

Lastly I notice you're using a different value for the device-id; I wonder if you've found a benefit to setting it to 0x0102?

Answering for myself... I took a look at the PCI ids in intel's HD graphics linux driver:
#define PCI_CHIP_SANDYBRIDGE_BRIDGE	0x0100	/* Desktop */
#define PCI_CHIP_SANDYBRIDGE_GT1	0x0102
#define PCI_CHIP_SANDYBRIDGE_GT2	0x0112
#define PCI_CHIP_SANDYBRIDGE_GT2_PLUS	0x0122
#define PCI_CHIP_SANDYBRIDGE_BRIDGE_M	0x0104	/* Mobile */
#define PCI_CHIP_SANDYBRIDGE_M_GT1	0x0106
#define PCI_CHIP_SANDYBRIDGE_M_GT2	0x0116
#define PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS	0x0126
#define PCI_CHIP_SANDYBRIDGE_BRIDGE_S	0x0108	/* Server */
#define PCI_CHIP_SANDYBRIDGE_S_GT	0x010A
So yes, mapping to 0x0102 looks more sensible than what I had. Apple's info.plist is setting some featurecontrol variables differently for the desktop PCI id.

I haven't noticed any functional difference (the watchdog timer issue remains, for example).

#128
dougaa

dougaa

    InsanelyMac Geek

  • Donators
  • 179 posts
I'm using device ID injection in the DSDT, and trying to get a DVI connection working. I'm having a problem that the driver doesn't consistently load. Sometimes it loads, and I see the behavior bcc9 has described, where it is very slow unless I hotplug the display. But other times, when I haven't made any changes, instead the framebuffer doesn't load. Anyone else seen that? Any suggestions?

#129
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,281 posts
  • Gender:Male

I'm using device ID injection in the DSDT, and trying to get a DVI connection working. I'm having a problem that the driver doesn't consistently load. Sometimes it loads, and I see the behavior bcc9 has described, where it is very slow unless I hotplug the display. But other times, when I haven't made any changes, instead the framebuffer doesn't load. Anyone else seen that? Any suggestions?

Doesn't make sense. You could turn on iokit logging to log the kext matching (iolog=0x...) if the matching is truly failing, as opposed to the driver loading but not working as expected. Sounds like you're still back on 10.6?

#130
dougaa

dougaa

    InsanelyMac Geek

  • Donators
  • 179 posts

Doesn't make sense. You could turn on iokit logging to log the kext matching (iolog=0x...) if the matching is truly failing, as opposed to the driver loading but not working as expected. Sounds like you're still back on 10.6?

This is with the Lion GM seed (which I have because I am a developer.) I decided to not even attempt Snow Leopard until after Lion is working. I am using a KVM switch, and my display is too old to support HDCP, which generates a DRM warning message when the driver does load. But I agree it makes no sense that it's not consistent. I suspect the matching always works, but it reminds me of something you wrote about the framebuffer not loading if you connect VGA. While there's really no pattern to when it works, it does fail much more often than it works. How do I turn on iokit logging?

#131
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,281 posts
  • Gender:Male

This is with the Lion GM seed (which I have because I am a developer.) I decided to not even attempt Snow Leopard until after Lion is working. I am using a KVM switch, and my display is too old to support HDCP, which generates a DRM warning message when the driver does load. But I agree it makes no sense that it's not consistent. I suspect the matching always works, but it reminds me of something you wrote about the framebuffer not loading if you connect VGA. While there's really no pattern to when it works, it does fail much more often than it works. How do I turn on iokit logging?

I remembered the boot argument wrong it's io not iolog. Since you say you're a developer:
You set io=0x... in your kernel boot arguments, where the bit settings are defined in IOKit/IOKitDebug.h
For example io=0x10 to log the kext matching, 0x4 to log the kext start
This is mentioned in the "debugging boot drivers" section of the I/O kit device driver design guidelines document.
I suspect this isn't actually your problem and that your driver is in fact loading in all cases it's just failing after start for you some of the time.
But you said it wasn't loading, so there you go...

#132
dougaa

dougaa

    InsanelyMac Geek

  • Donators
  • 179 posts

I remembered the boot argument wrong it's io not iolog. Since you say you're a developer:
You set io=0x... in your kernel boot arguments, where the bit settings are defined in IOKit/IOKitDebug.h
For example io=0x10 to log the kext matching, 0x4 to log the kext start
This is mentioned in the "debugging boot drivers" section of the I/O kit device driver design guidelines document.
I suspect this isn't actually your problem and that your driver is in fact loading in all cases it's just failing after start for you some of the time.
But you said it wasn't loading, so there you go...


Thanks for the info. When it doesn't work, I get the kernel message "SNB Framebuffer did not show up, unload". Also, the system report shows no kext loaded for the display. So either the kext never loads, or does load then gets unloaded. I'll see if the io logging provides any clues.

When it does work, I've gotten it to work perfectly by following your directions for editing the connector table in the kext. I'll be posting that in the connector thread.

I tried putting an Nvidia graphics card, 8600 GS, in my computer, but with no display connected to it. Without the Nvidia card present, the HD 3000 graphics usually fails, and with the Nvidia card present, the HD 3000 graphics usually works. So that's another clue. Of course that's hardly a solution, since if I wanted to use a graphics card I wouldn't be working on the HD 3000 graphics in the first place.

One possibility is a bug in Chameleon, since I'm using a current trunk build, and Chameleon is frequently being updated now, and I'll be checking into that.

#133
131

131

    InsanelyMac Protégé

  • Members
  • PipPip
  • 52 posts
Thank you every one here.

I3 2105 +GA-H67MA-UD2H-B3 with VGA+DVI+DP+HDMI, ALC889 sound code. BIOS version is F5.

Soyo 22" monitor with VGA+DVI input.

I had install Mac OS Lion GM, the way i get the QE/CI is that before boot the lion. i plug the VGA+DVI together and boot with -v, after dsmos has arrived, take off the VGA cable, and the screen will be show in the monitor, then till reboot, the system is perfect, the speed is fast.If only plug the DVI cable, when the screen is shown, the speed is very slow, extractly slow.......

i will upload my dsdt, now i just chage the IGD0 to IGPU, if i add the 0x0112 ID to the dsdt, the boot will simple? Another question is i don't know how to add the device id to dsdt like this: how to get the value of the red font?--------------------------------------------------------------------------------------------------------------------------
Device (IGPU)
{
Name (_ADR, 0x00020000)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x0A)
{
"AAPL,slot-name",
Buffer (0x09)
{
"built-in"
},

"subsystem-id",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
},

"subsystem-vendor-id",
Buffer (0x04)
{
0x6B, 0x10, 0x00, 0x00
},

"device-id",
Buffer (0x04)
{
0x02, 0x01, 0x00, 0x00
},

"model",
Buffer (0x17)
{
"Intel HD Graphics 3000"
}
}, Local0)
MCDP (Arg2, RefOf (Local0))
Return (Local0)
}
//...other stuff
}

#134
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,281 posts
  • Gender:Male

So yes, mapping to 0x0102 looks more sensible than what I had.

I take it back, there seems to be more to this... With my pci device id forced to 0x0102, I get a low opengl cinebench score (9.3). With my previous forced value, 0x0126, I get a better score (14.0)... Anyone know why this would be?




If only plug the DVI cable, when the screen is shown, the speed is very slow, extractly slow.......

That is exactly the driver hang problem addressed by my thread:
http://www.insanelym...howtopic=259705

#135
bcc9

bcc9

    InsanelyMac Legend

  • Coders
  • 1,281 posts
  • Gender:Male

I take it back, there seems to be more to this... With my pci device id forced to 0x0102, I get a low opengl cinebench score (9.3). With my previous forced value, 0x0126, I get a better score (14.0)... Anyone know why this would be?

I narrowed this down to the PowerStates key in AppleIntelSNBGraphicFB.kext's Info.plist. 0x0126 and 0x0102 match on slightly different FeatureControl lists, where the 0x0126 list has PowerStates=1 and the 0x0102 version has PowerStates=0. If the 0x0102 Powerstate is changed to match the 0x0126 setting, I get the higher cinebench score.

Looks to me like the 0x0126 setting is for higher performance hd 3000 cpu configs, and so one should be using that for the core i7 even though the 0x0126 is a mobile PCI id.

#136
iLeopod

iLeopod

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 435 posts
  • Gender:Male
  • Location:Germany
  • Interests:ileopod.wordpress.com
It seems that the 102 device id belongs to HD 2000. But Apple wants to tell us (at least in IOREG of iMac 12,2 i5) that its an HD 3000.
(i5 2500s and i5 2400 have official HD 2000)

#137
dougaa

dougaa

    InsanelyMac Geek

  • Donators
  • 179 posts

Thanks for the info. When it doesn't work, I get the kernel message "SNB Framebuffer did not show up, unload". Also, the system report shows no kext loaded for the display. So either the kext never loads, or does load then gets unloaded. I'll see if the io logging provides any clues.

When it does work, I've gotten it to work perfectly by following your directions for editing the connector table in the kext. I'll be posting that in the connector thread.

I tried putting an Nvidia graphics card, 8600 GS, in my computer, but with no display connected to it. Without the Nvidia card present, the HD 3000 graphics usually fails, and with the Nvidia card present, the HD 3000 graphics usually works. So that's another clue. Of course that's hardly a solution, since if I wanted to use a graphics card I wouldn't be working on the HD 3000 graphics in the first place.

One possibility is a bug in Chameleon, since I'm using a current trunk build, and Chameleon is frequently being updated now, and I'll be checking into that.


I eventually figured this out, and it is due to a bug in Chameleon. I described the cause in the Chameleon issue at http://forge.voodoop...eon/issues/123/. The problem occurs for versions of Chameleon after r1107. In the issue, I describe how you can fix it for more recent versions.


It seems that the 102 device id belongs to HD 2000. But Apple wants to tell us (at least in IOREG of iMac 12,2 i5) that its an HD 3000.
(i5 2500s and i5 2400 have official HD 2000)

That's generally true, but the 2405S and 2500K have HD 3000. You can see that in the processors in bold at http://en.wikipedia....ktop_processors

#138
dougaa

dougaa

    InsanelyMac Geek

  • Donators
  • 179 posts
Now that I have HD 3000 graphics working with Lion, I tried to get it to work with Snow Leopard (10.6.8.) I used the same device id injection in the DSDT. For my GA-H67A-UD3H-B3 motherboard, the display is at PciRoot(0x1)/Pci(0x2,0x0), and I used a device-properties string for that which sets AAPL,os-info as for MacBookPro8,1:
<key>device-properties</key>
	<string>600000000100000001000000540000000100000002010c00d041030a01000000010106000
0027fff04001e0000004100410050004c002c006f0073002d0069006e0066006f0000001800000030490111
111108000001f01f0100000010070000</string>

Note: the data between <string> and </string> is one line with no spaces in the plist file.
Just doing those things, the DVI connector works with no problems, provided that I also have a connection to the VGA port. Snow Leopard doesn't output anything to the VGA port, but the BIOS boot messages only go to VGA. I can live with that, but it's awkward. I assume a fix would require modifying the connector data in os-info, and I haven't been able to find any information about that. It would be great if someone did have a solution.

Edit: I tried using AppleIntelSNBGraphicFB.kext from Lion in Snow Leopard, but it won't load because it needs symbols defined in the Lion kernel.

#139
fmac

fmac

    InsanelyMac Protégé

  • Members
  • PipPip
  • 83 posts

Now that I have HD 3000 graphics working with Lion, I tried to get it to work with Snow Leopard (10.6.8.) I used the same device id injection in the DSDT. For my GA-H67A-UD3H-B3 motherboard, the display is at PciRoot(0x1)/Pci(0x2,0x0), and I used a device-properties string for that which sets AAPL,os-info as for MacBookPro8,1:

<key>device-properties</key>
	 <string>600000000100000001000000540000000100000002010c00d041030a01000000010106000
 0027fff04001e0000004100410050004c002c006f0073002d0069006e0066006f0000001800000030490111
 111108000001f01f0100000010070000</string>
 
 Note: the data between <string> and </string> is one line with no spaces in the plist file.
Just doing those things, the DVI connector works with no problems, provided that I also have a connection to the VGA port. Snow Leopard doesn't output anything to the VGA port, but the BIOS boot messages only go to VGA. I can live with that, but it's awkward. I assume a fix would require modifying the connector data in os-info, and I haven't been able to find any information about that. It would be great if someone did have a solution.


look here = http://www.insanelym...howtopic=259705

#140
dougaa

dougaa

    InsanelyMac Geek

  • Donators
  • 179 posts

look here = http://www.insanelym...howtopic=259705

Thanks, but that thread is for Lion, and I'm looking for a solution for Snow Leopard. The directions there work well for me for Lion.





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy