Re: [trouble] Intel HD 3000 and Gainward GeForce 8400 GS
After countless hours of trying to get dual screens working I finally succeeded. I couldn't get Intel HD 3000 onchip graphics working with a Gainward GeForce 8400 GS in a PCIe x16 slot.
Since its one of the recommended card here
http://tonymacx86.blogspot.com/2010/11/fully-compatible-nvidia-graphics-cards.html. I decided to purchase another GeForce 8400 GS which I found cheap on a local website, 15 euro's. I did purchase fanless videocards because I don't like the noise those fans make.
Dual video card setup that works now
In PCEe 16x slot: Gainward GeForce 8400 GS 512 Mb DDR3
In PCIe 8x slot: Asus GeForce 8400 GS 512 Mb DDR3
Intel HD 3000 graphics disabled in BIOS
Install via xmoved 10.7.2 Lion.
The following was needed to get this work:
- If I booted with to video card in the system I needed to type
otherwise the boot would, hang/panic/crash
- in /Extra/org.chameleon.Boot.plist
Code:
<key>GraphicsEnabler</key>
<string>No</string>
- Hopefully at this point on video card work in 1024x768 basic functionality so you can work your way throught the rest.
- use
to figure out what the PCI device path to your video card is. Do this with only one video card installed, and repeat with only the other card installed. Now you have the path to both cards. (I have some lingering doubt that PCIRootUID= (0 or 1) may influence this but I am not sure
)
- Removed all injectors or enablers, like NVinject or NVEnbler from /Library/Preferences/SystemConfiguration/ (I have plenty of these from my other tries to get dual card working.....
)
- I did
not have to add any product strings in /Library/Preferences/SystemConfiguration/NV* kext files.
- Create an EFI string for your dual video card setup
3 Step process
1. Create a XML file that is specific to your setup
2. From the XML file generate an EFI string
3. Insert that EFI string in /Extra/org.chameleon.Boot.plist
I have used the following resource to understand what EFI strings are and to generate the proper one for my system setup.
- Learn about gfxutil
http://forum.netkas.org/index.php?topic=64.0 and download it from somewhere
- gfxutil can be used to create an EFI string from a XML source file
- Learn about IORegistryexplorer
- Learn about OSX86Tools
http://code.google.com/p/osx86tools/ This helps you generate a
- The generic EFI idea:
http://forum.netkas.org/index.php/topic,66.0.html
- More generic info:
http://forum.netkas.org/index.php/topic,104.0.html
- There are other options too:
http://tonymacx86.blogspot.com/2009/12/enable-full-graphics-card-acceleration.html
- With this doc the first quarter started to fall for me
http://forum.netkas.org/index.php?topic=222.0 But its only for 1 video card....
- This is my source XML file (Note the Parent and Child entries for the 2 video cards)
3(+1) key factors to get right are:
- PCI bus locations
a la: PciRoot(0x1)/Pci(0x1,0x0)/Pci(0x0,0x0) (Do not copy this like because it may be different for your system. Use tools like IORegistryexplorer to figure out were in the PCI mapping your video cards are located)
- VRAM size
Code:
32 Mb - 0x02000000
64 Mb - 0x04000000
128 Mb - 0x08000000
256 Mb - 0x10000000
320 Mb - 0x14000000
512 Mb - 0x20000000
640 Mb - 0x28000000
768 Mb - 0x30000000
1024 Mb - 0x40000000
- Parent / Child setting
<key>device_type</key>
<string>NVDA,Parent</string>
and the other card
<key>device_type</key>
<string>NVDA,Child</string>
- NVCAP setting for correct DVI-VGA-HDMI output mapping
Code:
DVI-I / DVI-I - BAAAAAAAAwAMAAAAAAAABwAAAAA=
VGA / DVI-I - BAAAAAAAAQAGAAAAAAAAAAAAAAA=
DVI-I / VGA - BAAAAAAAAwAEAAAAAAAABwAAAAA=
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PciRoot(0x1)/Pci(0x1,0x0)/Pci(0x0,0x0)</key>
<dict>
<key>@0,compatible</key>
<string>NVDA,NVMac</string>
<key>@0,device_type</key>
<string>display</string>
<key>@0,display-type</key>
<string>LCD</string>
<key>@0,name</key>
<string>NVDA,Display-A</string>
<key>@1,compatible</key>
<string>NVDA,NVMac</string>
<key>@1,device_type</key>
<string>display</string>
<key>@1,name</key>
<string>NVDA,Display-B</string>
<key>AAPL,aux-power-connected</key>
<string>0x00000001</string>
<key>AAPL,backlight-control</key>
<string>0x00000001</string>
<key>AAPL,gray-page</key>
<string>0x00000001</string>
<key>AAPL00,blackscreen-preferences</key>
<string>0x08000000</string>
<key>IOName</key>
<string>display</string>
<key>NVCAP</key>
<data>
BAAAAAAAAQACAAAAAAAAAAAAAAA=
</data>
<key>NVPM</key>
<data>
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</data>
<key>VRAM,totalsize</key>
<string>0x20000000</string>
<key>device_type</key>
<string>NVDA,GeForce</string>
<key>device_type</key>
<string>NVDA,Parent</string>
<key>model</key>
<string>nVidia GeForce 8400 GS</string>
<key>rom-revision</key>
<string>nVidia GeForce 8400 GS OpenGL Engine [EFI]</string>
</dict>
<key>PciRoot(0x1)/Pci(0x1,0x1)/Pci(0x0,0x0)</key>
<dict>
<key>@0,compatible</key>
<string>NVDA,NVMac</string>
<key>@0,device_type</key>
<string>display</string>
<key>@0,display-type</key>
<string>LCD</string>
<key>@0,name</key>
<string>NVDA,Display-A</string>
<key>@1,compatible</key>
<string>NVDA,NVMac</string>
<key>@1,device_type</key>
<string>display</string>
<key>@1,name</key>
<string>NVDA,Display-B</string>
<key>AAPL,aux-power-connected</key>
<string>0x00000001</string>
<key>AAPL,backlight-control</key>
<string>0x00000001</string>
<key>AAPL,gray-page</key>
<string>0x00000001</string>
<key>AAPL00,blackscreen-preferences</key>
<string>0x08000000</string>
<key>IOName</key>
<string>display</string>
<key>NVCAP</key>
<data>
BAAAAAAAAQACAAAAAAAAAAAAAAA=
</data>
<key>NVPM</key>
<data>
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</data>
<key>VRAM,totalsize</key>
<string>0x20000000</string>
<key>device_type</key>
<string>NVDA,GeForce</string>
<key>device_type</key>
<string>NVDA,Child</string>
<key>model</key>
<string>nVidia GeForce 8400 GS</string>
<key>rom-revision</key>
<string>nVidia GeForce 8400 GS OpenGL Engine [EFI]</string>
</dict>
</dict>
</plist>
- Save the XML file above into a file, lets say dualcard.plist
- Run the following command
Code:
gfxutil -i xml -o hex dualcard.plist dualcard.hex
Now the file dualcard.hex contains a long hex string....see next step for what to do with that.
- This is the result for /Extra/org.chameleon.Boot.plist
This code will only work if you have the same type of cards (GeForce 8400 GS) and you have the same PCI bus layout. Its better to create your own from the source XML file in the step above.
Code:
<key>device-properties</key> <string>0107000001000000020000007b0300001200000002010c00d041030a010000000101060000010101060000007fff04001e00000072006f006d002d007200650076006900730069006f006e0000002e0000006e5669646961204765466f7263652038343030204753204f70656e474c20456e67696e65205b4546495d22000000400030002c006400650076006900630065005f00740079007000650000000b000000646973706c6179100000004e0056004300410050000000180000000400000000000100020000000000000000000000320000004100410050004c002c006200610063006b006c0069006700680074002d0063006f006e00740072006f006c000000080000000100000014000000400030002c006e0061006d0065000000120000004e5644412c446973706c61792d41100000006d006f00640065006c0000001a0000006e5669646961204765466f7263652038343030204753360000004100410050004c002c006100750078002d0070006f007700650072002d0063006f006e006e0065006300740065006400000008000000010000000e0000004e00560050004d000000200000000100000000000000000000000000000000000000000000000000000014000000400031002c006e0061006d0065000000120000004e5644412c446973706c61792d42220000005600520041004d002c0074006f00740061006c00730069007a0065000000080000000000002020000000400031002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d616320000000400030002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d616322000000400031002c006400650076006900630065005f00740079007000650000000b000000646973706c617924000000400030002c0064006900730070006c00610079002d0074007900700065000000070000004c4344220000004100410050004c002c0067007200610079002d007000610067006500000008000000010000001c0000006400650076006900630065005f00740079007000650000000f0000004e5644412c506172656e741200000049004f004e0061006d00650000000b000000646973706c6179420000004100410050004c00300030002c0062006c00610063006b00730063007200650065006e002d0070007200650066006500720065006e00630065007300000008000000000000087a0300001200000002010c00d041030a010000000101060001010101060000007fff04001e00000072006f006d002d007200650076006900730069006f006e0000002e0000006e5669646961204765466f7263652038343030204753204f70656e474c20456e67696e65205b4546495d22000000400030002c006400650076006900630065005f00740079007000650000000b000000646973706c6179100000004e0056004300410050000000180000000400000000000100020000000000000000000000320000004100410050004c002c006200610063006b006c0069006700680074002d0063006f006e00740072006f006c000000080000000100000014000000400030002c006e0061006d0065000000120000004e5644412c446973706c61792d41100000006d006f00640065006c0000001a0000006e5669646961204765466f7263652038343030204753360000004100410050004c002c006100750078002d0070006f007700650072002d0063006f006e006e0065006300740065006400000008000000010000000e0000004e00560050004d000000200000000100000000000000000000000000000000000000000000000000000014000000400031002c006e0061006d0065000000120000004e5644412c446973706c61792d42220000005600520041004d002c0074006f00740061006c00730069007a0065000000080000000000002020000000400031002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d616320000000400030002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d616322000000400031002c006400650076006900630065005f00740079007000650000000b000000646973706c617924000000400030002c0064006900730070006c00610079002d0074007900700065000000070000004c4344220000004100410050004c002c0067007200610079002d007000610067006500000008000000010000001c0000006400650076006900630065005f00740079007000650000000e0000004e5644412c4368696c641200000049004f004e0061006d00650000000b000000646973706c6179420000004100410050004c00300030002c0062006c00610063006b00730063007200650065006e002d0070007200650066006500720065006e0063006500730000000800000000000008</string>
- If you want to change to orientation of the displays go into the "System Preferences" app and "Display" and "Arrangement". You can move the displays around even move the top display menu bar (or whatever that thing is called
)
Voila.....much to my relief it now works. I hope you'll have similar success.
Things I have learned along the way (Just my experience, do not take these as facts)
- For Dual video card GraphicsEnabler needed to be "No". (For my setup, with the current state of affairs) For single video card setups GraphicsEnabler is great and does a lot of configuring for you.
- adding the EFI string to /Library/Preferences/SystemConfiguration/com.apple.Boot.plist did not work for me. it needed to go in /Extra/org.chameleon.Boot.plist