A Video Card Upgrade HOWTO

Think of this as a good little computer upgrade for those times when you really do need a break.

It might be nice to claim that Linux fans are a purely serious crowd, using our machines purely for tasks such as Web serving, Web surfing, writing or sorting out real-world problems. The truth is, there comes a time when it is nice to put the real world to one side and use our machines to relax. In other words, play games. That can mean pretending to be a pilot with the Flight Gear simulator, a penguin going after herring in Tux Racer or a marine chasing demons in Doom 3. Although other platforms, such as the dedicated game consoles, have a greater range of choices available to them, some great games are available for Linux.

The problem with many of the best games available for Linux is they challenge your video card like almost nothing else. That was the problem I found in mid-2005. My CPU was fast enough to take on almost anything, as described in "A Motherboard Upgrade HOWTO", but my TNT 2 video card with 32MB of RAM was not cutting it. Some games would run, but not well, and one game would not run at all.

So, the question is, how to go about upgrading a video card?

One of the ways computer builders always have sought to improve the performance is to split tasks between as many CPUs as possible. This is clearly seen with current video cards. They are, in essence, computers unto themselves with a graphics processor unit (GPU), which is a CPU designed to perform 3-D math, memory and input/output connections.

Given the many dozens of video cards on the market, how to choose? The first step is to take a look at your motherboard manual to answer the question "what video cards could my computer support?" All other things being equal, you want the fastest data transfer between the computer and the video card. The upper limit as to how fast data can transfer from the computer to the video card is the bus connector between the card and the motherboard. In decreasing order of performance, the video card bus arrangements are PCIexpress, AGP 8x, AGP 4x, AGP 2x, AGP and PCI. Most motherboards support more than one standard; PCIexpress and PCI or AGP 8x and PCI are common combinations. Pick the fastest.

Next is a question of chipsets. The 3-D graphics field has two major camps, ATI and NVIDIA. Both ATI and NVIDIA make a range of GPUs and support chips that they sell to other manufactures to be used in their graphic cards. What can get slightly confusing is that some firms, such as Asus, build both ATI and NVIDIA-based video cards. Unlike NVIDIA, ATI manufactures and sells some video cards under their own names. The question is which is better for a Linux user. As of this writing, ATI cards have a reputation for uneven Linux video driver quality, so, at present I prefer NVIDIA-based cards. Although there are issues associated with installing NVIDIA drivers, which this article will get to, the cards are well supported under Linux.

The last key question is cost. It is not hard to find video cards with prices anywhere from under $50 to well over $500. You must determine how much performance are you willing to pay for. For a home user, there is little point in spending more money than you would spend on a dedicated game console.

In my case, I went for an AGP 8x NVIDIA-based card built by XFX with a GeForce FX 5500 chipset and 256MB of RAM. This is a budget video card, but one that will let me play all the latest games, although not at the highest resolution or with all the optical tricks turned on.

Although replacing a video card is not the challenge that replacing a motherboard is, the same sort of preparatory steps do apply. A good French chef pre-measures and pre-prepares her ingredients and lays them out in advance in a process known as mise en place. This way when the chef reaches the point in the recipe where 1 tablespoon (15 ml) of curry powder is called for, it already is measured out and simply can be poured in. The same idea applies to replacing a video card--have everything required set out and ready to go.

In laying out tools, start with the Phillips #2 screwdriver, as this is the choice of every major (and most minor) PC vendors, except Compaq. If you are dealing with a Compaq PC, you need a Torx T-15 screwdriver. In case of a troublesome case, a flathead screwdriver to act as a pry and a small pair of pliers are a good idea. A grounding strap, along with an anti-static bag are also good things to have handy.

Figure 1. Tools, new video card and software set out before the upgrade.

For the location to do the work, find a well-lit space that either does not have carpet or has carpet treated with an anti-static spray. During the upgrade you should avoid wearing clothes that could create static, such as synthetic fabrics or fur. The space should have enough humidity that static electricity isn't an issue, but not so moist that water is condensing on things. Finally, you want a space where you will not be disturbed by people or animals that could interrupt the upgrade process. In my case, my dining room table was near perfect for the upgrade.

If your current PC has built-in video, power up the PC, go into the BIOS and tell the computer to use an expansion bus video card by default. How to do this varies from one machine to another; check your manual. Then, unplug the computer from everything and move it to your workspace.

Start by removing the case cover. There are a huge number of different case designs out there, and most of them have screws holding the cover on at the back. But I also have seen cases where the screws are on the bottom or behind a front snap on the cover, so you may have to go hunting. Connect your grounding strap to the computer.

If your computer has its video card as an expansion card, start by removing the old card. Locate the current video card. Normally, one screw is holding it in place, so remove the screw. Some motherboards have a latch holding the video card in place that may have to be pushed before you can pull out the video card. Pull the old video card out and drop it into an anti-static bag.

Figure 2. The cover off the computer, the old video card visible.

Take the new video card out of its package and drop it into the expansion slot. If your motherboard uses a latch to keep its video card in place, make sure it is closed. Screw the new card into place, and then replace the case cover.

Now reconnect your PC to power cord, keyboard and mouse plus video. If your machine has on-board video, make sure you reconnect to the new video card. Turn on your monitor, wait a few moments and then turn on your PC. If you see a brief message describing your video card followed by your PC's BIOS messages, great, the hardware stuff is done and you can get ready to deal with software issues.

Figure 3. The new video card in place.

If you are upgrading from an older NVIDIA card for which you already have installed the 3-D video drivers, you may be done at this point. NVIDIA drivers support a fairly wide range of cards, so a move from one card in that range to another doesn't mean a change in drivers.

If you are running Fedora Core 4 here is what you do next. Open up a terminal window and become root. Edit the file /etc/yum.conf and add the following lines to the end of that file:

  name=Livna.org - Fedora Compatible Packages (stable)

Next, type yum list *nvidia*. Among the files listed should be nvidia-glx.i386 and you want to install this with:

  yum install nvidia-glx.i386

The above command will want to install two files, the nvidia-glx.i386 file and an appropriate kernel for your system. When asked if you want to install these files, answer yes.

Once the above files have installed, reboot your machine and you should be done.

For other Linux releases, some excellent tutorials are available elsewhere on-line, such as this one for Debian.

So, how did it all work out for me? Well, with Tux Racer I went from about 20 frames per second to around 120. Flight Gear went from a modest-sized window to full-screen. Doom 3 went from being completely unplayable to playable, though at 640 x 480 screen resolution.

Colin McGregor (colin@mcgregor.org) works for a Toronto area charity, does consulting on the side and has served as President of the Toronto Free-Net. He also has been a guest speaker at Toronto Linux User Group meetings. Colin also can be found occasionally playing on-line games under the name of a Japanese cartoon mad scientist.



Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

If you can help; how about getting a card to work on Mandrake?

Anonymous's picture

I have a NVIDIA card (PNY 6600 128MB) and using mandrake 10.1.
I have asked various forums for help, but I am still unable to get the video card working.
It may be simply because my knowledge isn't the greatest on this system, still sort of new to Linux based OS's.
Anyway, any help would be GREATLY APPRECIATED!!!

Hmmmm Nice artcle, anyway i

Frans Ferdinan's picture

Hmmmm Nice artcle, anyway
i think that i would go with the nvidia card because thay make the best drivers (FREE OR NOT)
anyway i would like if any could recomend about the video card bus
is the pci express just as good as agp bus, since pci express is a new standard is there 100% linux support or should i go with agp 8x instead?

JUST ONE NOTE nvidia sponsors opensource projects such as www.jahshaka.org im start getting a BIT PISSED about free vs non-free

Does Ati support open projects, no they dont
Does Ati makes good linux drivers ,no they dont

my choice is clear NVIDIA 4EVEEER :-)

What about Matrox?

Leon's picture

I have ATI Mach 64 and Radeon 7000 video on my systems running various vintages of Libranet Debian and one system with a TNT2 NVidia card. I prefer the the ATI Radeon 7000; it supports 3D and I can upgrade the kernel without problems, while the TNT2 needs driver updates.

Having researched the subject and gotten numerous recommendations, I am getting a Matrox card for my next upgrade.

RE: What about Matrox?

Tim's picture

Having just used a Matrox Millennium G650 (AGP) for a while, then two ATI Radeon 9100's (PCI) and finally an NVIDIA GeForce 6600GT for a dual head setup, I have to say I prefer the NVIDIA. All this experimentation started about two months ago when I burned up my motherboard and video card (apparently there's some serious current on the AGP bus, I suppose I should read the spec).

The Matrox card was a good deal (less than $100) for a dual DVI card so I thought I'd give it a shot. The default X drivers were OK, but didn't offer a lot of functionality, so I switched to the Matrox-provided drivers. The X driver part compiled and installed, but the kernel module wouldn't compile. Being really much too lazy to figure out why (I think it never expected a 2.6.x kernel) I left it out since the X driver worked without the kernel module. However, without it I didn't have XVideo support (kinda puts a damper on movie watching). Actually, I don't know if the kernel module would have made a difference, but at any rate, I didn't have XVideo. Also the console framebuffer didn't play nice and I really, really like my console. Dual head X was also a bit of an experience. I could get a mirror mode where both screens were identical, or a proper multi-head, except that the card wouldn't turn the second output on. I suspect all this would go away with a proper kernel module? So I got frustrated and switched to two PCI Radeon 9100's I had.

The Radeons were left over from a six-head experiment with a PCI bus expander that didn't work out too well. I suppose 4 video cards worth of data was just too much for one PCI bridge chip to handle. Interesting things happened. :) So I put two of these cards in and went dual head. These worked pretty well with the X drivers. I tried the gatos drivers, but they must not have worked because franky I can't remember anything past 'emerge -v ati-gatos'. However, switching between X displays hosed things regularly. Since I'm working on a window manager aimed at multi-head displays that wasn't very good. And again I had framebuffer issues.

So I broke down and ordered another XFX GeForce 6600GT (same as the one I let the smoke out of). Downloaded and installed NVIDIA's drivers, set my console framebuffer back up and everything worked just right. So now I have a nice high-res console with bootsplash, dual-head capability with GLX and XVideo and I can switch between X displays without issue. Xrandr support is there too, but it's sort of dodgy at the moment. I've found it to be more of a novelty item anyway. So, all-in-all, I really think the NVIDIA cards are leagues ahead of the rest, binary driver or no.

If anyone has pointers on making the Matrox card play nice, I'd appreciate them. I think the overall picture was crisper with the Matrox card and if I had everything working it would be at least as good for my purposes as the NVIDIA card. The two Radeon cards had some hardware issues (bus conflicts and such, I don't think they both wanted to be there at the same time) and the fans were wicked loud. For now however, I'll stick with NVIDIA. Perhaps a Quadro next time.

fixed install script

corny's picture

i have not yet managed to get the drivers from the matrox site to compile the kernel module. A chap named Alexander Greisser has been doing a fantastic job of making up for matrox you can download fixed installers and hacked driver from his site www.tuxx-home.at i have been using these with my parhelia 128 AGP 8X and have never had a problem getting the kernel module to compile under open suse (2.6 kernels)
enjoy :)

Matrox Drivers

J0eyB's picture

Running a matrox parhelia 128 agp8x under solaris 10, and another parhelia 256 under FC6.

I paid for the matrox linux drivers and haven't had an inch of trouble on either box.

Supports billions of colours on analog, or the 16.8 million on DVI with dual-head DVI being what I use on both with 20" widescreen LCD's.

I guess if you want to keep playing with free drivers, nVidia may be your only semi-reliable choice.
Then again, if you pay for a proper kernel module and X manager you get exactly what you pay for - a proper fully working graphics card with no compatibility issues.
Sometimes X 'free' 86 isn't really 'free', in the sense that setting up the card, compiling kernel, recreating the config file several times over and over and over costs you more in time than it would just paying for the damn drivers and modules up front.

Incidentally, you can download trial drivers for the matrox cards, so try before you buy is a realistic thing.

Sure, it would have been nice for matrox to support linux in-house and provide the drivers at no extra cost, but their main market is massive professional corporate market running M$ crap. Matrox were always high-end and never really targetted home users, so there is method in the madness.

Can say Ive used the parhelia under windows, and liked it very much. Can't say I liked windows though, so after some thought shelled out for the linux drivers and haven't looked back.

PS: Solaris 10 is only really good on Multiple Opteron systems ( I mean 4 or more) So maybe Gentoo will replace my Solaris OS soon. Anyone who can afford more than 4 Opterons has too much money.

I can't recommend the Matrox P750 for linux

Anonymous's picture

I can't recommend the Matrox P750 for Linux. I've gotten it to work, but seems that after every xorg uprade something changes. At the moment I'm stuck at 1280x1024 on a 1600x1200 LCD. On windows it works great, Gentoo I got it to work after some finagling. Kubuntu, Ubuntu, FreeBSD all DOA. The amount of time invested to get it to work leaves me wanting to jam the card in a blender set it on high and toss the whole mess into the trash compactor.

good article, where's the editors?

Tuxchick's picture

Good article. NVIDIA is also my choice for good 3-D on Linux. ATI cards are simply too flaky and unreliable. (Note that NVIDIA supplies its own driver installer script, which works great.) Yes, it sux that NVIDIA is neither Free nor Open, but I'm not spending a pot of money on something that doesn't work well.

Something to watch out for on motherboards is a lot of new ones do not support 3.3 volt AGP cards; a lot of new boards are dual-voltage AGP, but some support only 1.5 volt. This means you can't use older AGP cards, which of course won't matter when you're upgrading, but it is a gotcha when you want to recycle a 1x or 2x AGP card.

If I might make a couple of spelling corrections-
"pre-measures and pre-prepares" simply have to go. (Where's your copyeditors, anyway? Come on, LJ!) "measures and prepares" are all you need to say. If you have an irresistible urge to add extraneous syllables, might I suggest doing it in a medium that will not receive public scrutiny from whiny grammarians. :) I wouldn't even mention it, except I see the same mistakes made all over the place, and by gosh it has to stop!

What about a Free as in Freedom video card?

Anonymous's picture

Any news about this promising video card, that will have real Free drivers?
I don't want any binary driver on my GNU/Linux box, sorry, but I don't want to depend upon closed proprietary software.

Yet you don't care that you h

Anonymous's picture

Yet you don't care that you have a completely proprietary BIOS and firmware in every device in your system. Hypocrisy at its finest.

Not at all

Anonymous's picture

When he upgrades his system, he's not in danger of the BIOS suddenly no longer working -- or the microcode in the CPU, or the 120VAC coming from the wall.

Even if you're being purely pragmatic, the BIOS is a de facto standard which is both well-documented, and fixed, so even though you may never get support from the makers of your BIOS, doing a system upgrade won't leave you out in the cold.

A video card is a completely different story: it sits *in* the kernel, it has neither a fixed nor well-documented interface, and when (not if!) they stop supporting it, system upgrades become difficult-to-impossible. Been there, done that, not going back -- upgrade your kernel for features and bugfixes you need, or stick with an old version just so your graphics card works, because the dorks won't recompile their binary blob for the latest release? No thanks!


Manfred Kulia's picture

I always thought that you can flash-program the bios ...

He's exercising choice where

Anonymous's picture

He's exercising choice where he can. If he can't replace BIOS and firmware, by your argument, he should run 100% proprietary software. Why are you so afraid of someone else having a choice? It doesn't affect you whatsoever. Who are you to say what others can or cannot do?

Exercising choice

Anonymous's picture

He could always run Linux Bios (http://www.linuxbios.org/index.php/Main_Page).

Personally, I don't mind running NVidia's drivers--I believe in FOSS, and I use FOSS when I can get the functionality I want and need.

Here's a better debian howto

Anonymous's picture

Here's a better debian howto for nvidia drivers:

Experimental drivers for newer Radeons

Anonymous's picture

There are also experimental free drivers for the Radeon 9700 which may turn out to be promising for newer Radeons as well. It is currently only in CVS and very experimental, but may show up in an X.org/Mesa tree in your favourite distro in the future. Check out the "r300" project at Sourceforge to learn more.

r300 3D driver is included in

Anonymous's picture

r300 3D driver is included in next version of X.org (6.9 and 7.0)

The article completely fails

Anonymous's picture

The article completely fails to mention one very important point: The NVIDIA 3D drivers are non-free. You cannot report bugs in the kernel if you use them. It may not work with future hardware, you are forever left to to NVIDIAs good will to fix any problems.

Instead you can buy ATI Radeon 9200 cards, which have free both 2D and 3D drivers well supported in Linux. You can find the without a cooling fan and with a DVI connection. It is the perfect video card for those who want to run free software -- which might turn out to be quite common in the Linux world.

If what you want is good FPS in non-free first person shooters then the NVIDIA card is probably a good choice. But then you might find even better support in Windows, and what cards between NVIDIA and ATI that offer the best performance there tends to be a hot discussion topic in web forums everywhere.

Yes you can report bugs, Just

Anonymous's picture

Yes you can report bugs, Just boot into single user mode and replicate the bug. I've done it enough, although it's a fallacy to believe reporting bugs means the maintainers will fix them :(

Good article, but Livna?

Anonymous's picture

In browsing Dag's APT/RPM repository http://dag.wieers.com/home-made/apt/ and some of the user comments posted there, I've seen some concern about RPMs from Livna not "playing nicely" with RPMs from other repositories. Maybe this problem is an old one, but alternative repositories would probably be useful. It's also possible that because these are proprietary drivers, they don't have dependencies on anything other than the version of the kernel.

Also note that once the nVidia drivers have been installed, there is an nvidia-installer script that can be used to grab updated drivers directly from nVidia. I have a compiler and kernel-devel sources installed, so I typically go this route for upgrading the nVidia drivers for my Compaq laptop (R3000Z with Athlon64).

Dead link on "Debian" underlined in text of story.

Anonymous's picture

In the story,it says "Debian(underlined)" and the link is dead.

Dead link on "Debian" underlined in text of story.

Keith Daniels's picture

The owner of the link moved it with this comment:

WARNING: This document has been obsoleted due to package renaming in Debian Sarge. I'll update it the next time I have access to an NVidia graphics card

If you still want to look at it the new link is here:


All the new OSs and windowing systems are oriented towards content consumption instead of content production.

--Steve Daniels 2013