In my last video on installing FreeDOS on a 5150 I teased that I want FAT32 support for
this…a USB to ISA adapter card for connecting flash drives to older computers. All you have
to do to use it is plug it in, copy the driver, add one line to config.sys, and restart! Or at
least that's what I wanted to say for this video. It turns out there is a lot of confusing stuff
going on with this card and it has caused a lot of headaches for people. So today we’re going to take
a closer look at the origins of this card, how you can properly set it up, and what its pitfalls are.
Now I had a great experience with this card when I first started testing it but as I was doing
that LGR released a blurb video where he had a number of problems. So I tried it on some other
computers and ran into a bunch of new problems. I’m pretty sure I’ve nailed down all the reasons
for the problems; but a lot of it, is stuff just being wrong and not compatible. I’m going to
cover what the right options are but with so much information out there that has missed some things
I think it might be beneficial to start from the beginning to get the full context.
First the hardware. at the heart of this card is an unassuming little chip with the part number
CH375. This part is made by Win Chip Head and is an evolution of a few different other
chips they’ve made. The full technical details aren’t important to an end user but I will say
this part isn’t just an ISA to USB adapter and supports multiple different protocols. The board
that it’s put on here is a design by WCH as a sort of reference and basic implementation to
make it usable for industrial applications which is part of why none of these ever ship
with a mounting bracket. The current suppliers of the part are still using the original design
files and seem to be hand scratching off the silk screen to hide the origins of the designs which is
kind of hilarious. I’ve found that there are at least three different revisions of this board,
all of them are functionally identical from the images I’ve seen which will be
important in a bit. The main outlier is the Lo-Tech version of the board which is
a clone of the ones you can still get from China and has some different options added.
Now timeline wise it’s kind of weird. The original board design appears to be from about 2005 based
on the dates of some of the files I’ve found. But I don’t think it was known to the hobbyist
community until about 2013 and Lo-Tech’s version was first available in 2016. Everyone around that
time seemed to have been most interested in trying to use it as a boot device. It has a socket for an
option ROM that can potentially be used to make it possible to boot off of the flash drive. There
are a few different ROMs you can try burning to do that but I have no interest in it and personally I
think an XT-IDE would be a better option anyway. And the main thread on VCFed’s forums that were
exploring it found that at least the older board versions have some issues with the ROM
addressing anyway. I think the newer SMD version and the Lo-Tech PCB fixes that but keep watching
to find out why you may not want to boot from it. Now I didn’t find out about this card until late
last year when Kiwa on twitter bought one and tried it out and it seemed really interesting.
Since I have been really busy for the last few months it slipped my mind but I ordered two a
while ago and was able to start investigating them. They come with a CD of drivers and
documentation which isn’t strictly necessary because WCH still hosts the drivers themselves.
There is some interesting stuff in there though that helps to identify some
vestigial problems. This is a CD-R that is a collection of things someone found on the internet
related to this board and not an “official” set of files. It contains things that aren’t provided
in the current downloadable version of the driver which is a problem because not everything in here
works. And some of it has in here I don’t think even exists, but we’ll get to that in a moment.
Lets getting started with the readme for setting up the card because we’re going to cover a few of
the issues here. It eventually gets across that you need to copy the file CH375DOS.SYS to the
system and add it to your CONFIG.SYS file. This is pretty straight forward and it even goes over
some parameters. One is for the base address which you can set on the jump…ers. They’re labeled wrong
in the silk screen and it hasn’t been fixed for almost two decades. *sigh*. Leave the driver set
to 260 and the jumper where it was in the upper right position. The next option is for the IRQ
which…uh, this card doesn’t have. Let me cover the next thing first though because it actually works.
This is for a parameter taking a value from 0-255 for setting the “I/O” speed that adds some kind
of artificial speed limiter. I would set this to 0 which is the fastest, I compared that to
1 instead and it made a transfer take 30% longer for me so the steps can be big. Slowing it may be
needed on older systems but you can try setting it to zero and stepping it up if you have issues.
Now that interrupt setting. This card doesn’t have one. People have said online it should
use IRQ 7 but the pads on the card for the IRQ signals literally aren’t connected to anything.
Instead this card works like an AdLib and is only used through an I/O Port which
is what that 260 setting is for. So why does the driver even have this option? Well we can look at
some included schematics for a clue why. There are two files from 2005 that likely explain it,
one for ISA and another for PC104 and ISA. The ISA_INT file has a section of the schematic that
shows an inverter being connected to bus lines for the IRQ. The other PDF though doesn’t have
that. The second PDF actually matches the cards being made more than the IRQ version does but
I’m pretty sure that’s not what they are being made with because it is missing U2.
Digging around in some files that were archived on the ToughDev blog in 2018
you can find a different PC104 and ISA schematic from 2008 that seems to be a much more likely
match to the current cards. It still doesn’t have the IRQ lines connected anywhere though.
There may have been an IRQ version of the card based on this schematic, or at least one planned,
but in all my research I haven’t seen a single image of one like that. So any time you are
setting one of these up just omit the IRQ setting completely and it should work fine.
Okay, so that’s the first big problem out of the way. Now lets tackle the second, the driver
itself. The CD has a folder in the english section called DRIVER with a copy of CH375DOS.SYS in it.
Next to the driver folder though is…another copy of CH375DOS.SYS. And if you download the driver
from wch.cn and take a look there is a folder called NO_INTER with another CH375DOS.SYS in it.
Each one of these is a completely different file. All of them are different sizes and when you load
them there are two different versions reported. Let’s ID them by their sizes first. The DRIVER
folder version is 5k, the loose one is 4.2k, and the NO_INTER one is 2.9k. The 5k version
is…completely useless. It reports as version 2.0A and I don’t know what its deal is but I
couldn’t get it to work on anything I tried. LGR actually used that version in his video and had
more success than I did but still had tons of problems. The 2.9k file also reports as version
2.0A but can technically work. I’m not sure why it’s so much smaller than the other ones.
It has sort of worked for me, but only with smaller flash drives and a 512MB partition size.
This was actually something mentioned in the ToughDev post about these cards,
that they only support 512MB partitions. Looking at the files in their archive
they only found the 5k and 2.9k drivers which explains why. But then we get to the 4.2k driver,
oh, the 4.2k driver is my favourite. It reports as version 1.9 and does everything. It works, loads
up just fine, and it works with partitions larger than 512MB. How much larger? How about 128GB,
and for the cherry on top, that's on my 5150. This driver also works in Windows if you load it as a
DOS driver which may be helpful in some instances. It’s not great but could be used in a pinch.
Now I’ll mention if you poke around online you can actually find a specific Windows driver and
it is very weird. I tracked down multiple different versions of this driver as well trying
to get it working on Windows 98 but I never could. Looking in the INF file for them makes it seem
like this may actually be a modern 64 bit driver for this ISA card. That is actually possible with
a newer SBC card like this so it could make sense for some industrial applications. But
is is still dumb since I don’t think any 64b system will have ISA but not USB ports.
That finally covers all of the weird issues with the card. It’s funny that I apparently
managed to completely miss all of them on my first try by accidentally using the perfect
driver and didn’t do any research beforehand so I didn’t try changing the IRQ setting.
So it is possible to have a good out of box experience with it, but it’s a lot easier to
run into some of the many problems. Now though I want to focus on actually using the card so
lets go through the full, working, setup process and see what it is like in practice.
Setting up the card really is as easy as copying over the driver file,
and adding one line. Just make sure you use the Version 1.9 release of the driver that is 4.2KB.
Once you get it on your system you can add the driver like any other normal DOS driver to your
config.sys file. Add a DEVICE entry pointing to the driver, just only use the address and speed
parameters to avoid the IRQ issue. Set the address to @260 and speed to %0. If you have issues then
you can try increasing the speed value. You can put the card in before or after adding the driver,
it fails gracefully and it won’t stay in memory if the card is missing so running the system without
it is entirely safe. This same configuration process can be applied to a system running
Windows 98 but it will likely give you a warning about the driver slowing the computer down. When
the computer is started it will print info about the driver, configuration, and what drive letter
it is assigned. If you didn’t have a flash drive plugged in it will also mention that but you can
plug it in at any time so that’s fine. It reserves the drive letter so it will still be there later.
Let's briefly cover what you can connect to this. The USB port on it is exclusively meant for flash
drives. The drivers don’t implement any kind of other device for the system, so plugging in a
keyboard won’t work neither will a wifi dongle, CD drive, or video adapter. It also won’t work with
different sorts of storage devices like USB card readers that show multiple devices but it’s mostly
power limited. So it can’t power an external hard drive or a USB floppy drive, which yes, I tried.
However it can be used with all manner of flash drives. I have tested 512MB USB 2.0, 8GB USB 2.0,
and 128GB USB 3.0 flash drives with it containing partitions of the full drive size and it works
perfectly. You are limited to the file systems your OS supports though. Which is why
I wanted FreeDOS’s FAT32 support on my 5150 so I could use the full size of the drives on it. Also,
it is just a bit easier to work with FAT32 file systems on modern systems
than FAT16 ones without needing special software to format the drives.
When you first connect the flash drive and try to access it with the system
there will be a short delay. My Lexar Secure II + makes it a little more obvious what is going on
because its epaper display is overly dramatic. The flash drive isn’t accessed by the driver software
until it attempts a read. So it has to get all the information like the drive size and
partition layout before it can start accessing the table of contents to get the file information.
After the first time it accesses the drive it will be much quicker. You can change out
the drive while the computer is running which is one of my favourite features of this thing
and that wouldn’t be possible if you added a BIOS ROM and booted from it. But if you do hot
swap the flash drive, it will be slow to access the new drive when you first access it again.
The speed of file transfers is a little harder to quantify. I tried running crystal disk mark on
a flash drive in Windows and that was awful. But Windows 98 support isn’t great to begin with so I
wat to ignore those results. When I was testing the speeds of the I/O speed setting
in DOS I did get a calculated transfer rate of about 186KBps with a Pentium CPU.
That’s not amazing, but that’s not too bad considering the file sizes of things you
might actually be transferring on a system that would need this. The speed probably
isn’t going to be consistent over other devices and files being sent. I tried loading vim on my
5150 from it and it takes substantially longer than it should despite only being around 300k. So
it’s possible the way this thing handles random access isn’t great. But I can live with that.
Aside from understanding it is for flash drives and the speed not being crazy fast
I don’t think there is really much else that can be complained about. It’s worked
really well with all the drives I’ve tested in the different machines I’ve put it in. And once it’s
installed it’s so blissfully simple to use. You just plug in the drive and change to the disk. No
weird protocols or software to mess with, you can use any file transfer programs you want,
and it reads and writes directly to the drive. It feels kind of perfect. I started out with
two of these but after playing with them some more I’ve got two more on the way because I want all my
pre-Pentium systems I use regularly to be flash drive compatible. It’s that good. One use case
I have is in my 486 PC I set up with all sorts of disk drives. I can plug a flash drive into it and
use that when I’m making disk images for backups. mTCP’s FTP programs are really well made and handy
and are how I have been getting the images to and from it in the past. But with this I can
just work with the images on the flash drive and hot plug it if I need to swap them out. It rocks.
Another use case I’m going to use at the end of this video is creating my supporter print
out file on a modern computer and putting it on a flash drive to print with my 5150 that I have set
up with a dedicated printer now. And I’m going to put one in my Compaq Portable I’m keeping
at home where I don’t have any tweener computers for transferring files to it.
Now with all that said, would I recommend one of these? Yes, but I wish there was another option
available to test because I might prefer that. As I mentioned at the beginning the CH375 is not
just an ISA to USB interface and it supports other protocols. The documents you can find online for
that chip actually talk about an RS-232 serial version that works with the exact same drivers.
That would have all the benefits of this card, but it wouldn’t take up a dedicated ISA slot.
The only downside is that older PCs don’t do high speed serial stuff that well so the speed would
probably be a lot worse. I would like to try and get one of the serial versions to test but
just go ahead and search for a “USB to Serial” adapter and you’ll find the problem. So the
ISA version is probably as good as it gets unless you make your own which, is actually possible but
not as a ready to use product. For now I am very happy with the ISA to USB cards I have and I’m
so glad to have those as an option now because they fit the niche of my use cases perfectly.
Well I hope I helped answer questions you might have had about the CH375
cards. If you liked this video you may want to subscribe and if you want to help support
the channel I am on patreon. But that is it for now, and I’ll see you next time.