xHCI spec is up!

I’m pleased to announce that the eXtensible Host Controller Interface (xHCI) 1.0 specification is now publicly available on intel.com. This is the specification for the PC hardware that talks to all your USB 3.0, USB 2.0, and USB 1.1 devices. (Yes, there are no more companion controllers, xHCI is the one host controller to rule them all).

Open, public documentation is always important to the open source community. Now that the spec is open, anyone can fully understand my Linux xHCI driver (although it’s currently only compliant to the 0.96 xHCI spec; anyone want to help fix that?). This also means the BSD developers can implement their own xHCI driver.

Curious what a TRB or a Set TR Deq Ptr command is? Want to know how device contexts or endpoint rings work? Go read the spec!

LCA 2010

My Linux Conference AU slides are now posted on my server. The USB 3.0 talk went really well, and I look forward to sharing it when the LCA videos go up in the next couple weeks.

LCA was a total blast! The speakers were wonderful, and I really felt integrated into the conference and social events by the techie women of LCA. Thank you to Sara, Jo, Jacinta, Liz, and all the other Haecksen of LCA2010!

The only downside is the weather. It’s really quite rainy here, although it’s 10-15 degrees warmer than Portland. I think Jamey and I are going to skip the Tongariro Crossing and go straight to the glow worm caves at Te Kuiti/Waitmo. At least we’ll be in a cave while it’s raining!

USB 3.0 support: coming soon to a Linux kernel near you!

#tags usb,usb3,linux,open source

The xHCI (USB 3.0) host controller driver and initial support for USB 3.0 devices is now publicly available on my kernel.org git tree. Greg Kroah-Hartman has queued the patches for 2.6.31, so Linux users should have official USB 3.0 support around September 2009. This is impeccable timing, since NEC recently announced they’ll be producing 1 million xHCI PCI express add-in cards in September.

This means that Linux will be the first operating system with official USB 3.0 support. I’m working with Keve Gabbert (the OSV person in my group at Intel) to make sure that Linux distributions like Ubuntu and Red Hat pick up the xHCI driver. Advanced users can always compile their own kernel on a standard distro install.

I hope that some USB 3.0 vendors who have prototypes will test with my driver. Instructions on how to compile a kernel using my git tree will follow.

This is a giant project that I’ve been working on for the past year and a half. It’s gratifying to see the code finally released, and exciting to know that hardware is on its way.

Debugging with printks over Netconsole

Image Copyright saschaaa -- http://flickr.com/photos/saschaaa/152502539/Netconsole is a powerful Linux kernel debugging tool. The dmesg output from a machine under test is transferred over an ethernet link (via UDP packets) to another machine. That means that you can see the debugging messages from the test machine on the screen of another machine. Netconsole isn’t good for debugging early kernel panics, but it is very useful if your new kernel driver hangs your system.

Continue reading

USB 3.0 and Linux

USB is getting a facelift!

In the beginning, there was USB 1.1, with the “low speed” and “full speed” devices (at 1 Mbps and 12 Mbps, respectively). Then USB 2.0 came along with “high speed” devices that ran at 480 Mbps. Now the new USB 3.0 bus specification defines “SuperSpeed” devices that run at 5 Gbps (5,120 Mbps).

SuperSpeed Logo - image copyright 2008 Sarah Sharp
Now that the bus specification is public, I can finally talk about the code I’ve been developing at work. I’ve been writing a Linux driver for xHCI (the new USB 3.0 host controller), and changing the Linux kernel stack to support USB 3.0 devices. On November 17th, I got to demo my work at the world’s first USB 3.0 “SuperSpeed” Developers Conference.

Continue reading

Student Day at Linux Plumbers Conference

For the past couple of months, I’ve been helping organize a student mini-conference for LPC, which will take place on September 16th. So far we only have 9 people registered for student day. We would like at least 15 students to make the student mini-conference a full-day event, and this week is the deadline for conference organizers to decide whether they need to scale back.

If you’re a student, and you’re even remotely interested in open source development, I suggest you take a look at the Linux Plumbers Conference Student Day page and register for the event.

Continue reading

Dispelling a Linux Myth

Over the past week, I’ve run into two different people who expressed the same thought, “Linux lacks support for a lot of devices.” I told them that this was a myth, and the Linux Driver Project has proven it is a myth.

Today I had an idea for a way to dispel this myth. I think someone should post a video of them walking into Circuit City, buying a random device, and walking out to their car. The video shows them configuring it on a Linux box and testing it. Then they would return the device and buy a new device. Buy, configure, return; repeat as necessary. The devices and configuration notes could be posted on the Linux Drivers Project wiki.

Now to find a decent videographer, buy a GSM data phone plan (for downloading packages and drivers in the car), and find some funding for devices that are non-returnable. In my copious spare time, of course.

Portland State Aerospace Society meeting notes for 2008-05-07

I have become the official blogger for the Portland State Aerospace Society (PSAS). If you haven’t heard about PSAS, watch my five minute Ignite Portland 2 talk and follow along with the sides.

In this PSAS weekly episode, I talk about the rocket airframe and the software for the avionics sensor nodes.


Tim showed off pictures of his setup for creating the light-weight fiberglass shell that goes around our rocket:

Continue reading