First post, by fsck100
USBDDOS is a third-party USB driver for DOS by crazii (https://github.com/crazii/USBDDOS). Upstream
development has been dormant since Feb 2024, and several reported OHCI bugs have known fixes that
haven't landed there yet. I'm now maintaining a fork with those fixes plus a few more, and just cut a first
alpha release.
Release page: https://github.com/Netrunner01/USBDDOS/releas … /v1.0.0-alpha.1
License: GPL-2.0, inherited unchanged from upstream. No license changes or proprietary additions.
What's patched in v1.0.0-alpha.1 (12 commits, full per-gap detail in CHANGELOG.md):
NEC µPD720101: UnrecoverableError recovery (was an empty handler upstream)
ALi M5237 / M1543C / ULi: skip HcFmInterval read/restore to prevent lockup
SiS 7001 / NEC µPD720101: disable Legacy Support emulation after BIOS handoff
OPTi 82C861 (FireLink): HcFmInterval/HcPeriodicStart latching retry (mirrors Linux's INITRESET quirk)
Bounded SMM handoff loop (~1s cap, replaces an unbounded busy-wait that hangs on stuck SMI)
Hub-class ClearPortFeature(PORT_RESET) spec violation that breaks devices behind a USB hub
POTPGT wait after SetPortPower (intermittent first-try enumeration on NEC root hubs)
HCD teardown made defensive (resolves the hcd.c(91) assertion on unsupported device classes)
Plus Linux cross-build case-fixes and a COM1 logging flip for headless diagnosis
The "alpha" label is about real-hardware verification being pending — NOT that the code is broken.
All 12 commits build clean with -Werror on Open Watcom v2 and DJGPP gcc 12.2.0, pass a 7-test
QEMU regression suite, and every patch is derived from authoritative sources (USB-IF specs, Linux
pci-quirks.c, Apple Darwin IOUSBFamily, FYSOS Book 8, chip vendor datasheets). The catch is that
QEMU emulates spec-compliant USB devices, and the bugs these patches address exist precisely
because real silicon deviates from spec.
Pre-built binaries are attached to the release page: USBDDOSP.EXE (DJGPP release, needs a DPMI
host like CWSDPMI or HDPMI32) for everyday use, and USBDDOS.EXE (Watcom debug with COM1
logging at 9600 8-N-1) for diagnostic captures with a serial cable.
If you have any of the affected silicon — or a Mac Mini 2011 / Sandy Bridge ThinkPad / Cougar Point
system you've been trying to get DOS USB working on — please test and post results, works-fine
OR fails-with-log. Both are useful. One independent report per patched gap is what moves this from
alpha to beta.
Not yet patched: NEC kErrataNECIncompleteWrite write-1-to-clear retries on HcRhPortStatus,
and full EHCI USBLEGSUP/USBLEGCTLSTS handoff for Intel PCH platforms (likely relevant to some
of the upstream Cougar Point / P67 / Mac Mini hang reports).