- Joined
- Jan 30, 2011
- Messages
- 3
- Motherboard
- 10.8
- CPU
- i7 - 930
- Graphics
- Gforce 285
- Mac
- Classic Mac
- Mobile Phone
After a long time of try and error did i find a way to get 2 different GFX cards running under 10.7.2 Lion. To all who has problems, here a way to do it.
There are different ways. On the one side the EFI string method like aquatic did; thats not the way it runs. On the other side the DSDT method; thats the way i try to explain.
First what i want to say:At every installation, if you use Multibeast, please read first the manual of Multibeast. A lot of times i see guides which uses DSDT AND OTHER STUFF. The DSDT option at Multibeast has an explanation, read it. You don't need a lot of stuff. Everything what you need is Custom DSDT (tonymacx86) and maybe Sound (Multibeast or DSDT) and Ethernet (still in Multibeast or DSDT) and Cuda (nVidia). But you also can do Sound and Ethernet with DSDT!
What you need:
1. a DSDT - get it from tonymacx86 for your board
2. gfutil (googol it)
3. IORegistryExplorer (googol it as well)
4. DSDTSE for editing
5. newest cuda driver (nVidia internet site) and the QE/CL acceleration hack from netkas.org (there you have to look around, they developing every time new stuff). i will attach one file i found from José Luis Castiblanco (big probs) who posted a comment at http://netkas.org/?p=794 with pre edited files (http://iparsifal.org/osx/). Its for 10.7.2 and it worked for me.
Here its the place for the bundle file /System/Library/Extensions/GeForceGLDriver.bundle/Contents/MacOS/GeForceGLDriver
The steps are:
1.Get the adresses of your cards. Do this one by one. I found out, that you get other addresses if you have both cards inside. Its the same if you plug out the power cable for your cards. But take care of the PCI Slot, it should be every time the same for the cards in the whole procedure. The address look like this PciRoot(0x0)/Pci(0x6,0x0)/Pci(0x0,0x0). You will get it with gfxutil (when you google it you will find it).
2.Then you have to get the nvcap and cram. you will get it with the IORegistryExplorer(google it as well). I did it as well one by one. But i recognized that there were different nvcap values . By this step you have to try from time to time with IORegistryExplorer if the value changed(i don't know why, but its that way)
3.When you got your device address and your nvcap/vram value you have to modify your DSDT. Everything is based on the Double nVidia hack from the DSDTSE guys. You will find the part if you are searching after "pci0" in your dsdt code. Replace this code
with the part at the end of this post.
There are some parameter you have to change:
1. Device(PEG1),Device(PEG3)
2. Name (_ADR, 0x00030000)
3. NVCAP
4. "VRAM,totalsize",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x40
},
5. "device_type",
Buffer (0x0D)
{
"NVDA,Parent"
},
In the DSDT modifying code there are code blocks for every GFX card. So fill in the values for every card.
To the positions:
1. Sometimes you have to find out the device number. PEG stands for PciExpressGraphic or like this. So often the slot near to the Cpu is 1 and is counted away from the Cpu.
2. With gfxutil you get a value like PciRoot(0x0)/Pci(0x6,0x0)/Pci(0x0,0x0) --> the numbers without () and x behind PCI are the value. So in this example 00x000600000
3. NVCAP is a big block of code, you will see it in IORegistryExplorer (there you have to search after display. then you will have to highlight the display device and you will get the values on the right)
4. You will get it as well as NVCAP (if you have problem, show to up in google or to the aquatic tutorial, there is the way to get and translate the values)
5. That is the most important value to get it work (Thanks to peanut man from the tonymacx86 forum). Your first card get "Parent" and your second card get "Child" for that value.
So now if you did everything right and i didn't forget anything it should work!
PS.if you get problems at booting without changing anything instead of the DSDT stuff, try to change in the bios the first graphic boot option. It has to be PCIE or PEG depends on your main board. at the GA-X58A-UD3R its between PCIE 16-1 or PCIE 16-2. So play around with the values.
And now i have to go out with my girlfriend and see the sun and the real life!
beste
gnom
PS.
Here the code part which is important.
There are different ways. On the one side the EFI string method like aquatic did; thats not the way it runs. On the other side the DSDT method; thats the way i try to explain.
First what i want to say:At every installation, if you use Multibeast, please read first the manual of Multibeast. A lot of times i see guides which uses DSDT AND OTHER STUFF. The DSDT option at Multibeast has an explanation, read it. You don't need a lot of stuff. Everything what you need is Custom DSDT (tonymacx86) and maybe Sound (Multibeast or DSDT) and Ethernet (still in Multibeast or DSDT) and Cuda (nVidia). But you also can do Sound and Ethernet with DSDT!
What you need:
1. a DSDT - get it from tonymacx86 for your board
2. gfutil (googol it)
3. IORegistryExplorer (googol it as well)
4. DSDTSE for editing
5. newest cuda driver (nVidia internet site) and the QE/CL acceleration hack from netkas.org (there you have to look around, they developing every time new stuff). i will attach one file i found from José Luis Castiblanco (big probs) who posted a comment at http://netkas.org/?p=794 with pre edited files (http://iparsifal.org/osx/). Its for 10.7.2 and it worked for me.
Here its the place for the bundle file /System/Library/Extensions/GeForceGLDriver.bundle/Contents/MacOS/GeForceGLDriver
The steps are:
1.Get the adresses of your cards. Do this one by one. I found out, that you get other addresses if you have both cards inside. Its the same if you plug out the power cable for your cards. But take care of the PCI Slot, it should be every time the same for the cards in the whole procedure. The address look like this PciRoot(0x0)/Pci(0x6,0x0)/Pci(0x0,0x0). You will get it with gfxutil (when you google it you will find it).
2.Then you have to get the nvcap and cram. you will get it with the IORegistryExplorer(google it as well). I did it as well one by one. But i recognized that there were different nvcap values . By this step you have to try from time to time with IORegistryExplorer if the value changed(i don't know why, but its that way)
3.When you got your device address and your nvcap/vram value you have to modify your DSDT. Everything is based on the Double nVidia hack from the DSDTSE guys. You will find the part if you are searching after "pci0" in your dsdt code. Replace this code
Code:
Device (PCI0)
{
Name (_HID, EisaId ("PNP0A03"))
Name (_ADR, Zero)
Name (_UID, One)
Name (_BBN, Zero)
Method (_S3D, 0, NotSerialized)
{
If (LEqual (OSFL, 0x02))
{
Return (0x02)
}
Else
{
Return (0x03)
}
}
with the part at the end of this post.
There are some parameter you have to change:
1. Device(PEG1),Device(PEG3)
2. Name (_ADR, 0x00030000)
3. NVCAP
4. "VRAM,totalsize",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x40
},
5. "device_type",
Buffer (0x0D)
{
"NVDA,Parent"
},
In the DSDT modifying code there are code blocks for every GFX card. So fill in the values for every card.
To the positions:
1. Sometimes you have to find out the device number. PEG stands for PciExpressGraphic or like this. So often the slot near to the Cpu is 1 and is counted away from the Cpu.
2. With gfxutil you get a value like PciRoot(0x0)/Pci(0x6,0x0)/Pci(0x0,0x0) --> the numbers without () and x behind PCI are the value. So in this example 00x000600000
3. NVCAP is a big block of code, you will see it in IORegistryExplorer (there you have to search after display. then you will have to highlight the display device and you will get the values on the right)
4. You will get it as well as NVCAP (if you have problem, show to up in google or to the aquatic tutorial, there is the way to get and translate the values)
5. That is the most important value to get it work (Thanks to peanut man from the tonymacx86 forum). Your first card get "Parent" and your second card get "Child" for that value.
So now if you did everything right and i didn't forget anything it should work!
PS.if you get problems at booting without changing anything instead of the DSDT stuff, try to change in the bios the first graphic boot option. It has to be PCIE or PEG depends on your main board. at the GA-X58A-UD3R its between PCIE 16-1 or PCIE 16-2. So play around with the values.
And now i have to go out with my girlfriend and see the sun and the real life!
beste
gnom
PS.
Here the code part which is important.
Code:
Device (PCI0)
{
Name (_HID, EisaId ("PNP0A03"))
Name (_ADR, Zero)
Name (_UID, One)
Name (_BBN, Zero)
Method (_S3D, 0, NotSerialized)
{
If (LEqual (OSFL, 0x02))
{
Return (0x02)
}
Else
{
Return (0x03)
}
}
Device (PEG3)
{
Name (_ADR, 0x00070000)
Device (GFX3)
{
Name (_ADR, Zero)
Name (_SUN, One)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x1A)
{
"@0,compatible",
Buffer (0x0B)
{
"NVDA,NVMac"
},
"@0,device_type",
Buffer (0x08)
{
"display"
},
"@0,display_cfg",
Buffer (0x08)
{
0x03, 0x01, 0x00, 0x00
},
"@0,name",
Buffer (0x0F)
{
"NVDA,Display-A"
},
"@1,compatible",
Buffer (0x0B)
{
"NVDA,NVMac"
},
"@1,device_type",
Buffer (0x08)
{
"display"
},
"@1,display_cfg",
Buffer (0x08)
{
0xFF, 0xFF, 0x00, 0x01
},
"@1,name",
Buffer (0x0F)
{
"NVDA,Display-B"
},
"NVCAP",
Buffer (0x14)
{
/* 0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
/* 0008 */ 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A,
/* 0010 */ 0x00, 0x00, 0x00, 0x00
},
"VRAM,totalsize",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x40
},
"device_type",
Buffer (0x0D)
{
"NVDA,Parent"
},
"model",
Buffer (0x17)
{
"nVidia GeForce 465 GTX"
},
"rom-revision",
Buffer (0x25)
{
"nVidia GeForce 465 GTX OpenGL Engine"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}
Device (PEG1)
{
Name (_ADR, 0x00030000)
Device (GFX1)
{
Name (_ADR, Zero)
Name (_SUN, One)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x1A)
{
"@0,compatible",
Buffer (0x0B)
{
"NVDA,NVMac"
},
"@0,device_type",
Buffer (0x08)
{
"display"
},
"@0,display_cfg",
Buffer (0x08)
{
0x03, 0x01, 0x00, 0x00
},
"@0,name",
Buffer (0x0F)
{
"NVDA,Display-A"
},
"@1,compatible",
Buffer (0x0B)
{
"NVDA,NVMac"
},
"@1,device_type",
Buffer (0x08)
{
"display"
},
"@1,display_cfg",
Buffer (0x08)
{
0xFF, 0xFF, 0x00, 0x01
},
"@1,name",
Buffer (0x0F)
{
"NVDA,Display-B"
},
"NVCAP",
Buffer (0x14)
{
/* 0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
/* 0008 */ 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A,
/* 0010 */ 0x00, 0x00, 0x00, 0x00
},
"VRAM,totalsize",
Buffer (0x04)
{
0x00, 0x00, 0x00, 0x40
},
"device_type",
Buffer (0x0D)
{
"NVDA,Child"
},
"model",
Buffer (0x17)
{
"nVidia GeForce 285 GTX"
},
"rom-revision",
Buffer (0x25)
{
"nVidia GeForce 285 GTX OpenGL Engine"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}