USB on x86 ISA (8-bit)

I’ve had success in using a “USB-to-ISA” adapter card on a vintage 80386 based PC system that still had ISA slots. So I do recommend this as a convenient way to exchange files with a legacy system, but there are a few usage issues to be aware of. I had no apparent conflict with other devices (serial/parallel ports, CD-ROM, sound card, XT-IDE, all in use at the same time).

I’ve seen these devices from $10 to $90. Here is an example from NewEgg (as of March 2025), but they are also on AliExpress, eBay, and other such places. I think I got mine at a VCF, but cannot recall which specific one since I had it in storage for over a year (and didn’t have a physical ISA-capable system at the time).

As an example of a retailer with one of these: https://www.newegg.com/p/3C6-018R-00243


This is a regular 8-bit ISA card, so should work on the earliest IBM PC 5150 from 1981, up to around mid-1990s where some 486-based system still had ISA expansion slots (and a few Pentium systems, but increasingly rare). This will work in a 16-bit ISA slot as well.

Here are close-up images of the as-delivered jumper configuration and the IC chips involved. This ended up to corresponding to a port-address of “260” (hex)

  • CH375B
  • Probably a 12MHz clock
  • 74HC1250 / 74HC138D / 74HC139D
  • J1, two pin jumper (function unknown)
  • J2, three pin jumper: 24X / 23X (function unknown)
  • J3, three pin jumper: 26X / 25X (function unknown)

I’m not sure what the blank 28-pin socket is for. There is a 5-pin header on the PCB, which I think is just an option to extend the USB connection (labels “V D+ D- G 0”, the 5th pin probably not used).

A mini-CD was included with my device, which I verified contained exactly all the same files as is located here (Internet Archive): Ch375 USB ISA Drivers and info CD : Free Download, Borrow, and Streaming : Internet Archive

The only folder therein that I needed was “CH375 ISA_USB_EN” (other folders seem related to a PCI version of this device).

There are two versions of the driver .SYS file on this CD (version 1.9 and 2.0A).

  • ..\CH375 ISA_USB_EN\DOS driver and description\CH375DOS.SYS [4259 bytes, V1.9]
  • ..\CH375 ISA_USB_EN\DOS driver and description\DRIVERS\CH375DOS.SYS [5093 bytes, V2.0A]

Initially I was not able to use this device, because I did not see anywhere in the included README.TXT or PDFs about what the default port was. I did eventually find “command line arguments” to the .SYS driver where you would designate the port, interrupt, and a “delay factor” (used to calibrate this device to older/slower systems, as needed).

I got sidetracked into thinking this device “borrowed” the port and interrupt of the serial port (so I kept trying those ports and interrupts), but this was unnecessary. Apparently, there is some advanced mode where if you do put “91” or “92” as the IRQ, it does end up using the serial ports, but I didn’t pursue actually trying this configuration.

NOTE: Specifying an address of “0” is apparently reserved for a PCI version of this card, which can do an “auto-scan” for a port. Whereas this ISA version of the card needs an explicit port number.

Silent700 at ClassicCMP dug up this old article about this device from 2018: USB flash drives on 8-bit ISA bus using CH375 ISA to USB adapter | ToughDev That articles goes into a lot of details, but mainly for me it revealed that default port address of 260h (although I still don’t fully understand how that was determined, nor are the jumpers on the board explained on how to adjust it). The details on the “512MB” limitation seem to be obsolete, possibly either because my version of the device came with a newer ROM or a newer driver (the sticker on the back shows my device being made and “QC”‘d in Feb. 2024). As mentioned, I am using V2.0A of the driver.

NOTE: The article above also explains how to boot using this ISA-USB, but I think that requires advanced knowledge of how to adjust the boards ROM.

As for interrupt to use, I ran CheckIt 3.0 on the system (booted to MS-DOS 6.22), which has a feature that does a decent job of determining what each interrupt on the system is being used for. In my case I have two serial ports, two parallel ports, CD-ROM drive, sound card, XT-IDE, all the normal things on a system like this. CheckIt reported that interrupt 10 was “available” so that is what I chose to use for this USB-IDE device. Here is what my CheckIt SysInfo|Interrupts screen looks like without the ISA-USB adapter inserted.

NOTE: In my case, LPT2 is the second parallel port that is on the MDA (monochrome) video card (which was common in the 1980s, where both MDA and CGA/EGA/VGA video cards can be installed at the same time).

I added this to the MS-DOS CONFIG.SYS. Probably LH (loadhigh) would work also, if HIMEM.SYS / EMM386.EXE is also used (i.e. no conflict in doing so).

DEVICE=C:\DRIVERS\CH375DOS.SYS @260 #10 %2

I chose %2 as a starting speed to try (more on this later). As mentioned, 260h was just the default port configuration of the device as delivered. Since “everything worked” with that setting, I didn’t explore other jumper settings (which I assume would be used to adjust to different port addresses).

BELOW: (all working at the same time)

  • SDLPT as D: drive,
  • USB-ISA as E: drive,
  • (mouse was not connected at the time so mouse driver did not load),
  • Emulated CD-ROM drive (ZuluIDE) mounted as drive F:
  • and the XT-IDE device providing the C: drive as CF (compact flash) drive

Formatting the USB

For the 2.0A version of the CH375DOS.SYS driver that I used, I was able to use 2GB USB “thumb drive” or “memory stick.” 2GB is the limit of classic FAT16 and what MS-DOS 6.22 supports.

NOTE: FAT32 is technically limited to 2TB, but in some cases got artificially limited to 32GB. Windows may insist partitions over 32GB be formatted using exFAT or NTFS, but there are workarounds to force it to use FAT32 in those cases. But after 2TB, alternative formats do become necessary. I was not able to verify if we used FreeDOS, would this USB-ISA device support larger than 2GB partitions (i.e. would it automatically support FAT32 as a feature of the host operating system?). But for me, 2GB sticks worked fine, it was not limited to a 512KB drive or partition (perhaps olde/prior versions of the driver were in the past). I did not have a 4GB USB thumb drive to try.

Here is an example showing where I have ~1.2GB written to the USB stick (as well as also individual large files), using this USB-ISA adapter device. These large files were created using the COPY /B command.

COPY /b REPORT + REPORT + REPORT + REPORT 1MB
the above does a "binary copy" of the file "REPORT" (4x times) into a file called "1MB" (then from there you can copy the 1MB file in the same way to make larger and larger individual files for test purposes).  The "REPORT" file done using "DIR /S > REPORT" from the C drive root folder, just to create a file of some large amount of content.

The USB-IDE “driver CD” includes a disk formatting utility that runs on Windows XP (possibly also Win3.1), though I don’t think it is really necessary. I was able to use Win11’s formatter also (just be sure to select “FAT” and not “FAT32” or any other option). This is what the USB-IDE devices included formatter program looks like:

Some important lessons learned:

  • DO NOT RUN CHKDSK on the USB drive! In doing so, CHKDSK reported “Allocation error, size adjusted” for every file on the USB device. That adjustment resulted in each existing file, across all sub-folders, being truncated to 0-bytes. This was with the native MS-DOS 6.22 version of CHKDSK (and its SCANDISK did not run at all on this drive letter).
  • The USB-drive is not attached as a fixed-disk (i.e. it does not appear in FDISK). And it can be hot-swapped (remove the USB and insert a different 2GB stick), which I would do only when there is no active drive activity.
  • I found that if I reset the system during a large file transfer to the USB adapter, then I end up with the following error message during loading the driver: “I/O data error” followed by “Configuration too large for memory.” And the drive halts the system. You have to press F8 during the next boot up of MS-DOS and choose not to execute the line that loads the driver (be sure to use F8 after XT-IDE has initialized). I found this because I was trying to abort a large copy using CTRL+C or CTRL+BREAK and neither worked, so I just rebooted the system. To work around this startup error, I found that I have to power the entire system down (and maybe also put the USB into a modern system and remove the target file that was being copied into, which will probably appear as 0 bytes). After that, this error message went away, and the USB device loaded as normal. I’m not sure why it is complaining about “too large for memory,” but having one malformed (incomlete-copied file) on the disk seems to cause this. Here is what that error looks like:
  • During startup on the 386DX-33 system, the driver takes somewhere between 5-7 seconds to initialize and declare the assigned driver letter. So don’t give up too soon and think the driver is not working, it just may need a few longer-than-usual seconds to initialize.
  • In this 386DX-33 system, I’ve measured a copy-file data rate of around 65KB/seconds. This is with the %2 “speed” parameter and is comparable to a parallel-cable (LapLink) system-to-system transfer speed (also faster than the SDLPT device where I only got ~20KB/sec). Using %1 is slightly faster (as in maybe 68KB/seconds), noting this that %1 does work on this 386DX. Per the manual, slower systems (8088, 286 based systems, or slower 386SX’s) might need to increase this value. In the 2018-article mentioned above, on a 12MHz XT they stated only getting 8KB/sec, so the performance does seem proportional to the host system CPU speed.

NOTE: Just to experiment, I did try setting this value to %99, and noticed it then took 40 seconds for the driver to initialize. So be patient, but I suspect even the slowest systems won’t need a delay value past about 20. I also noticed for delay values past 99, the driver seems to have a bug (the readme note say it can go up to value 255, but seems to me it couldn’t go past 99).


This is a nice addition to a vintage system and I wish I had tried it out sooner. For the SDLPT I’ve found that I can’t hot-swap the SD card, I have to reboot between swapping SD cards. This ISA-USB device does seem more robust at allowing hot-swapping of the USB stick, so that’s a nice benefit. Still, I like now having the option to use an SD-card of USB-stick to exchange bulk sets of files with modern equipment.

But since CHKDSK “does weird things” on this USB device, I worry there may be some other file I/O oddities that some software might perform that end up being incompatible with this device. That said, I was able to run a variety of games directly off this USB stick without issue (other than obviously loading things slower than a native IDE CF fixed disk).

The “driver CD” seems to have C (Turbo C 2.0) source code for interfacing with this device, and then PDF schematics of the hardware.

Published by voidstar78

Computer Engineer (University of Florida, 2001). Astronomer, Stone Sculptor, Writer, Aerospace Engineer. Wrote my first computer program in 1985.

One thought on “USB on x86 ISA (8-bit)

  1. ToughDev here. Thank you for linking to my article! Just want comment on your point regarding the 512MB size limit for the thumb drive. When I last experimented with my CH375 ISA card back in 2018 and attempted to configure by 80286 to boot from it, my boot ROM image used CHS geometry for the USB disk, limiting the maximum size to around 512MB (C=1023, H=255, S=63). There was no support for LBA within the boot ROM to enable support for larger thumb drive. I did not check if my version of CH376DOS.SYS also had the same hard-coded geometry, but test results revealed that my CH376DOS.SYS would hang on large disks. I could only get it to work with USB drives smaller than 512MB. From your article, it seems that this is no longer an issue on the 2024 version of the board when using V2.0A of CH376DOS.SYS, so that is great to hear!

    The CH375 card is no longer with me so I am not able to perform any further tests.

Leave a Reply

Discover more from xiphod

Subscribe now to keep reading and get access to the full archive.

Continue reading