Jump to content

Basic guide about nVidia kexts


oldnapalm
 Share

87 posts in this topic

Recommended Posts

Many people ask about kexts for nVidia video cards, the answer is they are already there, they're part of Mac OS X. The problem is they were not loaded because the card was not recognized.

 

Update: for the new "Fermi" cards you need to install the drivers from nVidia, they are not included in Mac OS

http://www.nvidia.com/object/quadro-macosx...f01-driver.html

 

In order for it to be recognized, we have to inject some properties in the device tree. The Chameleon v2 bootloader does that automatically for many cards, you just have to enable the GraphicsEnabler option and configure the PciRoot (only if it's not zero).

 

In the file com.apple.Boot.plist

	<key>GraphicsEnabler</key>
<string>y</string>
<key>PciRoot</key>
<string>1</string>

 

You can use the app Lizard (http://forum.voodooprojects.org/index.php/topic,842.0.html).

Check the Graphics Injection option, click on Auto-detect value in PCIRoot and save.

 

lizard.png

 

In Lizard preferences, configure the Extra folder Path. Select the Extra folder in the partition where you installed Chameleon.

 

configu.png

 

There are kexts for that (NVenabler, NVinject, EvoEnabler, among others) but they do exactly the same thing, inject properties, they are not the drivers themselves.

http://nawcom.com/osx86/files/10.5/Graphic...IDIA/Injectors/

http://nawcom.com/osx86/files/10.6/Graphic...IDIA/Injectors/

 

 

It's also possible to pass the properties manually to Chameleon.

 

In the file com.apple.Boot.plist (or using Lizard)

	<key>device-properties</key>
<string>[hexadecimal EFI string]</string>

 

To get the currently injected properties you can use the command

ioreg -lw0 -p IODeviceTree -n efi -r -x | grep device-properties | sed 's/.*<//;s/>.*//;' > device-properties.hex

 

To convert the file device-properties.hex (hexadecimal EFI string) to plist (property list file) you can use OSX86Tools (http://code.google.com/p/osx86tools/).

 

osx86tools.png

 

OSX86Tools can also be used to generate an EFI string.

 

efistring.png

 

Another way to inject the properties is by DSDT, check this topic

http://www.insanelymac.com/forum/index.php?showtopic=252525

 

 

For some cards it may be necessary to insert its device ID into the file Info.plist of kexts NVDAResman and NVDANV40Hal (series 6 and 7) or NVDANV50Hal (series 8 and up).

 

See how to find the device ID in this topic

http://www.insanelymac.com/forum/index.php?showtopic=219584

 

Edit the Info.plist file, for example

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /System/Library/Extensions/NVDAResman.kext/Contents/Info.plist

and insert the ID of your card into IOPCIPrimaryMatch key, for example

	<key>IOPCIPrimaryMatch</key>
<string>[color="#FF0000"]0x06e410de[/color] 0x011010de&0xfff8ffff 0x017010de&0xfff8ffff
0x017910de 0x018010de&0xfff8ffff 0x018810de 0x018910de 0x020010de&0xfff8ffff
0x025010de&0xfff8ffff 0x028010de&0xfff8ffff 0x030010de&0xfff8ffff
0x031010de&0xfff8ffff 0x031910de 0x034910de 0x05e010de&0xfff8ffff
0x05f010de&0xfff0ffff</string>

After saving and closing the file, repair it's permissions

sudo chown 0:0 /System/Library/Extensions/NVDAResman.kext/Contents/Info.plist
sudo chmod 755 /System/Library/Extensions/NVDAResman.kext/Contents/Info.plist

Repeat the procedure for kext NVDANV40Hal or NVDANV50Hal, depending on your card's model, and run this command to have the kexts cache updated

sudo touch /System/Library/Extensions

  • Like 1
Link to comment
Share on other sites

Ok Everything seems to be great out of the box using [url=&quot;http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/&quot;]#####[/url] no dst with just graphics enabler on in Chameleon

 

 

Portal / QE /core / Torchlight all work great , i have the ripple effect in the dashboard things seem snappy

 

 

BUT under system profiler it says unknown nvidia ... it shows the correct ram and its the correct res , games also work

 

 

Could my graphics not quite be perfect if its showing unknown ?

 

Chipset Model: Unknown

Type: GPU

Bus: PCIe

Slot: Slot-1

PCIe Lane Width: x16

VRAM (Total): 1024 MB

Vendor: NVIDIA (0x10de)

Device ID: 0x0618

Revision ID: 0x00a2

ROM Revision: xx.xx.xx - internal

Displays:

Display:

Resolution: 1600 x 900

Pixel Depth: 32-Bit Color (ARGB8888)

Main Display: Yes

Mirror: Off

Online: Yes

Built-In: Yes

Display Connector:

Status: No Display Connected

 

 

 

Sorry running a gtx 260m > http://www.google.com/products/catalog?q=g...p;os=tech-specs

 

Thats the EXACT system i have configured the Exact same way cept i'm runnin a extra harddrive

Link to comment
Share on other sites

It says "Unknown" because your card is not listed in the Chameleon version you are using. I believe you will have no problems with that. It is included in the current trunk version (line 294)

http://forge.voodooprojects.org/p/chameleo...ibsaio/nvidia.c

 

 

 

Ty, Stright Answer TY

 

I'll Download and Install the Latest trunk and try that out , If it screws up I'm guessing all i need to use is the [url=&quot;http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/&quot;]#####[/url] cd and reinstall the version of chameleon i'm running now ? correct

 

Thanks ! IT was a weird question sorry and You seemed to actually know your stuff sorry if i hijacked your thread

Link to comment
Share on other sites

If it screws up I'm guessing all i need to use is the [url=&quot;http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/&quot;]#####[/url] cd and reinstall the version of chameleon i'm running now ? correct

Right, but I believe there will be no problem. You can get a recent installer package at this thread (check recent posts)

http://www.insanelymac.com/forum/index.php...t&p=1532497

 

Thanks ! IT was a weird question sorry and You seemed to actually know your stuff sorry if i hijacked your thread

You are welcome. No worries, it's related to thread subject.

Link to comment
Share on other sites

Hi,

 

Thanks for your post, it's very useful for me.

 

I am running Leo4allv3 on my Dell E521 AMD system, details below. i have yet to get the graphics card fully recognized and different resolutions available from the basic 1024x768 and QE/CI enabled.

 

I had an ATI Radeon x1300 Pro Graphics card but saw on all the forums that it hadn't been successfully installed by anyone. So I have replaced it with an nVidia GeForce 7300 GT 256mb card.

 

I do have a couple of questions about your post:

 

Am I right in my understanding from your post that you either:

 

1.) Install Chameleon,

2. ) Edit the com.apple.Boot.plist

3.) Install Lizard and use the Graphics Injection option, click on Auto-detect value in PCIRoot

4.) in Lizard configure the Extra folder Path where Chameleon is installed, save.

5.) reboot and boomshanka!

 

OR

 

Install a kext such as NVinject?

 

 

Now this is where your post loses me from the point where you say 'it's also possible to pass the properties manually to Chameleon'.

 

Would you do this as well as using Lizard or instead of?

 

I have used EFI Studio to create the Hex input for my com.apple.Boot.plist but it still doesn't work.

Do the EFI Hex strings work with AMD chips?

 

In some posts it tells you to edit the following: GeForce.kext, NVDANV40Hal.kext and NVDAResman.kext

I don't have these files in the '/System/Library/Extensions/' folder. I do have GeoForce7xxxGLDriver.bundle

Is there a way to load the appropriate kexts, or do I not need them?

 

I have tried many ways to get my graphics working, Natit, NVinject and more, but to no avail. I'm just a bit confused as to the process of getting Mac OS to recognise the card and load the appropriate kexts.

 

Quite a few questions I know! Your help would be really appreciated.

 

 

System info:

Dell Dimension E521

AMD Athlon 64 X2 4200+

SATA 250GB internal HDD

2GB DDR2 RAM

nVidia GeForce 7300 GT 256mb

Leo4allv3 installed and working - 1024x768 resolution

 

Thanks

Link to comment
Share on other sites

Am I right in my understanding from your post that you either:

 

1.) Install Chameleon,

2. ) Edit the com.apple.Boot.plist

3.) Install Lizard and use the Graphics Injection option, click on Auto-detect value in PCIRoot

4.) in Lizard configure the Extra folder Path where Chameleon is installed, save.

5.) reboot and boomshanka!

 

OR

 

Install a kext such as NVinject?

Correct, but in the first option you will do step 2 OR 3 and 4, not all of them. You can edit the file manually, or use Lizard to do that.

 

Now this is where your post loses me from the point where you say 'it's also possible to pass the properties manually to Chameleon'.

 

Would you do this as well as using Lizard or instead of?

Like in the first option, you can add the device-properties string manually (text editor) or using Lizard.

 

I have used EFI Studio to create the Hex input for my com.apple.Boot.plist but it still doesn't work.

Do the EFI Hex strings work with AMD chips?

If you mean the CPU, yes, they should work.

 

In some posts it tells you to edit the following: GeForce.kext, NVDANV40Hal.kext and NVDAResman.kext

I don't have these files in the '/System/Library/Extensions/' folder. I do have GeoForce7xxxGLDriver.bundle

Is there a way to load the appropriate kexts, or do I not need them?

 

I have tried many ways to get my graphics working, Natit, NVinject and more, but to no avail. I'm just a bit confused as to the process of getting Mac OS to recognise the card and load the appropriate kexts.

You need the kexts NVDAResman and NVDANV40Hal in /System/Library/Extensions, if you don't have them, that's why the properties injection is not working.

Link to comment
Share on other sites

Hey OldNapalm,

 

I followed this method and have the card working now at proper resolution in 32 bit mode but no QE so far. The only thing I have not done is putting the DeviceID into the IOMatch string. My DeviceID is 0x0393, is that all I drop in?

 

I have it working great in 10.5.7 without it.

 

Thanks!

 

Forgiveness

 

Digital Dreamer SL 10.6.4

Giga EX58-UD3R

nVidia GeForce 7300 GT 256mb

Link to comment
Share on other sites

Thanks Oldnapalm.

 

I think not having the NVDAResman and NVDANV40Hal kexts has been the issue all along. I'm not sure why they haven't been loaded on install. A couple more questions coming your way...

 

Does Leo4allv3 not have these present as standard, or just not loading them?

 

If not, where would I find and how do I load these files?

 

If I'm getting this right would I now need to:

 

1.) Install NVDAResman and NVDANV40Hal kexts (Do I also need Geforce.kext as well?)

2.) Install Chameleon v2,

3.) Edit the com.apple.Boot.plist, with:

 

<key>GraphicsEnabler</key>

<string>y</string>

<key>PciRoot</key>

<string>1</string>

 

How does Chameleon know which graphics card I have? Would I not need to edit the NVDAResman and NVDANV40Hal kexts?

 

Is Lizard the front end to Chameleon, or a different app?

 

Sorry to be a pain on this one. I've just spent too much time looping round and getting nowhere.

 

Thanks again

Link to comment
Share on other sites

My DeviceID is 0x0393, is that all I drop in?

Insert 0x039310de followed by a space to separate it from other values.

 

10de = nVidia's vendor ID

 

Does Leo4allv3 not have these present as standard, or just not loading them?

 

If not, where would I find and how do I load these files?

You can use the Pacifist app to browse the install DVD and extract the desired kexts. If they are not there you will have to get them from a retail DVD.

 

If I'm getting this right would I now need to:

 

1.) Install NVDAResman and NVDANV40Hal kexts (Do I also need Geforce.kext as well?)

2.) Install Chameleon v2,

3.) Edit the com.apple.Boot.plist, with:

 

GraphicsEnabler

y

PciRoot

1

PciRoot is not always 1, that's why I suggest using Lizard to auto detect the value. Or you can check in IORegistryExplorer.

 

How does Chameleon know which graphics card I have?

It reads the card's device ID (see post #3 above).

 

Would I not need to edit the NVDAResman and NVDANV40Hal kexts?

If they don't load without editing then you do need to edit them.

 

Is Lizard the front end to Chameleon, or a different app?

It's a front end to Chameleon configuration.

Link to comment
Share on other sites

Hi,

 

I've tried the chameleon v2 install 3 times now, two with separate installers and once manually. each time on reboot I just get 'Boot from CD' on a black screen and nothing else. I can't get past that. I have had to reinstall a few times but now have the NVDAResman and NVDANV40Hal kexts.

 

I now have the Nvidia card recognised and different resolutions but QE still isn't working.

 

Is there a way of manually getting the QE to work without using Chameleon and Lizard?

 

There is either some incompatibility with my set up or I am missing out a step.

 

Thanks

Link to comment
Share on other sites

Hi,

 

I haven't edited theNVDAResman and NVDANV40Hal kexts yet as I wanted to confirm what the correct ID was to put under the IOPCIPRIMARYMATCH key.

 

The ID I have for the card listed under my system is: Device ID 0x01df and Vendor 0x10de. Do you know if these are the correct values to use? They don't look like the other values in the list.

 

Unfortunately I tried to get the SytemInfo03 application to work to check on the Nvidia 7300GT device ID, but I can't get the up to date version of Java to run it. I'm stuck on 10.5.2 a the moment and can't upgrade far enough for compatibility.

 

I feel like the walls a re closing in on me - I'm not getting very far with this!

 

Thanks for bearing with me. ;o)

Link to comment
Share on other sites

Hi,

 

Frustrated :0(

 

I've inserted the ID into all the kexts NVDAResman and NVDANV40Hal and rest all the permissions as per your instructions - no joy.

 

I also entered the ID into the NVDANV30Hal and NVDANV50Hal kexts - no joy there either. Mac OS seems to give the card a 7300GS ID when the car is a 7300GT. I'm not sure if that is an issue? I did try with the 7300GT IDs as well.

 

I hate to let things get the better off me, but I think I would get to a working solution quicker doing a paper round and saving up to buy an overpriced iMac! ;o)

 

I was really looking forward to trying the photo and video editing software as well!!!

 

Thanks for your help.

Link to comment
Share on other sites

  • 2 weeks later...

Kind of a dumb question, but I used [url=&quot;http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/&quot;]#####[/url], which installs Chameleon RC4 by default. But when I boot up Lizard, I just get a red dot saying "Chameleon?" Also, will this work for the 9400GT?

Link to comment
Share on other sites

Kind of a dumb question, but I used [url=&quot;http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/&quot;]#####[/url], which installs Chameleon RC4 by default. But when I boot up Lizard, I just get a red dot saying "Chameleon?" Also, will this work for the 9400GT?

That's because Lizard checks Chameleon's version, and I think the one installed by [url=&quot;http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/&quot;]#####[/url] is modified, but it should work, yes.

Link to comment
Share on other sites

hi all,

 

i have the a problem with my graphic card. or i think its the refresh rate. i have a resolution of 1440x900 (internal lcd) but its not showing me a smooth transition. so that must be the refresh rate, right? the system profiler shows only a total of 32MB VRAM but it supposed to be a 256MB. here's what it says:

 

Display:

 

Type: GPU

Bus: PCIe

PCIe Lane Width: x16

VRAM(Total): 32 MB

Vendor: NVIDIA (ox10de)

Device ID: 0x0426

Revision ID: 0x00a1

 

Display:

Resolution: 1440x900

Pixel Depth: 32-bit Color (ARGB8888)

Main Display: Yes

Mirror: Off

Online: Yes

 

My graphic card is NVidia 8400M GT.

 

By the way, on your post, one of the choices to have this nvidia kext is to have the Chameleon bootloader right? I happen to have an Ubuntu 10.04 and GRUB2 as my bootloader. Does installing this Chameleon affect my GRUB2 bootloader?

 

Please help me with this, cause its the last kext I've been searching for days now. I've tried NVInject and didn't work out. I also tried updating my kernel from Darwin 10.6.2 to 10.6.4 (coz' the nvdia graphic driver update require the 10.6.4 kernel) but it only messed up my system and I have to reinstall everything from the scratch.

 

by the way, my graphic card is not listed in the list of supported cards in osx86tool in gfx strings.

Link to comment
Share on other sites

You can install Chameleon, but don't install it to MBR, just copy the boot file to the root of Mac OS partition and add this to /etc/grub.d/40_custom

menuentry "Mac OS X Chameleon" {
insmod hfsplus
set root=(hd0,X)
multiboot /boot
}

 

Although I'm not sure if GraphicsEnabler supports your video card.

Link to comment
Share on other sites

You can install Chameleon, but don't install it to MBR, just copy the boot file to the root of Mac OS partition and add this to /etc/grub.d/40_custom

menuentry "Mac OS X Chameleon" {
insmod hfsplus
set root=(hd0,X)
multiboot /boot
}

 

Although I'm not sure if GraphicsEnabler supports your video card.

 

thanks for your quick reply sir. i did a little study on this Chameleon bootloader. and I think this might be a good boot loader to change my GRUB2. since it has a GUI as a bootloader. Now my concern is if I install it as my new bootloader, can it detect my win7 and my ubuntu? I'm going to try your advice and hope for a change in OSX transitions. :( I'm really amazed on this Chameleon since it uses icons as my list of OS unlike GRUB2 that only shows names of the OS.

Link to comment
Share on other sites

 Share

×
×
  • Create New...