Nvenabler Testing And Discussion, new universal kext for nVidia |
|
|

Jun 2 2009, 09:18 PM


- Advanced Member
- Group: Administrators
- Posts: 124
Fassl, Turbo and I are proud to present our new baby : NVEnabler.
The purpose of this kext is to replace all other methods to provide an accurate and universal support for nVidia cards.
This kext allows nVidia driver load by injecting the required settings, and automatically tweaks them according to your hardware by directly reading your VGA ROM.
It also does on-the-fly ROM patching to give a stabler output configuration.
This is an alpha version and it's not finished. We hope to add more features, but for that, we need your feedback.
If it doesn't work, please post here an ioreg, with description of the problem, infos about your card, and how you are using the outputs.
You can try to manually inject setting, for that check the plist, it works as any injecter (more infos
here)
If you find something that helps, please keep us updated.
We consider by convention that ports close to the motherboard are VGA0/DVI0.
To get an ioreg, in terminal type : ioreg -lw0 > NVEnabler_ioreg_dump_$USER.txt
This must be done when NVEnabler is loaded, otherwise it's useless. If you can't boot with NVE, launch the system with -s, load NVE with kextload and run the IOReg command.
What it does :- Gets required settings from ROM, removing the need of tweaking configuration for each card
- Automatic NVCAP creation
- Automatic VRAM size detection (Kabyl)
- Corrects the ROM (without flashing) to make output definition comply with mac standards.
- Fixes TV output
- Supports for video BIOS overriding : it can load any BIOS as replacement of the integrated one, without flashing. Useful for testing or to bypass ROM size limits. It can be used on mac pro to drive a PC card.
Not supported :- Graphic controllers integrated to chipset don't work (except 9400)
- Some NVS 140 & 570 (might be fixed later)
- VAIO internal screen
Install :Remove any injecter / GFX device property string / DSDT edit for GFX
Put the kext in /System/Library/Extensions/ or /Extra
Fix permissions in terminal and type : touch /System/Library/Extensions (do it again if you modify the plist).
You still need to put your device ID in NVDAResman.kext and NVDANVX0hal.kext (depending on the GPU generation).
Reboot.
IMPORTANT NOTE : That kext defines fixed channels for your connectors. All cards have 2 channels and a various number of connectors.
In any case, you can't plug more than 1 display on the same channel. In other words you must use a different channel for each display.
- For single DVI cards : DVI/VGA port is on channel 1 (so VGA port on #2)
- For dual DVI cards : DVI0/VGA0 is on channel 1
- For laptops : internal screen is on channel 1
TV and other ports are put on the 2nd channel. (so use one of those at time). However some cards have uncommon layouts, if it doesn't work, just try an other port.
eg : plugging TV & VGA0 won't work on single DVI cards because both are fixed on channel 2. so if you need VGA and TV at same time use a DVI>VGA adapter, then each connector will have its own channel and it will be OK.
Known issues :
- Primary display may go black on second detection.
- Hotplug detection is missing
- display-cfg is hardcoded
- Many mysterious strings to reverse and inject
- Multiple cards are not (automatically) supported yet, but you can manually tweak the plist to fix it yourself
We are currently getting trouble with the display-cfg string. We don't know how it works at all so far. If you're having problems with NVEnabler, it's most probably because of that string (blue or black screen at boot, screen going off, wrong one on...).
We then suggest you to try different values in the plist, taken from real macs. That's all what we can do for the moment.
there's one string for each screen (@0,Display-cfg & @1,Display-cfg)
macbook pro 8600GT : 03010000 - ffff0001
macbook pro unibody 9400 : 03010300 - ffff0801
macbook pro white 9400 : 03010300 - ffff0201
mac pro 7300GT : ffff3600 - 00ff3e01
mac pro 8800GT : 03010000 - ffff0001
imac 24" 7600GT : 03035000 - ffff3601
Apple TV 7300Go : 01ff0000
powermac 6800GT : 00ff3e01 - 00ff3600
What we notice is that it always ends by 00 for Display-A and 01 for Display-B.
We know it affects outputs support.
If there's some clever guy who understand how it might work, any hint is welcome :-)
Thanks to iNDi, Roisoft and Kytzu for testing
Edit by Krazubu :
New 0.1b version Snow Leopard 64bit ready :
NVEnabler_64.kext.zip ( 27.44K )
Number of downloads: 1706 (no other modification).
Get the kext here :
NVEnabler_0.1.kext.zip ( 19.77K )
Number of downloads: 4014Edit by fassl:
Same kext without display-cfg properties:
NVEnabler_no_display_cfg_0.1.kext.zip ( 19.54K )
Number of downloads: 617Please don't upload it on other servers and don't repack it, thank you.
Good luck

Jun 6 2009, 09:51 AM

- Advanced Member
- Group: Staff
- Posts: 101
HI,
Great job!
I test it on my lappie(Krazubu know that i have a weird ROM) and it dosen't work :|
The results is black screen.
Edit by Krazubu : debug info removed

Jun 6 2009, 11:39 AM


- Advanced Member
- Group: Administrators
- Posts: 124
@ THe King
I need an IOReg

Jun 7 2009, 12:43 PM


- Member
- Group: Staff
- Posts: 28
QUOTE (Krazubu @ Jun 2 2009, 11:18 PM)

there's one string for each screen (@0,Display-cfg & @1,Display-cfg)
macbook pro 8600GT : 03010000 - ffff0001
macbook pro unibody 9400 : 03010300 - ffff0801
macbook pro white 9400 : 03010300 - ffff0201
mac pro 7300GT : ffff3600 - 00ff3e01
mac pro 8800GT : 03010000 - ffff0001
imac 24" 7600GT : 03035000 - ffff3601
Apple TV 7300Go : 01ff0000
The nvidia drivers usually use big endian, so a pattern might be easier to find by considering that
CODE
8600GT: 00 00 01 03 - 01 00 FF FF
9400 : 00 03 01 03 - 01 08 FF FF
9400 : 00 03 01 03 - 01 02 FF FF
7300GT: 00 36 FF FF - 01 3E FF 00
8800GT: 00 00 01 03 - 01 00 FF FF
7600GT: 00 50 03 03 - 01 36 FF FF
7300GO: 00 00 FF 01
This post has been edited by Krazubu: Jun 9 2009, 10:49 PM

Jun 9 2009, 04:42 PM


- Initiate
- Group: Comrade
- Posts: 11
This looks very interesting

I will try it soon and report back.
QUOTE
The task ahead of you is never as great as the strength within you.
2 Systems running OS X. Laptop and PC.

Jun 11 2009, 02:04 PM


- Member
- Group: Comrade
- Posts: 33
Thanks again pal
Thanks for your custom ROM patch for my 8600GT . It did work nicely and things. I've to admit this is one of the best injectors which I've seen ever. It does it nicely
Good job
Dell Dimension 9100 | Intel Pentium D 830 3.00Ghz | 4GB 533Mhz RAM | 750GB combined HDD storage | GeForce 8600GT (EFI strings) | ST9200 HD Audio (AppleHDA.kext from OSX 10.4.4) | D-link GWL-520G+ Rev B1 | OSX 10.5.7 (Voodoo Kernel - 9.7.0) , Win Vista ,Debian etch , Win XP
MSI Wind U100-835MY | Intel Atom N280 1.66Ghz | 2GB 667Mhz RAM | 160GB HDD | GMA 950 (patched kext) | ALC88x Audio (VoodooHDA) | AR242x (AR5006EXS) | CSR Bluetooth | OSX 10.5.7 (Retail Disc install) + WinXP
iBook G4 | PPC G4 7447A 1.06Ghz | 512MB DDR1 | 30GB HDD | AC97 audio | ATI Mobility Radeon 9200 | BCM4311 Apple Airport | OSX 10.5.7
Mac Mini G4 | PPC G4 7447A 1.42Ghz | 1GB DDR1 | 100GB HDD | AC97 audio | ATI Radeon 9200 | BCM Bluetooth (BTO) | OSX 10.5.7 + ubuntu 8.04

Jun 14 2009, 08:47 AM

- Initiate
- Group: Comrade
- Posts: 5
You say you don't know how it works with display-cfg strings... Can you tell me what it's for in the first place? I'm having trouble with Backlight on my laptop and nothing seems to help, neither editing dsdt, nor patched IOGraphicsFamily... Is there any possibility at all that this one might help? up to now i inject my GF9600M GT through DSDT
Vanilla 10.5.6, OpenSUSE 11.1, WinVista, Chameleon 2.0 RC1
Samsung R560 P8400 Madril -- no BacklightControl, neither through DSDT nor modified IOGraphicsFamily.kext
- Intel® Core™ 2 Duo Prozessor P8400 2,26 GHz, 3 MB Cache, 1066 MHz FSB (both working)
- 4 GB (2x 2GB) 1066 MHz DDR3
- NVIDIA® GeForce® 9600M GT (QE/CI with DSDT-patch)
- HDMI und VGA Connections (without sound, working)
- Realtek ALC262 Sound (internal Speakers, external Headphones, internal Mic, external Mic) (fully working)

Jun 14 2009, 10:03 PM


- Initiate
- Group: Staff
- Posts: 17
@Aranius, do you have a Sony VAIO laptop?

Jun 15 2009, 04:34 AM

- Initiate
- Group: Comrade
- Posts: 5
nope, Samsung R560, see Signature
Vanilla 10.5.6, OpenSUSE 11.1, WinVista, Chameleon 2.0 RC1
Samsung R560 P8400 Madril -- no BacklightControl, neither through DSDT nor modified IOGraphicsFamily.kext
- Intel® Core™ 2 Duo Prozessor P8400 2,26 GHz, 3 MB Cache, 1066 MHz FSB (both working)
- 4 GB (2x 2GB) 1066 MHz DDR3
- NVIDIA® GeForce® 9600M GT (QE/CI with DSDT-patch)
- HDMI und VGA Connections (without sound, working)
- Realtek ALC262 Sound (internal Speakers, external Headphones, internal Mic, external Mic) (fully working)

Jun 15 2009, 08:26 AM


- Initiate
- Group: Comrade
- Posts: 7
Salut krazubu
Same prob as The King, internal screen stays black. However, it works after display detection.
I've noticed that mirror mode is working well, no mouse/screen shift.
Haven't tested tv-out.
after display detection:
NVEnabler_ioreg_dump_moi.txt.zip ( 159.36K )
Number of downloads: 88before display detection:
NVEnabler_ioreg_dump_moi_sans.txt.zip ( 157.84K )
Number of downloads: 42EDIT: Dell Insipron 9400 - laptop - nvidia go 7900gs
Outputs:
- DVI: works
- VGA: works
- TVOUT: not tested
This post has been edited by sonotone: Jun 15 2009, 10:00 PM

Jun 15 2009, 09:35 AM


- Advanced Member
- Group: Administrators
- Posts: 124
Sonotone, can you precise what is your hardware and also the available outputs ? It seems to be quite uncommon.
By the way, you might try other display-cfg values, it's probably the reason of the problem.

Jun 15 2009, 01:32 PM


- Initiate
- Group: Comrade
- Posts: 7
Krazubu: solved by switching @0,Display-cfg value to 00 instead of 03010000
This post has been edited by sonotone: Jun 15 2009, 01:33 PM

Jun 16 2009, 08:48 PM



- Member
- Group: Comrade
- Posts: 55
Sweet, it works perfectly.
What's more, I've got TV-out, as never before!
Mirroring, resolution switching, hardware acceleration, overscan, everything works.
Main display on DVI0 (closest to motherboard) and TV-Out via component cable, using the adapter that came with the card.
Leadtek Winfast 9800 GTX+ - 10.5.7 vanilla NV* kexts.
Device ID: 0x0612
Revision ID: 0x00a2
Recognized in System Profiler as 9800 GTX - which is no big deal I guess.
The biggest win for me though is that it makes S3 sleep work.
(EDIT - added more info for other users)
In my BIOS, I can set S3, S1 or auto. If I leave it at auto (which is the BIOS default) and put my hackintosh to sleep, the video card fan spins up to maximum speed (that was *LOUD*, never heard that before) my monitor enters standby and it can't wake again, the reset button doesn't respond and I have to do a hard shut down.
I have to set it to S3 - then it works. EDIT - almost - actually it still does almost the same as before from time to time so it's not 100% reliable. What happens now is that the video card fan will spin up as before, but only for a short time, and then it reboots by itself. I haven't been able to determine yet if there's a pattern to when it will work and when it won't.
When set to auto or S1 sleep won't work at all though so it's still an improvement.
I've been using both DSDT injection by Roisoft and the 9800 GTX EFI device property string that's in OSX86Tools but sleep has never worked for me at all with this video card.
Let me know if you still want the IOREG output - I'm getting a "False ROM signature" and "probe fails" message for each display during boot.
EDIT - IOReg and the ROM from my 9800GTX+ attached.
---
At first I installed the enabler in /Extra/Extensions on my EFI partition, but then I could not boot, even in safe mode.
Luckily I could boot with my Chameleon Boot CD and delete it.
I've installed it in S/L/E with no problems.
Is there anything I can do to get it running from /Extra/Extensions?
I haven't tried sticking it in /Extra/Extensions.mkext.
NVEnabler_ioreg_Gringo_Vermelho.txt.zip ( 173.07K )
Number of downloads: 62
WF10DE0612.ROM.zip ( 40K )
Number of downloads: 29 This post has been edited by Gringo Vermelho: Jun 21 2009, 06:07 PM
ASUS P5Q-E - P45/ICH10R - Marvell 88SE6121 - Marvell 88E8056 - ADI AD2000B - 9800 GTX+ - C2D E8500 - 10.6.2 retail - Chameleon 2.0 RC4 EFI/GPT

Jun 17 2009, 01:32 AM


- Advanced Member
- Group: Administrators
- Posts: 124
Glad to read so good report Gringo Vermelho

We're aware of the kext not loading when put in /Extra, we'll have a look at it for future version.

Jun 17 2009, 09:18 AM

- Initiate
- Group: Comrade
- Posts: 20
I did't know it was just a quiz..
So I added mine post here
http://www.projectosx.com/forum/index.php?...post&p=1311Hope it helps

Jun 17 2009, 12:24 PM


- Advanced Member
- Group: Administrators
- Posts: 124
@ Gringo Vermelho
Yes IOReg dump is welcome.

Jun 17 2009, 01:39 PM

- Initiate
- Group: Comrade
- Posts: 1
intel dg31pr
nvidia 9400gt. Installed kext, and worked like a charm.
ioreg:
http://www.box.net/shared/yzryyu2spkDidnt try the two connections yet as I dont have 2 monitors, but I will. Currently using the vga connection.
The only thing that I had found extrange is that when I boot with -v (chamaleon2 rc1) I just get somthing like this:
http://localhostr.com/files/31701f/boot.jpgAfter that I added the ids to the proper kexts / but same happens.
I believe that has to do with the display-cfg string. However I couldnt understand, sorry, how to change it.
http://pastie.org/515090the line:
AwEAAA==
Its a base64 encoded line right?
Sorry if i'm being goofy.

Jun 25 2009, 03:10 AM



- Member
- Group: Comrade
- Posts: 55
For the hell of it I just tried Netkas' new injector, ATY_init.kext.
It works fine so far, S3 sleep seems to work (when it wants, with the same random fan-noise-followed-by-a-reboot issue noted above) as well, but I lost TV-out of course.
This post has been edited by Gringo Vermelho: Jul 4 2009, 04:37 AM
ASUS P5Q-E - P45/ICH10R - Marvell 88SE6121 - Marvell 88E8056 - ADI AD2000B - 9800 GTX+ - C2D E8500 - 10.6.2 retail - Chameleon 2.0 RC4 EFI/GPT

Jun 28 2009, 02:07 PM

- Initiate
- Group: Comrade
- Posts: 14
I've been doing a short test with NVEnabler kext and a sparkle calibe 7600GT. This card has two DVI ports and one TVout connector
Just one monitor plugged through a DVI to VGA adapter:
-When plugged on port 1 (the one closer to the MB) it wont recognize the monitor at all. I've also tryed replacing the Display-cfg values to the 7600GT (imac) posted here. No 'Detect Displays' button aviable
-When plugged on the port 2 it works as it should
-When hot-plug-unplug the monitor the computer freezes
TVout not tested
I attach my ioreg here (one using NVenabler and one using DSDT injection). I hope it helps:
P5K_calibre7600GT_pci_e.zip ( 257.79K )
Number of downloads: 25EDIT:
OK, solved partially using the cfg values from the 7300GT; Computer still freezes when hot-unplug-plug the monitor
BTW, I got the CFG values from a PPC G4 with a 6800GT. The card is a PC card flashed with a reduced mac rom from 'the mac elite wiki' (DVI Enabled, 1.3V Vcore, specific settings for Point of View 6800 GT).
Again I have only one monitor connected through a DVI to VGA adapter, so I had to reboot in between to get both values:
Display A: 013eff00
Display B: 0036ff00
(they are backwards)
These values work on my 7600GT as well.
When theres no monitor connected the port gets 'ffffffff' value
IOREG:
G4_6800GT_PPC.zip ( 99.9K )
Number of downloads: 25 This post has been edited by blackCH: Jun 30 2009, 01:14 PM

Jun 28 2009, 09:11 PM


- Advanced Member
- Group: Administrators
- Posts: 124
Thank you for the display-cfg BlackCH, I updated the 1st post with it. Be careful, on PPC macs, the value is byteswapped, so if we "intelize" them, it should be 00ff3e01 - 00ff3600, ie almost identical to the 7300GT one.
So if you get it working currently with those values injected in reverse, it's more likely thanks to random luck.