Übersicht Übersicht Ebene Ebene
Software für OS/2 und eCS
Download details

USB Treiber USB Treiber

Q: I am using the drivers from the ArcaNoae website and they work fine for me. Why should I use the drivers in this package ?
A: You shouldn't. These drivers are meant for those where the ArcaNoae drivers do not work.

Q: Can I mix the ArcaNoae drivers with the ones from the package ?
A: No you cannot, except for USBMSD.ADD. The ArcaNoae drivers have a builtin version check that will fail with the drivers
from this package. The exception (for now) is USBMSD.ADD which is an updated version that is currently under development.

Q: Can I mix different versions of drivers ?
A: No you cannot. The problems is that there are logical dependencies between USBHID.SYS and USBMOUSE.SYS/USBKBD.SYS,
Putting it all together: all drivers are directly or indirectly dependent on one another.

Q: I tried your drivers but I would like to revert back to the ArcaNoae drivers. How ?
A: Just rerun the ArcaNoae USB WPI install and have it overwrite all files. Remember that you might be forced to boot from
your eCS installation CD-ROM, for example, if your USB mouse/keyboard fails with drivers contained in this package.
For this reason, it is a good idea to make backup copies of the ArcaNoae provided drivers which will allow you to copy
them back from a commandline.

Q: Why does the USBAUDIO driver come as a zip package (copied to the MMOS2 directory) within this zip ?
A: For audio drivers it's not sufficient to just copy them to a directory and modify config.sys.
They need to be installed via the "minstall" tool.
You need to extract the USBAUDIO.ZIP file into a temporary directory, open a commandline and run "minstall /*" from within that directory.
That will properly install the USB Audio Driver. Note that the ArcaNoae drivers might add an entry to config.sys
for USBAUDIO.SYS which you will need to remove/comment out first.

Q: Why does USBWAV come as a zip package (copied to the MMOS2 directory) within this zip ?
A: For IOProcedures it's not sufficient to just copy files to a directory.
They need to be installed via the "minstall" tool.
You need to extract the USBWAV.ZIP file into a temporary directory, open a commandline and run "minstall /*" from within that directory.
That will properly install the sample rate conversion IOProcedure.
Note: the Zip also contains a file called "listprocs.exe" that will list which IOProcedures are installed on your system and what the
entry points are. You can use this to check correct installation of USBWAV. You can also pass it a WAV file and have it play that file.

Q: The ArcaNoae drivers come in a nifty WPI install package. Why don't you do the same ?
A: I am too lazy/have too little time. Just copy the zip into the root directory of your drive and do a "unzip usbdrv2xx.zip" to
have it unzip all contained files to the proper directories. You can run "unzip -lM usbdrv2xx.zip" to view the ZIPs contents first.
You will also need to manually update your config.sys if necessary (USBAUDIO is the exception see preceding question).

Q: So what's the deal with the contained USBMSD.ADD ?
A: It's an updated driver that will allow you to seamlessly use Windows formatted USB sticks (provided that you also have the
proper filesystem installed, for example FAT32.IFS if your Windows formatted stick was formatted with FAT32).
Explanation: Unless you explicitely partition it, Windows will format a USB stick as a "large floppy".
That means, it is not partitioned and will resemble the media layout of a floppy disk (therefore the name: "large floppy").
Sticks formatted in this way are not supported by IBM version 10.162 of USBMSD.ADD
even when you specify the /REMOVABLE_AS_FLOPPY switch (which is no longer necessary with this updated driver).
All partitioned USB media (for example, media that you partitioned under OS/2) will continue to work as before.

Q: How do I change a large floppy formatted stick to a partitioned stick ?
A: Use DFSee to wipe the first sectors of the stick (Mode=FDISK -> Wipe start of disk to ZERO).
USBMSD.ADD will detect this and will turn off large floppy media support and
instead will treat the media as a media that is to be partitioned. Eject the media (by running eject.exe X: if X: is the drive letter)
and do a "Refresh Removable Media" (by double clicking the corresponding icon or by running lvm.exe /rediscoverprm from a command line).
You can then use lvm.exe or minilvm.exe to partition the media. Once you have done this you can format the just created partition(s).

Q: What's the drawback with USBMSD.ADD ?
A: It's under development. In contrast to the IBM provided driver version 10.162 it can also not handle multi-LUN devices
(example of a multi-LUN device is a USB cardreader with multiple slots). Multi-LUN support is still on the todo list.

Q: How does USBRESMG.SYS and USBCALLS.DLL differ from the drivers from Wim Brul ?
A: USBRESMG.SYS and USBCALLS.DLL match the latest drivers from Wim Brul. If Wim's drivers work for you,
these 2 should also work for you.

Q: What is the /L switch of USBCOM.SYS,USBPRT.SYS,USBAUDIO.SYS good for ?
A: The host controller specifications (UHCI,OHCI,EHCI) mandate that a host controller shall be able to address physical
memory with 32-bit addressing, for EHCI it is optional to support physical addresses up to 64-bit.
However, (older ?) NVIDIA host controllers only supported 31 bits of physical addresses (at least when accessing
management structures that are placed into memory). The /L switch will allocate below the 16 MB physical address line
(therefore 24 address bits are sufficient) for all memory that the drivers allocate dynamically.
It is highly unlikely you will ever need this switch but if you have continued data transmission failure you might want
to try these switches.

Version  10.226  System  ab OS/2 4.0 
Dateigröße  405.56 KB     
    Erstelldatum  01.10.2017 21:22:21 
Versionsdatum  11.03.2019 01:00:00  Wartung  Zum Zeitpunkt aktiv 
Installertyp  Manuell  Pakettyp  ZIP 
Lizenz  Siehe Dokumentation  Paketersteller  Siehe Beschreibung 
Autor  Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!  MD5 Prüfsumme  6b3681fd18d07eb8c3b301c9e416648a 
    SHA1 Prüfsumme  0cca67656ba2ccd9d29f8130ca3598e296f25c96 
Dateiname: usbdrv226.zip
Dateigröße: 405.56 KB
Download Mirror 1 Download melden

changes in 10.226:
1) added (playback) support for 16-bit mono/stereo at 12/15/24 kHz sampling rates.

1) in OS/2 HW Manager, add a RM device node for each attached MSD under the "USB Mass Storage Device Class driver"
The strings displayed (vendor,product,product rev) are directly taken from the "SCSI Inquiry" command
These are the very same strings that DFSee >= version 15.5. will display for USB sticks/disks

1) remove /S switch (/S: show HID devices names (for mice and keyboards) in OS/2 HW manager),
/S switch behaviour is now the default

1) fix a bug when clearing a stalled pipe (direction flag for endpoint was not properly set),
wait for stalled pipe command to finish (before accepting next command)
2) some sanity check for control transfers added (for the rare case of control transfers that do NOT go via endpoint zero)

1) on clearing a stalled pipe, do not attempt to call class/client driver notification routine
if it is not specified
2) on attaching a new device, do not call "cancel endpoint" processing against the default address
for the HC serving the device, this is unnecessary and would just kill all current transfers
of all other devices attached to the same HC (due to a bug in the HC drivers which has also been fixed,
see below)

1) rework endpoint cancel processing. This will fix errors where on a new device insert, any interrupt device (mouse,keyboard)
or isochronous device (USB audio) would cease to work

1) additional fixes for endpoint cancel processing with regard to isochronous devices: fix a memory leak

changes in 10.223:
1) fixed errors in bandwidth deallocation computation. The effect of the bug was that extended use of mouse/keyboard
attached to USB 2.0 hub would increasingly slow down the system and finally make mouse/keyboard non-operational
2) properly serialize allocation and deallocation of TDs (transfer descriptors). Looks like after an extended time span
of using mouse/keyboard attached to USB 2.0, the system is running out of free TDs which eventually leads to a system

1) limit the number of USB printers to 4 (and 2 COM port connected printers). It used to be 32 printers (and 16 COM port connected printers)
and on driver init, 2 GDT selectors per printer are allocated. GDT selectors are a scarce resource and each GDT selector allocation
reduces free memory space in the system arena.

1) add Transaction Translator (TT) reset for all hubs on initial hub enumeration to get hubs into a consistent state after system start.
This is essential for USB 1.x devices attached to a USB 2.0 hub.
2) call HC resets and enumeration of root hubs for all HCs on multiple invocations of the context hook dedicated for this job.
That will (hopefully) prevent the system from hanging because HC reset will take an extended period of time

changes in 10.222:

1) change HC reset and root hub enumeration logic:
first, reset all EHCI HCs, then reset all UHCI/OHCI HCs, then start root hub enumeration for all
EHCI root hubs, then start root hub enumeration for all UHCI/OHCI root hubs

1) remove sample rate conversion, instead, add conversion from 24-bit/32-bit to 16-bit
so that you can replay 24-bit/23-bit files to a 16-bit audio device via MMPM (double click on sound file, ...)
It also adds a subpage to the Multimedia Setup Object (under "USB Adapter Wave") to disable/enable that feature
for example if you do have a USB audio device that is natively capable of playing 24-bit or even 32-bit.
Can be used along with the conversion USBAUDIO provides (see below). USBWAV continues to support A-law and u-law

1) fix interrupt transfer driven devices (mouse,keyboard) by fixing bandwidth allocation and deallocation computation.
That'll allow to properly use mice and keyboards on USB 2.0 hubs, in particular if isochronous devices
(USB audio stick) are used on the very same hub (thanks Mikhail Zlobin for reporting this problem)

1) adding additional conversion for sample rates and/or bit resolutions (thanks Wim Brul)
Wim has provided this complete list of what conversion is provided apart from the legacy sample rates
(8 kHz, 11.025 kHz, 22.050 kHz) that continue to be supported.
In general, if a bit resolution / sample rate is directly supported by the Hardware then no conversion
will take place:
| sampling rates 32-bit mono/stereo to 16/24/32-bit stereo |
| 44.1 | 48.0 | 88.2 | 96.0 | 176.4 | 192.0 | 352.8 | 384.0 | kHz |
| ok | down | down | down | down | down | down | down | 44.1 | H |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | ok | down | down | down | down | down | down | 48.0 | A |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | ok | down | down | down | down | down | 88.2 | R |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | ok | down | down | down | down | 96.0 | D |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | | ok | down | down | down | 176.4 | W |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | | | ok | down | down | 192.0 | A |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | | | | ok | down | 352.8 | R |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | | | | | ok | 384.0 | E |

1) 32-bit is converted to 16/24-bit by truncation.
2) mono is converted to stereo by sample duplication.
3) downsampling is done by throwing away samples.

| sampling rates 24-bit mono/stereo to 16/24-bit stereo |
| 44.1 | 48.0 | 88.2 | 96.0 | 176.4 | 192.0 | 352.8 | 384.0 | kHz |
| ok | down | down | down | down | down | down | down | 44.1 | H |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | ok | down | down | down | down | down | down | 48.0 | A |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | ok | down | down | down | down | down | 88.2 | R |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | ok | down | down | down | down | 96.0 | D |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | | ok | down | down | down | 176.4 | W |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | | | ok | down | down | 192.0 | A |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | | | | ok | down | 352.8 | R |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | | | | | ok | 384.0 | E |

1) 24-bit is converted to 16-bit by truncation.
2) mono is converted to stereo by sample duplication.
3) downsampling is done by throwing away samples.

| sampling rates 16-bit mono/stereo to 16/24-bit stereo |
| 44.1 | 48.0 | 88.2 | 96.0 | 176.4 | 192.0 | 352.8 | 384.0 | kHz |
| ok | down | down | down | down | down | down | down | 44.1 | H |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| up | ok | down | down | down | down | down | down | 48.0 | A |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | ok | down | down | down | down | down | 88.2 | R |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | ok | down | down | down | down | 96.0 | D |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | | ok | down | down | down | 176.4 | W |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | | | ok | down | down | 192.0 | A |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | | | | ok | down | 352.8 | R |
+------+------+------+------+-------+-------+-------+-------+-------+ |
| | | | | | | | ok | 384.0 | E |

1) 16-bit is converted to 24-bit by zero extension.
2) mono is converted to stereo by sample duplication.
3) downsampling is done by throwing away samples.
4) upsampling is done by duplicating samples.

changes in 10.221:
1) back out changes done in 10.218. It is not necessary
2) when a hub (root hub or external hub) is attached, always do a "GetPortStatus" for all ports
of that hub. That will fix the error that attaching an external hub without any devices attached
will prevent attachment of devices attached to root hubs. It might also fix other attach problems
for devices already attached on bootup

1) completely updated installation to support media with sampling rates > 48000 Hz.
Now, 64000/88200/96000/176400/192000/352800/384000 Hz are supported for 16-bit/24-bit/32-bit
bit resolution, provided that the device supports it (of course)
PLEASE RERUN THE USBAUDIO INSTALLATION. See note above about pitfalls on running an audio installation.
The installation will properly update MMPM2.INI and also SPI.INI and will install a new file "USBAUDIF.DLL" which
replaces/supplements the original "AUDIOIF.DLL" file.

changes in 10.219:
1) serialize all control transfers (only issue the next control transfer if the previous one has
finished with a notification being sent to USBCOM)

1) move calling of class/client drivers for service to "ListenStatusChangedPipe": fixes hangs
where class/client drivers issue a lot of control transfer commands to set up the device
2) fix a trap condition in "ExtConfSet" routine: for "USBSetConfiguration" and "USBSetInterface" requests,
NEVER attempt to clear a stalled pipe (if indicated).
Instead just call the originating class/client driver and have that handle the stall condition.
Note: In these cases, the stalled pipe is owned/managed by the class/client drivers
and NOT by USBD.SYS.

1) completely remove the timeout processing for control transfers against the default address:
this functionality is completely useless

1) only reset HC, do not reset the complete USB bus (in line with what USBUHCD and USBEHCD do)

1) some changes to work around ICAT oddities on debugging

1) only cosmetic change, no functional change (remove unused function argument from internal function)

1) prevent devices from attaching that have a HID interface but that are not keyboards

changes in 10.218:
1) fix stuttering sound when playing again after a rewind (thanks Win Brul)

1) prevent USBD.SYS from offering a device for service to the calling client/class drivers
while a status notification stalled pipe clear is in progress on the hub the device is attached to
This is to prevent a possible conflict when multiple devices are already attached to an external hub when
the hub is powered on

changes in 10.217:
1) fixed a trap in a routine that displays calling client device driver names (in the trace).
For some yet unknown reason sometimes the DS value of a calling client device driver is not set.
In that case, the routine now does nothing in order to avoid a trap on copying the driver name.

1) properly set DS and also IDC entry point on a "ClearStalledPipe" call, is related to the fix in USBD

1) properly set DS and also IDC entry point on a "ClearStalledPipe" call, is related to the fix in USBD
2) fix a potential trap condition when the driver reports to stream manager that a buffer has been processed
3) compute the clock time time interval from the global info seg value instead of hard coding it
4) fixing a bug where the buffer size to play was accidentally overwritten by the length value of the next buffer
(thanks Wim Brul)
5) added on-the-fly conversion support (see USBWAV, point 1)) if applications use DART directly and therefore bypass
the MMIO file (IOProc) support, this support includes sample rate conversion from/to arbitrary sample rates (thanks Wim Brul)
Note: an example of direct DART use is the "libkai" library (used by Firefox, for example)

1) enabling a code path in USBEHCD.SYS so that we have enough frame allocations available to upsample
a 8000 Hz, mono file to 48000 Hz stereo (thanks Wim Brul)

1) I now added an on-the-fly sample rate conversion IOProcedure as support for USBAUDIO.SYS that is to do the following
sample rate conversion:
16-bit signed PCM, stereo, 44100 Hz
8-bit unsigned PCM, mono, 11025 Hz
8-bit unsigned PCM, stereo, 11025 Hz
8-bit unsigned PCM, mono, 22050 Hz
8-bit unsigned PCM, stereo, 22050 Hz
8-bit unsigned PCM, mono, 44100 Hz
8-bit unsigned PCM, stereo, 44100 Hz (no duplication but still 8-bit to 16-bit conversion)
16-bit signed PCM, mono, 11025 Hz
16-bit signed PCM, stereo, 11025 Hz
16-bit signed PCM, mono, 22050 Hz
16-bit signed PCM, stereo, 22050 Hz
16-bit signed PCM, mono, 44100 Hz
The "sample rate conversion" is currently limited to just duplicating samples (plus the 8-bit unsigned to 16-bit signed conversion where necessary).
Don't expect sound "miracles" but you can now finally properly play the WAV sound files in the \MMOS2\SOUNDS folder in the correct speed.
This IOProcedure can only work if your USB audio device supports 16-bit signed PCM, stereo, 44100 Hz (that is: Audio CD default).
See also FAQ.
2) additionally I have added Codecs for A-Law and Mu-Law
3) for audio compressed files, I have added support to the IOProc to use any audio codecs that are installed to decompress audio
from the compressed format to 16-bit PCM (if a suitable codec can be found)

1) increase the maximum wait time for each PROLIFIC (vendor) specific setup command from 100ms to 1000ms. Seems
that some devices are too dog slow to finish these commands in 100 ms. On the long run, the correct implementation
is to implement each command via asynchronous notification instead of blocking.

will properly transmit the callers DS and IDC entry point:
USB_IDC_FUNCTION_ACCIO, USB_IDC_FUNCTION_SETCONF: if USBD tracing is enabled, that will allow USBD to print out
the driver name of the caller calling into USBD
USB_IDC_FUNCTION_CLRSTALL: that will allow USBD (via the USBUHCD/USBOHCD/USBEHCD drivers) to properly address
the calling driver to return to once the stalling condition is reset at the device

changes in 10.216:
1) add proper serialization for iso buffers (isochronous data transfers: USB audio, USB video) to prevent
traps on concurrent access from user context and context hook context (thanks Neil Waldhauer)
2) add a safety check to prevent accessing past the end of the iso frame buffer list
3) add a safety check to prevent accessing past the end of the frame length list
1) add a fix to properly compute frame size for sample rates that are not a multiple of 1000 Hz (thanks Wim Brul)
2) add a fix to NOT increase processed frame counter when at end of buffer there is no data to fill
a whole frame and that remaining data needs to be "moved over" to the next frame (thanks Wim Brul)

changes in 10.215:
1) fixed incorrect geometry computation for FAT-16 formatted large floppy sticks,
FAT-32 formatted large floppy sticks are not a problem.
In particular, pick up geometry values from the BPB if the stick is already formatted
If it is blank then set NumHeads = 1,SectorsPerTrack = 1 and NumCylinders = NumTotalSectors
if NumTotalSectors <= 4084*8 ("< 4084*8" sectors is the FAT12 sector limit)
which is what Windows 10 does with such small media, else use NumHeads = 255 and
SectorsPerTrack = 63/127/255 (depending on disk size)
(thanks Doug Bissett)
2) fixed incorrect geometry computation for partitioned sticks if the first partition
does not start within the first cylinder
(thanks Hanno Sedlmayr)
3) if for partitioned media NumTotalSectors evenly divides by (64*32)
then choose NumHeads = 64 and SectorsPerTrack = 32
as these are the values that Windows chooses for SSD/4k sector type devices
This is supposed to avoid conflicts with DFSee which also assumes these geometry values
for SSD/4k sector type devices
4) fixed and simplified treatment of driver internal "REQUEST_SENSE" requests
5) fixed a problem where on a "READ_CAPACITY" command during device attach
the stick would answer with error "NOT READY TO READY TRANSITION - MEDIA CHANGED"
and would deliver no valid capacity data and garbage data on a subsequent READ10 request
preventing the computation of a valid geometry.
Now, under these circumstances, the "READ_CAPACITY" command will be repeated
until the stick no longer signals an error.
(thanks Hanno Sedlmayr)
6) removed a couple of unnecessary commands issued on device attach (introduced with 10.211)
in order to speed up the attach process.
Please be aware that now device attach can still take longer than before if devices take
a long time to become ready (see preceding point).
This could cause problems with the AN Removable Media Monitor widget running into a timeout and
reporting the device did not attach where in fact it will eventually attach.
In this case, just run "Refresh removable media" to refresh the removable media state.
The standard USB monitor daemon program (USBMSDD.EXE) does not exhibit this problem,
it will correctly report device attach the moment when the device becomes ready for use
7) reduce max value for /BUFFER: from 32768 to 20480 bytes (when USB 1.x devices are in use)
(thanks Doug Bisset)
8) for all REMOVABLES (not floppy, not CD-ROM): when "RediscoverPRM" is run, this will lead to a
request to USBMSD.ADD to read capacity. When that happens, chain in a command to read sector 0
so that we can recompute the geometry (we need BPB / MBR in addition to overall capacity
to come up with a geometry).
This is particularly critical for devices with removable media like card readers where the device
stays attached but the media changes.
Floppies and CD-ROMs are handled differently and never suffer from this problem.
(thanks Doug Bisset for his unintentional mentioning of this problem :-)

changes in 10.214:
1) another change in geometry computation in order to prevent that DLAT Sector added via DFSee
will overwrite FAT/data area, if "SectorsPerTrack" value is determined to be 32 then "NumberOfHeads"
will be set to 64 (common settings for Windows prepared USB sticks).
If "SectorsPerTrack" is <> 32 then "NumberOfHeads" will be set to 255 (which is the OS/2 default)
1) avoid use of VMDHA_USEHIGHMEM flag for dynamic memory allocation via DevHelp_VMAlloc. This
flag was originally added to reduce memory allocated below the 16 MB physical address line
by device drivers on bootup. This however seems to conflict with the use of CHKDSK.SYS.
In any case, this flag is unnecessary if EARLYMEMINIT=TRUE is used in config.sys
(which is the typical setting these days)

changes in 10.213:
1) again reworking geometry computation, simplify code
2) adding EXFAT support for large floppy formatted media:
this is done in anticipation that someone will write an EXFAT IFS for OS/2
large floppy EXFAT formatted media will then be virtualized as partitioned media
in the same way as it is done already for FAT32 large floppy formatted media
3) reworking device detach
4) compute a GUID for virtualized floppies that only depends on device characteristics
and that will therefore be identical on each device insertion of a particular device:
this was done to prevent a trap 3 in OS2LVM where OS2LVM will try to rediscover
a partition via its unique partition serial number which can lead to problems if a device is
just ripped out without being properly ejected first.
The so computed GUID will now be used as the disk/volume/partition unique serial number

changes in 10.212:
1) fix a bug in geometry computation that would lead to a division by zero trap
on ejecting a device, leaving the device inserted and then doing a "rediscover prm"

changes in 10.211:
1) increase power-on delay on hub attach

1) attempt to fix the problem of non-connecting printers
(USB port driver shows the printer as not connected even though it is and USBD.SYS correctly reports it as attached)

1) protect all write to PCI config space registers by disabling interrupts

1) add additional tracing
2) change the command sequence for device attach to what Windows does when new device is attached
That will hopefully increase the likeliness that a MSD device will attach successfully
3) add additional delays to commands issued on device attach, there are devices that need some delay in between
4) change geometry computation to match what DFSee expects, in particular, compute a (preferred)
device geometry (base for formatting) and a possibly different current media geometry (read from the current media)

changes in 10.210:
1) add additional tracing for central transmission function (USBAcceptIO)
1) back out change in 10.209 point 1)
1) see 10.205 point 2), reduce max value for /BUFFER: from 61440 to 32768 bytes
2) fix an error on computing max buffersize when /BUFFER: switch is used

changes in 10.209:
1) added some tracing (trace code = 0xE3 = 227)
2) back out change 2) in 10.208 (thanks Doug Bissett)
3) back out a change accidentally introduced in 10.208 (request device descriptor specifying
64 bytes in the standard request length field to fix some broken old devices, we better ignore buggy stuff)
4) do not clear stalled default control pipe (endpoint zero) for hubs. In particular the USB data toggle state
of the hub notification pipe was messed up due to this error which would result in an error in the
notification pipe (device attach and detach is no longer properly detected as a result)
5) change handling of "Set Configuration" request notification to point back to initiating client/class driver
so that pipe stall handling can work correctly (in case of stalled pipe)
1) get rid of an error that lead to a stall of the default control pipe (a command was accidentally issued twice)
2) properly preset data toggle flag on initial arming and after pipe stall of interrupt data pipe
1) properly preset data toggle flag on initial arming and after pipe stall of interrupt data pipe
1) change stalled pipe handling (for pipes that USBHID uses) to be in line with what USBD.SYS does
1) clean up and unify change stalled pipe handling
1) clean up and unify change stalled pipe handling
2) rework control setting (volume,bass,treble), properly mix master volume setting with application volume setting
3) silence USB device/free USB bandwidth (set AS interface to alternate setting 0)
on a "StreamStop" and "StreamPause" command
1) add a fix (increase number of top level and bottom level QHs from 10 to 12)
so that change in USBMSD (see 10.205 , USBMSD point 2) will not lead to chkdsk
problems on attaching a USB 1.x MSD device to a UHCI host controller if maximum size
is selected (equivalent to /BUFFER: command line argument not specified)
(thanks Wim Brul)

changes in 10.208:
1) if TD allocation failed for an isochronous request the protection spinlock would not
be released which would lead to a system hang (thanks Wim Brul)
2) QH was wrongly deallocated when creation of TD list or attachal of TD list would fail
for new request
3) QH "endpoint zero in use" flag would not be reset if creation of TD list would fail
for a new endpoint zero request
1) change code to be analogue to that of USBEHCD
1) back out change done between 10.999 and 10.200:
do NOT cancel requests against a stalled endpoint, this will hopefully avoid the hangs
that people are experiencing when using certain USB devices (those that on error will fail
with a stalled endpoint) (thanks Martin Vieregg)
2) do NOT cancel requests against default address on a device attach (this is properly done
on device detach if necessary)

changes in 10.207:
1) reenable suspend/resume notification to USBMSD.ADD
2) changes so that the remove wakeup capability (mouse/keyboard ability to wake up a suspended system)
is properly enabled

1) changes to suspend/resume code

1) rework suspend/resume code in the IDC APMService call as well as in ExecuteUSBIO (set up and start a command),
FinishUSBIO (command termination handling) and MSDCheckForService and MSDDetachDevice
(update all these to deal with device port disconnect and reconnect on suspend/resume)
2) add tracing for suspend/resume
3) change function ProcessStatus to NOT fill uncompleted data transfer buffers with zero, if the transfer
was not fully completed, the driver will retry the operation anyways
4) another fix to DevHelp_PageListToLin handling, only handle one scatter/gather list element at a time

1) for the /S switch, do not create a UConv object via "KernCreateUConvObject16" but let function "KernStrFromUcs16"
create one dynamically (let the system find out which code page is in use)


1) change driver to skip any COMx and LPTx device names declared by other drivers such as COM.SYS, PSCOM.SYS and also
RDRHELP.200. The latter is part of IBM Lan Server and declares virtual devices. USBCOM.SYS would not correctly skip the
COMx device names declared by RDRHELP.200 (also exports NET$RDR$ device name) when creating a unique COMx device name.

changes in 10.206:
1) leaving interrupts (globally) enabled when using DevHelp_PhysToVirt and DevHelp_PageListToLin as under
the given conditions it is not necessary to (globally) disable and reenable them, this was done in order to
minimize impact on devices needing a timely interrupt response (like audio devices, for example)
2) added additional tracing in order to catch problems with transmission requests not being fully
executed (only part of the requested sectors being transferred)
3) fix a bug on computing number of successfully transferred sectors (need to use 32-bit division
instead of 16-bit division). This would lead to endless attempts to reissue the transmission
command if the overall amount to transfer was exactly 64 kBytes (which is also the absolute limit
an ADD will ever be requested to transmit in one shot)
4) some minor changes and code cleanup of things that would never be executed as they would never work
5) for people having problems opening a OpenOffice supported document from a FAT32 stick: these latest
changes also fix the problem where older USBMSD versions would always return with error:
"invalid parameter" on an attempt to open the document (however, copying the document from the FAT32 stick
to a hard drive and opening it from there would work).
I don't know why this error now went away but I assume that the fixes also fixed a problem with EA support
(if /EAS switch is specified for FAT32.IFS).

changes in 10.205:
1) fixed a serious bug that under specific conditions could lead to clipped or corrupted files.
Unfortunately, the file size might even have been reported correctly after a write
and no indication of an error was given to the user.
The DDK code that this driver builds upon is unfortunately older than
the final 10.162 version of USBMSD.ADD delivered by IBM, therefore I don't know
if that error also exists in 10.162 or not.
2) increased buffer range for /BUFFER: switch for USB 1.x only systems / USB 1.x devices
3) prevent executing a command while another command is still in progress, this typically
leads to problems with device detection if many are already plugged in on bootup

changes in 10.204:
USBEHCD.SYS,USBOHCD.SYS: back out changes done in 10.203, powering off ports leads
to a hang on the next boot on many systems, also EHCI BIOS handover restored to what
it was before

1) on device attach, dynamically adapt the number of times to call "TEST_UNIT_READY"
when waiting for a device to become ready,
this should improve device attach for USB disks that might take a very long time
until they finally become ready (spinning up the disk etc.)
2) completely rework the LOCK/UNLOCK/EJECT handling: do not issue commands
for USB sticks/USB hard disks but instead return immediately indicating success
(many of these devices do not properly support these commands), also
DO NOT call IORBDone ("command processed" notification to OS2DASD.DMD/OS2CDROM.DMD)
while a command is still executing !
3) move all segment locking from INIT_COMPLETE to INIT, the DMDs will issue IORB commands
to the ADD already before INIT_COMPLETE
4) allow to wipe a large floppy formatted stick with DFSee and then to use lvm/minilvm to
partition the stick under OS/2 and format the partition(s)
5) fix a trap on unplugging and/or replugging a device while a transfer is still in progress

1) cosmetic fix to context hook stubs: make sure that DS is set on function entry
(should not be necessary but won't hurt either ...)

1) to the better or worse: added the USB ethernet driver
(this driver is limited to Kawasaki LSI KL5KUSB101 chip)

changes in 10.203:
1) fixed a problem with /V switch (even without /V, startup message would be shown on bootup)

1) update OS2CDROM.DMD callback processing so that multiple USB CD-ROM devices can actually be handled
2) skip "GetMaxLUN" command for protocol type "BulkOnly" devices if their subclass is not also "SCSI"
("GetMaxLUN" hangs for many devices and will prevent device attachal)
3) successfully finish the device attach phase even if no media is inserted in the CD-ROM drive
(allows you to boot with CD-ROM drive attached but no media yet inserted)
4) implement "command queueing" (wait for issued command to finish before sending next) in order to prevent
erroneous device behaviour
5) reduce the number of occasions where a MSD reset is driven and prevent recursive MSD resets

1) increase timeouts for BIOS handover

1) for /FS switch specified, power off all ports before host controller reset

changes in 10.202:
1) fix a trap on device attach (handling of unexpected error condition)
2) fix a potential problem when allocation of memory structure to manage
newly inserted device fails

changes in 10.201:
1) replace a blocking delay between Master and Companion controller
enumeration phases with a timer routine triggered phase invocation
this is to fix a problem on some systems that will completely
block on bootup with the old approach of using a blocking delay

1) add additional tracing
2) fix a trap on system start when tracing is enabled through config.sys
3) set default sense if requested by DMD for those cases where
no command invocation takes place and therefore
no sense info is generated
4) floppy drives: on processing sense data, only set "MEDIUM INSERTED" flag
if the sense data indicates that media change has taken place
this prevents a system block if you invoke "Lock" on a diskette drive
that has no media inserted
5) floppy drives: change handling of lock command so that you will get a sensible
error text instead of no visual feedback at all in case no media is inserted
6) floppy drives: chain in a "TEST_UNIT_READY" command
(done by issuing a IOCC_UNIT_STATUS / IOCM_GET_UNIT_STATUS request)
before any read/write transfer command if no disk insertion has yet been detected,
this is for floppy drives that expect a TEST_UNIT_READY command
in order to determine if media is inserted or not (drives without changeline support)
7) floppy drives: reject a read/write command for as long as no medium has yet been inserted
this is to prevent endless looping for floppy access when opening the drives folder
in XWorkplace

1) fixed a trap for isochronous transfer buffer handling (properly serialize adding/removing buffers)

changes in 10.200:
1) changes to support old and/or small USB sticks
2) serialize HC reset: reset master (EHCI) controllers first,
then reset companion (UHCI,OHCI) controllers,
delay resetting of HCs until most/all of the RUN statements
in config.sys have been executed
this is hopefully solving some device attachal problems
for devices already attached on bootup
3) changes in controlling use of default address (address 0)

1) fixes to clearing a stalled pipe

1) increase timeout for setting device address (for slow devices)
2) per device, serialize access to endpoint zero
3) increase host controller reset time when /FS switch is used

1) remove port power on on host controller reset, this is supposed
to get rid of problems where devices will not properly be detected
if already plugged in on bootup

1) changes to support old and/or small USB sticks
2) only use "MODE SENSE (10), flexible disk page" command on USB floppy drives,
apparently many new USB sticks do not or do not properly support this command
(and in the scope of USBMSD.ADD it's only relevant to floppy drives anyway)

1) changes to make volume/bass/treble setting work
2) added initial tracing support (major trace code: 238)

1) added missing exports for REXX functions

changes in 10.199:
1) make drives > 65536*255*63 sectors (500 GB) work
2) do changes in 1) also for virtualized large floppy media (Windows formatted USB sticks)
3) increase timeouts for drives that take very long to resume from sleep
4) change device attach to closer match the Windows way of doing things
5) do not send REQUEST_SENSE after each TEST_UNIT_READY command
in order to reduce the number of commands sent

1) deal with external hubs sending more status change pipe data then they should
(gleaned from the Linux implementation)

1) change the way stalled pipes are cleared (clear transmission error to get device operational again)

1) latest updates to the interface functions (C and REXX interface)


Zum Seitenanfang
Diese Seite verwendet Cookies u. a. für Zwecke der Analyse der Website-Nutzung.Wenn Sie auf der Seite weitersurfen stimmen Sie der Verwendung von Cookies zu. Ihre Zustimmung verliert nach drei Monaten ihre Gültigkeit und wird dann automatisch gelöscht.
Zustimmen Ablehnen (Sie werden auf eine Informationsseite weitergeleitet)