Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Getting Late-Model GeForces Working under XFree86 3.3.6

3 views
Skip to first unread message

Leo L. Schwab

unread,
Oct 18, 2000, 3:00:00 AM10/18/00
to
. Some weeks ago, I installed a shiny new Guillemot Prophet-II GTS
(GeForce2 GTS) in my Debian potato system, and found that it didn't work
with XFree86 3.3.6. Since I wasn't interested in upgrading to XF86 4.0, and
since I also know a thingertoo about NVidia cards (I write graphics drivers
for BeOS), I decided to try an experiment.

It turns out that NVidia are quite a class act when it comes to
making their products backward-compatible. When I was writing a BeOS driver
for the RIVA TNT, I feared that the upcoming TNT2 would require a complete
re-write. I was delighted to discover that, from a software perspective,
the TNT2 was virtually identical to the TNT. The only major difference was
the PCI device ID.

Suspecting that NVidia continued this tradition with their GeForce
offerings, I decided to try filezapping the XFree86 binary, replacing one of
the supported PCI vendor/device ID pairs with that of the GeForce2 GTS. And
y'know something? It worked!

So: If you've got a GeForce card you'd like to work under XFree86
3.3.6, grab yourself a copy of a hex editor (I used 'hexedit') and perform
the following steps (specific instructions will vary based on your distro):

o If it is already running, kill the X server. You should be doing
this from a text console.
o 'cd' to the directory where your XFree86 3.3.6 server binary is
stored (typically /usr/bin/X11).
o MAKE A BACKUP COPY OF THE SERVER:
cp XF86_SVGA XF86_SVGA.orig
o Launch your hex editor and load XF86_SVGA.
o Search for the following hex byte sequence:
DE 10 00 00 03 01 00 00
This is the byte-swapped PCI vendor (0x10DE) and device (0x0103)
ID for the NVidia Quadro, a board you are unlikely to encounter.
The exact offset you find this sequence will vary widely,
depending on how your particular copy was compiled.
o The Quadro is a GeForce variant. We are going to change these
bytes to instead describe our GeForce2 GTS. Move the cursor to
the "03 01" and change them to the following:
50 01
The entire hex byte sequence should now read:
DE 10 00 00 50 01 00 00
o Save the modified file.
o Re-launch the X server in the normal way.

Don't have a GeForce2 GTS? Here's a list of the PCI IDs of known
GeForce and GeForce-compatible offerings:

0x0100 GeForce 256 (Already supported in XF86 3.3.6)
0x0101 GeForce DDR (Already supported in XF86 3.3.6)
0x0103 Quadro (Already supported in XF86 3.3.6)
0x0110 GeForce2 MX
0x0111 GeForce2 MX
0x0113 Quadro2 MXR
0x0150 GeForce2 GTS/GeForce2 Pro
0x0151 GeForce2 GTS
0x0152 GeForce2 Ultra
0x0153 Quadro2 Pro

Remember to BYTE-SWAP these values when you type them into the hex
editor (assuming your hex editor only supports byte-wise editing).

To be sure of which flavor of GeForce you have, take a peek in
/proc/pci and look for the entry for "VGA compatible controller". Copy down
the device ID number you find there (it's in hex).

WARNING: This procedure is known to work ONLY with XFree86 3.3.6;
other versions may not/probably won't work. Further, though I'm quite sure
it will work with other GeForce cards, I have ONLY tested it with a GeForce2
GTS. I disclaim ALL RESPONSIBILITY for any unintended/undesireable results.
If you do it, yer on yer own.

Hope this proves useful to someone.

_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Leo L. Schwab -- Digital Spellweaver ew...@best.com ..or..
\_ -_ http://www.best.com/~ewhac/ ew...@well.com
O----^o Recumbent Bikes: The Only Way To Fly. (pronounced "EH-wack")
Do the Illuminati shop for clothes at Fnordstrom?

Vincent Caron

unread,
Oct 18, 2000, 3:00:00 AM10/18/00
to
Wow, what a hack ! :)

Wouldn't it be nice to have the PCI ids externalized (ie. listed in a text
file), in order to easily support newer hardware with backward compatible
drivers... This could be done via the XF86Config : I can add modelines,
why couldn't I add card IDs ?

BTW, is Nvidia the only one to provides backward compatible hardware ? What
about Matrox, ATI, S3 or others ?

Leo L. Schwab

unread,
Oct 23, 2000, 3:00:00 AM10/23/00
to
Vincent Caron wrote:
> BTW, is Nvidia the only one to provides backward compatible hardware ? What
> about Matrox, ATI, S3 or others ?

NVidia are the only chip with which I have direct experience where
this sort of thing worked. Backward compatibility to this degree is rare.
Trident appears to sorta do it, but it's *way* ugly and, IMHO, not worth
the effort.

0 new messages