Jump to content

Basic guide about nVidia kexts


  • Please log in to reply
86 replies to this topic

#1
oldnapalm

oldnapalm

    InsanelyMac V.I.P.

  • Moderators
  • 6,849 posts
  • Gender:Male
  • Location:Brazil
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.co...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.voodoop...opic,842.0.html).
Check the Graphics Injection option, click on Auto-detect value in PCIRoot and save.

Posted Image

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

Posted Image

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/os...IDIA/Injectors/
http://nawcom.com/os...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/).

Posted Image

OSX86Tools can also be used to generate an EFI string.

Posted Image

Another way to inject the properties is by DSDT, check this topic
http://www.insanelym...howtopic=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.insanelym...howtopic=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
0x06e410de 0x011010de&amp;0xfff8ffff 0x017010de&amp;0xfff8ffff
0x017910de 0x018010de&amp;0xfff8ffff 0x018810de 0x018910de 0x020010de&amp;0xfff8ffff
0x025010de&amp;0xfff8ffff 0x028010de&amp;0xfff8ffff 0x030010de&amp;0xfff8ffff
0x031010de&amp;0xfff8ffff 0x031910de 0x034910de 0x05e010de&amp;0xfff8ffff
0x05f010de&amp;0xfff0ffff</string>
_linenums:0'><key>IOPCIPrimaryMatch</key> <string>0x06e410de 0x011010de&amp;0xfff8ffff 0x017010de&amp;0xfff8ffff0x017910de 0x018010de&amp;0xfff8ffff 0x018810de 0x018910de 0x020010de&amp;0xfff8ffff0x025010de&amp;0xfff8ffff 0x028010de&amp;0xfff8ffff 0x030010de&amp;0xfff8ffff0x031010de&amp;0xfff8ffff 0x031910de 0x034910de 0x05e010de&amp;0xfff8ffff0x05f010de&amp;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


#2
SerpentDrago

SerpentDrago

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 5 posts
Ok Everything seems to be great out of the box using ##### 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.co...p;os=tech-specs

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

#3
oldnapalm

oldnapalm

    InsanelyMac V.I.P.

  • Moderators
  • 6,849 posts
  • Gender:Male
  • Location:Brazil
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)

{ 0x10DE0618, "GeForce GTX 260M" },

http://forge.voodoop...ibsaio/nvidia.c

#4
SerpentDrago

SerpentDrago

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 5 posts

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.voodoop...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 ##### 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

#5
oldnapalm

oldnapalm

    InsanelyMac V.I.P.

  • Moderators
  • 6,849 posts
  • Gender:Male
  • Location:Brazil

If it screws up I'm guessing all i need to use is the iboot 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.insanelym...p...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.

#6
Littifus

Littifus

    InsanelyMac Protégé

  • Members
  • Pip
  • 11 posts
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

#7
oldnapalm

oldnapalm

    InsanelyMac V.I.P.

  • Moderators
  • 6,849 posts
  • Gender:Male
  • Location:Brazil

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.

#8
forgiveness

forgiveness

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 1 posts
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

#9
Littifus

Littifus

    InsanelyMac Protégé

  • Members
  • Pip
  • 11 posts
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

#10
oldnapalm

oldnapalm

    InsanelyMac V.I.P.

  • Moderators
  • 6,849 posts
  • Gender:Male
  • Location:Brazil

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:

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

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.

#11
Littifus

Littifus

    InsanelyMac Protégé

  • Members
  • Pip
  • 11 posts
Thanks Oldnapalm.

I'll have a bash at getting the kexts loaded and follow your instructions. I appreciate your swift answers to my questions.

Cheers

Littifus

#12
Littifus

Littifus

    InsanelyMac Protégé

  • Members
  • Pip
  • 11 posts
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

#13
oldnapalm

oldnapalm

    InsanelyMac V.I.P.

  • Moderators
  • 6,849 posts
  • Gender:Male
  • Location:Brazil
Have you tried adding your card's device ID to NVDANV40Hal?

AFAIK the 7300 only works if you run kernel and kexts in 32 bit mode (arch=i386).

#14
Littifus

Littifus

    InsanelyMac Protégé

  • Members
  • Pip
  • 11 posts
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)

#15
oldnapalm

oldnapalm

    InsanelyMac V.I.P.

  • Moderators
  • 6,849 posts
  • Gender:Male
  • Location:Brazil
The ID seems correct, you should insert it in this form: 0x01df10de

http://pci-ids.ucw.c...ad/PC/10de/01df

It's really recommended to update to 10.5.8.

#16
toanbk

toanbk

    InsanelyMac Protégé

  • Members
  • Pip
  • 22 posts
How to make Nvidia Geforce 310M (0a7010de) work ?

#17
oldnapalm

oldnapalm

    InsanelyMac V.I.P.

  • Moderators
  • 6,849 posts
  • Gender:Male
  • Location:Brazil
I haven't tested this card myself.

Maybe you need newer nVidia driver?
http://www.insanelym...howtopic=222913

And probably a recent Chameleon RC5 build to activate it, or an injector kext like suggested here
http://www.insanelym...p;#entry1502406

#18
toanbk

toanbk

    InsanelyMac Protégé

  • Members
  • Pip
  • 22 posts
I Tried it, but it not work for me, my laptop have two VGA card

#19
Littifus

Littifus

    InsanelyMac Protégé

  • Members
  • Pip
  • 11 posts
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.

#20
oldnapalm

oldnapalm

    InsanelyMac V.I.P.

  • Moderators
  • 6,849 posts
  • Gender:Male
  • Location:Brazil
0x01df is the ID of the 7300 GS. Where did you get this ID from? You should inject the ID of your own card into the kext. If System Info doesn't work because of Java version, use "lspci -nn".

http://www.osx86.es/?p=620





1 user(s) are reading this topic

1 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