bofors Posted November 7, 2006 Author Share Posted November 7, 2006 Here is the macpro ioreg omni mentioned on his site (i also contacted him and send him the url to to the macpro.txt he mentioned) got a 7300 gt in the mac pro Ok, I just went through this. I can see why the single user mode version is needed instead, the data here is key in a slightly different format. It appears that the "@0,..." and "@1,..." prefixes are not used, but rather that keys like "compatible" and "device_type" are stored under "NVDA-Display-A@0" and "NVDA,Display-B@1" nodes. On to the single user mode IO reg dump! This looks like the relevant part, appears to be exactly what we wanted and what Omni was expecting. Note that I removed apparently irrelevant long key values from this slightly for formating. | | | +-o PXS1@0 <class IOPCIDevice, registered, matched, active, busy 0, retain count 8> | | | { | | | "vendor-id" = <de100000> | | | "device-id" = <93030000> | | | "AAPL00,Coherency" = <02000000> | | | "subsystem-vendor-id" = <00000000> | | | "@0,device_type" = <"display"> | | | "@0,can-hot-plug" = <> | | | "@1,can-hot-plug" = <> | | | "@1,EDID" = <> | | | "reg" = <> | | | "NVDA,Features" = <ef020004> | | | "@1,device_type" = <"display"> | | | "AAPL,aux-power-connected" = <01000000> | | | "AAPL,slot-name" = <"Slot-1"> | | | "IOPCIExpressLinkStatus" = 4353 | | | "@0,AAPL,boot-display" = <> | | | "@1,compatible" = <"NVDA,NVMac"> | | | "Power Management protected data" = "{ }" | | | "AAPL,backlight-control" = <00000000> | | | "@0,compatible" = <"NVDA,NVMac"> | | | "@1,name" = <"NVDA,Display-B"> | | | "class-code" = <00000300> | | | "Power Management private data" = "{ }" | | | "rom-revision" = <"3004"> | | | "assigned-addresses" = <> | | | "revision-id" = <a1000000> | | | "NVCAP" = <04000100000003000c0000000000000a00000000> | | | "@0,fboffset" = <00000200> | | | "@0,EDID" = <> | | | "@0,NVMT" = <> | | | "saved-config" = <> | | | "compatible" = <"pci0,400","pci10de,393","pciclass,030000"> | | | "IOPCIResourced" = Yes | | | "IOInterruptControllers" = ("io-apic-0","IOPCIMessagedInterruptController") | | | "name" = "display" | | | "IOPCIExpressLinkCapabilities" = 67185921 | | | "IOChildIndex" = 1 | | | "acpi-path" = "IOACPIPlane:/_SB/PCI0@0/NRP4@40000/PXS1@ffff" | | | "@0,display-cfg" = <03033600> | | | "IOInterruptSpecifiers" = (<1000000007000000>,<1700000000000100>) | | | "device_type" = <"NVDA,Parent"> | | | "IOName" = "display" | | | "model" = <"NVIDIA GeForce 7300 GT"> | | | "@0,name" = <"NVDA,Display-A"> | | | "subsystem-id" = <00040000> | | | "@1,display-cfg" = <ffff3e01> | | | "IODeviceMemory" = () | | | } | | | So, I am just going to start by editing Natit to do exactly what Omni suggested, set these values: "@0,compatible" to "NVDA,NVMac" "@1,compatible" to "NVDA,NVMac" "@0,device_type" to "display"" "@1,device_type" to "display" "@0,name" to "NVDA,Display-A" "@1,name" to "NVDA,Display-B" If that doesn't work, I can start setting more values that appear to be paired for dual displays. Link to comment Share on other sites More sharing options...
looper Posted November 7, 2006 Share Posted November 7, 2006 Very cool Way to go Bofors! I'll probably get the XFX 7300GT as the 7600GS is slightly out of my price range. good luck with the coding. Link to comment Share on other sites More sharing options...
dm_webd Posted November 7, 2006 Share Posted November 7, 2006 So, I am just going to start by editing Natit to do exactly what Omni suggested, set these values: "@0,compatible" to "NVDA,NVMac" "@1,compatible" to "NVDA,NVMac" "@0,device_type" to "display"" "@1,device_type" to "display" "@0,name" to "NVDA,Display-A" "@1,name" to "NVDA,Display-B" If that doesn't work, I can start setting more values that appear to be paired for dual displays. Take a look at the new Natit I posted. Values can be added and set from the Info.plist, so no more recompiling for changing values. Link to comment Share on other sites More sharing options...
nekton Posted November 7, 2006 Share Posted November 7, 2006 Just to let u know what actually happens with my XFX7300GT when two LG L1950T Flatrons are connected to 7300GT DVI outputs with the second version of Titan installed. At start, both screens display the BIOS flash screen which then proceeds to the gray Apple screen with rotating "clockface time" (what is this actually called?). Then both screens show loss of video signal for about 10 seconds when one comes up with the normal desktop. The other remains black with the orange no video signal lamp lit. Looking at the Graphics/Displays in System Profiler shows one display connected with full QE/CI support and no second display connected. I really hope it is "trivial" to fix dual display support because it would be a real plus and pretty much overcome the need to reverse engineer EFI in the short term. Link to comment Share on other sites More sharing options...
bofors Posted November 7, 2006 Author Share Posted November 7, 2006 I have just looked over the Natit source code and it appears to already include what Omni suggested for dual displays. However, it is set for Display B to be a CRT (Display A is set to be an LCD). I have Titan installed right now, so I am going to be removing it and testing Natit with one LCD and one CRT next. Take a look at the new Natit I posted. Values can be added and set from the Info.plist, so no more recompiling for changing values. Great, I guess I need to get that next instead. Why did you choose one CRT and one LCD originally? Have you tried dual displays yet? EDIT: Note that this means you do not have to program to try to make Natit work with dual displays. All one has to do is use Property List Editor (in Apple's Developer (Xcode) tools) to go inside the Natit.kext, open Info.plist (inside the Natit.kext->Contents folder) and find the "entriesToAdd" dictionary (Root->IOKitPersonalities->Natit->entriesToAdd). Again, it looks like this is already set up to work with dual displays, that is it incorporates Omni suggestions (and the CRT and LCD keys are no longer being added). So, people with dual displays should go ahead and test the new version of Natit and report results here. Link to comment Share on other sites More sharing options...
nekton Posted November 7, 2006 Share Posted November 7, 2006 Swapped to the new Natit.kext and booted with two LCD panels connected to the 7300GT. Same result as reported above, although the loss of signal time is now only a second or two. The Graphics Display screen shows GeForce 7300 GT whereas before it showed nVidia display-B The status of the second panel is No display connected. Guess there is still something in there that needs setting! Link to comment Share on other sites More sharing options...
bofors Posted November 7, 2006 Author Share Posted November 7, 2006 At start, both screens display the BIOS flash screen which then proceeds to the gray Apple screen with rotating "clockface time" (what is this actually called?). I am not sure about the screen name, but try "Apple (logo) boot screen" (or "splash" screen) with "spinning progress indicator" (the indicator part I am sure of). Guess there is still something in there that needs setting! Ok, I guess the next to try will be adding these: "@0,display-cfg" = <03033600> "@1,display-cfg" = <ffff3e01> Hex: 03033600 => 50542080 decimal Hex: ffff3e01 => 4294917633 decimal I am not sure what "cfg" means, nor why these have different values, but would like to find out. Link to comment Share on other sites More sharing options...
bofors Posted November 7, 2006 Author Share Posted November 7, 2006 Same result as reported above, although the loss of signal time is now only a second or two. ... The status of the second panel is No display connected. Ok, this is basically what I am getting with Titan. I am switching to Natit next. For the record, I am testing right now with a 3D Fusion 7600GS (VGA / DVI) with the two VGA Samsung 712n's using one DVI->VGA adapter. My XFX 7600GS (Dual DVI) should be here tomorrow and I have two DVI Samsung 204BW's to test with as well. Link to comment Share on other sites More sharing options...
dm_webd Posted November 7, 2006 Share Posted November 7, 2006 I am not sure about the screen name, but try "Apple (logo) boot screen" (or "splash" screen) with "spinning progress indicator" (the indicator part I am sure of).Ok, I guess the next to try will be adding these: "@0,display-cfg" = <03033600> "@1,display-cfg" = <ffff3e01> Hex: 03033600 => 50542080 decimal Hex: ffff3e01 => 4294917633 decimal I am not sure what "cfg" means, nor why these have different values, but would like to find out. My guess would be "config". I've been messing around with these values. For me ffff3e01 makes the display not initialize(stays at the fb resolution and blank), 03033600 make no difference from without any value at all. Also I've discovered on both my laptop and desktop, that the primary display is always Display-B. Try setting the variable @0,NVMT to an empty data object - then detect displays (warning - this might mess up your graphics until reboot). I have no idea what NVMT does (other than mess up my display when using detect displays). Always try to detect displays after booting up with dual displays, as I have a feeling that NVDAResman for some reason doesn't do this on initialization. Link to comment Share on other sites More sharing options...
bofors Posted November 7, 2006 Author Share Posted November 7, 2006 For me ffff3e01 makes the display not initialize(stays at the fb resolution and blank), 03033600 make no difference from without any value at all. It looks like my results are the same. However, I accidently used fff3e01 (missing an "f") and the results was that both of my displays were blank. Link to comment Share on other sites More sharing options...
bofors Posted November 8, 2006 Author Share Posted November 8, 2006 I just looked at my Single User Mode IOReg dump (relevant portion attached) and it looks quite a bit different than what Icyderguru posted for the Mac Pro. In particular, the main display node is not labled "PXS1" but rather "display@0" which like the Mac Pro's node is a child of "IOPCI2PCIBridge" but they differ on the further up the tree as well. The MacPro's "IOPCI2PCIBridge" is a child "NRP4" while on my machine it is "PEG1". I am going to ignore these differences for the moment and continue to focus on simply inserting more keys and values for now. Ultimately, perhaps with the correct EDID values I could just try adding every key and value from the Mac Pro IOReg dump into the Natit's plist. cutIOReg.txt Link to comment Share on other sites More sharing options...
bofors Posted November 8, 2006 Author Share Posted November 8, 2006 Guess what? It now works for dual displays in extended desktop mode! But mirrored displays does not work yet. I have yet to figure which steps are essential but here is what I did: (1) Added the correct EDID values for both displays, I retrieved on from OS X using the SwitchResX program: http://www.madrau.com/html/SRX/DL.shtml (2) Added the "@0,NVMT" key with the value from both Omni's and Icyderguru's single user mode IOReg dumps. (3) Add the "NVCAP" key from the same (I know this one is critical). 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: 1024 x 768 @ 75 Hz Depth: 32-bit Color Core Image: Supported Main Display: Yes Mirror: Off Online: Yes Quartz Extreme: Supported SyncMaster: Resolution: 1024 x 768 @ 75 Hz Depth: 32-bit Color Core Image: Supported Mirror: Off Online: Yes Quartz Extreme: Supported This is the relevant part of the Info.plist I used: <key>@0,EDID</key> <data> AP///////wBMLSQBNzFKTSkOAQNsIht4KqqlplRUmSYU UFS/74CBgHFPAQEBAQEBAQEBAQEBMCoAmFEAKkAwcBMA Ug4RAAAeAAAA/QA4Sx5RDgAKICAgICAgAAAA/ABTeW5j TWFzdGVyCiAgAAAA/wBINEpYQTExMjI5CiAgACg= </data> <key>@0,NVMT</key> <data> CgN/IEwtHAJ4BRoESAfQBWAGAABBBB0EIQQAAPDBQQcA AAEAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAD//wAAAAAAAAAAAAABAAAAAAAAAA== </data> <key>@0,compatible</key> <string>NVDA,NVMac</string> <key>@0,device_type</key> <string>display</string> <key>@0,fboffset</key> <integer>131072</integer> <key>@0,name</key> <string>NVDA,Display-A</string> <key>@1,EDID</key> <data> AP///////wBMLSQBNzFKTSkOAQNsIht4KqqlplRUmSYU UFS/74CBgHFPAQEBAQEBAQEBAQEBMCoAmFEAKkAwcBMA Ug4RAAAeAAAA/QA4Sx5RDgAKICAgICAgAAAA/ABTeW5j TWFzdGVyCiAgAAAA/wBINEpYQTExMjI5CiAgACg= </data> <key>@1,compatible</key> <string>NVDA,NVMac</string> <key>@1,device_type</key> <string>display</string> <key>@1,name</key> <string>NVDA,Display-B</string> <key>NVCAP</key> <data> BAABAAAAAwAMAAAAAAAACgAAAAA= </data> <key>device_type</key> <string>NVDA,Parent</string> The Info.plist that works in attached as a text file (rename it to Into.plist). WorkingInfo.txt Link to comment Share on other sites More sharing options...
james2mart Posted November 8, 2006 Share Posted November 8, 2006 bofors-how did you retrieve EDIDs with that program? Cannot find it in the control panel... Link to comment Share on other sites More sharing options...
nekton Posted November 8, 2006 Share Posted November 8, 2006 Guess what? It now works for dual displays in extended desktop mode! But mirrored displays does not work yet. I have yet to figure which steps are essential but here is what I did: (1) Added the correct EDID values for both displays, I retrieved on from OS X using the SwitchResX program: http://www.madrau.com/html/SRX/DL.shtml (2) Added the "@0,NVMT" key with the value from both Omni's and Icyderguru's single user mode IOReg dumps. (3) Add the "NVCAP" key from the same (I know this one is critical). 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: 1024 x 768 @ 75 Hz Depth: 32-bit Color Core Image: Supported Main Display: Yes Mirror: Off Online: Yes Quartz Extreme: Supported SyncMaster: Resolution: 1024 x 768 @ 75 Hz Depth: 32-bit Color Core Image: Supported Mirror: Off Online: Yes Quartz Extreme: Supported This is the relevant part of the Info.plist I used: <key>@0,EDID</key> <data> AP///////wBMLSQBNzFKTSkOAQNsIht4KqqlplRUmSYU UFS/74CBgHFPAQEBAQEBAQEBAQEBMCoAmFEAKkAwcBMA Ug4RAAAeAAAA/QA4Sx5RDgAKICAgICAgAAAA/ABTeW5j TWFzdGVyCiAgAAAA/wBINEpYQTExMjI5CiAgACg= </data> <key>@0,NVMT</key> <data> CgN/IEwtHAJ4BRoESAfQBWAGAABBBB0EIQQAAPDBQQcA AAEAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAD//wAAAAAAAAAAAAABAAAAAAAAAA== </data> <key>@0,compatible</key> <string>NVDA,NVMac</string> <key>@0,device_type</key> <string>display</string> <key>@0,fboffset</key> <integer>131072</integer> <key>@0,name</key> <string>NVDA,Display-A</string> <key>@1,EDID</key> <data> AP///////wBMLSQBNzFKTSkOAQNsIht4KqqlplRUmSYU UFS/74CBgHFPAQEBAQEBAQEBAQEBMCoAmFEAKkAwcBMA Ug4RAAAeAAAA/QA4Sx5RDgAKICAgICAgAAAA/ABTeW5j TWFzdGVyCiAgAAAA/wBINEpYQTExMjI5CiAgACg= </data> <key>@1,compatible</key> <string>NVDA,NVMac</string> <key>@1,device_type</key> <string>display</string> <key>@1,name</key> <string>NVDA,Display-B</string> <key>NVCAP</key> <data> BAABAAAAAwAMAAAAAAAACgAAAAA= </data> <key>device_type</key> <string>NVDA,Parent</string> The Info.plist that works in attached as a text file (rename it to Into.plist). WELL done Bofors. I will give it a try this evening but can you post the exact path to where this (renamed) Info.plist file should go to avoid any confusion. Thanks. Link to comment Share on other sites More sharing options...
bofors Posted November 8, 2006 Author Share Posted November 8, 2006 bofors-how did you retrieve EDIDs with that program? Cannot find it in the control panel... Run the program after installation and rebooting by clicking on it's icon in the Control Program. Then click "Export DDC", this dumps the monitor information into text file, at the beginning of which is the EDID in an array-like format. DisplayConfigX is also supposed to get the EDID but I did not try it: http://www.3dexpress.de/ WELL done Bofors. I will give it a try this evening but can you post the exact path to where this (renamed) Info.plist file should go to avoid any confusion.Thanks. Just reinstall the new version of Natit I posted here: http://forum.insanelymac.com/index.php?showtopic=32536 And don't forget to go through all the normal kext installation steps (chown, chmod, rm .mkext, rm .kextcache). Link to comment Share on other sites More sharing options...
erikk Posted November 8, 2006 Share Posted November 8, 2006 dual screen worked for me ... many thx! but how i can say that my dvi port is monitor one and vga port is monitor two? did you figured it out yet? edit: ok i never know that you can change in display settings, on which monitor the dock and menu bar should be.. now it works... with dell 30" via dvi (2560x1600) and 20" dell via vga (1680x1050) nice job man! thx in advance! Link to comment Share on other sites More sharing options...
Rammjet Posted November 8, 2006 Share Posted November 8, 2006 dual screen worked for me ... many thx! but how i can say that my dvi port is monitor one and vga port is monitor two? did you figured it out yet? edit: ok i never know that you can change in display settings, on which monitor the dock and menu bar should be.. now it works... with dell 30" via dvi (2560x1600) and 20" dell via vga (1680x1050) In display settings, you should also be able to drag the monitor icons around to arrange them in the order you want. Link to comment Share on other sites More sharing options...
nekton Posted November 8, 2006 Share Posted November 8, 2006 Curiouser and curiouser. Ran the new Contents with dualie support and did all the post permission settings and rem of kext.cache, etc., and now the other LCD panel is the active desktop and the panel that was the desktop is blank showing an orange lamp with no video signal BUT I think it IS part of an extended desktop because when I move the cursor to the edge of the displayed desktop it looks like it is disappearing as if it is jumping across to the next screen. So the displayed desktop seems to be behaving as half of an extended desktop although the other half has no signal. And the Graphics Display preferences (enclosed) are now showing two L1950T panels connected to the 7300GT whereas with the old Natit.kext only one LCD panel was shown as connected. EDIT; It is also possible to open Displays Preferences (which now shows two screens) and move the active screen top toolbar to the blank screen (no video signal), proving that the blank screen is part of an active desktop despite not having a signal. EDIT2; HOWEVER WHEN I connect the currently blank screen that seems to be the missing half of an extended desktop using a DVI to VGA adapter, the screen becomes active with a full extended desktop across both screens. Obviously, you have solved it for your current DVI-VGA adapter plus pure DVI setup so you are very close, Bofors. There must be one setting missing that will activate both DVI outs somehow. Hope your dual-head DVI card arrives tomorrow and you can reproduce the above. Many thank for your hard work on this and to omni for the first step. Window.tiff Link to comment Share on other sites More sharing options...
dm_webd Posted November 8, 2006 Share Posted November 8, 2006 Wow, thanks for the great work bofors.. It works here too. I'm trying to make the kext autodetect edid using vbe calls. Link to comment Share on other sites More sharing options...
DS Posted November 8, 2006 Share Posted November 8, 2006 It worked! It worked! Added the NVMT, EDID's and NVCAP and it worked!! Dual DVI XFX 7300GT on 2 DVI BenQ LCD's! Only adding NVCAP didn't work Bofors is my hero. hahah .. Thanks man. Link to comment Share on other sites More sharing options...
tylerc Posted November 8, 2006 Share Posted November 8, 2006 I'm sorta confused on the process to do this. Can someone post clear instructions for doing this to my Titan driver. Thanks. Link to comment Share on other sites More sharing options...
bofors Posted November 8, 2006 Author Share Posted November 8, 2006 It worked! It worked! Added the NVMT, EDID's and NVCAP and it worked!! Dual DVI XFX 7300GT on 2 DVI BenQ LCD's! Only adding NVCAP didn't work Ok, this is interesting. I guess we need a version with the NVMT key set. I am continuing to assume that EDID's are not absolutely necessary and of course I can not provide them because each monitor has a different EDID value. Obviously, you have solved it for your current DVI-VGA adapter plus pure DVI setup so you are very close, Bofors. There must be one setting missing that will activate both DVI outs somehow.Hope your dual-head DVI card arrives tomorrow and you can reproduce the above. My dual DVI XFX 7600GS has yet to show up, but I am expecting it within the next four hours or so. But I am going to post a new version of Natit with the NVMT key set as well which might solve the problem people with dual DVI cards are experiencing. EDIT: I have post the 0.02 version of Natit dual now, I hoping it will solve the dual DVI card problem but still waiting for mine to arrive so I can test it: http://forum.insanelymac.com/index.php?showtopic=32536 I'm sorta confused on the process to do this. Can someone post clear instructions for doing this to my Titan driver. Thanks. Remove your Titan driver and install the version of Natit that I posted here: http://forum.insanelymac.com/index.php?showtopic=32536 Link to comment Share on other sites More sharing options...
dm_webd Posted November 8, 2006 Share Posted November 8, 2006 Ok, this is interesting. I guess we need a version with the NVMT key set. I am continuing to assume that EDID's are not absolutely necessary and of course I can not provide them because each monitor has a different EDID value. There's some properties and values named "edid-override" (I think this is the property name), "override-no-edid", "override-has-edid" & "override-has-edid-digital". I haven't tested these yet, but I guess they should be set for each display. Link to comment Share on other sites More sharing options...
DS Posted November 8, 2006 Share Posted November 8, 2006 I'll do some more testing later, I added NVMT and the EDID's at the same time so it's possible that the EDID's had nothing to do with it. Link to comment Share on other sites More sharing options...
DS Posted November 8, 2006 Share Posted November 8, 2006 I'd just like to report that the EDID's are NOT required on my setup. Just NVMT and NVCAP do the job! Link to comment Share on other sites More sharing options...
Recommended Posts