Parallax Propeller2 USB driver - the MashUp

Acknowledgments
Login

Acknowledgments

This project's USB host engine is greenfield by policy — and precisely because we wrote every line against the silicon, we know exactly how much we owe the people who worked this ground first. A driver like this is only "one cog" because a community spent years making the Propeller 2 a place where that sentence can be true.

Chip Gracey and Parallax Inc. — for the Propeller 2 itself: the smart pin USB mode (P_USB_PAIR) that does NRZI, bit-stuffing and line states in silicon, the eight-cog architecture that makes a single-cog USB host a design constraint worth honoring instead of a compromise, and Spin2/PASM2. The whole shape of this project is a conversation with that design.

Ada Gottensträter (Wuerfel_21) — author of USBnew (OBEX 4198), the community's proof that full-speed USB host on the P2 smart pins actually works, and works well. Under our greenfield rule no code was copied, but hardware truth doesn't care about clean rooms: her driver's timing discipline — the TX byte-handoff gap and its ~168 MHz breakpoint, the one-clean-SE0 reset shape, SOF-at-release — repeatedly turned out to be the correct answer that our own hardware campaigns re-derived the hard way (tickets 1090, 2087, 4040 tell that story). Having a known-good driver in flash to arbitrate "is it the hardware or is it us?" saved this project weeks. This driver stands on hers even where it shares none of her code.

Chris Gadd — original author of the P2 microSD FAT32 filesystem driver that src/usb_fat32_fs.spin2 is adapted from (MIT, © 2023). The cluster and directory machinery at the heart of our FAT32 support is his work; the FSInfo next-fit allocation discipline we later hardened for flash wear was already sound in his design.

Stephen M Moraco (Iron Sheep Productions, LLC) — twice over: for the handle-based API rework of that FAT32 driver (© 2026) which is the form we adapted, and for pnut-ts and pnut-term-ts, the compiler and debug terminal that built and bench-ran every single line of this project — tens of thousands of headless runs, clock ladders, and canary sweeps flowed through his tooling without complaint. The P2 Knowledge Base that answered our silicon questions is his stewardship too.

Jon McPhalen (JonnyMac) — for jm_i2c.spin2 and jm_ds3231.spin2 (MIT), which gave the bench its RTC time source, and for a body of idiomatic Spin2 that taught this codebase's authors what good P2 objects look like.

The Parallax community — the forum threads, OBEX objects, and shared scope traces around P2 USB that mapped the terrain: what the smart pin guarantees, what it merely suggests, and where the dragons live.

Our field reporters — the anonymous benches running this driver in real instruments, whose precise, reproducible reports (a wedged USB-3 stick behind a hub, 2026-08-11; the root-attach gap from the CANgaru P2 Edge bench, 2026-08-12) hardened this driver faster than any lab campaign could. A field report with a reproduction table is a gift; we got several.


Everything above is offered back under the same MIT terms (see LICENSE) — take it, build on it, and leave the next bench a report as good as the ones we received.