Contribute
Register

GTX 470 Problem

Status
Not open for further replies.
Joined
Jul 23, 2012
Messages
24
Motherboard
ASUS P8Z77-i Deluxe
CPU
i5-3450
Graphics
GTX 650
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
I can boot into OSX without any problems with the on board graphics (HD2500) on my ASUS P8ZZ-i Deluxe Motherboard.
But when I try to boot with my GTX 470 GPU it just goes to the bootloader screen, (in verbose mode) goes trough all text (with some audio problems I think), and then it gives me a black screen and HDMI stops sending singnal to my monitor. I havn't booted with on board gpu in verbose mode, so I do not know if it gives audio-failures there aswell.

How do I fix this? I am, obviously, on Mountain Lion.
 
I installed the driver for nvidia in MultiBeast aswell as the CUDA driver. I also set some option in Chameleon Wizard and now it boots up fine on the GTX 470.

It says that I have NVIDIA Chip Model 5 MB in "About My Mac". And the highest resolution I can set is 1280x1024.

How do I make it so that it recognizes my full 1028MB and let's me use 1920x1080? :problem:
 
I disabled PCIRoot=1 in Chameleon Wizard and rebooted. Now it recognizes 1280MB of VRAM, but there is still no acceleration and I can still not have any other resolution than 1280x1024.
 
Hi Vufuzi,

I have the GTX 480, I can't get past the apple logo on boot for ML :( I'm watching this thread though!
 
I have an EVGA GTX 470 SC, and it was not simple to get working (under 10.6, 10.7, or 10.8). After trying pretty much everything under the sun, the only thing that allowed me to get full functionality from the card was to add the relevant information (NVCap and other card-specific data) directly to my DSDT file. I used the following as a template, adding in my own NVCap, device descriptions, VRAM size, ROM Revision, and so forth to match my actual card:

Previously the section of the DSDT looked like:
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)
                }
            }

Edited, it looks like:
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 (PEGP)
            {
                Name (_ADR, 0x00030000)
                Device (GFX0)
                {
                    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,GeForce"
                                }, 


                                "model", 
                                Buffer (0x17)
                                {
                                    "nVidia GeForce 9400 GT"
                                }, 


                                "rom-revision", 
                                Buffer (0x25)
                                {
                                    "nVidia GeForce 9400 GT OpenGL Engine"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }
            }
 
I have an EVGA GTX 470 SC, and it was not simple to get working (under 10.6, 10.7, or 10.8). After trying pretty much everything under the sun, the only thing that allowed me to get full functionality from the card was to add the relevant information (NVCap and other card-specific data) directly to my DSDT file. I used the following as a template, adding in my own NVCap, device descriptions, VRAM size, ROM Revision, and so forth to match my actual card:


Intresting, I'll try that!

I just tried putting on my Quadro FX 370 card aswell, same thing happens there.

EDIT:
I tried to edit the DSDT. My system halted on boot. Isn't there any other solution? o_O
 
Note that the additions I posted are just a template; they're not correct for *any* 470, and you'll need to extract your own make/model/revision-specific NVCap data and other values and use those, then recompile your DSDT in to an AML file.

The 470 isn't like anything that has ever been in a real Mac, and as such I had zero success just adding information about the Device ID to the Nvidia kexts to tell the OS to load them. You'll have to provide information to the OS at a very low level to get it to work, and the DSDT is the best point at which to do so. The only other method I had any success with was creating a gfxutil-compatible plist file specific to my card, using gfxutil to turn that plist in to hex format, and adding that huge hex EFI string to my org.chameleon.boot.plist as a "device-properties" key.

Note that using an EFI string will generally fail if you have GraphicsEnabler turned on in Chameleon as well; I don't know if it's necessary or not, but when using the DSDT method I have it turned on and all is well.

Attached you can see the graphics section of my System Profiler showing full support for my card once the DSDT is set correctly.
 

Attachments

  • Screen Shot 2012-08-02 at 8.36.56 AM.png
    Screen Shot 2012-08-02 at 8.36.56 AM.png
    112.7 KB · Views: 293
Note that the additions I posted are just a template; they're not correct for *any* 470, and you'll need to extract your own make/model/revision-specific NVCap data and other values and use those, then recompile your DSDT in to an AML file.

The 470 isn't like anything that has ever been in a real Mac, and as such I had zero success just adding information about the Device ID to the Nvidia kexts to tell the OS to load them. You'll have to provide information to the OS at a very low level to get it to work, and the DSDT is the best point at which to do so. The only other method I had any success with was creating a gfxutil-compatible plist file specific to my card, using gfxutil to turn that plist in to hex format, and adding that huge hex EFI string to my org.chameleon.boot.plist as a "device-properties" key.

Note that using an EFI string will generally fail if you have GraphicsEnabler turned on in Chameleon as well; I don't know if it's necessary or not, but when using the DSDT method I have it turned on and all is well.

Attached you can see the graphics section of my System Profiler showing full support for my card once the DSDT is set correctly.

Is there a tutorial or something, or could you make one. I don't wanna mess up the whole installation now when I've gotten so far. It took me more than 2 days to get Mountain Lion up an running, an the only problem I have is the graphics.
 
A tutorial about which part? I found pretty much nothing online about the 470 and had to piece things together from information about other NVidia cards.

The problem is that a lot of this stuff is very specific to your exact hardware, and thus can't be copied from another setup. The NVCap data, for example, is essentially a representation of the ports your exact card has and how they're physically wired (for example, some cards have 2 DVI ports and an HDMI port, but the HDMI shares a channel with one of the DVI ports and thus can't be used at the same time, whereas some cards have a single DVI port and an HDMI port that can both be used, or just 2 DVI, and so on; that needs to be specified in the NVCap), and you'll need to extract that from your specific card, along with the exact ROM revision and whatnot. The reason you're getting a black screen is because the OS has no idea how to address the outputs, and when you do get a display the resolution is limited because it is working in a generic fall-back state that should work with nearly any video card (and isn't accelerated, no QE/CI support).
 
Status
Not open for further replies.
Back
Top