ATI Radeon 9200 - Getting it to work under Redhat 9.0

DISCLAMER/WARNING: This is not for the inexperienced - it works for me - but may not necessarily work for you. As with any hack of this nature there is a chance you will lock up you system, or overdrive your monitor. This hack is not approved or warrantied by anyone, anywhere. Within a few weeks these hacks will probably be unecessary as it looks like true support isn't that far away.

I bought a Gigabyte Radeon 9200 (rv280 based). Nice price, good performance, and most important to me - no active cooling fan. At this date (2003-05-23) the only support for the 9200 under Redhat 9 is the VESA driver.

After a bit of research using google, I was able to get it work, and after posting to comp.os.linux.x, I was able to achieve a truely ideal solution which has been stable ever since.

There are three possible ways to get a better driver working:

  1. You can tell the Redhat supplied 2D/3D Open-Source Radeon driver to treat the 9200 as an 8500. This works best with video 4 linux (v4l), motv/xawtv and bttv - which is somewhat important to me.
  2. You can download a newer version of XFree86 from Redhat's 'in-development' Rawhide beta - and force it to install on Redhat 9.
  3. You can download a 2D/3D binary-only driver from Schneider Digital - which is a little troublesome when used with video-4-linux (v4l). This driver is seems to me to be noticeably slower at 2D (as tested around 2003-05-23 - but there are new versions available now).
I'll describe them all.

Method 1: 2D/3D driver by setting the ChipID

My first attempts at getting a better driver involved rebuilding the Redhat XFree86 driver with a new chip ID, but a week later I found this is all unecessary. After posting to comp.os.linux.x, Adam K Kirchhoff responded with the following hint:
From: Adam K Kirchhoff (adamk@voicenet.com)
Subject: Re: ATI Radeon 9200 rv280 2D/3D Redhat 9 drivers - brief howto 
Newsgroups: comp.os.linux.x
Date: 2003-05-27 16:55:20 PST 

On Tue, 27 May 2003 23:04:54 +0100, Geoff wrote:

> On Mon, 26 May 2003 15:51:55 -0700, Michael Hamilton wrote:
> <snip>
>> Thanks for the pointer to http://dri.sourceforge.net.   I see they
>> support the 9200, so I'll give it a go.
> 
> Could you please post a report when you have evaluated the dri drivers
> Michael?  I have been looking for a new card and just came across the 9200
> - like you I am keen to avoid a card fan so it looks attractive. It would
> be excellent if the dri drivers are all I need.
> 
> Geoff

I recently had a chance to use the 9200 with the DRI drivers, and they
worked just fine.  Able to play every 3D game I have (ut2003, q3a, ut,
Rune, etc.).

You need to use the 'ChipID 0x4242' option in the device section to make
it recognize the 9200.

Adam
      
So all I really had to do was change the ChipID. Here is what I did in step-by-step detail...
  1. Shutdown X-Windows graphical login daemon, log in on a console as root and use telinit:
    # telinit 3
              
  2. I'd been using the Radeon binary driver, so I had to restore my XFree86 and Mesa OpenGL libraries and modules. If you haven't touched these, then this step isn't necessary:
    rpm --install --force /mnt/cdrom/RedHat/RPMS/XFree86-4.3.0-2.i386.rpm
    rpm --install --force /mnt/cdrom/RedHat/RPMS/XFree86-Mesa-libGL-4.3.0-2.i386.rpm
              
  3. Back up your existing setup.
    # cp /etc/X11/XF86Config /etc/X11/XF86Config.before-radeon-9200
              
  4. Run redhat-config-xfree86 and setup the card as a Radeon 9000. Under advanced option, use the configure button to choose the video card - I picked the ATI Radeon 9000. Tick the checkbox to Enable Hardware 3D Acceleration. Don't probe, we just want the config program to create a valid XFree86 config - we have to change the ChipId before we can try it.
    # redhat-config-xfree86
              
  5. Edit the config file and set the ChipId
    # vi /etc/X11/XF86Config
              
    Find the device setion and add the ChipId:
    Section "Device"
            Identifier  "Videocard0"
            Driver      "radeon"
            VendorName  "Videocard vendor"
            BoardName   "ATI Radeon 9000"
            ChipId      0x514D
    EndSection
              
  6. Test the new configuration for both 2D and 3D. Do a few syncs before hand in case your system locks up.
    # sync; sync; sync; 
    # startx
              
    You can try glxinfo and confirm DRI for 3D is enabled:
    # glxinfo
    display: :0.0  screen:0
    direct rendering: Yes
              
  7. Restart the graphical login daemon
    # telinit 5
              
Here are several emails that contributed to, and further refine, the method I've described above.

Latest News: 2003-10-22

Terje Strand has some more info on setting up a dual head configuration.
Subject: Radeon 9200 dual head
From: "Terje Strand" 
Date: 2003-10-22 03:09:32

Hi!

I have used your web page
"http://users.actrix.co.nz/michael/radeon9200.html" to set up my new Radeon
card under Linux.

You are however, rather brief on how to get a dual head working on this
card, other than mentioning that the chip ids from 7500 should be used...
This I have just done, so I though maybe you might be interested to put this
info on you web page:

What I did:
1) Normal setup for a dual head (i.e. two device, screen and monitor
sections+++)
2) Add to each of the device sections:
  a) ChipID 0x5157
  b) Option "SWcursor" "true"
  c) BusID "PCI:1:0:0"
3) To the first device section, add:
  a) Screen 0
To the second add:
  b) Screen 1

Voila, dual head on the 9200!

(Pt 2.c assumes that this is the AGP port...)


Best regards,
        Terje
        (Norway)

2003-10-21

Janne Blomqvist has done some in depth research and experimentation greatly clarifying what ChipID's might work best:
Subject: radeon 9200 on Linux
From: Janne Blomqvist <jblomqvi@cc.hut.fi>
To: michael@actrix.gen.nz
Date: 2001-10-21 04:55:04

Hi,

I recently bought a radeon 9200 card, in part inspired by your success
report at

http://users.actrix.co.nz/michael/radeon9200.html

However, the explanation of the cards history seems a bit
off. According to

http://dri.sf.net

the 9200 is actually exactly the same as the 9000, but with AGP 8x
instead of AGP 4x. The 9100 on the other hand, is more or less a
rebranded 8500, i.e. a significantly more high-end item. The 9000
originally was a cheaper version of the 8500/9100, with the number of
rendering pipelines halved. So in that sense a ChipId for the radeon
9000 would, in theory at least, suit the 9200 better (as xfree86 4.3
supports the 9000). I use 0x4967, although 0x4966 also seems to work
(I haven't tried this personally). A list of these ChipId's can be
found at

http://www.yourvote.com/pci/pciread.asp?venid=0x1002

Incidentally, both the 0x4242 (8500) and 0x514D (9100) ChipId's work
too and I haven't noticed any difference in OpenGL performance (as
measured by glxgears at least..). Although I haven't again tried it,
it seems that a dual head setup won't work with these ChipId's, as
explained on some mailing list message (september 2002, i.e. before
xfree 4.3 was released) I was only able to retrieve from google's
cache:

"""

If you want both heads to work correctly with a dual-head/Xinerama
setup, use a 7500 (0x5157) or a VE ID (0x5159 for example). Although
9000 uses the same 3D core as used in 8500, its 2D features
(dual-head, tvout, etc) actually follow 7500.

"""

Thus I'd recommend setting either 0x4966 or 0x4967, just to be safe. 

Another thing which I noticed was that if you enable page flipping,
i.e. put the line

      Option "EnablePageFlip" "on"

in the device section of the XF86Config-4 file, the performance will
improve quite much. With this option, my glxgears score improved from
about 1450 FPS to 1980 FPS.

PS: You may put this message up on your website, if you want.

-- 
Janne Blomqvist
      
I have always had the Option "EnablePageFlip" "on" - so I can confirm that this option been completely stable over several months of use.

2003-07-29

Manuel M T Chakravarty reports that a chip id of 0x514D results in even better 3d performance:
Subject: Radeon 9200 under RH9
From: Manuel M T Chakravarty <chak@cse.unsw.edu.au>
To: michael@actrix.gen.nz
Date: 2003-07-29 16:29:40

Hi Michael,

First of all, thanks for your documentation re getting the
Radeon 9200 running under RH9.  It proved very helpful.

I experimented a little with your first solution, where you
force the open-source XFree86 to handle the card as if it
had a ChipId of 0x4242.  As you state, this ChipId is for
the 8500 and makes the 9200 work.  However, 3D performance
is not particularly good (considering what the card is
capable of doing).  

Now I read at

  http://lists.netisland.net/archives/plug/plug-2003-07/msg00462.html

that the 9200 is actually more directly based on the 9100
than on the 8500.  Hence, I tried a ChipId of 0x514D, which
is for the 9100 card.  As a result 3D performance (in
particular, OpenGL) got *much* better.  In fact, it is
sufficient to play Neverwinter Nights

  http://nwn.bioware.com/downloads/linuxclient.html

at a decent resolution.

Regards,
Manuel

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  Manuel M T Chakravarty                                 chak@cse.unsw.edu.au
  School of Computer Science & Engineering
  University of New South Wales, Sydney     http://www.cse.unsw.edu.au/~chak/
      
After receiving Manuel's email I switched to a chipid of 0x514D and my system is still 100% stable.

Method 2: Force an install of the Rawhide driver.

I've not personally tried this one - but it sounds promising. Here are the instructions emailed to me by Frank Vestergaard Pedersen:
Radeon 9200 - another solution
From: Frank Vestergaard Pedersen 
To: michael@actrix.gen.nz
Date: 2003-09-08 02:13:32


Hi Michael

I have found yet another solution for the problem with the Radeon 9200
chip on redhat 9.

I downloaded the XFree86 from rawhide and made a upgrade whit these
rpm's, had to do a "--nodeps" because it was asking for glibc >=
glibc-2.3.2-6...  

now i went to the "redhat-config-xfree86" and just chose a Radeon 9000
and remove the chipid from the XF86Config file and restartede X

and from /var/log/XFree86.0.log

(II) Primary Device is: PCI 01:00:0
(--) Assigning device section with no busID to primary device
(--) Chipset ATI Radeon 9200 5961 (AGP) found

quite nice :-)

/Frank
      

Method 3: 2D/3D driver from Schneider Digital

A day after getting the 2D only driver to work I did some more searching and found the Schneider Digital driver by reading some of the discussions at www.rage3d.com. I came across the reference previously in comp.os.linux.x, but it wasn't clear from the Schneider Digital page whether this driver supports the 9200. It looked like an updated version of the ati-downloadable driver - which doesn't support the 9200. The rage3d discussions cleared this up.

Download the "Fire GL *" driver for Linux X4.3.0 called glx1_linux_X4.3.zip from Schneider Digital

Unzip this driver and follow the readme.txt. I found that that during the rpm install I got a few errors concerning patching some files and a few warnings during the compile, but I just ignored them and things worked fine. I think I had to use --force on the rpm install because I had already installed the ATI version of the driver and was too impatient to deinstall it.

During the post install configuration I just chose the defaults - except that I selected a larger default resolution. You will need to know the horizontal and vertical refresh ranges of your monitor.

Video for Linux v4l doesn't play well with this driver. You can get it to work if you read /var/log/XFree86.0.log, find the framebuffer address and then as root manually configure v4l:

% su -
# grep framebuffer /var/log/XFree86.0.log
(**) fglrx(0): Depth 24, (--) framebuffer bpp 32
(--) fglrx(0): Linear framebuffer (phys) at 0xd0000000
(II) fglrx(0): [drm] framebuffer handle = 0xd0000000
# v4l-conf -a 0xd0000000      
        
I presume this will have to be repeated any time you restart X. (Or will this address always be the same?) Now motv/xawtv will work - but sometimes it will draw clitches over the other parts of the Xserver screen.

WARNING:if I try to switch from using the Open-Source to the binary-only driver without rebooting in between, my display and console freezes and I have to reset the machine. Going in the other direction seems OK.

Last modified: Sun Dec 14 11:36:49 NZDT 2003