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

  • justniz - Wednesday, August 26, 2009 - link

    Maybe I'm missung something but this appears to be a new article.
    Why are you reviewing a year-old version of Ubuntu? there's been nearly 3 releases since that (Ubuntu is on 9.04 now with 9.10 coming very soon).
    Its important to review the most recent version as Ubuntu is totally unlike the Microsoft world in tnat new releases are frequent (Every 6 months) and have real practical improvements.
  • ioannis - Wednesday, August 26, 2009 - link

    I couldn't help myself, but...

    RTFA!!

    :-D

    PS: if you read the article, you will also get the joke ;)
  • nafhan - Wednesday, August 26, 2009 - link

    Great article. I look forward to reading the follow up.

    One comment on security that I would like to make. The commercial Linux vendors (IBM, Novell, Redhat, etc.) are all VERY dedicated to ensuring Linux security, as many/all of their server products use Linux, and changes they make will filter back down to the Linux desktop community. This is something that OSX does not have to nearly the same degree.

    My experience with running Linux on the desktop sounds pretty much the same as yours.
    -Games killed it in general. I don't usually have a top of the line system. So, I'm usually pushing my computer its limits to run newer games under Windows. Also, I hate dual booting, and most of the FOSS I use is available as a compiled binary for Windows.
    -Drivers killed it in one specific instance with an older laptop, as I never got NdisWrapper (required for my wifi cards Windows drivers) to run better than intermittently. I spent way to much time messing with it.
  • crimson117 - Wednesday, August 26, 2009 - link

    [quote]and for the price you’re only giving up official support.[/quote]

    Ubuntu doesn't have free official support, but neither does Microsoft. Apple does give 90 days free phone support, to their credit, but after that you have to pay.

    You can always hire an expert (from ms, or apple, or a third party) to help you, but that's also true with ubuntu, though I expect there are fewer such experts to be found.

    MS, Apple, and Ubuntu all offer free web-based help, both community maintained and "officially" maintained.

    So I think it's misleading to imply that going from Windows or Mac to Ubuntu means you're downgrading your support options. People overestimate just how "supported" their operating systems are. Also, Linux / Ubuntu releases fixes and updates much more quickly than Apple or MS, so your chances of hitting a bug is lower in the first place. (MS maintains a huge knowledgebase of bugs they haven't bothered to fix yet and might have a workaround for - but I hardly see that as a positive).
  • crimson117 - Wednesday, August 26, 2009 - link

    I'm probably being too hard on Apple here. The genius bar offers free 15 minute appointments to diagnose problems and offer software tips / advice.

    I'd say apple has the best "official" support, followed by a fuzzy tie between ubuntu and microsoft.
  • gordonsmall - Wednesday, August 26, 2009 - link

    While I have used computers for 20 years or more, I am not a techie. I am much more interested an experience that "just works".

    When Vista came out I decided to explore the Linux desktop world. I have been using it as my primary system (still keep the dual boot option for XP) for just under 2 years.

    I agree that "free" and security are big considerations for moving to a Linux desktop environment. However, there are some other items (and you might class them under security) that I like - because of the file structure, you don't have to periodically defrag your system. Both systems have a lot of updates, but so far I have not gotten the feeling that my Ubuntu system is gradually slowing down and clogging up with a lot of useless files (you don't see a lot of adds for such utilities as Registry Cleaners:). I no longer experience the MS ripple effect - when MS sneezes, other Windows apps may get a cold.

    That is not to say that there cannot be issues. My pet peeve has been that my sound has disappeared on a couple of occassions after downloading updates. Using Google, and the Ubuntu documentation, I have been able to get it back up - but wish that wouldn't happen. But Windows updates can on occassion cause some issues.

    I think you made a very valid point about the issue of tech support. Google has made a big difference in problem solving.

    Enjoyed your review.

    Gordon Small
  • yuchai - Wednesday, August 26, 2009 - link

    I've tried using Linux (usually Ubuntu) as a full replacement desktop on and off for the last few years. I've gone back to Windows every time after a while. Some key points:

    1. For my desktop usage, there honestly isn't anything that Linux does better, in terms of functionality, than Windows
    2. Windows is cheap enough that I do not mind spending the money on it. For the $100 that I spent for Vista 64 Home Premium OEM, it is quite worthwhile even if I only use it for 3 years. Yes, there are more apps out of the box for Linux, but it's usually easy to find freeware for Windows with the same functionality. Even Office is now pretty affordable with the Home & Office version.
    3. Games - Wine just doesn't cut it. When I want to play a new game, I want buy it and play it immediately! I do not want to have to do research to see whether some game would work on Wine even before I buy it. I do not want to spend hours troubleshooting on the internet if something doesn't work right.
    4. There's always something that you want to change in Linux that you can't figure out. Yes, usually the solution is on the internet. And I used to even enjoy spending time and looking for the solution. But, it eventually grew old. Now I just want things to work and keep working.

    Note that I do love Linux and actually have a server that doubles as a mythtv HTPC setup. It's a beautiful thing. I am comfortable with shell commands and frequently use SSH to perform multiple functions remotely. My opinions above is purely based on desktop usage.
  • cciemd - Wednesday, August 26, 2009 - link

    Great article, Ryan! Putting out some well written Linux articles really adds depth to your site. I have been reading this site daily for years and this article is prompting my first post.

    For future articles it would be great to see some Linux benchmarks in most of the hardware reviews. There are some excellent tools out there (check out http://www.phoronix-test-suite.com/)">http://www.phoronix-test-suite.com/). This would also give some closer apples-to-apples comparisons for Mac vs. Linux performance. I for one would LOVE to see SSD articles report some Linux (and Opensolaris/ZFS) benchmarks along with all the Windows tests.

    Users often don't realize how much they benefit daily from open source software. I don't think most Mac users realize all the OSX pieces that are used in the background for which Apple leverages open source code (Samba for SMB access and sharing, Webkit for Safari, etc.). Home NAS and enterprise storage which serve files in Windows environments are often *nix based.

    It is also a myth that open source means that developers aren't paid. Most enterprises recognize that implementing even commercial apps can require considerable internal development manpower. If enterprise developers can utilize open source code internally and contribute back to the code base, the companies save considerable money and benefit from a healthy software development ecosystem. There are thousands if not millions of developers employed to work on open source code.

    Please keep up the good work. I am looking for your next article.
  • Ryan Smith - Wednesday, August 26, 2009 - link

    Unfortunately the Phoronix Test Suite doesn't work under Windows, so it's of limited utility. It's something we may be able to work in to hardware reviews, but it's not really applicable to OS reviews.
  • chrone - Wednesday, August 26, 2009 - link

    what i'd like to see on the next ubuntu version is more softer and smoother graphic and font rendering. i hate the way gnome renders the graphic and font. they look old operating system. using the ms core font some how helps but not much.

    i know there's compiz and friends, but i just wish it comes by default, so no need to hassle with compiz and its setting. i wish it could be rendered softer and smoother such as in windows and mac osx.

    the look and feel should be tweaked more often! :D

Log in

Don't have an account? Sign up now