Make the USB stuff functional.

It's currently mostly un-tested though...