[TUHS] UNIX and USB

segaloco via TUHS tuhs at tuhs.org
Tue Mar 10 05:04:54 AEST 2026


So USB hits the scene in the mid-90s, the raucous 80s of UNIX had come to a close by this point and many original actors and architects were on to bigger and brighter things.  In other words, the folks who designed terminal handling, block and character I/O, etc. were long since "retired" from helming the UNIX ship.

This has me wondering, when USB hit the market, was there any attempt at a grand, unified "this is how UNIX does USB" around the industry or was implementation of drivers and interfacing largely left to individual shops?

The reason I ask is I'm currently working up some tooling in the UNIX tradition for interacting with the RP2040 microcontroller (as opposed to their picotool and pico-sdk which are bulkier than what I want).  What I'm currently tinkering with is something dd(1)-like that allows indicating things like I/O direction, packet type (control, bulk, etc.), payload, etc. for a very basic generic USB operation that could then be used on /dev files, as opposed to my current approach of writing a libusb-oriented monolith.

Was there ever any sort of canonical basic USB packet tools operating on /dev entries in the UNIX ecosystem?  Something making USB packet I/O a shell affair rather than libusb or custom kernel stuff/ioctls in a C application?

Getting this far down into USB is pretty fresh for me BTW, so pardon any incorrect assumptions (e.g. whether stateless, individual process invocations could even reliably issue sequential USB transfers without potential transients introduced between invocations, claims and halt states between processes, etc.).

- Matt G.


More information about the TUHS mailing list