Articles

USB driver for DOS = USBASPI.SYS

March 22, 2005 at 08:15:41
Specs: DOS, P4-2.8G/512MB

USBASPI.SYS Panasonic(TM) USB to ASPI driver v2.06, v2.15 and v2.20 Reference
Rev 4.5 updated 23 Mar 2005 by madmaxUSB
===========
For a brief history on how I got to research on this very useful driver, check out http://www.computing.net/dos/wwwboard/forum/13447.html
===========
Most people will tell you MS-DOS does NOT support USB connected devices.
This is somewhat true, because USB was developed way after Microsoft(TM) had opted to discontinue DOS.
However, there are special device drivers that allow USB connected mass storage devices to be mapped as ASPI devices which can subsequently be accessed by DOS - much the same way as SCSI devices.

This document provides useful information on using a specific device driver in getting USB 2.0 mass storage devices (like hard disks, flash memory, optical drives) recognized in DOS. It is provided for troubleshooting and reference purposes only.


===========
Description:

Version : 2.06 File size : 37,903 bytes
Last modified : 27 Nov 2002

Version : 2.15 File size : 39,093 bytes
Last modified : 27 Oct 2003

Version : 2.20 File size : 39,179 bytes
Last modified : 8 Nov 2004

Support UHCI/OHCI/EHCI controllers and are compatible with many of the USB implementations from major chipset manufacturers like INTEL, VIA, NVIDIA, SiS and NEC for integrated, onboard, PCI bus or CardBus USB2.0 ports.

These drivers seem to be based on work done by Novac Co. Ltd. and Medialogic Corp. hence they generally have similiar options and good interoperability.

Your boot OS determines what kind of partitions will be supported in your USB device. For FAT32 support, use the DOS boot disk for Windows 98 (MS-DOS 7.10) or the Windows ME Emergency Boot Disk (MS-DOS 8.00). You can add support for long file names using special drivers. Check out these site for relevant links - http://www.opus.co.tt/dave/utils.htm

There are other USB 2.0 DOS drivers released on the web, but were found to have a number of limitations in terms of compatibility and configuration:

1. DATOptic's Speedzter supports USB 2.0 & Firewire - their DOS driver seems to be the next best driver in terms of compatibility and functionality.
2. Cypress(TM) DUSE (ver 4.4 & 4.9) are a unified driver that also supports USB 2.0 and offer many options but seems to have issues for I/O port address or Memory address settings - particularly a limit on the address space range.
3. Iomega(TM) USB & Firewire drivers also support USB2.0 (via ASPIEHCI.SYS) and is also used in Norton/Symantec GHOST but has limited compatibility.


===========
Application:

When used in conjunction with an ASPI Mass Storage Driver, it allows USB storage devices - particularly USB 2.0 hard disks or flash disks - to be accessible in DOS. This is particularly useful in drive cloning, partition resizing and image backup utlities that need to run in DOS mode (e.g. emergency disks for GHOST 2003, Partition Magic, etc...)

Furthermore, with a USB CD-ROM Driver, it allows USB optical drives (DVD, CD-ROM) to be accessible in DOS when MSCDEX extensions are loaded. This makes it possible to install images or load Operating Systems onto newly formatted systems or replacement hard drives.

Advantages over similiar drivers:
1. Support for USB 2.0 as well as USB 1.1 (Other USBASPI.sys versions are actually for USB 1.1 only)
2. Compatible with many USB chipset implementations, including Intel, NEC, VIA, NVidia and SIS
3. Automatically obtains configuration parameters from Motherboard PnP/ PCI BIOS to minimize difficulties with I/O, Mem and IRQ mapping
======================================================================
Please note that USB support in DOS is considered experimental!
Most HW manufacturers DON'T provide support for their USB DOS drivers.
======================================================================

There are three standards compliant controllers in PC's. In Windows, Go to ControlPanel - System and (look under Hardware or DeviceManager to) examine the listed devices under Universal Serial Bus Controllers to determine the type of USB ports detected:
USB 1.x UHCI (Universal Host Controller Interface) Intel, VIA
USB 1.x OHCI (Open Host Controller Interface) Compaq, Microsoft and National Semiconductor
USB 2.x EHCI (Enhanced Host Controller Interface)

USB 1.x is the initial standard. USB Support started in Windows95B and onwards. USB 1.1 supports a theoretical maximum transfer rate of up to 12 Mbps.

USB 2.0 is the current standard and supports a maximum transfer rate of up to 480 Mbps.

Since 2.0 is a superset of 1.1, some devices are marketed as USB 2.0 compatible but cannot operate at full speeds. Here is a table on the speed ratings:
USB Type Code Max. Transfer Rate
High-Speed HS 480 Mbps
Full-speed FS 12 Mbps
Low-speed LS 1.5 Mbps

Actual I/O throughput with current USB 2.0 external hard disks is limited by processor interconnect type, protocol overhead and USB bus connections.
Reportedly, for USB 2.0 ports integrated on system board chipsets, 25 MB/sec is the practical throughput, while add-on USB 2.0 PCI cards can give up to 16MB /sec only.

Notes:
1. For more reliable connections, avoid the use of USB hubs when connecting storage devices in DOS mode.
2. The driver does NOT support hot-plug connections. Do not disconnect/reconnect USB devices after USBASPI.SYS has been loaded, until the syste, is powered OFF.


===========
Recommended Usage:

> To detect your USB Mass storage device (.e.g. a USB 2.0 external hard drive) put this line in your boot diskette CONFIG.SYS file

device=USBASPI.SYS /w /v


===========
USBASPI.SYS Switches:

Here are the known valid switches identified so far with the Panasonic(TM) v2.xx USBASPI.SYS driver in CONFIG.SYS

device=[{path}]USBASPI.SYS [/e] [/o] [/u] [/v] [/w] [/r] [/l[#]] [/p=xxx0] [/f] [/slow] [/nocbc] [/norst] [/noprt]

You can specify more than one controller type (e.g. /e /u). This switch can also be used to force slower speed operation on high-speed USB controllers & devices.
The driver will scan for all types of USB controllers, so use these switches to specify which port types to enable. This allows for faster USB scanning. By specifying /u or /o and omitting /e, it forces Full-Speed mode on High-Speed devices. Note that you can't make a Low- or Full-Speed device run at High-Speed.
/e EHCI, for enabling only USB 2.0 controller
/o OHCI, for enabling only add-on/onboard USB 1.1 controller
/u UHCI, for enabling integrated USB 1.1 controller

In verbose mode. USBASPI displays details on controller type and USB devices it detects. It displays the vendor & product ID codes, the controller address range (memory map or I/O port map) of controllers, and the connection speed code for each device.
/v Verbose, shows USB details - excellent troubleshooting tool

These switches modify driver actions
/w Wait, displays prompt message to allow swapping/attaching of target USB device
/l# Luns, to specify highest number of LUN assigned, default /L0
/slow to enter SLOW down mode, gives longer delays when scanning USB devices
/nocbc NO Card Bus Controller, to disable detection of USB on CardBus slots
/norst NO ReSeT, to prevent the driver from resetting USB peripherals which have been initialized by BIOS (USB legacy support) such as keyboards and mice.

This switch is typically used on portable systems with an external USB floppy drive connected to the single USB port for boot-up. Used in conjunction with RAMFD.SYS so after the boot floppy is copied to a RAM drive, (and after the /W pause...) the USB floppy can be removed, and the target mass storage device can be attached and detected
/r Resident, allows driver to stay resident in memory when USB floppy drive is detected.

This switch is used to specify the UHCI I/O address. Use this if the PnP BIOS does not assign an I/O address, where xxx0 is in hexadecimal format.
/p=xxx0

There are a number of switches whose specific function is still unknown. Please post your discoveries in the USBMAN end-user forum, or the Computing.Net DOS forum.
/noprt * Have found that on Intel systems (which have UHCI), using this switch causes the system to hang while detecting host controllers. Could it be related to I/O port?
/f

Depending on the system processor, USB 2.0 host interface, USB bridge chip and actual harddisk specs, actual throughput may vary. The following were reported in DOS mode GHOST 2003 using Local -> Check -> Disk option:
1. NEC based USB 2.0 PCI card - over 300 MB/min
2. Intel chipset USB 2.0 onboard ports - over 500 MB/min
Differences in transfer rate may be due to sharing of PCI bus bandwidth and protocol overhead (on USB and PCI busses) vs. direct connection of a similiar device to a PC.

Note:

In case the driver reports an error "Cannot set memory mode I/O" please disable Legacy USB device support in system BIOS setup.


===========
Download Source:

The USBASPI.SYS driver is supplied for portable USB 2.0 drives from Panasonic and available in the Japanese market. Follow any of the links below to the manufacturer's self-extracting drivers:

USBASPI v2.06
http://panasonic.co.jp/pcc/products/drive/cdrrw/kxlrw40an/driver/kxlrw40an.exe
http://panasonic.co.jp/pcc/products/drive/cdrom/kxl840an/driver/kxl840an.exe
http://panasonic.co.jp/pcc/products/drive/combi/kxlcb30an/driver/kxlcb30an.exe

USBASPI v2.15
http://panasonic.co.jp/pcc/products/drive/combi/kxlcb35an/driver/kxlcb35an.exe

USBASPI v2.20
http://panasonic.co.jp/pcc/products/drive/other/driver/f2h_usb.exe

USBASPI.SYS is extracted from the F2H subdirectory

These are from CD-R/RW, CD-ROM and DVD+CD-R/RW products intended for the Japanese market, but work OK in English version DOS & Windows.

Observed differences between these driver versions:
1. Unlike v2.06, the newer v2.15 does not unload from memory if it does not find a USB mass storage device, consuming about 14KB in DOS. (-)
2. V2.15 seems to be able to initialize and scan for USB controllers, hosts and devices faster than v2.06. (+)
3. Performance is reported to be slightly better in v2.15 vs v2.06. (+)
4. However, v2.06 provides a much more informative verbose mode than v2.15 as you can tell where each USB1.x device is logically connected to. (-)

I have yet to experiment on changes in v2.20, and will post the observations in the future. Keep these known differences in mind when choosing which driver to use in your DOS environment.


===========
Other Useful Files:

Here are some useful device drivers that complement USBASPI.SYS:


From the same Panasonic driver file you downloaded to get USBASPI.SYS, in the F2H subdirectory are 2 other important drivers
USBCD.SYS v1.00 from Panasonic, USB CD-ROM device driver
RAMFD.SYS v1.01 or v1.02 from Panasonic, copies boot floppy disk contents into a RAM disk, write protects it, and remaps the floppy drive letter to the RAM disk.


As USBASPI.SYS merely maps USB devices to an ASPI device, additional driver is needed to map the ASPI mass storage to a DOS drive letter. The famous "Motto Hairu" driver includes this important piece, and can be downloaded from:
http://www.driver.novac.co.jp/driver/hd352u/hd352u_dos.zip

[Note: If this link doesn't work, start at http://www.driver.novac.co.jp/driver/hd352u/hd352u_drv.html]

UnZip the file to get these files (the latter has an english translation readme file)

DI1000DD.SYS v2.00 from Novac, ASPI Mass Storage Device Driver {reportedly drive needs to be ATA66 or faster)

======================================================================
DI1000DD.SYS
ASPI Disk Driver v2.00 from Novac Co., Ltd

device=[{path}]DI1000DD.SYS [/hN] [/dL]

If USBASPI.SYS detects multiple mass storage devices on multiple host adapters, use
/hN Host, to specify which host adapter to map drive letter(s), where N would be the 3rd number set reported for the USB controller in USBASPI.SYS with the /v switch.

To specify the starting drive letter for detected mass storage devices, use
/dL Drive_letter, where L is the first assigned letter for this host adapter

Example of use:

If you want specify the "L" drive letter for a storage
device, try:

device[high]=[{path}]di1000dd.sys /dL

======================================================================


In case you have compatibility problems, there are some similiar drivers here

http://www.datoptic.com/Drivers/DAT.exe

This image file creates a bootable diskette that supports USB and firewire in DOS. Of relevance are these drivers:
USBASPI.SYS v2.01 from Medialogic Corp, is very similiar but less-featured version than Panasonic's USBASPI.SYS.
NJ32DISK.SYS v1.06 from Workbit Corp. is very similar to Novac's DI1000DD.SYS.
SBP2ASPI.SYS v1.02 from Medialogic Corp provides ASPI mapping of Firewire storage devices.


===========
Examples:


> If the USB devices are already plugged upon power up and you want to enable only the high-speed USB controller and external hard disk drives, try

device=USBASPI.SYS /e /v
device=DI1000DD.SYS


> If you have only a single USB port and no internal floppy, use this CONFIG.SYS combination:

device=RAMFD.SYS
device=USBASPI.SYS /w /v /r


> If you have a notebook with a USB optical drive, install the ASPI CD-ROM device driver after loading USBASPI.SYS in CONFIG.SYS like this:

device=USBASPI.SYS /w
device=USBCD.SYS /d:USBCD001

and in AUTOEXEC.BAT:

MSCDEX /d:USBCD001


> If you want to connect a USB 2.0 optical drive and a USB 2.0 external hard disk simultaneously, put these in the CONFIG.SYS file:

device=USBASPI.SYS /e /w
device=USBCD.SYS /d:USBCD001
device=DI1000DD.SYS

and in AUTOEXEC.BAT:

MSCDEX /d:USBCD001

> For troubleshooting USB connections, install all your devices and boot from your diskette with this in CONFIG.SYS:

device=USBASPI.SYS /v


===========
Troubleshooting Info:

With the /v option, USBASPI.SYS provides a lot of useful info regarding the USB devices connected to a PC.

Use this info to determine if a problem is in the hardware level, or a Windows driver/configuration issue.

Example result for v2.06:

Controller : 00-09-0 VID=1033h PID=0035h (3782h-0035h) OHCI
: MEM=DF000000h-DF000FFFh(4KBytes)
Controller : 00-09-1 VID=1033h PID=0035h (3782h-0035h) OHCI
: MEM=DE800000h-DE800FFFh(4KBytes)
Controller : 00-09-2 VID=1033h PID=00E0h (3782h-01E0h) EHCI
: MEM=DE000000h-DE0000FFh(256Bytes)
USB Device : HOST [00-09-2 VID=1033h PID=00E0h (3782h-01E0h) EHCI]
: |-- VID=05ABh PID=0060h HS
: |-- VID=05E3h PID=0702h HS
: ^-- 2 device(s)
USB Device : HOST [00-09-0 VID=1033h PID=0035h (3782h-0035h) OHCI]
: ^-- nothing
USB Device : HOST [00-09-1 VID=1033h PID=0035h (3782h-0035h) OHCI]
: |-- VID=066Fh PID=4200h FS
: ^-- nothing
ASPI Device : ID:0 LUN:0 = IC25N010 ATDA04-0 0811
: ID:1 LUN:0 = E-IDE CD-ROM 48X/AKU T3A

Example result for v2.15:

Controller : 00-09-0 VID=1033h PID=0035h (3782h-0035h) OHCI
: MEM=DF000000h-DF000FFFh(4KBytes)
Controller : 00-09-1 VID=1033h PID=0035h (3782h-0035h) OHCI
: MEM=DE800000h-DE800FFFh(4KBytes)
Controller : 00-09-2 VID=1033h PID=00E0h (3782h-01E0h) EHCI
: MEM=DE000000h-DE0000FFh(256Bytes)
USB Device : VID=05ABh PID=0060h HS
: VID=05E3h PID=0702h HS
: VID=066Fh PID=4200h FS
ASPI Device : ID:0 LUN:0 = IC25N010 ATDA04-0 0811
: ID:1 LUN:0 = E-IDE CD-ROM 48X/AKU T3A

Interpretation:
1. There are 2 OHCI and 1 EHCI controllers detected. All are running in MEMory map mode (not I/O mapped) with the respective address spaces displayed.
2. Two devices are mapped to the EHCI controller. The HS indicates they are running at High Speed.
3. One device is mapped to the 2nd OHCI controller. The FS indicates runs at Full Speed only. ^-- nothing indicates no USB storage devices were found.
4. Two of the devices connected are detected as storage devices. Each is mapped to an ASPI ID, and it's identifier is displayed.
5. This config has an IBM 10GB notebook HD & a 48x EIDE CD-ROM drive.

Notes:
1. The respective USB bridge/device can be identified by referring to the 2-byte Vendor ID and Product ID.
2. Most of the configuration is automatically obtained from BIOS PnP info. Unfortunately, USBASPI.SYS does not identify IRQ's used.


===========
On the still unknown switches:

/f - does NOT seem to be speed related (as in full-speed or fast device detection). Suspect it could be for "floppy" or "flash memory" devices ...

/m=xx - in the older USBASPI.SYS v1.xx, is used to specify the OHCI memory map address but does NOT deem to work for v2.xx

===========
Thank you to members of DarkeHorse, Computing.NET and USBMAN forums for sharing their experiences.
:-)Thanks to:
om4n@netscape.net for confirming /norst switch
Daniel G. Gionco for /d switch info in DI1000DD.SYS

===========
* All brands mentioned are TM of respective owners. Many products mentioned are (C) and require an appropriate end-user license. *



See More: USB driver for DOS = USBASPI.SYS

Report •


#1
March 22, 2005 at 08:24:23

====================================
BIOS Support for USB storage devices
====================================

I have tested USB boot functionality on recent system boards using the AMIBIOS 7.0 core (http://www.ami.com/support/doc/amibiosdesktop.pdf). I believe the feature is also applicable to PhoenixBIOS 4.0 (http://www.phoenix.com/en/products/phoenix+cme+firstbios/system+firmware/products/phoenixbios.htm)
The BIOS may offer one or more of the following options in its setup interface that affect USB:
- Enable/disable USB host controller
- Enable/disable legacy USB support
- Assign IRQ to USB host controller
- Monitor IRQ for APM events

This text is taken from (https://www.codidirect.com/shop/thefactsbehindbootability.htm)
" Modern BIOSes add support for USB in one form or another. The most basic support available is known as USB Legacy Device Support. This extension to the PC BIOS supports the use of a USB keyboard and mouse during the boot process. It simply means your keyboard and mouse will work as soon as the PC is turned on.
Many modern BIOS also support, in a limited fashion, the ability to boot from a USB device. Support for this feature does not automatically mean you can boot from any USB device. It means you can boot from some USB devices. Currently, for most BIOS, this means a USB floppy drive. However, some BIOS that claim to support booting from a USB hard disk contain bugs that prevent them from doing so properly, and may require patches or upgrades.

Some BIOS also support booting from a USB zip drive or CDROM but again this is an exception, not the rule.

Support in the BIOS for booting from a USB device is accomplished through "IDE Emulation". IDE Emulation lets the BIOS scan the computer's USB ports looking for actual IDE devices or devices that look like (emulate) an IDE device. So, if a BIOS supports booting from a USB floppy drive, it will look for a real USB floppy drive or another device that can emulate the behavior of a USB floppy drive. "

Note that for an OS/driver/application to take over a USB controller, it has to follow a specific protocol, as failure to do so could result in hanging.

From my tests:
1. Generally, USBASPI.SYS is incompatible with systems where Legacy USB support is enabled if the Legacy mode enables IDE/floppy emulation.
2. When USB legacy is enabled and the USB storage is set as bootable, it becomes the 1st hard drive (C:). and the internal ATAPI drive becomes the 2nd hard drive (D:)
3. When USB legacy is enabled but not the boot device, USB storage is still mapped as a typical ATAPI drive in DOS mode.

However, BIOS support seems to only allow USB 1.1 transfer rates until the OS loads a driver that properly takes over USB protocols.


==========================
Transfer rates of USB HD's
==========================

USB 1.1 allows DOS file transfer rates of about 1.25 ~ 1.39 MB/sec. This is quite close to the theoretical 12Mbps limit.

USB 2.0 allows DOS file transfer rates of about 3.3 ~ 6.5 MB/sec. This is only a fraction of the theoretical 480Mbps limit, and is attributed to current USB-IDE chips and DOS file handling limitations.

(Tested using HD's with GL811 and ISD-300A1 bridge chips on i875P based USB2.0)


===============
Troubleshooting
===============

One of the most common issues encountered when using USBASPI.SYS are
1. No USB port or device found
2. Cannot recognize the partition or media
3. Divide overflow after loading drivers

In general, the things to look into are:

-> Is your USB device plugged in properly and sufficiently powered? Did you allow time to spin-up?

-> Have you checked the switches used and the type of USB port/device? Is the USB port enabled in BIOS? Do you need to specify an I/O port or Memory address?

-> Does your boot disk OS recognize the partition loaded? Older versions of DOS will not recognize FAT32 - try using the DOS version in Win98 OSR2 or newer. All versions of DOS from Microsoft do not recognize NTFS.

-> Also, depending on the OS used when the USB drive was partitioned, sometimes it may not properly recognize FAT/FAT32 partitions created in Windows 2000 or XP. It is suggested that you use Windows 98 to create DOS partitions in USB drives, for maximm compatibility.


===============
Additional Info
===============

HP has a nice utility available to initialize a USB Disk and make it bootable. The Windows GUI version HPUSBFW.exe supports FAT and NTFS, while the DOS CLI version HPUSBF.exe also supports FAT32. You will need the appropriate OS files to make it bootable as it contains only files for Win98 DOS boot for HP USB 2.0 drive keys only. Get it at:
http://h18007.www1.hp.com/support/files/hpcpqdt/us/download/20306.html
===========
Jason Baker also has a thread with batch code and file listings, detailing how he managed to boot directly to the pen drive, and ghost a machine at full USB 2.0 speed without using a floppy disk.
http://www.computing.net/dos/wwwboard/forum/15205.html


Report •

#2
March 22, 2005 at 08:27:05

=======================================
Differences between 2.06, 2.15 and 2.20
=======================================

USBASPI v2.15 and v2.20 seem to work the same:
1. Unlike v2.06, v2.15 & v2.20 do not unload from memory if it does not find a USB mass storage device, consuming about 14KB in DOS. (-)
2. Both v2.15 and v2.20 seem to be able to initialize and scan for USB controllers, hosts and devices faster than v2.06. (+)
3. But v2.06 provides a much more informative verbose mode than either v2.15 and v2.20 as you can identify where each USB1.x device is logically connected to. (-)



Report •

#3
March 22, 2005 at 12:59:29

I remember the old post...good info then and good info now.

I need to build the 3 DX4-100 machines I have this year and set 'em up with usb.

No idea how far I can take usb data transfer with what I have but the idea deserves a good try.

Skip


Report •

Related Solutions

#4
March 23, 2005 at 11:07:00

USB Support is intregrated into the BIOS
(CMOS) if the BIOS does not have this
feature (most Socket5 and earlier do not)
then USB will not function.



Report •

#5
March 25, 2005 at 14:39:34

My experience on Win98 and Win98SE: Make sure DI1000DD.SYS only sees DOS partitions that are under the 8GB limit or it hangs on the LBA-CHS translation. Partitions above the limit must be hidden from DOS (and therefore Windows).

Report •


Ask Question