Jun 262006

I gave a talk at the Sketching in Hardware 1 conference. It was a great conference, full of amazing people and hosted at an astounding location. I’ll write more on the conference later.

My talk was “USB on Rails”. The USB HID standard enables the sending and receiving of arbitrary data-structures (“objects”) between a host PC and a device. All without any additional device drivers, since the HID driver is built in to all OSs. Many sketching tools or demos use USB, but introducing them to the unintiated means lots of reboots for driver installs. The title is a silly, but half-serious, take of applying the philosophy of Rails to hardware-to-computer interfacing: solve the common case simply, but allow deviations. More on this later, for now, here’s my talk’s slides:


 Posted by at 8:58 pm

  11 Responses to “Sketching in Hardware: USB on Rails”

  1. USB on Rails…

    MAKE pal Todbot posted up his slides from Sketching with Hardware, it’s good stuff, he writes – “My talk was “USB on Rails”. The USB HID standard enables the sending and receiving of arbitrary data-structures (“objects”) between a host……

  2. hey tod, once again a cool topic that is way over my head. (i am getting old and have the brain of a father now, dont forget!) but of special note is that you went to henry ford museum for this conference. both my parents are from dearborn, and all but one of my grandparents worked at fords… we went to that place (incl greenfield village, which i hope you also got to see) every summer, employee discount! (my grandmother still lives in dearborn, but will be moving to oregon at the end of the summer.)

    thanks for having one more tiny connection to my life. hehe

  3. I really like the slides and I would love to hear the talk. Just one note, maybe you’ve heard it already. On slide 6 you write ‘”HID” is a misnomer.’ But from what I can tell, HID stands for Human Interface Device, so I don’t think there is an implied bias toward input in the name.

  4. nap, that’s interesting and you’re totally right. I wonder why I kept mis-reading it? Was it “Human Input Device” to begin with? Or maybe I’ve been blinded by all the input-only HID devices out there.

  5. […] todbot blog » Blog Archive » Sketching in Hardware: USB on Rails (tags: DIY hacks hardware electronics reference) […]

  6. Sketching in Hardware 1: a retrospective…

    Every generation expresses their need to exchange ideas in person differently. For the Victorians, it was the parlor, for the Beats, coffeehouse culture, for Hippies, it was the Happening. Now, it’s the mini-conference. I could go on about the origin…

  7. I enjoyed the slides and am looking forward to trying it out. I have two questions, though. At first it looks like you’re saying that we can use USB HID without a lot of configuration, then the last slide shows a configuration window with no explanation of how to use it. Are there any tools for creating the HID configuration?

    Also, are there any embedded systems you can recommend to use from OS X? Like you I’ve been put of PIC programming because the tools are so Windows-centric. But even the tools I see which claim to support Macs seem to require a serial or parallel interface. I’ve got a serial converter for my Mac, but it’s a hack and seems flaky. Any recommendations for a USB-centric approach (or better: Ethernet-centric)?

  8. […] UPDATE 06/29/06 : Todd Kurt has a post on his blog with his presentation slides from his talk entitled “USB on Rails”, a proposal for circumventing the standard USB Driver infrastructure in hardware interfaces in favor of using the generalized Human Interface Device driver. The topic is over my head, but it seemed to be a call for someone to develop high-level tools to enable creators to be able to communicate in a more arbitrary fashion between hardware and software projects. […]

  9. Dethe Elza, the best embedded system I’m aware of for Mac OS X right now is Arduino. It can be powered and programmed via the Mac’s USB port and the programming environment is very similar to Processing, if you’re familiar with that. It’s a great system and I’ve been using it extensively. It’s much cheaper than PIC or Basic Stamp systems.

  10. Tod,

    I really like your thinking. I’m also following the Arduino route (with an eye to Wiring (http://www.wiring.org.co and available pre-built from Sparkfun) as an upgrade path for projects needing more I/O)

    However, if you want an platform for your HID approach, have you looked at the Atmel AT90USBKEY?

    This is a demo board produced by Atmel for their AT90USB1287 microcontroller which has built in USB slave (like Arduino implements) but also USB Host which opens up new apps and possibilities. Atmel supplies USB HID drives/code/examples for the device.

    Info at…

    The part is now widely available, eg from Digikey…

    Best part – its a bargain at $30 for a fully assembled, ready to go hobbyist platform. Build in bootloader – no need for an ICE/Programmer. WinAVR is supposed to already know about this device. The underlying AT90USB1287 is about $15 so low-cost mass deployment is still viable – way cheaper than BasicStamp (re your recent post)

    Think about the potential of Arduino software (or its Wiring cousin) with the config library and hooks to talk directly to the AT90USBKEY for software download over USB. Way beyond my technical skill but I understand this to be viable under Arduino.

    The only downside to the AT90USBKEY is that they have used a very non-standard and breadboard-unfriendly choice of 0.05″ x 0.1″ headers for all the I/O pins. Dumb design choice by Atmel for hobbyist use but could be easily addressed with a little breakout board or cabling set (to standard 0.1″ headers)

    What do you think?


  11. […] to make “driverless” USB a reality.A sort of training wheels for USB.At the time I called this USB on Rails”, poking fun at […]

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>