View Full Version : accessing USB Thumb drives from DOS

March 14th, 2014, 03:56 PM
I just got interesting in this general topic recently. I think most of the world thought about it between 2002 and 2004 as the Win9x series came out which has adequate support for this.
Rather than make a long post I have created a web page with references and my nominal success: www.willsworks.net/dos_usb.htm
Not pushing or selling anything, just curious if anyone is still interested in this. I've found a slightly corrupted *.zip of some iomega usb drivers for DOS that I had never seen. Seem to have recovered the key items from it but curious if anyone has a copy of the original. There was something called DUSE.exe that was supposed to be a driver package but I can't get that to work at all. I found a number of USBASPI.sys drivers, all seem to work to some extend, ie can see a Zip100 USB drive or a thumb drive. However I've only found one driver, NJ32DISK.sys that will assign DOS drive letters for my thumb drives. Others back in the day reported success with different tools, but I can't reproduce their success now. Anyone out there doing this?

March 14th, 2014, 04:44 PM
You can do it. One of the most popular ways is just to install the Panasonic USB ASPI driver: USBASPI.SYS, followed by the appropriate ASPI-to-disk driver. Use the Moto Hairu archive here (https://stefan.co/darkehorse/PC/DOS/Drivers/USB/)

There is also DUSE, which came from Cypress. I'll leave you to look for that one.

Observe that for each, there's no hot-plug facility. You plug your USB stick in and boot DOS, not the other way around.

March 15th, 2014, 01:26 PM
Thanks Chuck, but I've tried those and review them on my web page.
As mentioned in my original post I've found and tried duse.exe, but it doesn't
work for me. What I'm really looking for are people with hands on experience
that might give pointers to why several of the 'popular' solutions I tried don't seem to work.
Per my original post, I did eventually get a working system, but am curious about the others.
Its likely I'm the only person interested these days, but thought it worth asking.

March 15th, 2014, 06:32 PM
Oh, I don't think you're the only one; certainly the topic has arisen here with regards to old DOS machines that don't even have USB ports.

If you can get USBASPI running, why not just use a DOS SCSI driver for ASPI, such as Adaptec's ASPIDISK? That should work. ASPI is ASPI, no matter where it originates--there was, for a time, for example, ATASPI to work with ATAPI devices.

N.B. You'll have to use smaller devices <2GB because not many DOS ASPI clients understand FAT32 filesystems.

I'll admit that the hot-plug issue was a stopper for me. Since I run MSDOS 7.1 on most of my DOS systems when possible, if I have a USB stick to handle, I'll winp out and type "WIN" and do the transfer under, say Win98SE, then drop back to real-mode DOS.

The reason that MSCDEX works is because it's not a device driver, but a network redirector. That is, you're leaving the device details to the redirector, which implements a translation layer and hooks into certain MSDOS high-level functions. So MSCDEX translates the ISO 9660 file system and 4096-byte sectors to a small set of high-level functions that access the device by file name, not any low-level detail.

So, something to chew on...

March 16th, 2014, 01:24 AM
I doubt you're the only one, Have you tried the USB driver disk on this site (http://johnson.tmfc.net/dos/usbdrv.html) what i found interesting was the little program on the disk called devload (http://www.infradead.org/devload/) (Just run USB.bat on the disk after the machine has booted) I haven't played with it much as i only recently found it but i was able to access a CF card and my thumb drive.

March 16th, 2014, 11:03 AM
Chuck and Malc: Thanks
Chuck, had seen reference to adaptec's ASPIDISK but not gotten around to trying it yet. The NJ32DISK.sys I mention does seem to support FAT32 formated thumb drives as long as the first sector is a boot sector. It gets confused if the first sector is a partition table which seems to be the case with the default format on a lot of thumb drives. If one is using the Iomega USB drivers for DOS, the associated guest.exe program will assign driver letters for both ZIP (and presumably JAZ) and thumb drives. If you run guest.exe you don't need NJ32DISK.sys in config.sys.

Malc: that is a new site I'd not seen. The info that DUSE only supports the Cypress chipset explains why it didn't work for me. I still have not gotten DI000dd.sys to assign a drive letter for a thumb drive for me, think I have tried FAT16, but will test again. Other solutions seem more robust. Will try drivers on that floppy image.

March 16th, 2014, 02:58 PM
Bret Johnson's UHCI drivers (http://bretjohnson.us/) have worked for me in the past successfully.

And by successfully, I mean: Able to read, edit, and write.

The bad news is that it only works for UHCI chipsets, which basically limits you to Intel and VIA chipsets, and USB 1.1 at that (not that I think that's a horrible issue in practice). The driver can be loaded/unloaded at will after boot, so flash drives can be swapped between driver loads... it's not hotplug, but it's an acceptable alternative for me. Oh, and Chuck... WINp out? Was that an intentional pun :D?

Learn something new everyday... I thought DUSE was Panasonic's driver.

March 16th, 2014, 03:36 PM
[ Oh, and Chuck... WINp out? Was that an intentional pun :D?

Like that, do you? I thought it was pretty clever myself. :)

The point is that if you've got a system recent enough to have a USB host controller on it, there's no reason why one of the DOS-based Windows can't been used. For the USB-impaired, there are plenty of cheap MCUs with enough smarts and free code libraries to craft a host if needed.

March 17th, 2014, 08:07 PM
Honestly Chuck is right.. The lack of hotswap makes USB useless for transferring things between systems, when you have networking available. I had USB working on my DOS 7.1 computer. I'm redoing it all and I'll be setting it up again, as an option in my config, so I'll follow up with what I did to get it working.

March 17th, 2014, 09:29 PM
I'd like to see a standalone USB host interfacing through ISA, whose driver set is a network redirector, rather than a device driver. Something akin to what MSCDEX does. FAT32 support should be simple to achieve that way, even on downlevel versions of DOS.

Just thinking alound...

March 17th, 2014, 10:09 PM
The lack of hotswap makes USB useless for transferring things between systems, when you have networking available.

Hardly useless, Personally i can't be arsed with networking and it's an acceptable alternative for me.

March 19th, 2014, 06:33 AM
Chuck: your 3/18 post is too terse for me, I don't get it. Understand about similar to MSCDEX, and have been thinking about that. Although am not overly motivated since several of the drivers I've found are Fat32 aware. The bigger problem you mention is the hot swapping, and MSCDEX does seem to deal with that so the potential is there. I've written FAT32 code that runs on my 'dummer' aka older versions of MSDOS so I can deal with half of the problem. As time allows will look at the other half. However I do not understand your 'ISA interface' comment. Only ISA I know of is the ISA bus. What am I missing here?

March 19th, 2014, 09:02 AM
Okay, I'll try to bullet out my thoughts here.

Owners of vintage systems with no USB support at all (i.e. 386-486 and earlier) would like some USB connectivity. The only common high-speed bus available to them is the backplane ISA bus. While putting a UHCI on an ISA card might be possible, it's probably better to restrict the functionality to host a small range of devices, such as USB stick memory. Given that there are inexpensive 32-bit MCUs (with likely more computing power than the host system), it might be better to abstract much of the file-handling logic into that MCU, leaving more base memory for DOS (which is, after all, what we're talking about). Conceivably the idea could extended to non-DOS OS as well.

The issues of FAT32 support, particularly in older machines, such as a 8088 one, can be lessened to a great extent by having the device appear as a network device, using the network redirector hooks in DOS. This is the way that MSCDEX operates, and the issues of file structure, etc. are neatly abstracted. Observe that this does not mean that the user has to load a bunch of packet drivers, etc., just the redirector software, which can be quite small. Since DOS doesn't have to deal with FAT machinations, this simplifies things very neatly. I've done this in the past with hosting alien file systems, such as one were files were forward and backward linked by two pointers in each file sector--no FAT on the disk, just an allocation bitmap. CDs are another example of this, with the ISO 9660 filesystem.

Does this help any? Two separate ideas, granted, but applicable to the original problem.

March 19th, 2014, 11:43 AM
... [I] am not overly motivated since several of the drivers I've found are Fat32 aware. Looking forward to reading the details of what you got to work, especially FAT32-wise...


March 19th, 2014, 11:54 AM
...especially on DOS 3.3...

March 20th, 2014, 05:29 AM
Chuck(G) - thanks that does clarify. I thought maybe you were talking about building a custom board but was not sure. I'm just a software guy, and due to that limitation normally stick with supported hardware ie stuff that was once comercially available. But good luck, would be interesting. I'll use my parallel port zip drive on my early machines, although not sure this will work with DOS 3.3 (its been a while)!

MikeS - between your post and Chucks, I may need to revise my claim. I have done all my testing with one of the DOS boot disks one can create with Win9x. Ie the DOS I am running is FAT32 aware. I'm running on what I believe is a 486 machine with USB ports on the mother board. I have NOT tested these drivers on earlier machines or with earlier versions of DOS. This could make a big difference which I had not thought about much. My original interest was a) a recovery disk I'd boot from CD which could copy files off a damaged system to a thumb drive, b) the same disk to be used to run some of my old DOS code to talk to PDP11 systems via the serial port and save data to thumb drive. Neither of these tasks requires supporting earlier versions of DOS. But the version dependancy of these drivers is of interest. Most seem to have been written around 2002 so I am not real optimistic about DOS 3.3 but be interesting to see.

March 23rd, 2014, 11:04 AM
I haven't played with Dos 3.30 lately but IIRC the likes of DI1000DD.sys requires Dos 4x ->, On another note Has anyone used / using " Loadsys TSR and Device Driver Loader/Unloader " ?, I've only just started to play with it and it seem's to work in as much it will load usbaspi.sys and di1000dd.sys and i can read / write to a thumb drive and Unload them without rebooting, albeit with an error message on Unloading about not releasing extended memory but that could well be me not having it set up properly, Using an old laptop running dos 6.22, I'll keep playing.

March 23rd, 2014, 12:50 PM
MikeS - between your post and Chucks, I may need to revise my claim. I have done all my testing with one of the DOS boot disks one can create with Win9x. Ie the DOS I am running is FAT32 aware. I'm running on what I believe is a 486 machine with USB ports on the mother board. Same here, except I don't see the need for boot disks or even CDs since the systems in question have USB-boot capability; I have several bootable USB sticks (using the HP driver) with DOS 7 on them (and NTFS4DOS on some) that take care of any FAT/FAT32/NTFS transfer needs and even let me run DOS programs on a 'DOS-unfriendly' host; except for one 64MB stick the smallest is 2GB, still much larger (and faster/more flexible) than a CD.

I must say that DOS really shines on a >2GHz platform with a fast HD and a large RAMdisk; seconds to boot and most things happen way faster than you can time or watch...

I found an interesting oddity regarding hot-swapping in DOS: if I boot with the (Sony) 64MB stick I can then hot-swap a 2GB Kingston Traveller, and after a couple of seconds of blinking lights it's logged in and running happily. Unfortunately it only works that once, i.e. I can't put the original 64MB stick back in, or any other that I've tried. Anybody have an idea what's going on? Maybe hot-swapping is possible after all if we could figure out why it works in this case...

March 25th, 2014, 08:23 AM
Hi Guys: Very curious, I can not get DI1000DD.sys to assign a drive letter with either MS-DOS 6.22 nor
'Windows Millenium Edition [Version 4.90.3000]' my FAT32 aware boot disk. I would like to confirm which version of DOS and which usbaspi.sys you are using. My current test version displays:
"ASPI Manager for USB mass-storage Version 2.20
(C)Copyright Panaonic Communications Co., Ltd. 2000-2004
It scans for and detects several of my usb thumbs drives (but not all) and if detected displays some information
about the thumb drive. The DI1000DD.sys loads and displays:
"DI1000 ASPI DISK Driver Ver 2.00
Copyright(C)2001 NOVAC Co.,Ltd.

Available ID = 0
ID 0 = HD .. Staples Relay UFD
but no drive letter is assigned. I have not arguments for this driver in config.sys. Any comments on what you are doing differently?

MikeS: you also mentioned you are using the 'HP driver'. I don't know what that is, maybe that's part of my problem
I have no usbapsi driver that displays anything about HP. Know where you got it?

As I've said I have something that works, but curious about the one that works for you and not for me. It also looks like there are DOS version dependancies, but I won't have time to play with that till I get my taxes done. The wife is getting annoyed....

March 25th, 2014, 09:25 AM
MikeS: you also mentioned you are using the 'HP driver'. I don't know what that is, maybe that's part of my problem
I have no usbapsi driver that displays anything about HP. Know where you got it?As I said, I'm approaching this a little differently by booting DOS from the USB stick in the first place since I don't need CDs or ZIP disks in my situations. The USB stick takes care of transferring data between the DOS box and whatever, and Interlink takes care of older systems with no USB capability.

HPUSBdrive (http://h20566.www2.hp.com/portal/site/hpsc/template.PAGE/public/kb/docDisplay/?spf_p.tpst=kbDocDisplay&spf_p.prp_kbDocDisplay=wsrp-navigationalState%3DdocId%253Dmmr_kc-0100248-11%257CdocLocale%253Den_US%257CcalledBy%253DSearch _Result&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken)



etc. ...

March 25th, 2014, 10:00 AM
Does the size of the USB flash stick have anything to do with it?

March 25th, 2014, 11:27 AM
I can not get DI1000DD.sys to assign a drive letter with either MS-DOS 6.22 nor
'Windows Millenium Edition...

What's the contents of your Config.sys file ?, I've not had any problems with DI1000DD.sys assigning drive letters to the 4 different flash drives i have or a CF card, Same version files as you on Dos 6.22 and Milly.

March 28th, 2014, 07:36 AM
I've tried a number of combinations in my config.sys but here is the bare bones that
produces the output I posted the other day, but assigns no drive letter to thumb drive:


can't get a lot simpler than that, they both run and seem to produce no errors, but I don't get a drive letter.

Chuck I have tried several thumb drives, and size could be an issue, but several work with the other driver NH32DISK.sys.
My smallest physical drive is a 4Gb, but I reformated it to 1Gb and FAT16 and get the same result. I did have problems if the thumb drive was partitioned with a partition table at physical sector 0 and the boot sector at sector 0 for the next head. I've reformated all my thumbs to start with a valid DOS boot sector at physical sector 0.

I've now tried it on a 2nd machine with similar results, although oddly the iomega usb drivers are not happy with the machine usb ctrl and hang scanning it. So there are differences and these old drivers are not super robust.

March 29th, 2014, 12:02 PM
Not sure what to suggest, Where did you get the USBASPI.sys and di1000dd.sys files from and what are the " Modified " dates on them ?

March 29th, 2014, 03:31 PM
@willyk: Have you tried changing the LASTDRIVE statement in config.sys? Something like LASTDRIVE=Z should work if that's the problem.