Industry


Ads by TechWords

See your link here


Driving the Linux drivers

One of the great Linux myths is that it doesn't support modern hardware. What nonsense! I've been finding for years that it's the newer Windows desktops that don't support equipment.

To make sure that Linux supports hardware, Greg Kroah-Hartman, a Linux kernel developer and an engineer at Novell, started a project, the LDP (Linux Driver Project), for open-source developers to create hardware drivers for free for companies. You don't even have to reveal your precious proprietary secrets to the world. The programmers will keep those secret.

It's been a very successful project. Last year, at the Linux Foundation conference, Kroah-Hartman said, "LDP) is alive and well, with over 300 developers wanting to participate, many drivers already written and accepted into the Linux kernel tree, and many more being currently developed. The main problem is a lack of projects. It turns out that there really isn't much hardware that Linux doesn't already support. Almost all new hardware produced is coming with a Linux driver already written by the company, or by the community with help from the company."

It's only gotten better since then. Kroah-Hartman released a report today in which he summed up where the project has been in the last year and where it's going.

First, "Goal one (write drivers) has been very successful. Myself and many other members of the LDP have written new drivers for a wide range of different hardware devices, and gotten them merged into the main kernel tree. Several more are currently under development and we are averaging about 2 queries a month for different drivers from different companies."

Next, "Goal two (educate people) has been reasonably successful. While working with many companies, we have helped them become maintainers of their own codebases within the kernel, integrating them into the main kernel development process, allowing themselves to control their drivers and direction for their Linux support much easier."

Finally, "Goal three (work in the open) has succeeded even better than I had expected. At the Linux Kernel Summit last year, the drivers/staging/ tree was created, allowing us a place within the main Linux kernel tree for drivers to be merged that were not yet of the high kernel quality standards. This has allowed many users the ability to use their hardware with Linux much earlier than previously possible, and it has allowed a common place for the community to contribute patches and fixes for these drivers. This has alleviated the need to hunt over the Internet for various drivers."

Kroah-Hartman added, "The staging tree has also provided a place for developers wishing to get into Linux kernel development to easily help out and start working on code." I'll add that if you're a programmer adding 'device driver developer' on your resume is always a win.

Looking forward, Kroah-Hartman plans simply to keep on keeping on.It's worked so far.

To be honest, device drivers, on any platform, are always moving targets. And, while you can get basic functionality from almost any device, getting the fancier stuff can be a real challenge.

In particular, all-in-one units that combine multiple functions into a single box, remain problem children. Getting any single function to work isn't a problem, co-coordinating all of them, that's not so easy. In no small part, that's because what people want isn't just a working fax/printer/scanner, they want the front-end software that lets you manage all that functionality.

That's a problem, which will only be solved when hardware companies start writing more programs for Linux desktop users. With the rise of Linux netbooks, though, this issue too will be addressed.

Before closing though let me say that this is not just a Linux problem. I, and many others, have endless troubles with multi-function devices on Macs and Windows PCs. In particular, I've found that a machine which will work great with one version of Windows will have fits with another version and I've found the same thing with Macs operating systems. Regardless of your operating system, we could really use better device support all-around from the vendors.

What People Are Saying

Linux owns USB 3.0

"After a year-and-a-half's worth of work, Intel hacker Sarah Sharp announced that Linux will be the first operating system supporting USB 3.0".

Billions for R&D and an army of thousands of programmers and Microsoft is perpetually incapable of innovation or even just being first to the starting block.

http://www.linux-magazine.com/online/news/first_driver_for_usb_3_0

Yes, IN-KERNEL drivers are

Yes, IN-KERNEL drivers are dime-a-dozen and (probably) support more devices than a standard XP or Vista install. But what about webcams? Wait, they're in kernel... How come Kroah-Hartmann(I assume he was the one who said it) are saying there is so little HW that isn't supported then? I just checked today and at the very least webcams which are "supported" aren't supported 100% atleast...

Is 90% support considered "good enough"?

And then you have scanners and printers in which you find the same situation. 90% support. Tweaking needed. Then you have all kinds of third party specialty equipment like Joysticks and what-have-you which i wouldn't even attempt in linux. Then you have cell-phones, iphones, musicplayers and multimedia devices...

Where again is this famous linux hardware compatibility? If Greg Kroah-Hartmann was a bit more visionary he would -- regardless of it being a kernel.org in-kernel or userspace -- umbrella _ALL_ driver projects under _ONE_ head as we all know that just because you're a kernel dev doesn't mean that you can't work on userspace and unification would strengthen that mission.

Plenty "good enough"

The amazing thing about Linux is that your hardware, no matter how old or decrepate, is almost certainly supported. It's the lists of supported hardware that are likely out of date. :)

Part of the reason for this is that Linux hardware support usually goes directly to hardware instead of to the "manufacturers" label. So while Windows drivers spend a lot of time checking to make sure that you're not using manufacturer B's software on manufacturer A's hardware, Linux drivers just go about their job.

Most of these "manufacturers" are just assembling things from reference designs and slapping their own labels on. The real manufacturer's reference drivers work just as well, or better, than their drivers.

Of course, there are some hardware manufacturers who are their own worst enemies. I know of one company who makes some pretty reasonable printers who keep changing their driver interface, so that the driver for model x300 didn't quite work with model x400 and didn't work at all with x500, while their y400 line used an entirely different approach.

If you can't keep a consistent driver API to your hardware, and don't tell the open source community what they need to know to write a driver, you're just limiting your potential markets. Smart manufacturers have realized that.

Anyway, unlike Windows, I don't have to worry about drivers for my older hardware - such as an old but still good printer or scanner. I can update to the latest Linux, or even change distro, without having to replace my old workhorses.

Totally agree. What most

Totally agree. What most those in the "Windows supports anything" crowd don't realize is that the whole reason their Windows boxes are well-supported is because the guys who assembled their machines were the ones who had to make sure drivers were installed and working. If they were to try installing a retail copy of the same version of Windows on that same box, their tune would change.

Linux, meanwhile is different. Two things Linux has that Windows does not have (Online package repositories and a small size, leaving lots of room on its disc.) allow for Linux to have just a whole truckload of drivers available without the user ever having to look up their hardware and searching OEM pages.

I stopped listening to the bitches who can't get their wireless working. Since 2.6.24, the Linux kernel has EXPLODED in the amount of WLAN drivers. So you're whining your obscure little POS wireless chipset/card isn't working out of the box? Cry me a river, it would have been the same way on Windows and Mac OS X and is the fault of the manufacturers for not releasing drivers/specs.

"People blame ati for not updating the drivers every six months for the new xorg, yet Windows 7 or Vista can easily use drivers that are two or more years old."

It's because Xorg, unlike the explorer shell in Windows, actually changes for the better. Explorer is still basically the same as it was in Windows 95, except in Vista they added a bloated DirectX Graphics-based 3D subsystem for compositing. It absolutely IS ATI's fault that the Catalyst drivers (What is also called fglrx.) are so slow. Xorg devs aren't going to wait until ATI gets around to supporting Linux better. This is why nVidia and Intel's the choice brand of video chipsets for Linux, because they actually keep their drivers up to date, which is THERI responsibility, not the windowing system devlopers. Don't blame Linux devs and distributors, blame ATI. The distros have no control over it, and it's stupid to slow down X development for a company not taking Linux seriously in the driver department.

Don't like it, tough, the X devs have no control over how the Catalyst drivers get released. Cry me a river or switch to nVidia (Which is better all-around than ATI anyway.) or Intel.

The Catalyst support ATI provides is so bad the Arch devs threw Catalyst into the AUR so that the rest of the Arch community could actually get Xorg 1.6 and stop waiting for ATI to get their ship together. Why should the rest of the community get hosed because the minority of lusers who use ATI get special treatment. I'm glad they did, otherwise I would *still* be waiting for Xorg 1.6.

It shouldn't be a matter of keeping up, since Intel and nVidia have no problems doing so. Perhaps they, unlike ATI, start developing their next versions of drivers BEFORE Xorg's next releases hit primetime.

frontend software

> that's because what people want isn't just a working
> fax/printer/scanner, they want the front-end software
> that lets you manage all that functionality.

That always drives me crazy, I hate the all-in-one frontend softwares that work poorly and pop up windows with my ink levels on MSWindows, but I am amazed by the people who actually want this stuff running on their boxes all of the time.

Maybe its just a difference of philosophies, but Linux software is mean to control your devices, where as Windows software seems designed to take over your whole system and tell you what to do, when to do it, and how to do it with only the vendor's software. Let me decide; I just want the hardware.

PS the formatting on the page is still horrible with (official) Firefox 3.0.10 on Debian Linux.

Getting the fancier stuff

I completely agree with this: "getting the fancier stuff can be a real challenge". As far as I know Linux is the OS with the biggest number of drivers available, but drivers lack advanced functionalities that show on Windows.

Still, the perception of Linux not being "so compatbile" as Windows, is high. Let's say we all like to be whiners... :) As a matter of fact:

http://nolinuxnoparty.org

great. :)

I don't mean to bash Linux,

I don't mean to bash Linux, I like to keep an eye on different distributions to see how they are developing.

Linux driver support is still a minefield, though. Ubuntu, for instance, breaks the fglrx drivers with every new release. People blame ati for not updating the drivers every six months for the new xorg, yet Windows 7 or Vista can easily use drivers that are two or more years old. In some cases you can even still use old XP drivers.

I was excited about the new release of Jaunty Jackelope, until I realized that my two year old dell laptop can't run it with 3d acceleration.

Are'nt NVIDIA graphic cards

Are'nt NVIDIA graphic cards considered "modern hardware" too? Why is Direct Rendering disabled by default on most distros???

That's a copyright and licensing issue

NVidia still insists on keeping its drivers closed-source, and on not allowing other entities (eg. Linux distros) to distribute these drivers without paying nVidia for the "privilege".

Therefor, any "free" distro (in both senses) can only distribute free, open drivers, and at best make it easy (as Ubuntu does) for the users to download the closed driver directly from nVidia.

AMD/ATI has figured out that this actually hurts them in the longer run, and has/is switching over to a more rational, Linux-compatible approach with properly open drivers. Intel video cards have been open for a long time now.

Because nvidia does not

Because nvidia does not release source code for their drivers. Because of this, the distros have no control over the quality or stability of said drivers. So by default, the distros enable the open source nvidia drivers ("nv"), which typically do NOT support 3d acceleration (due to the 3d specs being hidden behind an NDA), and allow the user to choose if they want to enable the proprietary driver or not. This isn't a limitation so much as an assurance of quality. The distros KNOW if the open source drivers are good or not. It's a coin flip as to whether or not the closed drivers are.