ProjectOSX

Welcome Guest!

Returning User? Login here.

Want membership privileges? Register here.

40 Pages V   1 2 3 > »   
Start a new topic Add Reply
> Nvenabler Testing And Discussion, new universal kext for nVidia
Krazubu
post Jun 2 2009, 09:18 PM
Post #1
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 directly reading your VGA ROM to build and inject the required settings, according to your hardware.
It also does on-the-fly ROM patching to give a stabler output configuration.
IT'S NOT YET ANOTHER GENERIC INJECTER.
ROM patching is an important part of the process and can't be achieved by "passive" injection. Copy/pasting strings from other cards has shown to be an inaccurate method even if the boards look identical. Many strings need to be created on measure for the card and display(s).

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.

How to load an alternate VGA BIOS :
Open NVE plist with a plist editor. Add a child inside the section "addProperties". Set its name to "vbios" (has to be in lower case), its type to data, and past the BIOS in hex in the value field.
Also remove the entry "skipvbios_disabled".

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, search about usual injection methods to do it.

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.
EDIT : its working is now partly figured, however we didn't add feature to NVenabler yet, so you still have to mess with it.

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 8800GT : 03010000 - ffff0001
imac 24" 7600GT : 03035000 - ffff3601
Apple TV 7300Go : 01ff0000
mac pro 7300GT : ffff3600 - 00ff3e01
powermac 6800GT : 00ff3600 - 00ff3e01

Note about "Unknown card" : Many people think their card is not supported because it appears as "Unknown card". This doesn't mean a thing. The card name is just an hardcoded string that is injected. A card can work fine even if it's shown as unknown. On the opposite you can have the name correctly displayed for an unsupported card. If you really care about it, you can inject the card name yourself editing the plist to add "model" key + name as string value.

Thanks to iNDi, Roisoft and Kytzu for testing

Edit by Krazubu :
New 0.1b version Snow Leopard 64bit ready (and still 32bit too) : Attached File  NVEnabler_64.kext.zip ( 27.44K ) Number of downloads: 10314
(no other modification).
I've seen at many places that people install both 32 and 64bit ones, this doesn't make sense.
Get the kext here : Attached File  NVEnabler_0.1.kext.zip ( 19.77K ) Number of downloads: 9814


Edit by fassl:
Same kext without display-cfg properties (won't support dual screen): Attached File  NVEnabler_no_display_cfg_0.1.kext.zip ( 19.54K ) Number of downloads: 2426


Good luck smile.gif

Please don't upload it on other servers and don't repack it, thank you
THe KiNG
post Jun 6 2009, 09:51 AM
Post #2
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
Krazubu
post Jun 6 2009, 11:39 AM
Post #3
@ THe King
I need an IOReg
Superhai the Gre...
post Jun 7 2009, 12:43 PM
Post #4
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
I have decided to leave the OSX86 scene, but if there are any particularities you need to address arising from my contributions, you may contact me on voodoo@superhai.com
If you want to work on any of my sources or projects, or if you are interested in hosting the files I provided you may use the same address to arrange a way to get hold of them. Any requests or questions for unrelated support, or other unrelated requests will be blacklisted, banned or regarded as an abuse and dealt with accordingly. 
Of course community friends may also use the address and you know who you are.
MikeTheMilkman
post Jun 9 2009, 04:42 PM
Post #5
This looks very interesting biggrin.gif

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.
prasys
post Jun 11 2009, 02:04 PM
Post #6
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
Aranius
post Jun 14 2009, 08:47 AM
Post #7
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)
fassl
post Jun 14 2009, 10:03 PM
Post #8
@Aranius, do you have a Sony VAIO laptop?
I want to use this place to thank fleebailey33 who donated me his old machine when my laptop died:

Acer Aspire M5630:
Intel Q6600
1TB WDC Green
ATI RadeonHD 4850 (and nVidia GeForce 9500GT)
Aranius
post Jun 15 2009, 04:34 AM
Post #9
nope, Samsung R560, see Signature smile.gif
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)
sonotone
post Jun 15 2009, 08:26 AM
Post #10
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: Attached File  NVEnabler_ioreg_dump_moi.txt.zip ( 159.36K ) Number of downloads: 298

before display detection: Attached File  NVEnabler_ioreg_dump_moi_sans.txt.zip ( 157.84K ) Number of downloads: 151


EDIT: 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
Krazubu
post Jun 15 2009, 09:35 AM
Post #11
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.
sonotone
post Jun 15 2009, 01:32 PM
Post #12
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
Gringo Vermelho
post Jun 16 2009, 08:48 PM
Post #13
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.

Attached File  NVEnabler_ioreg_Gringo_Vermelho.txt.zip ( 173.07K ) Number of downloads: 218

Attached File  WF10DE0612.ROM.zip ( 40K ) Number of downloads: 124


This post has been edited by Gringo Vermelho: Jun 21 2009, 06:07 PM
ASUS P8Z77-V Pro - EVGA GTX 660 - i5-3570K - 10.9.1 retail - Chameleon 2.2 svn r22xx
Krazubu
post Jun 17 2009, 01:32 AM
Post #14
Glad to read so good report Gringo Vermelho smile.gif
We're aware of the kext not loading when put in /Extra, we'll have a look at it for future version.
jadran
post Jun 17 2009, 09:18 AM
Post #15
I did't know it was just a quiz..

So I added mine post here
http://www.projectosx.com/forum/index.php?...post&p=1311

Hope it helps
Krazubu
post Jun 17 2009, 12:24 PM
Post #16
@ Gringo Vermelho
Yes IOReg dump is welcome.
anibalin
post Jun 17 2009, 01:39 PM
Post #17
intel dg31pr
nvidia 9400gt. Installed kext, and worked like a charm.
ioreg: http://www.box.net/shared/yzryyu2spk

Didnt 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.jpg

After 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/515090
the line:
AwEAAA==
Its a base64 encoded line right?
Sorry if i'm being goofy.
Gringo Vermelho
post Jun 25 2009, 03:10 AM
Post #18
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 P8Z77-V Pro - EVGA GTX 660 - i5-3570K - 10.9.1 retail - Chameleon 2.2 svn r22xx
blackCH
post Jun 28 2009, 02:07 PM
Post #19
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:
Attached File  P5K_calibre7600GT_pci_e.zip ( 257.79K ) Number of downloads: 104



EDIT:
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:
Attached File  G4_6800GT_PPC.zip ( 99.9K ) Number of downloads: 61





This post has been edited by blackCH: Jun 30 2009, 01:14 PM
Krazubu
post Jun 28 2009, 09:11 PM
Post #20
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.

40 Pages V   1 2 3 > » 
Add Reply Start a new topic
2 User(s) are reading this topic (2 Guests and 0 Anonymous Users)
0 Members: