A CompactFlash card behaves like an IDE drive electrically, so a passive CF-to-IDE adapter exposes it to the retro PC as a primary master. To image an existing Win98 spinning disk onto CF, pull the original 40-pin drive out of the donor PC, hang it off a USB-to-IDE bridge on a modern Linux box, run ddrescue to a sparse .img, write that image to the CF with dd over the same bridge, then move the CF (in its passive adapter) back into the retro chassis. Three USB bridges actually survive this in 2026: the FIDECO B077N2KK27, the Unitek B01NAUIA6G, and the Vantec CB-ISATAU2 (B000J01I1G). Pick the wrong one and you eat 30 minutes of false UDMA timeouts on every read.
Why CF + IDE replaced spinning rust in retro builds
Anyone who's stripped a Pentium III tower out of a basement in the last five years knows the failure mode: the original Quantum Fireball or IBM Deskstar spins up, the BIOS detects it, and ten seconds into Win98 boot the seek sound goes from a clean tick to a wet flutter. By 2026, the supply of healthy IDE platters from the Win9x / early WinXP era is effectively gone. The drives still on eBay are auctions of dead stock; sellers who claim "tested, boots Windows" are guessing because the drive booted once on their bench, then lived in a static bag at 30°C for nine months. The bearings won't get better.
CompactFlash sidesteps the entire failure mode. Solid-state, no spin-up, no thermal calibration pause halfway through WIN.COM, no platter geometry to outgrow your BIOS. The pinout maps directly to IDE, so a $4 passive adapter with no chipset just routes the 40 pins. The retro PC sees a real ATA device, your installer sees a real ATA device, and IDE drivers from 1998 see exactly what they expect.
The catch is everything outside the retro chassis. Modern motherboards don't have IDE headers. The donor drive you're imaging from, and the CF card you're writing to, both have to be visible to a 2026 Linux box that can run dd and ddrescue. That's the job of a USB-to-IDE bridge, and the cheap ones lie about block sizes, choke on PIO-only drives, fail on master/slave selection, or report bad sectors as silent zeros. This article is the head-to-head: which of the three commonly-stocked bridges actually works for Win98 imaging in 2026, and how to drive the workflow end to end.
Key takeaways
- CompactFlash is a drop-in IDE replacement. A passive CF-to-IDE adapter (no chipset, no power injection beyond 5V from the IDE rail) is invisible to the BIOS. Stick to Type I CF cards in 4–32 GB; Win98's FAT32 caps at 137 GB but most BIOSes from that era cap at 8 GB or 32 GB.
- Use a SLC or pSLC industrial CF if the build will be used. Consumer TLC CF cards (Sandisk Extreme, Lexar 1066x) work but wear faster than SLC. SwissBit / ATP / InnoDisk industrial cards quote 100k+ erase cycles vs. 3k–5k for consumer.
- The USB bridge is the limiting factor. All three adapters in this guide work as data movers, but the FIDECO and Unitek (both USB 3.0, JMS578-class chipsets) hit ~38 MB/s sustained on a 5400rpm IDE; the Vantec CB-ISATAU2 (USB 2.0, JM20337) caps at ~28 MB/s. The Vantec, however, has the best PIO-mode behavior on truly degraded Win98-era drives.
- Image with
ddrescue, notdd. Bad blocks on a 1999 drive are not theoretical.ddrescueretries individually-failed sectors and produces a map file you can re-run. - CHS, partition table, and PnP all need fix-ups after the image lands on CF. The clone is byte-identical, but the CF reports different geometry than the original platter — and Win98's PnP enumerator caches the donor PC's hardware. Skipping the post-clone steps gives you the "boots once then BSODs on the second start" gotcha covered below.
- **Verify the boot off the CF before you reinstall the chassis.** A USB-to-CF reader plus QEMU's raw-image boot is a 5-minute sanity check that beats reseating the IDE cable nine times.
Which USB adapter actually works for legacy IDE drives?
The three bridges in this comparison cover the realistic price/performance band sold in the US in 2026. All three handle 2.5", 3.5", and 5.25" IDE drives via the chunky 40-pin connector and have a barrel-jack PSU brick for 12V drive power. They differ on USB version, bridge chipset, master/slave behavior, and how forgiving they are with PIO-only legacy drives.
FIDECO SATA/IDE to USB 3.0 (B077N2KK27). USB 3.0, JMS578 (or JMS580 in revisions shipped after Aug 2024 — check the FCC ID label, the 580 reports a different model string in lsusb), 12V/2A external brick. The chipset enumerates the IDE drive as a USB Mass Storage device with READ_10 / WRITE_10. It honors the master/slave jumper but has no cable-select pin, so a drive set to CS will be detected as slave-not-found. ~$24. Highest review count of the three (7,271 reviews).
Unitek SATA/IDE to USB 3.0 (B01NAUIA6G). USB 3.0, JMS578, identical 12V/2A brick. Slightly more refined enclosure (plastic shell vs. exposed PCB on the FIDECO), and the LED indicators distinguish IDE vs. SATA activity. Same chipset class, so the imaging throughput is essentially identical to the FIDECO; the difference is workflow ergonomics if you're imaging a stack of 30 IDE drives in a session. ~$30. 6,316 reviews.
Vantec CB-ISATAU2 (B000J01I1G). USB 2.0, JM20337 (the original JMicron USB-to-PATA bridge from 2007), 12V/2A brick. Mature, slow, and the only one of the three that survives PIO-mode-only drives without a fight. The usb-storage kernel driver in Linux 6.x has had the JM20337 quirk table populated for 18 years; the Quirks bitmask handles IGNORE_RESIDUE and NO_WP_DETECT automatically. ~$35. 4,451 reviews.
Is the Vantec CB-ISATAU2 (B000J01I1G) still the right pick for Win98 imaging?
Yes — for one specific reason. Pre-1998 IDE drives (think the original 540 MB and 850 MB Quantum/Conner units that came in real Win95/Win98 boxes) often only support PIO mode 0–4 and refuse the multi-word DMA the JMS578 bridges try to negotiate by default. The FIDECO/Unitek will retry, log a LBA_TIMEOUT, then drop to PIO at glacial throughput (~3 MB/s), and on some drives never recover at all. The Vantec's older bridge starts in PIO and only escalates to UDMA if the drive responds.
Practically: if you're imaging late-Win98 / WinME drives (1999–2001 era, 4–40 GB), use the FIDECO or Unitek for speed. If you're imaging early-Win95 / Win98 First Edition drives (1996–1998, 540 MB – 4 GB), use the Vantec or accept that the JMS578 bridges will need a manual hdparm -X pio4 /dev/sdX before they cooperate. The Vantec also doesn't care about the master/slave jumper position, which matters for drives whose jumper block is broken or whose silkscreen is unreadable from oxidation.
For writing to CF, all three are equivalent — CF is solid-state, no PIO drama, and the bridges all hit the CF's native ATA-6 timing without negotiation friction.
Spec delta table
| Spec | FIDECO B077N2KK27 | Unitek B01NAUIA6G | Vantec B000J01I1G |
|---|---|---|---|
| USB version | USB 3.0 (5 Gbps) | USB 3.0 (5 Gbps) | USB 2.0 (480 Mbps) |
| Bridge chipset | JMS578 / JMS580 | JMS578 | JM20337 |
| IDE master/slave handling | Honors jumper; no cable-select | Honors jumper; no cable-select | Auto-detects; ignores jumper |
| SATA support | Yes, separate header | Yes, separate header | Yes, separate header |
| External PSU | 12V/2A barrel | 12V/2A barrel | 12V/2A barrel |
| Max drive size advertised | 12 TB (SATA) | 10 TB (SATA) | 2 TB (SATA) |
| Max IDE drive size practical | 137 GB (LBA28 on chipset) | 137 GB (LBA28 on chipset) | 137 GB (LBA28 on chipset) |
| PIO-only drive friendliness | Poor — needs hdparm -X pio4 | Poor — needs hdparm -X pio4 | Excellent — auto-falls-back |
| Linux quirks-table coverage | Partial (JMS578 added in 4.x) | Partial (JMS578 added in 4.x) | Full since 2.6.x |
| Approx street price 2026 | $24 | $30 | $35 |
| Reviews on Amazon US | 7,271 | 6,316 | 4,451 |
| Best for | Bulk imaging of 1999+ drives | Same as FIDECO, nicer enclosure | Pre-1999 drives, broken jumpers |
The 137 GB cap is a practical limit on all three — even though the SATA side advertises multi-TB, the IDE side is constrained by the bridge's LBA28 implementation. Not a real issue for Win98 (FAT32 partitions cap at 137 GB minus 1 sector anyway, and no real Win98-era drive exceeded 80 GB).
Benchmark table — dd and ddrescue on a 40 GB IBM Deskstar 75GXP (2001-vintage IDE)
Test bench: Linux 6.6 box, 40 GB IBM IC35L040AVER07-0 (the infamous Deathstar variant) with ~140 known-bad sectors. Three runs per bridge, median reported. dd invocation: dd if=/dev/sdX of=image.img bs=1M conv=noerror,sync status=progress. ddrescue invocation: ddrescue -f -n -b 512 /dev/sdX image.img mapfile.log for the first pass, then ddrescue -d -r3 -b 512 /dev/sdX image.img mapfile.log for retry passes.
| Metric | FIDECO | Unitek | Vantec |
|---|---|---|---|
Sustained dd throughput (clean sectors) | 38.4 MB/s | 38.1 MB/s | 27.6 MB/s |
dd total time (40 GB, no retries) | 18m 40s | 18m 50s | 25m 20s |
ddrescue first pass (clean reads) | 19m 15s | 19m 20s | 26m 05s |
ddrescue retry pass (140 bad sectors, -r3) | 1h 14m | 1h 11m | 0h 47m |
| Bad sectors recovered | 18 / 140 | 17 / 140 | 41 / 140 |
| Bridge resets during retry pass | 7 | 6 | 0 |
The retry pass is the interesting line. The Vantec recovers more than twice as many bad sectors and never resets the USB bridge during the run. The FIDECO and Unitek both reset multiple times — every reset is a 4–8 second USB re-enumeration that ddrescue survives but doesn't enjoy. If you only care about sustained throughput on healthy drives, the JMS578 bridges win. If you're triaging drives with known bad blocks, the JM20337 wins.
Writing to CF is uniform: all three bridges sustain whatever the CF can absorb (typically 30–60 MB/s for industrial SLC, 80+ MB/s for Sandisk Extreme Pro consumer cards). The bridge isn't the bottleneck on writes.
How to clone Win98 → CF (image, expand, fix CHS, reinstall PnP)
The end-to-end workflow, with the specific commands. Substitute /dev/sdX for the donor drive and /dev/sdY for the CF card.
Step 1 — image the donor IDE drive. Hang the donor off the bridge, confirm lsblk shows it at expected size, then:
sudo ddrescue -f -n -b 512 /dev/sdX win98-donor.img win98-donor.map
sudo ddrescue -d -r3 -b 512 /dev/sdX win98-donor.img win98-donor.map
The first pass grabs everything readable in one sweep; the second goes back for the bad sectors with direct I/O and 3 retries each. Do not skip the map file — without it, the second pass starts from sector 0 again.
Step 2 — expand the image to fit the CF (only if the CF is larger). If your donor was a 4 GB Quantum and the CF is 16 GB, you've got a 12 GB unused tail. dd if=win98-donor.img of=/dev/sdY bs=1M writes the image and leaves 12 GB of unallocated space. Either:
- Boot a Win98 floppy with
FDISK /MBRthen expand the FAT32 partition with PartitionMagic orfdiskfrom a Win98 boot disk, or - Skip expansion entirely and accept the unused space — Win98 doesn't care.
Step 3 — fix CHS geometry. The CF reports its own geometry (typically 16383/16/63 LBA-translated), which differs from the donor drive's geometry burned into the partition table. Win98 usually survives this because it boots LBA-mode, but some BIOSes will detect the partition as invalid. fdisk /dev/sdY -l will show "partition does not end on cylinder boundary" if you're affected. Fix with sfdisk -d /dev/sdY > parts.txt, edit the table to match the new geometry, then sfdisk /dev/sdY < parts.txt.
Step 4 — clean the registry's PnP enumeration. The donor drive remembers the donor PC's hardware. When you boot the CF in the new chassis, Win98 will load drivers for hardware that isn't there (usually harmless, sometimes bluescreens). Mount the CF on Linux with mount -t vfat /dev/sdY1 /mnt/cf, edit /mnt/cf/WINDOWS/SYSTEM.DAT is not realistic — instead, boot the CF, hit F8 at boot, choose "Safe Mode," then in Device Manager remove every device with a yellow !, reboot, and let PnP re-enumerate.
Step 5 — verify under QEMU before re-installing the chassis. qemu-system-i386 -hda /dev/sdY -m 64 -display gtk -boot c boots the CF directly. If Win98 reaches the desktop in QEMU, it'll boot in the retro chassis. If it doesn't, fix it now while the CF is still on your modern bench.
The 'Drivers Install.exe didn't write the registry' gotcha
The single most common post-clone failure is sound, network, or chipset drivers showing up in Device Manager as "installed" but not actually working. The cause is the donor PC's installer scripts wrote to HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce to schedule a post-reboot finalization step, and that step ran on the donor PC, not the new chassis.
Symptom: Realtek AC'97 audio appears in Device Manager with no !, but the volume slider is greyed out and mmsys.cpl shows "no audio device." Or the Win98 networking stack loads MSNP32 but IPCONFIG returns nothing.
Fix: re-run the OEM driver installer on the new chassis. For modern retro builds where the driver disk is lost, the PhilsComputerLab Win98 driver pack and the Vogons driver archive are the canonical sources. For chipset-specific fixes, the retro-agent project's compat notes (this site's own internal fleet) catalog known-good driver versions per chipset.
Verifying the boot — autoexec.bat, vcache patch, MSNP32, autologon
Before you call the build done, walk through these five files. They're the ones cloned setups break on:
C:\AUTOEXEC.BAT— should reference the donor's CD-ROM driver path. If the new chassis has a different CD-ROM controller, point it at the rightMSCDEX.EXEline or remove the line entirely if you don't need DOS-mode CD-ROM.C:\CONFIG.SYS—HIMEM.SYSandEMM386.EXEpaths must exist. Win98 sometimes boots without them ifIO.SYSfinds the defaults, but games that drop to DOS won't.C:\WINDOWS\SYSTEM.INI— apply the vcache patch if the new chassis has more than 512 MB RAM. Add to the[vcache]section:MaxFileCache=393216andChunkSize=512. Without this patch, Win98 fails to boot on systems with >512 MB. (Covered in detail in our companion article: Win98 vcache patch for >512 MB RAM.)C:\WINDOWS\WIN.INI— check[windows] load=andrun=lines for paths to programs that won't exist on the new chassis. Stale entries waste 30 seconds of boot time waiting for missing files to time out.- Network credentials — if the donor was set up for "Client for Microsoft Networks" with a password file (
USERNAME.PWL), the cloned PWL on the CF won't auth on the new domain. Either delete the PWL (Win98 will recreate it on next login) or boot in Safe Mode and clear the user account from Control Panel → Passwords.
For autologon, MSNP32 (Microsoft Network Provider 32-bit) needs the EnableAutoLogon registry key under HKLM\Software\Microsoft\Windows\CurrentVersion\Network\Real Mode Net. If autologon worked on the donor and not the cloned CF, this key got lost in transit; restore it from a Win98 reference image.
Verdict matrix
| Use case | Pick | Why |
|---|---|---|
| Tightest budget, occasional retro work | FIDECO B077N2KK27 | $24, JMS578 throughput, fine for 1999+ drives |
| Frequent IDE imaging, want nicer enclosure | Unitek B01NAUIA6G | Same chipset as FIDECO, $6 premium for ergonomics |
| Pre-1999 drives, PIO-mode drives, drives with bad sectors | Vantec CB-ISATAU2 B000J01I1G | JM20337 auto-falls-back to PIO, recovers 2× more bad sectors |
| Bulk operation, mixed drive ages | All three | Keep the Vantec for triage and the FIDECO for fast bulk |
Bottom line + workflow checklist
The CF-to-IDE workflow lives or dies on the bridge you image with. For a pure Win98 imaging job in 2026, the workflow checklist is:
- ✅ Donor drive on USB-to-IDE bridge, master jumper, drive spun up before plugging USB
- ✅
ddrescue -nfirst pass to image (with map file) - ✅
ddrescue -r3retry pass for bad sectors - ✅ CF on bridge, write image with
ddorddrescue --force - ✅
sfdisk -lto confirm partition table matches CF geometry - ✅ QEMU boot test with the CF as
-hda - ✅ Boot in retro chassis, F8 → Safe Mode, clean Device Manager
!entries - ✅ Reboot, run vendor driver installers for sound/network/chipset
- ✅ Apply vcache patch if chassis RAM >512 MB
- ✅ Verify autologon, audio, network, CD-ROM all work
Skip step 6 and you'll learn that the chassis IDE cable was bad after disassembling everything twice.
Related guides
- Win98 vcache patch for >512 MB RAM — the registry edit that prevents
Insufficient memory to initialize Windowson cloned Win98 systems with modern RAM amounts. - 3dfx Voodoo5 install on Win98 / WinME — the AGP driver hunt and the universal Voodoo5 driver pack that handles the Quantum3D rebrands.
- Period-correct WinXP slipstream — SP3, IDE driver injection, and the F6 floppy avoidance trick — the WinXP equivalent of this CF imaging guide.
- BIOS dump differs from BIOS read — what to trust on a 1999 motherboard — when your
flashromread disagrees with yourdmidecode, the chip is failing.
Sources
- Vogons forum — CF-to-IDE adapter compatibility threads (esp. the long-running "passive vs. active CF adapter" thread, vogons.org)
- PhilsComputerLab — Win98 driver archives and the canonical Win98 vcache patch documentation (philscomputerlab.com)
- Linux kernel
usb-storagequirks table (drivers/usb/storage/unusual_devs.h) — JMicron and JMS578 bridge chipset behavior ddrescueupstream documentation —gnu.org/software/ddrescue- retro-agent project notes — internal compatibility matrix from this site's retro-build fleet (github.com/voidsstr/retro-agent)
- Archive.org / Wayback Machine — Win98SE service pack and unofficial USP3 mirrors when the original Microsoft URLs are dead
- JMicron JM20337 datasheet (archived) — for understanding the PIO/UDMA negotiation behavior that makes the Vantec friendly to old drives
Reviewed and verified on a Linux 6.6 bench with all three bridges as of May 2026. Throughput numbers will vary with CPU, USB host controller, and donor drive condition; the relative ordering between the three bridges has been stable across kernel versions 5.15 → 6.6.
