A Word on Drivers and Compatibility

As we mentioned earlier, Ubuntu and the Linux kernel are open source projects, particularly under the GPL license. In large part due to the philosophies of the GPL, compared to Mac OS X and Windows, Linux handles drivers in a notably different fashion.

In a nutshell, the developers of the Linux kernel believe in the open source movement and wish for all related software to be open source. Furthermore they do not like the implications of attaching a closed source “binary blob” driver to the Linux kernel, because if something goes wrong it can be impossible to debug the issue if it occurs in the driver for which they do not have the code for. As such they have moral and technical objections to the Linux kernel supporting external drivers and actively prevent the creation of such drivers. This is done through mechanisms such as not having a fixed API for external drivers, and by not artificially keeping themselves from making changes to the kernel that would break external drivers. Drivers that they do have the code for can usually just be recompiled against the new kernel and are unaffected as a result. The result is that “binary blob” drivers are systematically opposed.

For the most part, this works fine. Not all hardware is supported under Linux because not everyone is willing to share the specifications and data needed to make a driver, but more than enough device manufacturers are willing to share such data that Linux generally supports non-esoteric hardware quite well. There is one class of notable hold-outs here however, and that’s the GPU manufacturers, namely ATI and NVIDIA.

Compared to other drivers, GPU drivers are different for two reasons. First is the sheer complexity of the drivers - besides interfacing with the hardware, the drivers are responsible for memory management, compiling/optimizing shader code, and providing a great deal of feedback. This in essence makes GPU drivers their own little operating system – one that its developers aren’t necessarily willing to share. The second significant difference here is because of the above, GPU drivers are among the only drivers that have a compelling reason to be updated regularly; they need to be updated to better support newer games and fix bugs in the complex code that runs through them.

Complicating matters further is that some intellectual property in GPUs and drivers is not the property of the company who makes the GPU. AMD doesn’t own everything in their Universal Video Decoder, and just about everyone has some SGI IP in their drivers. In the interest of protecting that IP, it is difficult to release the code for those drivers containing other companies’ IP.

Because of all of this, manufacturer-supplied GPU drivers are not always open source. Intel and S3 do well in this respect (largely because they have few tricks to hide, I suspect), but hyper-competitive NVIDIA and AMD do not. AMD has been looking to rectify this, and back in 2007 we discussed their starting work on a new open source driver. Development has been progressing slowly, and for the R6xx and R7xx hardware, the open source driver is not yet complete. Meanwhile NVIDIA has shown no real interest in an open source driver for their current hardware.

So if you want to use a modern, high-performance video card with Linux, you have little choice but to also deal with a binary blob driver for that card, and this becomes problematic since as we mentioned Linux is designed to discourage such a thing. Both AMD and NVIDIA have found ways around this, but the cost is that installing a binary driver is neither easy, or bug free.

The fundamental method that both use for accomplishing this is through the use of a kernel shim. Both analyze the headers for the kernel to identify how the kernel is organized, then they compile a shim against that kernel. The shim resolves the issues with the lack of a stable API, and the other end of the shim provides the stable API that NVIDIA and ATI need.

Ubuntu in particular takes this one step further, and in the interest of promoting greater out of the box hardware compatibility, includes a version of the binary drivers with the distribution. This is unusual for a Linux distribution and has earned Ubuntu some flak since it’s not strictly adhering to some open source ideals, but it also means that we were not forced to play with driver installers to get Ubuntu fully working. Ubuntu had no issues with both our AMD 2900XT and NVIDIA 8800GTX cards, both of which were picked specifically because we wished to test Ubuntu on suitably old hardware which would exist in time for Ubuntu to include support for it. With that said, the drivers Ubuntu includes are understandably old (once again owing to the idea of a stable platform) which means we can’t avoid installing drivers if we want better performance and application compatibility.

And this is where “easy” comes to an end. We’ll first start with AMD’s installer, the easier of the two. They have a GUI installer that puts in a driver along with a Linux version of the Catalyst Control Center. It’s Spartan, but it gets the job done.

NVIDIA on the other hand does not have a GUI installer – their installer is a text mode installer that requires shutting down the X server (the GUI) in order to install. It’s difficult to understate just how hard this makes driver installation. Not only is doing all of this completely non-obvious, but it requires interfacing with the CLI in a way we were specifically trying to avoid. It’s something that becomes bearable with experience, but I can’t call it acceptable.

Driver upgrades are an issue on both sides, because the installers are not completely capable of finding and eliminating older versions of the binary drivers. In one instance, for the NVIDIA drivers we had to track down a rather sizable shell script that automatically deleted the old drivers before installing the new ones, as that was deemed the “right” way to install the drivers. We had less of an issue with ATI’s drivers, but to be fair the primary card I used for my time with Ubuntu was the 8800GTX. I can’t confidently say that there are not other issues that I may have not run in to.

The Ubuntu community does supply tools to help with GPU driver installations, Once such tool is EnvyNG, which reduces the driver installation process to selecting what driver you want to install and it does the rest. This is a far easier way to install drivers, in the right situation it’s even easier than it already is under Windows. But it suffers from needing to have the latest driver data hardcoded in to it, which means you can only use it to install drivers it knows about, and nothing newer. It’s not regularly updated (as of this writing the latest driver versions it has are NV 173.14.12 and ATI Catalyst 8.6) so it’s good for installing newer drivers, but not the newest drivers.

The other tool is access to Ubuntu’s Personal Package Archives, which are a collection of user-built binaries that can be installed through the Ubuntu package manager (more on this later). It’s harder to use than EnvyNG, but anyone can build a PPA, which makes updates more likely. As it’s user-generated however, this still means that there won’t always be the latest drivers available, which means we’re still back to using ATI and NVIDIA’s installers.

As it stands, installing new GPU drivers on Ubuntu is between an annoyance and unbearable, depending on how many hoops you need to jump through. It’s certainly not easy.

The other problem with GPU drivers is that they do not always stay working. Among the issues we encountered was ATI’s driver failing to work after installing an Ubuntu update, and an NVIDIA driver that kept rebooting the system during testing for reasons we never determined (once we wiped the system, all was well).

Our final issue with the state of GPU drivers on Ubuntu is their overall quality. With a bit of digging we can come up with issues on both sides of the isle, so it’s not as if either side is clean here. But with that said, we only ended up experiencing issues with ATI’s drivers. We encountered some oddities when moving windows that was eventually fixed in the Catalyst 9.3 drivers. It turns out that the problem was that ATI’s drivers lacked support for redirected OpenGL rendering; Linux guru Phoronix has a great article on what this is, including videos, that explains the importance of this change.

Ultimately we hate to sound like we’re beating a dead horse here, but we can’t ignore the GPU driver situation on Ubuntu (and really, Linux as a whole). The drivers have too many issues, and installing newer drivers to fix those issues is too hard. Things could be worse, Ubuntu could only distribute driver updates with OS updates ala Apple, but they could also be better. For the moment it’s the weakest point for Ubuntu when it comes to installing it on a high-end system.

What’s the Value of Technical Support, Anyhow? The Package Manager – A Love/Hate Relationship
Comments Locked

195 Comments

View All Comments

  • amrs - Saturday, September 26, 2009 - link

    Your ignorance and stupidity is showing here. No engineering software for Linux? Hello? Matlab is available, Simulink is available, Labview the same. Xilinx and Altera have supported Linux for a long time and so do the smaller FPGA houses like Lattice and Actel. Mentor Graphics too. Orcad is the only one you mentioned that isn't available on Linux, but Cadence does support Linux with their Allegro product and so does Mentor Graphics with PADS and Board Station and Expedition.

  • MadIgor - Thursday, September 24, 2009 - link

    I have to disagree. You are NOT talking abut average Joe/Jane. I think that even the article author is kind of biased towards enthusiast user. Ubuntu actualy completes all needs of average Joe/Jane user, you can browse www, you can do email/scheduling, you can play games (easy non enthusiast games), you can DL pictures from your camera and edit them, you can even playback mp3/CD and video, do basic office work, all out of the box. The gnom learning curve for PC beginners is much shorter then with windows. Most of the average Joes/Janes dont install aps or peripherals by themselfs, belive me I had to install it for them many many times on Win systems (the best is "installing" digital camera: plug one wire end in camera, other in PC). Yes I agree that installing Ubuntu so that ALL is runing right may be pain in the ass, but average Joe/Jane naever install their system (not Win, nor MacOS), but when they get the PC with preinstalled Ubuntu you are done. With windows you have to worry that they will "bother" you every few months with non working system. Yes it might be nice source of income for PC technician, but not always welcome as reliability advertising (for customer to come).
    I did some instalation of Ubuntu to my customers mostly as a "safe" web/mail PC, they all where used to windows platform already, after one week of using Ubuntu even the hardest critisizer where comfy to use Ubuntu (some even asked me to install it on their home PCs), The most "problem" was: that no one can read our "excel" files. So I showed them that it has to be saved with .xls extension and voila, no more problems. I was NEVER asked for any CAD system, nor MATHLAB, not even Graphics apps, all what they used in offie was already there! Then there are home users, only complaint was that thay had windows at work, but after few houres all was fine, only kids had problems that they cannot play enthusiast games on it. My wife is running Ubuntu for three years now, with no problem. When my 62 year old mother asked me for a computer I brought her a notebook with Ubuntu, had no time to explain it comming next mornig. My mom never used a computer before (ok shooting ships on my ATARI doesnt count), next mornig I came there, she was already browsing. I asked her how did she do that and she said its easy, tap the aplications then internet and one of the apps was "internet". She even installed the snake game, Isaid how did you do that, she said in aplications section is install new aplication, then she clicked on games and then she piscked what she tought would be the game for her and then install, whas that wrong? she asked, I said NO, its right.
    BTW no one knows that they can use CLI or that there is some terminal window in Ubuntu. They are average Joes/Janes.
    Not everyone is an enthusisat with PC full of stuff that, and be honest, you dont use on dayli base.
    The truth is that Ubuntu will not be a succesfull system for enthusiast or high level profesionals until big software houses (Adobe, hallo!) and game producers will not start to port software for Linux. But that is not fault of Ubuntu or linux and again we are not talking here about majority of users (I mean Joes/Janes).
  • fazer150 - Friday, September 4, 2009 - link

    All folks who think Linux is hard. Have you tried PCLinuxOS? this is easier to install, use than Windows XP, 2003 and Vista period.
    there is no Windows hatred here, but you have to try that before you complain.
    I have access to all Windows OS at work including the latest Win 7 RC but i find PCLinuxOS easy to setup and use. Needs no special admin skills every config is GUI driven.
    Linux has come a long way from where it was 5 years ago!
  • Cynicist - Sunday, September 6, 2009 - link

    There are two things I'd like to comment on that bothered me about this article. Firstly, most regular users do not use LTS, the software is just too old and the latest releases of Ubuntu are quite stable. LTS is mostly guaranteed stability for corporate environments.

    Second, this package manager hatred is based on this flawed idea that no packages exist outside of the official repositories. A simple google search for deb packages leads to GetDeb.net, a website dedicated to providing up to date packages of all kinds of software specifically for Ubuntu. Google search too hard you say? But its even less difficult to find packages because many project sites (such as wine, featured in this article) include multiple packages for various distributions and even PACKAGE TYPES.

    Overall not a bad article. The author definitely knows technology and I'm grateful for that, but he did not seem to do much research on the actual community itself or the Linux Way of doing things. These are minor issues which will resolve themselves with time and I'm looking forward to seeing more linux articles on this site in the future.
  • cliffa3 - Thursday, September 3, 2009 - link

    I was concerned as well with the constant releases...until I upgraded the first time. I had set aside the better part of an evening because I was *sure* there were going to be plenty of headaches. I've done three such version upgrades now and am happy (not to mention shocked) to report that it's literally a one click upgrade. Simply amazing. I'm sure something will get mucked up in the future with one of the version upgrades for me...but for now all has gone amazingly smooth.

    That being the case, I have to disagree with you on the "they release too often" point. I understand it's a pain to sift through all the search results on the forums, but I also have found some older threads (sometime 3 versions back) that the same fixes work for my issue. I agree they need to tag posts with version info...that would make it far easier. Also, there's far more useful information in the (versionally-diluted) forums than I've found for any other piece of software or OS I've used. I almost don't cringe when I have a problem or issue now because I'm quite confident I can find the information without too much digging.

    I'd encourage you to upgrade versions from your current install (don't wipe) and comment on how the process goes. Maybe I've just had an extremely easy (and lucky) go of things with no problems...it'll be interesting to read your experiences. Honestly with how easy my upgrades have been, I look forward to new releases (but still give them a few weeks before upgrading...just to see the comments from other users).
  • Mem - Wednesday, September 2, 2009 - link

    Very good read as usual,personally I like to see Kubuntu reviewed at some point(I hear Kubuntu 9.10 is due in Oct) ,as you know its the KDE version,also Gnome and KDE compared would be interesting.

    I think the main problem for new Linux users is which one to go with,sure they are all free but it can be confusing and time consuming to try them all,some are more noob friendly then others like Ubuntu/Mint.
  • lishi - Wednesday, September 2, 2009 - link

    Since you spend so many time dealing with the windows its worth pointing that compiz is actually much more powerful then what you wrote.

    Install the package ccsm-simple for more option.(like different application selector, different windows animations etc).

    Or install ccsm for the complete configuration tools. Given most of them are eye-candy there some who can improve the desktop experience.
  • sethk - Tuesday, September 1, 2009 - link

    In this sentence:
    "It’s undoubtedly a smart choice, because if Ubuntu wiped out Windows like Windows does Ubuntu, it would be neigh impossible to get anyone to try it out since “try out” and “make it so you can’t boot Windows” are mutually incompatible"

    The more common phrase is 'nigh on impossible' (as in close to impossible) or you could say it's nigh-impossible. Definitely not neigh. Sorry to point out grammar issues, but this is a pet peeve, right along with pique being spelt peak or peek (as in pique my interest).
  • v8envy - Tuesday, September 1, 2009 - link

    I've been a 100% Linux desktop (Ubuntu 9.04) user at home ever since I bought my last i7 920. Gaming, multimedia, web -- everything a typical desktop user does under Windows. The inconvenience of migrating an existing Windows install & re-activation outweighed the convenience using Linux which simply booted and worked on the new hardware.

    Yes, there are times where you must fire up Google and search for solutions, some of which are commands to be pasted into a terminal window. Yes, sometimes you need to upgrade software packages (Wine is horribly out of date for instance).

    On the other hand, with Windows you get apprximately 1,337 updaters which run on startup, virus checkers, malware checkers, browser parasite checkers, firewalls, DRM and misc layers of barnacles which accumulate the longer you use the system. Thankfully the gathering of cruft is not a bane on the typical Linux system yet.

    Try 9.04 and see if it is more to your liking. LTS means nothing when most open source problems are "supported" by simply upgrading to the latest software.
  • trexpesto - Monday, August 31, 2009 - link

    "linux" is "niche" spelled inside out and backwards


    ..in rot13.

Log in

Don't have an account? Sign up now