Help - Search - Members - Calendar
Full Version: Natit Kext for Dual Displays
InsanelyMac Forum > InsanelyMac Lounge > The X Labs > Natit
Pages: 1, 2
bofors
Attached is a version of Natit.kext which should work to drive dual displays in extended desktop mode (mirror mode does not appear to work yet).

This is almost exactly the same as Dm_webd's 2nd version except one key, "NVCAP", has been added to the kext's Info.plist "entiresToAdd" dictionary.

CODE
"NVCAP = <04000100 00000300 0c000000 0000000a 00000000 >


Please test and post results here.

EDIT: This worked for me with a 3D Fusion 7600GS (VGA / DVI) with the two VGA Samsung 712n's using one DVI->VGA adapter.

EDIT2: Attached is Natit dual display version 0.02. This adds the "@0,NVMT" key and value.

CODE
"@0,NVMT = <0a037f20 4c2d1c02 78051a04 4807d005 60060000 41041d04 21040000 f0c14107 00000100 000000ff 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ffff0000 00000000 00000000 01000000 00000000 >


EDIT3: This appears to solve the problem with dual DVI cards, it works with my XFX 7600GS.

And don't forget to go through all the normal kext installation steps (chown, chmod, rm .mkext, rm .kextcache) when installing this new version.

Just follow Omni's instructions (which I have slightly modified):

CODE
Note: This might only work on 10.4.8:

Instructions
- Put Natit kext (remove Titan is necessary) in your /System/Library/Extensions/ folder
- Correct the file premissions: sudo chown -R root:wheel Natit.kext; sudo chmod -R 755 Natit.kext
- Remove the cached and packed extensions: sudo rm -f /System/Library/Extensions.mkext /System/Library/Extensions.kextcache
- reboot.


http://omni.starchaser.org/titan/
Synthology
Bofors,

Test Results :

I have a Syncmaster 225BW Samsung
and 1 Apple Cinema Display 20"

Both DVI connected to XFX GeForce 7600 GT

With Titan, the Syncmaster worked and the Apple screen was black

Now with your modified kext, the apple screen is on, but syncmaster is off.

Recognized both screens, but Samsung is not functioning.

Also, tried detecting displays on System Pref, unsuccessful.

Let me know if there's anything else you need me to test.

Synthology

QUOTE
GeForce 7600 GT:

Chipset Model: GeForce 7600 GT
Type: Display
Bus: PCIe
VRAM (Total): 256 MB
Vendor: NVIDIA (0x10de)
Device ID: 0x0391
Revision ID: 0x00a1
Displays:
Cinema Display:
Display Type: LCD
Resolution: 1680 x 1050
Depth: 32-bit Color
Core Image: Supported
Main Display: Yes
Mirror: Off
Online: Yes
Quartz Extreme: Supported
SyncMaster:
Resolution: 1680 x 1050 @ 60 Hz
Depth: 32-bit Color
Core Image: Supported
Mirror: Off
Online: Yes
Quartz Extreme: Supported
bofors
QUOTE(Synthology @ Nov 8 2006, 02:26 AM) *
Test Results :

I have a Syncmaster 225BW Samsung
and 1 Apple Cinema Display 20"

Both DVI connected to XFX GeForce 7600 GT
Now with your modified kext, the apple screen is on, but syncmaster is off.


Thanks for the report, my XFX 7600GS (Dual DVI) should be here tomorrow and I have two DVI Samsung 204BW's to test with as well.

So, I should be able to reproduce your results and isolate the problem.

I will be back at this tomorrow.
Synthology
Rock & Roll, I shall be at the front lines awaiting your progress.

Cheers

Synthology
james2mart
No go. Laptop monitor hasn't worked on it - only can use HannsG external monitor. Almost exact same scenario with new Natit II.
lord_muad_dib
thx bofors i'll try it asap wen'll be back home!

GPU in my sig and both displays on vga>>>dvi adapters

edit: extended desktop works great! thx!
bofors
QUOTE(Synthology @ Nov 8 2006, 02:26 AM) *
Let me know if there's anything else you need me to test.


Ok, I posted a new version above: Natit dual display version 0.02.

I think it might work for you (but have yet to test it on a dual DVI card myself because XFX 7600GS is not here yet).
dm_webd
QUOTE(bofors @ Nov 8 2006, 05:28 PM) *
Ok, I posted a new version above: Natit dual display version 0.02.

I think it might work for you (but have yet to test it on a dual DVI card myself because XFX 7600GS is not here yet).

I can confirm NVMT key is needed too for my dual dvi output 7600GT (although both are analog monitors with DVI->VGA).
Synthology
QUOTE(bofors @ Nov 8 2006, 06:28 AM) *
Ok, I posted a new version above: Natit dual display version 0.02.

I think it might work for you (but have yet to test it on a dual DVI card myself because XFX 7600GS is not here yet).


At boot, it takes about 15 seconds longer to get to the desktop than with single display, however, it does indeed work for both screens.

One problem: when you click on detect displays, the syncmaster (my left screen - connected to DVI port closest to the motherboard) goes black and never comes up. My mouse gets very slow and I can't get the syncmaster back again until I pressed my reset button.

Also, the syncmaster automatically became my dock and finder display. Which is fine, I figured it should default that way considering its connected to the inner most DVI port.

As for detect displays, make sure to test that once you get your XFX card in your box.

So far so fantastic. I see this as revolutionary as a new kernel to me. I'm amazed there are not too many people jumping all over this like jack rabbits. Anyway, I shall await further testing instruction.

Synthology
bofors
My XFX 7600GS just showed up and I can also confirm that the Natit dual v0.02 works for me too. I am running full dual DVI (no VGA convertors) to two Samsung 204BW at 1680 x 1050.

CODE
GeForce 7600 GS:

  Chipset Model:    GeForce 7600 GS
  Type:    Display
  Bus:    PCIe
  VRAM (Total):    256 MB
  Vendor:    NVIDIA (0x10de)
  Device ID:    0x0392
  Revision ID:    0x00a1
  Displays:
SyncMaster:
  Resolution:    1680 x 1050 @ 60 Hz
  Depth:    32-bit Color
  Core Image:    Supported
  Main Display:    Yes
  Mirror:    Off
  Online:    Yes
  Quartz Extreme:    Supported
SyncMaster:
  Resolution:    1680 x 1050 @ 60 Hz
  Depth:    32-bit Color
  Core Image:    Supported
  Mirror:    Off
  Online:    Yes
  Quartz Extreme:    Supported


However, selecting "Detect Displays" disables a panel. I will be adding the VGA adapters next.

EDIT: Ok, this also works using VGA adapters to a VGA displays (Samsung 712n's here).
esmith1977
Please...

What are the exact installation steps...

I was going to get a new card from CompUSA today...
Wallstreet
No luck with a PNY 7900GS running dual DVI to 2 Dell LCDs. The system stays up (I can ping it), but there's no display. Is there any info I can get you to possibly get this config working?
bofors
QUOTE(esmith1977 @ Nov 8 2006, 07:01 PM) *
What are the exact installation steps...


Note: This might only work on 10.4.8:

Just follow Omni's instructions (which I have slightly modified):

CODE
Instructions
- Put Natit kext (remove Titan is necessary) in your /System/Library/Extensions/ folder
- Correct the file premissions: sudo chown -R root:wheel Titan.kext; sudo chmod -R 755 Titan.kext
- Remove the cached and packed extensions: sudo rm -f /System/Library/Extensions.mkext /System/Library/Extensions.kextcache
- reboot.


http://omni.starchaser.org/titan/

QUOTE(Wallstreet @ Nov 8 2006, 07:02 PM) *
No luck with a PNY 7900GS running dual DVI to 2 Dell LCDs. The system stays up (I can ping it), but there's no display. Is there any info I can get you to possibly get this config working?


Does your 7900 work with Titan or Natit otherwise?
Wallstreet
QUOTE(bofors @ Nov 8 2006, 07:05 PM) *
Does your 7900 work with Titan or Natit otherwise?


Fully working with Natit. Except with only one display.
bofors
I don't expect this to work because you have a dual DVI card, but you can try the attached version of Natit which has the "@0,NVMT" key-value pair removed from the Info.plist. You can also try a version which leaves the "@0,NVMT" key-value pair in but removes the "NVCAP" key-value pair instead, but I do not expect that to work either.

I think the problem is that either the "@0,NVMT" value or "NVCAP" value (or both) is wrong for the 7900 (somebody with a VGA / DVI could isolated the "@0,NVMT" question by using the attached kext). I do not know what the correct value(s) is either.

However, it might be possible to get this value(s) somehow from Windows or Linux driver analysis through something like an IOReg dump. It also might be useful to look an IOReg dump of a Mac Pro with an Nvidia Quadro card to see what the values are there. Finally, you should post (via a text attachment) a IOReg dump from your system both from single-user mode, and after a normal with and without the version of Natit which works for you.
joe75
dm_webd, are you still playing with auto-EDID construction.gif
dm_webd
QUOTE(joe75 @ Nov 9 2006, 04:30 AM) *
dm_webd, are you still playing with auto-EDID construction.gif


Yes. I don't haven't got so much time for now, but expect to see something in 1-2 days (if everything goes as planned wink.gif ).
james2mart
np_ would probably be the best way to go about finding out how to auto-EDID. I'm going to try shortly - also check out the read-edid website source >

http://john.fremlin.de/programs/linux/read-edid/

Code that short has to be easy to port. Only difficulty would be IOKit's integration.

Guys - moninfo does NOT report the same EDID that SwitchResX reports. Just thought you should know.
Rammjet
QUOTE(james2mart @ Nov 9 2006, 12:25 AM) *
Guys - moninfo does NOT report the same EDID that SwitchResX reports. Just thought you should know.

For grins, go to Terminal and type:

CODE
ioreg -l w 0 | grep "EDID"
joe75
QUOTE(Rammjet @ Nov 9 2006, 12:34 AM) *
For grins, go to Terminal and type:


biggrin.gif biggrin.gif biggrin.gif
james2mart
Sorry rammjet, been there done that. No luck. I've browsed IORegistryExplorer, etc. and not found EDIDs. SwitchResX provides me the EDIDs though, so I'm grateful.
dm_webd
QUOTE(james2mart @ Nov 9 2006, 06:25 AM) *
np_ would probably be the best way to go about finding out how to auto-EDID. I'm going to try shortly - also check out the read-edid website source >

http://john.fremlin.de/programs/linux/read-edid/

Code that short has to be easy to port. Only difficulty would be IOKit's integration.

I have checked that code and the calls to VBE done there is easy, as real-mode calls are available. I'm not sure about real-mode calls are available in the Mac OS kernel(I doubt it). So my approach will be to try using the VBE/Core 3.0 protected mode interface. But that requires adding entries to the GDT and I haven't written code before to do that.
I have just finished making the headers with the structures needed for the GDT pointer and entries, and I have an idea for the asm code to add the entries. I don't know if it'll work, or crash the system. This code needs to run at ring0 (I would believe the code in a kext is run at this level, but I'm not sure as kernel programming is not something I've done too much of - especially regarding the mac kernel).
I'm off to work now, but as soon as I get home I'll try to make some code to access the GDT, then add entries and hope that it won't crash.
If anyone has more insight into the workings of the GDT and the mac os kernel, I would be very interested in hearing your thoughts about my approach.
Wallstreet
I'm dual booting WinXP on the same hardware...if there's any information you need me to grab (and a way to get it), please let me know.
aberracus
Guy you are making history!

im jumping like a rabbit!
Rammjet
np_ is pissed that with Titan and Natit, people are dissing Macvidia and he is threatening to quit developing Macvidia for cards that Apple drivers don't support.

Might want to stop over at Macvidia and help him feel better:

http://macvidia.starchaser.org/option,com_...id,63/topic,932
joe75
QUOTE(Rammjet @ Nov 9 2006, 08:15 PM) *
Might want to stop over at Macvidia and help him feel better:

http://macvidia.starchaser.org/option,com_...id,63/topic,932


Thank You, Rammjet angel.png
cbmkgd
Also success here with N .02, scr. resolutions and dual display (except mirroring, which shows empty blue screen on 2nd display, but don't need mirroring).

//edit: Want to add that it also takes me around 18-20 seconds for the GUI to appear, like someone posted before. Will check the logs.

CI/QE now works too. Great.

Thanks.
dingnecros
Thank you Thank You. Both my monitors are working now with my Quadro FX 3400 PIC-E 256MB card. One is a 2405FPW and the other is a HC194D both of them work beautifully with full QE CI support. I am using the Mifki kernel with Jas 10.4.8
bofors
QUOTE(cbmkgd @ Nov 11 2006, 09:19 AM) *
//edit: Want to add that it also takes me around 18-20 seconds for the GUI to appear, like someone posted before. Will check the logs.


This is apparently "normal" for the hack, I have the same issue. Setting the EDID's does not appear to fix it either, so apparently some other key-value pairs need to be set.
jester1o1
Didn't work for me - 1 screen comes up (vga) and the other stays black (dvi). I also get the delay starting the gui.

Should I try putting different values in the plist? What should I try changing?

Specs: 6200TC, Venice 3200+, Nforce4.

Oh and I have an ioreg - but Camino freaks out when I try to attach it.
bofors
I do not know if this works with AMD systems (or Nforce4 chipsets) or not. If anybody has dual displays working on an AMD system, please post the details here.

You can try the v0.01 Natit.kext (which leaves out the "@0,NVMT" key) here: http://forum.insanelymac.com/index.php?act...ost&id=5778
cbmkgd
QUOTE(bofors @ Nov 11 2006, 05:33 PM) *
I do not know if this works with AMD systems (or Nforce4 chipsets) or not. If anybody has dual displays working on an AMD system, please post the details here.
Yep. Check my sig.
Forgot to add: VGA + DVI->VGA (Optiquest V75 & ViewSonic PF775, both CRT's).
I have the 6200TD (non-shared memory), not the TC one.

jester, I put the id in geforce and nvda* kexts, maybe that will help.
sandwer
QUOTE(bofors @ Nov 8 2006, 07:11 AM) *
Attached is a version of Natit.kext which should work to drive dual displays in extended desktop mode (mirror mode does not appear to work yet).

This is almost exactly the same as Dm_webd's 2nd version except one key, "NVCAP", has been added to the kext's Info.plist "entiresToAdd" dictionary.

CODE
"NVCAP = <04000100 00000300 0c000000 0000000a 00000000 >


Please test and post results here.

EDIT: This worked for me with a 3D Fusion 7600GS (VGA / DVI) with the two VGA Samsung 712n's using one DVI->VGA adapter.

[code]
Note: This might only work on 10.4.8:



Bofors - Been dying to try this since you posted it. Only had the cojones today to upgrade to 10.4.8 and nVidia. 3D Fusion DS 256mb - VGA only through VGA port, no DVI (and no VGA out of the DVI port through the adaptor either). Monitors - two SGI 1600SW's through a pair of SGI Multilink adaptors (VGA and DVI)
Odd - its the same card as your original test card.

On bootup, if I have one monitor attached to the DVI port, I see the BIOS screens displayed - but the screen goes black. The monitor still shows a connection tho. JaS 10.4.8, Semthex's kernel, Pentium 4 3.06.



//R
jester1o1
QUOTE(cbmkgd @ Nov 12 2006, 09:47 AM) *
Yep. Check my sig.
Forgot to add: VGA + DVI->VGA (Optiquest V75 & ViewSonic PF775, both CRT's).
I have the 6200TD (non-shared memory), not the TC one.

jester, I put the id in geforce and nvda* kexts, maybe that will help.


I have the id in Geforce.kext and am getting QE and CI ok (and did with Titan as well).

on another note:
Would setting the 'mirror' bit in windowserver.plist force the machine to mirror the displays? If I can't get dual I would like to force my card to always display on both vga and dvi (instead of which ever one it feels like using)
bofors
QUOTE(sandwer @ Nov 11 2006, 06:14 PM) *
On bootup, if I have one monitor attached to the DVI port, I see the BIOS screens displayed - but the screen goes black. The monitor still shows a connection tho. JaS 10.4.8, Semthex's kernel, Pentium 4 3.06.


I am wondering if the problem has to do with the GMA950 on your board. Do you have it disabled in BIOS?
revert
Didn't work for me, tried Natit 0.02. Syncmaster174v VGA works, Syncmaster 171v VGA > DVI black screen.
sandwer
QUOTE(bofors @ Nov 12 2006, 12:37 AM) *
I am wondering if the problem has to do with the GMA950 on your board. Do you have it disabled in BIOS?



Yes, its the only way the nVidia will work.
I'm going to try a clean install on a different partition. Who knows what rubbish is still hanging around from various upgrades over the last year...

//R
revert
Here's a screen shot if anyone can help. I would love to have dual monitors working!
bofors
Make sure you guys are erasing the .kextcache and .mkext when adding or changing the Natit kext:

CODE
sudo rm -f /System/Library/Extensions.mkext /System/Library/Extensions.kextcache


If you forget to do this, the kext changes will not be noticed.
revert
I've deleted them everytime. Tried 0.01 and 0.02, so far it's not go.
bofors
QUOTE(revert @ Nov 11 2006, 09:06 PM) *
I've deleted them everytime. Tried 0.01 and 0.02, so far it's not go.


Did you do a clean install of 10.4.8 or upgrade?
revert
Started with 10.4.6 and used the guide posted by Semthex, installing the 10.4.5, 10.4.6, 10.4.7, 10.4.8 delta updates.
bofors
You might want to try a clean install, straight from JaS' 10.4.8.
revert
I would but i'm on AMD. I'll try once it's available.
togusa
Just for giggles I tried this in my Mac Pro using the stock 7300. I loaded the kext, did the usual (chown, chmod, rm kextcache etc) and rebooted.

First time It booted I got this

CODE
Nov 12 01:24:36 localhost kernel[0]: NVDANV40HAL loaded and registered.
Nov 12 01:24:36 localhost kernel[0]: PXS1: family specific matching fails
Nov 12 01:24:36 localhost kernel[0]: PXS1: family specific matching fails
Nov 12 01:24:36 localhost kernel[0]: PXS1: family specific matching fails
Nov 12 01:24:36 localhost kernel[0]: Natit: Starting.
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,NVMT=<data not shown>
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting device_type=NVDA,Parent
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @1,device_type=display
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,compatible=NVDA,NVMac
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @1,compatible=NVDA,NVMac
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,fboffset=0x00020000
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @1,name=NVDA,Display-B
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,name=NVDA,Display-A
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting NVCAP=<data not shown>
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,device_type=display
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting model=GeForce 7300 GT
Nov 12 01:24:36 localhost kernel[0]: PXS1: family specific matching failsPrevious Shutdown Cause: 3
Nov 12 01:24:36 localhost kernel[0]: Natit: Starting.
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,NVMT=<data not shown>
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting device_type=NVDA,Parent
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @1,device_type=display
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,compatible=NVDA,NVMac
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @1,compatible=NVDA,NVMac
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,fboffset=0x00020000
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @1,name=NVDA,Display-B
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,name=NVDA,Display-A
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting NVCAP=<data not shown>
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,device_type=display
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting model=GeForce 7300 GT
Nov 12 01:24:36 localhost kernel[0]: PXS1: family specific matching fails
Nov 12 01:24:36 localhost kernel[0]: Natit: Starting.
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,NVMT=<data not shown>
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting device_type=NVDA,Parent
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @1,device_type=display
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,compatible=NVDA,NVMac
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @1,compatible=NVDA,NVMac
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,fboffset=0x00020000
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @1,name=NVDA,Display-B
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,name=NVDA,Display-A
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting NVCAP=<data not shown>
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting @0,device_type=display
Nov 12 01:24:36 localhost kernel[0]: Natit: Setting model=GeForce 7300 GT


Then I shutdown and threw my MSI 7600GS 256 in its place. It appears that it hangs when it's loading the NVDANV40Hal.kext:

CODE
Nov 12 01:39:50 localhost kernel[0]: PXS1: family specific matching fails
Nov 12 01:39:50 localhost kernel[0]: Matching service count = 1
Nov 12 01:39:50 localhost kernel[0]: Matching service count = 2
Nov 12 01:39:50 localhost kernel[0]: Matching service count = 2
Nov 12 01:39:50 localhost kernel[0]: Matching service count = 2
Nov 12 01:39:50 localhost kernel[0]: Matching service count = 2
Nov 12 01:39:50 localhost kernel[0]: Matching service count = 2



So a question to the folks who have the 7600's... Did you modify the NVDANV40Hal.kext, and NVDAResman.kext's to have a new device ID?

Also, is there any sort of dumps, tests, etc that I can do that will help you guys with your efforts?

Thanks
icyderguru
I offer 50,- PayPal Euro (or through bank transfer if you live in an european union state and got a valid iban+bic number) if anyone could make it work for my MSI 7900 GTO 512MB PCI-E Card! Since i dont got the skills to do it i hope someone else got it.

I know, it isnt much, but maybe someone is willing to help. Bought the card only for OSX and am desperate to get it working.

I can be contacted through pm, email: stefan.prager@inode.at, or ICQ 93483948

Thanks in Advance

Steven
Wallstreet
No luck here with an eVGA7900GT. Is there something else I should be doing? Natit and Titan work fine on their own...

Should I have to make any modifications to the file, or just plug it in, set permissions, and delete the extension caches?
alienbiker99
im trying to get this to work on Nvidia 6600. I get one black screen and one with the display. im running 10.4.8 with the latest semthex kernel. i have an lcd hooked up to the VGA port and a DVI > VGA adapter hooked up to a CRT. i have tried to add my EDID to the driver and still get one black and one with picture. any suggestions?
bofors
QUOTE(alienbiker99 @ Nov 12 2006, 01:53 PM) *
im trying to get this to work on Nvidia 6600. I get one black screen and one with the display. im running 10.4.8 with the latest semthex kernel. i have an lcd hooked up to the VGA port and a DVI > VGA adapter hooked up to a CRT. i have tried to add my EDID to the driver and still get one black and one with picture. any suggestions?


What is your motherboard?

QUOTE(togusa @ Nov 12 2006, 03:23 AM) *
So a question to the folks who have the 7600's... Did you modify the NVDANV40Hal.kext, and NVDAResman.kext's to have a new device ID?

No.

QUOTE
Also, is there any sort of dumps, tests, etc that I can do that will help you guys with your efforts?

Well, I think a lot of people will want to get this working on the Mac Pro, so I am sure something will come up.

If you happen to have access to either of the other Mac Pro (the ATI or Quadro), some IOReg dumps might be useful.
alienbiker99
intel 915i (dell) with P4 prescott 3.0ghz
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.