July 26, 2002 4:00 AM PDT
Linux poised to plug in USB 2
The upcoming 2.4.19 version of the Linux kernel--the core part of the Unix-like operating system--for the first time will include support for many USB (universal serial bus) 2.0 features and devices. USB lets people easily plug devices such as digital cameras, mice or printers into a computer.
The support, crucial to making Linux fully compatible with the mass of PCs and gadgets just coming to the market, demonstrates the ability of a host of volunteer programmers to keep up with computing trends. Linux, though bankrolled by some companies, remains a cooperative software project.
USB 2.0 support is a timely issue; the higher-speed interface is being built into the latest PCs and workstations.
Where the first version of USB had a top data-transfer speed of 12mbps, USB 2.0 can reach 480mbps, making it useful for higher-speed devices such as CD-RW drives, digital video cameras and network adapters. At these speeds, USB rivals FireWire--the favorite connection technology for when high data-transfer rates are required--but costs less to implement.
The new version won't instantly enable USB 2.0 to work with Linux-based devices, but will let the legions of Linux programmers get down to serious work writing "drivers," the software interfaces to all those devices.
"Before (the new version of Linux), it wasn't really practical for developers to start writing drivers for those devices," said David Brownell, a key programmer for the USB 2.0 features. But just this week, he's seen improvements for high-resolution Webcams, and the ability for a single USB port to simultaneously communicate with a handful of high-speed networking cards.
Some USB support has been included in the most recent versions of Linux sold by Red Hat and SuSE through custom patches, but the coming kernel will mean that the "stock" versions of Linux will include it.
Newer versions of Microsoft Windows, by far the most popular operating system for desktops and laptops, began supporting USB 2.0 earlier this year through the company's Windows Update service. USB 2.0, though, didn't start to take off until recently, after Intel incorporated the functions to control it in its desktop chipsets.
A window into Linux development
The arrival of USB 2.0 support in Linux provides a window into the "open source" community world under which programmers freely swap software source code, or blueprints.
The Linux-USB project serves as an information clearinghouse where programmers can find out details such as the unique identification codes assigned to each USB device or download software. VA Software's SourceForge site hosts a mailing list through which programmers contribute software updates and hash out issues.
Linux founder Linus Torvalds took a stab at updating the first USB support in March 1999, spawning an active developer community that mixes several regular contributors with others just stopping by. The USB group tests new software, with the "maintainer" Greg Kroah-Hartman keeping primary responsibility, and various other maintainers staying on top of smaller sections.
At times, the USB group submits patches to higher-ranking maintainers who have responsibility for the overall production and developer versions of the Linux kernel.
Two versions of Linux are under development simultaneously. One, the 2.5 series of "development" kernels, is for trying out new code. It has more cutting-edge features but isn't well tested, and has included USB 2.0 support for months.
The other branch--the 2.4 "production" kernel series that's changed more conservatively--is for use in shipping products and on computers. Commonly, features tested in the development kernel are "back ported" or added to earlier versions of the production kernel. By this process, USB 2.0 support will arrive in the forthcoming 2.4.19 kernel.
Work to be done
Much work remains to be done; namely, rewriting software to keep up with the faster USB infrastructure.
"Performance work hasn't really started," Brownell said. While some USB devices can transfer data at 200 megabits per second--less than half of USB 2.0's total capacity--most hardware and software is about half that, he said.
In addition, Linux developers have to build support for features of USB hubs, the hardware devices that let single USB ports be shared to accommodate several USB devices. USB hubs can be connected in chains, providing lots of USB ports but making for a lot of complications--especially when mixing USB 1.1 and 2.0 hubs.
Some of that new hub support is in the 2.5 kernel, Brownell said.
Then there's the challenge of bringing Linux USB support to the real world. Mainstream Linux versions are in the midst of a transition to USB 2.0 support, with some more cautious than others.
"USB 2.0 support is still in the development stage," Linux seller MandrakeSoft said in a statement. The USB 2.0 updates "are not mature enough yet for most production usage," the company said.
Red Hat put some early USB support into its current version 7.3 Linux product, though Michael K. Johnson, manager of kernel engineering, said "USB 2.0 support is new in Linux, and so we expect to find and fix occasional defects."
SuSE is thinking of providing software that lets customers upgrade to the 2.4.19 kernel, said Holger Dyroff, director of North American sales at SuSE, and standard support will come later this year. "SuSE Linux will definitely support USB 2.0 with our new upcoming products in the third quarter," he said.
The built-in hardware will kick USB 2 development into a higher gear, Brownell said.
"Linux is ready for the generation of PC hardware that's becoming available starting this summer, Brownell said. "The big problem with USB 2.0 adoption has been lack of devices.