Skip to content

v1.0.0-alpha.2 (housekeeping) — binaries refreshed from upstream after PRs merged

Pre-release
Pre-release

Choose a tag to compare

@netrunner01 netrunner01 released this 15 May 18:09

v1.0.0-alpha.2 — housekeeping release

This is a housekeeping release. No new code, no functional
changes, no bug fixes. If v1.0.0-alpha.1 is already running on your
system, there is no reason to update.

What this release actually is

Between May 13 and May 15, 2026, upstream crazii/USBDDOS merged
every patch from this fork's v1.0.0-alpha.1 series — PRs crazii#22 through
crazii#30, covering the full 8-gap OHCI/HCD/hub catalog. The patches now
live at upstream master (b1308fb) and are no longer carried as
fork-side cherry-picks.

This v1.0.0-alpha.2 release exists to refresh the attached binaries'
build provenance: alpha.1's binaries were built from a fork-side
tag, alpha.2's are built directly from a public upstream commit.
Anyone can verify the alpha.2 binaries by running:

git clone https://github.com/crazii/USBDDOS.git
cd USBDDOS && git checkout b1308fb && cd Make
wmake -f Makefile.WC DEBUG=1   # produces USBDDOS.EXE
make -f Makefile               # produces USBDDOSP.EXE

The MD5 of the resulting USBDDOS.EXE should match
39962c2092961ba679467ba46ab24c43 (the Watcom toolchain produces
deterministic output for identical source).

What's actually different between alpha.1 and alpha.2

Nothing functional. Specifically:

  • USBDDOS.EXE (Watcom debug): byte-identical to alpha.1's. Same
    94,380 bytes, same MD5 39962c2092961ba679467ba46ab24c43. This
    match confirms that Crazii merged each patch unmodified.
  • USBDDOSP.EXE (DJGPP release): differs by exactly 7 bytes from
    alpha.1's — the embedded git short-hash in the USBDDOS_BUILD
    define (b1308fb here vs afb2b84 in alpha.1). All other bytes
    identical.

If you have one of the affected target platforms and were testing
alpha.1: keep going with what you have. Your reports against
alpha.1 are valid for alpha.2 and vice versa. Don't restart your
testing.

Why a separate release at all

A few practical reasons:

  • The fork's release page is the public-facing artifact people find
    via search; "binaries built from upstream commit X" is more useful
    guidance than "binaries built from this fork's afb2b84."
  • The CHANGELOG and README needed to be updated to reflect upstream's
    resumed activity. Cutting a release marks the corresponding
    documentation state.
  • If a future bug is reported against the binaries, it's clearer to
    reference alpha.2 (which points at a verifiable upstream commit)
    than alpha.1 (which points at a fork-side tag whose relationship
    to upstream needs explanation).

What this release does NOT do

  • Add new fixes (Gap 7 and EHCI USBLEGSUP/USBLEGCTLSTS still pending)
  • Bump the alpha label — real-hardware verification is still pending
    and is unrelated to where the source lives. Promotion to beta or
    v1.0.0 still requires at least one independent real-hardware test
    report per patched gap.
  • Change any user-facing behavior

Upstream PRs merged (recap for the historical record)

  • PR crazii#17 — stanwebber: case-correct #include paths
  • PR crazii#22 — Debug: enable COM1 logging in _LOG path
  • PR crazii#23 — HCD: relax HCD_RemoveDevice teardown asserts
  • PR crazii#24 — Gap 4: fix invalid ClearPortFeature(PORT_RESET)
  • PR crazii#25 — Gap 8: wait POTPGT × 2ms after SetPortPower
  • PR crazii#26 — Gap 2: INITRESET-equivalent verify-and-retry
  • PR crazii#27 — Gap 3: bound the OHCI SMM-handoff wait loop
  • PR crazii#28 — Gap 1: OHCI UnrecoverableError recovery
  • PR crazii#29 — Gap 6: skip HcFmInterval access on ALi M5237
  • PR crazii#30 — Gap 5: disable OHCI Legacy Support emulation

License

GPL-2.0, inherited unchanged from upstream crazii/USBDDOS.