n13: prebuilt MDD ROM, hot-plug, OS-performed mount
⚠️ SUPERSEDED: this ROM is missingSysEnablerThe Mac OS ROM here was packaged as MacBinary, and our wrapper replaced the ROM's real resource
fork, dropping a 185 KB component calledSysEnabler. It boots, but it appears to cause an
intermittent frozen cursor at startup and input responding only every few seconds.Please re-flash from the current release.
The driver is unchanged; only the packaging is fixed, and both ROMs there have been booted on real
hardware before publishing. Our packaging, not your machine.
First release with a prebuilt ROM, so a Power Mac G4 MDD needs no toolchain at all.
Install these two together
They are a matched pair. The helper reaches into the driver's service structure, so a mismatched pair
will not work.
| file | md5 |
|---|---|
USB2_PathA_MacOSROM_n13.bin |
45072075790082cad40351f6c9becbe8 |
USB2_Activate_n4f.bin |
09711b572b24cfe274de3dffc54f3162 |
Both are MacBinary. Decode them on the Mac so the resource forks survive. Get Info on the decoded ROM
should show version n13.
Back up your existing Mac OS ROM first, and make sure you can boot from something else. This is a
ROM patch. Fully reversible, but only if you kept the original.
- Boot from a CD or another volume. You cannot replace the
Mac OS ROMyou are currently booted from. - Put the decoded ROM into the System Folder in place of
Mac OS ROM. - Put
USB2_Activate_n4f.bin, decoded, intoSystem Folder > Startup Items. - Boot normally with no USB drive attached, then plug one in. It mounts at Hi-Speed.
Which machines this ROM suits
Power Mac G4 MDD that boots OS 9 on its own stock ROM. The ROM here is built from an MDD's own
Mac OS ROM, so it carries that machine's drivers and not another model's. It has no ATY,RockHopper2,
for example, so it is not suitable for a Mac mini G4.
⚠ Do not use this file if your machine only boots OS 9 because of a community ROM patch. That covers
the unsupported-machine setups: an FW800 MDD, a Mac mini G4, an aluminium PowerBook and similar. Your
Mac OS ROM has already been modified to make OS 9 boot at all, and this file does not contain that work,
so installing it would take away the thing making your machine boot. Use the injector on your own patched
ROM instead: it appends a parcel rather than replacing anything, so it composes with the boot patch. Apply
the boot patch first, then this.
Any other NewWorld Mac, so a B&W G3 or later, should patch its own ROM instead, using
rom/usb_rom_inject.py in the repo. See the README. That path is machine-agnostic, which is the reason
it exists.
OldWorld Macs are out of scope. A beige G3, 8600 or 9600 has no Mac OS ROM file for this to patch,
so the injector stops with "no Parcelfile found in the dump". That is not the same question as whether
the machine has PCI slots: a beige G3 has slots and is still out of scope, while a Mac mini G4 has none
and is in scope.
What works
- High-speed mount with no application involved in discovery. Mac OS 9 performs the mount itself.
- Reads about 20 MB/s, roughly 20x USB 1.1. Writes about 2 to 3 MB/s in the Finder.
- Hot-plug: insert, eject, unplug, re-insert, or swap in a different drive.
- Un-ejected removal unmounts cleanly rather than leaving a damaged disk.
- Restart with the driver active is safe.
What does not work yet
- One drive at a time. A second drive inserted while one is mounted is ignored. Multi-device is in
progress, and it will ship as a new ROM and helper pair. - External hubs are not driven, including the hub built into an Apple Cinema Display.
- A drive attached at boot mounts at 1.1, not 2.0. Plug it in after booting.
- Only tested on a G4 MDD with a NEC based PCI card. Other EHCI chipsets should bind, since the driver
matches on the EHCI class code and reads the card geometry at runtime, but none have been tried. - On board USB 2.0, for example a Mac mini G4, is experimental and can hang.
Treat this as a beta. Do not put anything irreplaceable on it yet.
Expected log output
EHCIUIM_init.log will contain many lines like !! v47 STALL - self-probe transfer not completing:.
These are not errors. That diagnostic fires whenever a transfer is in flight, which during a copy is
almost constant. A clean soak run here logged 174 of them alongside 18,223 completed transfers with zero
errors. If something is genuinely wrong, gDownErr or gDownTimeouts will be above zero in the same
dump and gDownDone will stop advancing.
The driver appends to that log across loads, so delete it before a test run and read from the last banner.
Reporting problems
Most useful of all is a report from a card that is not the one this was developed on. Please say which
Mac, which card and chipset, and which OS 9 version, and attach EHCIUIM_init.log from the boot where it
went wrong.