ATI Radeon 9200 - Getting it to work under Redhat 9.0DISCLAMER/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:
- 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.
- You can download a newer version of XFree86 from Redhat's 'in-development' Rawhide beta - and force it to install on Redhat 9.
- 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).
Method 1: 2D/3D driver by setting the ChipIDMy 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 (firstname.lastname@example.org) 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. AdamSo all I really had to do was change the ChipID. Here is what I did in step-by-step detail...
Shutdown X-Windows graphical login daemon, log in on a console
as root and use telinit:
# telinit 3
- 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
- Back up your existing setup.
# cp /etc/X11/XF86Config /etc/X11/XF86Config.before-radeon-9200
- 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.
- Edit the config file and set the ChipId
# vi /etc/X11/XF86ConfigFind the device setion and add the ChipId:
Section "Device" Identifier "Videocard0" Driver "radeon" VendorName "Videocard vendor" BoardName "ATI Radeon 9000" ChipId 0x514D EndSection
- Test the new configuration for both 2D and 3D.
Do a few syncs before hand in case your system locks up.
# sync; sync; sync; # startxYou can try glxinfo and confirm DRI for 3D is enabled:
# glxinfo display: :0.0 screen:0 direct rendering: Yes
- Restart the graphical login daemon
# telinit 5
Latest News: 2003-10-22Terje 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-21Janne 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 <email@example.com> To: firstname.lastname@example.org 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 BlomqvistI have always had the Option "EnablePageFlip" "on" - so I can confirm that this option been completely stable over several months of use.
2003-07-29Manuel 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 <email@example.com> To: firstname.lastname@example.org 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 email@example.com 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: firstname.lastname@example.org 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 DigitalA 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 0xd0000000I 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