Jump to content

Natit new development version with ATI and nVidia dual screen


  • Please log in to reply
804 replies to this topic

#21
Ruud

Ruud

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 142 posts
  • Gender:Male
  • Location:The Netherlands

Use Natit_ATIauto.kext.zip and let us know if it works for you.



it didnt work here, i found my card a ati mobility x700. When loading the loginwindow, it doesnt go any further.



Ruud

#22
TheZigPC

TheZigPC

    InsanelyMac Protégé

  • Members
  • Pip
  • 10 posts

it didnt work here, i found my card a ati mobility x700. When loading the loginwindow, it doesnt go any further.
Ruud



Unless the video card is supported by the original drivers, it will not work.

#23
Ruud

Ruud

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 142 posts
  • Gender:Male
  • Location:The Netherlands

Unless the video card is supported by the original drivers, it will not work.



so i have to use the ATIRadeon9700.kext that was used with callisto? this was hex eddited for use with this card.


Ruud

#24
Takuro

Takuro

    InsanelyMac Legend

  • Retired
  • 1,162 posts
  • Gender:Male
  • Location:New York
This sounds like a very interesting project. I'm just wondering: what are the key differences between this and ATIinject?

I see you're taking a solid approach: create a huge catalogue of vendor IDs, device IDs, and data about each general type of card, including whether each would be classified as wormy, caretta, etc. This saves a lot of work for end-users.

A few questions:
1) Has anybody managed to get DVI working?
2) Does this kext function without the need for EDID data?
3) Will ram finally display correctly? My 512mb x1600 is shown as having only 256mb. I know its a common issue.

#25
gaucho

gaucho

    InsanelyMac Protégé

  • Retired Developers
  • 36 posts
  • Gender:Male
  • Location:Smoggy Mexico City
Ok, first of all, as a mini tutorial, you need to do something else to get QE/CI working besides installing Nanit.kext. You need to change (in the case of X1000 series for example) the device id list inside ATIRadeonX1000.kext:

ATIRadeonX1000.kext/Contents/Info.plist

Edit the Info.plist and where it says (dont mind the numbers, they are from a 9700 plugin, just an example):

<key>IOPCIMatch</key>
<string>0x71c01002 0x41441002 0x4E481002</string>

Change it to reflect YOUR deviceid (get it from System Profiler / Graphics):

<string>0x71c2</string>

In the case you have a common mill x1600, 0x71c2 is usually the number.

Repair permissions and reboot. You should be fine. I will post a complete tutorial for "not cli friendly" later.

As a side note, ATIInject or this solution, I DO NOT GET DUAL DISPLAY. I just get a cloned (not mirroring, just the same one display) on both ports (DVI and VGA).

Now, I believe the solution is in initializing the second port which in my card where first port is 0x71c2, secondary display is 0x71e2. If I ass this value to X1000 kext too (so it initializes) I get a kernel panic upon boot.

If anyone can please give me any info or link I can follow to read up, I would appreciate it. Am I correct that we should pursue secondary port, or is that a non issue? Thanks.

I am thinking we can add all the "possible" ATI deviceids out of the PLIST, add them to the corresponding ATIRadeonX1000.kext, ATIRadeon9700.kext, etc, and then build an installer that installls Natit and ALL possible ATI* kexts and it would provide pretty automatic detection of ATIs. I could do this if you guys think it would work ok. I just need to not put secondary ids, because its kernel panicking my computer.

EDIT: As a side note, and as suggested by some of you, I tried different Kernels, versions of ATINDRV (IONDRV has always been 4.5 since 4.8 won't work for me, blue screen), and even AppleSMBIOS (someone suggested using the original that came with JaS DVD). Of course I tried without AGPGart too. I tried all this combos, and still get Kernel Panic when loading secondary adapter. Just so nobody looses time doing the same ...

#26
Ciber

Ciber

    InsanelyMac Protégé

  • Members
  • Pip
  • 26 posts
I tried adding my card's secondary ID and also got a kernel panic heh... I'm still trying to find a HIS X1600XT bios to flash my card to see if that brings my second dvi port back to life, since i remember it working with the original bios.


Update: Flashed my card with a MSI X1600XT's bios(it's also dual dvi) and now both my dvi ports work in mirrored mode all the way until the login window starts and then the monitor connected to the second dvi port goes to sleep, i'm guessing this is when the driver loads.

Gonna try some EDID stuff, but i have a feeling that the second port is just not being initialized by the driver somehow.

#27
Fuzzlet

Fuzzlet

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 126 posts
No luck with Natit auto on my x1900gt. Just got a black screen. Is there anything else I need to do besides using that (provided it does work)?

#28
BladeRunner

BladeRunner

    InsanelyMac Legend

  • Donators
  • 688 posts
  • Gender:Male
  • Location:New York
I tried the Natit-Auto version. My card is Radeon 9250-PCI (not PCIe) and it has a DVI and dsub/VGA port. My monitor is an IBM G96 19" CRT connected to the analog dsub connector. My system is a clean install from the jas-10.4.8-intel-only sse3 install dvd with the semthex gvm_rc12 kernel.

I had been using Callisto which gave me partial recognition of the card and resolution changing. I tried several other methods to get QE/CI running but none of them worked. This one didn't either, but I think it came the closest.

I removed Callisto and ATIinject and ran these commands:
rm -f /Library/Preferences/com.apple.window*
rm -f /users/lrh/Library/Preferences/ByHost/com.apple.window*
rm -f /users/lrh/Library/Preferences/ByHost/com.apple.pref*
rm -f /System/Library/Extensions.*

When I rebooted I saw the gray Apple / pinwheel then the screen went black. Reboot with -v showed entries from Natit being inserted and references to my 9250 graphics card. but again a blank screen.

I keep a copy of Callisto in the root directory so a boot to single user mode allows me to easily put them back. With Callisto restored the system boots to the GUI and I have resolution change again.

System Profiler shows the ATIRadeon8550 extension which supports the 9250 - id code 0x5960. It also showed an extension called ATY_Alopias. I have not seen it before.

The dmesg output shows the 9250 being assigned as secondary display. That could mean the blank screen is because it was switched to the empty connector. Dmesg output follows:
display-connect-flags=0x00000400
Natit: Setting @1,name=ATY,Alopias
Natit: Setting @0,name=ATY,Alopias
Natit: Setting @0,device_type=display
Natit: Setting model=ATI Radeon 9250 Secondary
display: family specific matching fails
display: family specific matching fails
Natit: Starting.
device-id: 0x5960
Natit: Found device
Natit: Found device name
Natit: Setting device_type=ATY,AlopiasParent
Natit: Setting @1,device_type=display
Natit: Setting @0,compatible=ATY,Alopias
Natit: Setting @0,display-connect-flags=0x00000400
Natit: Setting @1,compatible=ATY,Alopias
Natit: Setting @1,display-connect-flags=0x00000400
Natit: Setting @1,name=ATY,Alopias
Natit: Setting @0,name=ATY,Alopias
Natit: Setting @0,device_type=display
Natit: Setting model=ATI Radeon 9250
CallistoHAL Initialized!
VGA0: family specific matching fails
display: family specific matching fails
Natit: Starting.
device-id: 0x5940
Natit: Found device
Natit: Found device name
Natit: Setting device_type=ATY,AlopiasParent
Natit: Setting @1,device_type=display
Natit: Setting @0,compatible=ATY,Alopias
Natit: Setting @0,display-connect-flags=0x00000400
Natit: Setting @1,compatible=ATY,Alopias
Natit: Setting @1,display-connect-flags=0x00000400
Natit: Setting @1,name=ATY,Alopias
Natit: Setting @0,name=ATY,Alopias
Natit: Setting @0,device_type=display
Natit: Setting model=ATI Radeon 9250 Secondary

Hope this helps point to a solution for those of us that have this card.

#29
ramius

ramius

    InsanelyMac Protégé

  • Members
  • Pip
  • 9 posts
  • Gender:Male

I tried the Natit-Auto version. My card is Radeon 9250-PCI (not PCIe) and ...

Hope this helps point to a solution for those of us that have this card.



Don't quote me on this, BUT - - - I don't think a PCI card will provide you with the acceleration capabilities. I seem to recall that was a big stink between PCI G4's and the AGP G4's. Only the AGP G4's would benefit from acceleration.

It had something to do with the necessary bandwidth of the bus...

#30
Fuzzlet

Fuzzlet

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 126 posts
AHHHH IT ALL WORKS!!!!

Dual screen, QE/CI NO TEARING!

Never thought I'd see the day!!!

Thank you everyone involved!

For the record used Natit_edited, and only did what gaucho described a few posts up about CI/QE. Amazing!

#31
ramius

ramius

    InsanelyMac Protégé

  • Members
  • Pip
  • 9 posts
  • Gender:Male
AITauto just tried....

Clean JaS 10.4.8 install.
Checked permissions and ownership.
X1600pro

I get display on 1 lcd panel using DVI-D.
Second display also connected via DVI-D. No Video.

No acceleration - - - BUT - - - I have not modified the ATIRadeonX1000.kext as mentioned earlier.

I am more interested in the dual display possibility than acceleration , for the moment.

So knowing that I haven't made any other mod's, any suggestions?

#32
Rammjet

Rammjet

    InsanelyMac V.I.P.

  • Gurus
  • 5,302 posts
  • Gender:Male
I've been trying ATIauto.kext for my x1600xt.

The kext loads 4 times during boot - once for the primary device 71c0 and 3 times for the secondary device 71e0. When I look at ioreg, I have 4 entries.

I have tried a bunch of different options, but can only get mirroring on my two displays - same as I have had using the Boris method. I get resolution control, QE/CI and no artifacts, but no spanning.

Any ideas why the kext wants to load 3 times for the secondary device?

#33
~Neo

~Neo

    The installer man. Formerly known as "NeoPheus"

  • Retired Developers
  • 644 posts
  • Gender:Male
  • Location:Germany
I just want to add one thing to this thread:
This kext is for X1x00 series first!!!! It CANNOT work with other cards because the drivers for the different X1000 cards will be loaded!

Ok, right now... At circa 4 PM (Its 6.44 AM) there will be an installer for this and I hope I can get DVI to work too! :whistle:

cYa NeoPheus

#34
asstastic

asstastic

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 327 posts
  • Gender:Male
  • Location:Austin, TX
The autodetect kext isn't working on my Mobility X1600.

I've tried editing the plist a number of ways but none have worked. Every time I get black and blue stripes then the screen dies. I sometimes get the same thing using ATIinject but after rebooting the GUI pops up and I have full support, for some reason upgrading to the new AppleSMBIOS and semthex kernel caused this to happen all the time.

Here's what I've tried with autodetect natit:

unmodified: ...failed
removed entries for 2nd monitor: ...failed
added additional entries for internal display(backlight, display-link-pixel/component-bits): ...failed
added EDID using <key>LVDS,EDID</key>: ...failed
tried <key>@0,EDID</key> instead: ...failed
replaced entire <entriesToAdd> under X1600 with ATIinject entries: ...kext didn't load

There are some card specific entries such as <ATY,DeviceID> that i didn't try but it doesn't look like that's the problem here. I did make all the edits with notepad so perhaps I messed up the plist formating? Still doesn't explain why I get the same results half the time with ATIinject. Any help on tracking down the cause of this bug would be great.

#35
np_

np_

  • Retired Developers
  • 339 posts
  • Gender:Male
i just want to add note on 512MB ram cards

i don't think there will be some "special" reason to these cards don't work more that just other missing property

some one can try this below

//////////////////////////////////////////////////////
IODeviceMemory *fVRAMMemory
IOMemoryMap *fFBBaseMap;

UInt32 totalVRam = 512 *1024 * 1024; //512MB VRAM , you can try also 256 *1024*1024, even force as 128MBRAM ie 128 * 1024 *1024; // this also can go as other Info.plist property setting

fFBBaseMap = pciNub->mapDeviceMemoryWithRegister( kIOPCIConfigBaseAddress1 ); //vram NVCards
fVRAMMemory = IODeviceMemory::withRange( fFBBaseMap->getPhysicalAddress(), totalVRam );

UInt64 Len = fVRAMMemory->getLength();
pciNub->setProperty("AAPL,vram-memory", &Len, sizeof(Len));

when IONDRVFramebuffer want to make vram range first look for this property "AAPL,vram-memory"

after it look for ""VRAM,memsize", if don't found these two keys its look direcly in PCIDevice mem

for NVDAResman possible key are "NVDA,memsize" ( at less in PPC version of it )

for ATI known property is "ATY,memsize"
//////////////////////////////////////////////////////////////

offcourse after mapping these range you need to retain (release ) mapped memory before damn NVDAResman load's

other think on GL , only working GL driver is GeforceFXGLDriver , rest just are ppc version and x86 parts empty stubs, mean cards under NV arch = 30 will not work

NV arch 40 and G50 are threated as NV30 in current GL driver implementation

i am sorry i do sell my 7900GTX 512 and rest my cards except my beloved 6800 GTO ( i just love that card )

but also i do plan to get 8800 GTX and this will be big {censored} to make it work with current apple drivers

about automatic way of getting EDID best way is i2c , apple do provide i2cinterface but problem with it is work "when he want" ....

experimenting with all this on top have pretty good chance for workaround on 512MB ram card's problem

other think , all these properties is very recommended to be set before any video drivers loaded

ie probescore 100 ( who is also video and accelerator ) or even prove score = 0, with pci match for vole vendor not any name matches

in service "probe" read pcidevice class code must be 30000 ( video card ) this will avoid problems with nfoce chipset where most vendor device = nvidia


simple check for that below

//////////////////////////////////////////
bool MyClass::IsVideo(IOService *provider)
{
bool isvideo = false;
UInt32 clcode = 0;
UInt32 vendor = 0;
IOPCIDevice *pci = OSDynamicCast(IOPCIDevice, provider);
pci->setIOEnable(true);

vendor = pci->configRead32(kIOPCIConfigVendorID);
clcode = pci->configRead32(kIOPCIConfigClassCode);

if((((clcode >> 16) & 0xffff) == 0x0300 ) && ((vendor & 0xffff) == 0x10de))
{
isvideo = true;
}

return isvideo;

}

IOService * MyClass::probe( IOService * provider, SInt32 *score )
{
IOService *ret = 0;
bool IsNvVideoCard = false;

IsNvVideoCard = IsVideo(provider);

if (!super::probe(provider, score))
return (0);

if(IsNvVideoCard)
{
ret = this;

}

return (ret);

}


hope it help in extending natit to work on most nvidia cars


np_

#36
bofors

bofors

    ConvertIt2Mac.com

  • Members
  • PipPipPipPipPipPipPipPipPipPipPip
  • 3,462 posts

i just want to add note on 512MB ram cards


Thanks for your input and code.

#37
fingerr

fingerr

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 260 posts
  • Gender:Male
  • Location:Poland

The autodetect kext isn't working on my Mobility X1600.

I've tried editing the plist a number of ways but none have worked. Every time I get black and blue stripes then the screen dies. I sometimes get the same thing using ATIinject but after rebooting the GUI pops up and I have full support, for some reason upgrading to the new AppleSMBIOS and semthex kernel caused this to happen all the time.

Here's what I've tried with autodetect natit:

unmodified: ...failed
removed entries for 2nd monitor: ...failed
added additional entries for internal display(backlight, display-link-pixel/component-bits): ...failed
added EDID using <key>LVDS,EDID</key>: ...failed
tried <key>@0,EDID</key> instead: ...failed
replaced entire <entriesToAdd> under X1600 with ATIinject entries: ...kext didn't load

There are some card specific entries such as <ATY,DeviceID> that i didn't try but it doesn't look like that's the problem here. I did make all the edits with notepad so perhaps I messed up the plist formating? Still doesn't explain why I get the same results half the time with ATIinject. Any help on tracking down the cause of this bug would be great.



I've exactly the same problem, ATIinject sometimes works and mostly not. I can't really undersatand how it is like that. Starting system 1st time,display is works fine, I do reboot and second one display is fine, third, fourth, fifth reboot and screen goes blue, sometimes dark.... I'm lost and confused. Have no idea what can be the cause of this behaviour (NATIT with FX5200 AGP works fine every time I reboot)

#38
shmk

shmk

    InsanelyMac Protégé

  • Members
  • PipPip
  • 55 posts
Hey I am a retard so could somebody explain how you get this to work. Do you just drop it in the extensions folder and then use the terminal to load it up?
ie
chown -R root:wheel /System/Library/Extensions/Natit.kext
kextload -v /System/Library/Extensions/Natit.kext

?

#39
Ruud

Ruud

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 142 posts
  • Gender:Male
  • Location:The Netherlands

I just want to add one thing to this thread:
This kext is for X1x00 series first!!!! It CANNOT work with other cards because the drivers for the different X1000 cards will be loaded!

Ok, right now... At circa 4 PM (Its 6.44 AM) there will be an installer for this and I hope I can get DVI to work too! :D

cYa NeoPheus



so wat you are saying is that i can stop testing this kext with my ati x700?

#40
Fernando Birra

Fernando Birra

    InsanelyMac Protégé

  • Members
  • PipPip
  • 92 posts
Hi!

I just want to thank np_ for sharing his knowledge and insight with us. Perhaps now someone can make the 512Mb cards work. Another problem where np_ might be the key to the solution (as always) is the support for the laptop displays. The drivers work but only on the external port...

Fernando





0 user(s) are reading this topic

0 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