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

USB Treiber USB Treiber Aktualisiert

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 / USBAUD2 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 / USBAUD2.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 / USBAUD2 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.228  System  ab OS/2 4.0 
Dateigröße  422.23 KB     
    Änderungsdatum  09.08.2019 22:49:18 
Versionsdatum  27.07.2019 02: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  6adf9538fa62d7b3490cf40a99be51cd 
    SHA1 Prüfsumme  4105f139651105575d3d0caee7183f558a115a7a 
Dateiname: usbdrv228.zip
Dateigröße: 422.23 KB
Download Mirror 1 Download melden


changes in 10.228:
USBAUDIO,USBAUD2 (thanks Wim Brul):
1) support for recording with input sample rates 44.1 kHz, 48 kHz, 64 kHz, 88.2 kHz, 96 kHz, 176 kHz, 192 kHz, 352.8 kHz, 384 kHz
2) minor fixes to allocated frame buffer sizes for recording
3) for recording, picking sample rate that the HW supports that is closest to the requested rate

1) removing bit depth conversion from 24bit/32bit to 16bit: this, along with channel duplication and sample rate conversion is
completely implemented in USBAUDIO and USBAUD2
2) for format conversion, use the OS/2 supplied filter DLLs instead of CODECS: now USBWAV will convert MULAW,ALAW,Microsoft ADPCM,IMA ADPCM
to linear PCM via the OS/2 supplied DLLs mulawflt.dll,alawflt.dll,msfilt.dll,imafilt.dll
(info: the supported/installed filters are listed in \MMOS2\MMPMCONN.INI)
Note: the installation still contains mulaw and alaw codecs in case anyone will ever want to use that (use of codecs instead of filters
was the approach targeted by OS/2 but apparently never completely finished)
3) update listprocs.exe to also list the installed filters

changes in 10.227:
1) revert a change done in 10.226 regarding reset timing (thanks Eugene Tucker)
2) make USBD continue to enumerate devices if an error occurs on handling device status
3) fixes to handling non-hub/hub/root hub device errors
4) fixed 2 longstanding bugs: on device attach, do cancel all endpoint traffic (revert 10.226 USBD 2)) and
also on initial hub initialization, always enforce enumeration of ALL ports of that hub (thanks Wilfried Eike)

1) minor fixes to root hub descriptor. Always specify a small power on delay for root hubs.
For OHCD and EHCD, these will then be reset individually (EHCI and OHCI specs define how to query these delays)

1) add a new applet to set the default WAVE and AMPMIX devices (in case you have more than one audio device).
This applet hooks itself into the "Multimedia Setup" notebook. This applet was written as apparently
so many people have problems to get audio to work and often this is due to the fact that the default WAVE
and AMPMIX devices are not correctly set.

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)
3) change reset timing

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.225:
1) adding USB audio 2.0 support. The USB audio 1.0 and USB audio 2.0 standards are different enough to justify adding a separate
driver for audio 2.0 support (USBAUD2). The driver for audio 1.0 support (USBAUDIO) can still be used along with USBAUD2.
All recent USB devices (let's say newer than > 2016) are likely following the audio 2.0 standard.
The USBAUD2 supports the very same sample rates and bit resolutions as the USBAUDIO driver does.
In addition it supports DSD (via DART) with these sample rates: 44.1,48,88.2,96,176.4,192,352.8,384,705.6,768 kHz. (thanks Wim Brul !)
Here is the detailed info that Wim provides:
Capabilities of the USB audio 2.0 driver.

Supports playback only. Recording not supported.
Plays 8/16-bit mono/stereo legacy sample rates (8 kHz, 11.025 kHz, 22.050 kHz).
Plays 16/24/32-bit mono/stereo standard sample rates (32 kHz, 44.1 kHz, 48 kHz,
64 kHz, 88.2 kHz, 96 kHz, 176 kHz, 192 kHz, 352.8 kHz, 384 kHz). If a bit
resolution / sample rate is not directly supported by the hardware then
conversion will take place according to the following table:

| sampling rates 16/24/32-bit mono/stereo to 16/24/32-bit stereo |
| 32.0 | 44.1 | 48.0 | 64.0 | 88.2 | 96.0 | 176.4 | 192.0 | 352.8 | 384.0 | kHz |
| ok | down | down | down | down | down | down | down | down | down | 32.0 | |
+------+------+------+------+------+------+-------+-------+-------+-------+-------+ |
| up | ok | down | down | down | down | down | down | down | down | 44.1 | H |
+------+------+------+------+------+------+-------+-------+-------+-------+-------+ |
| up | up | ok | down | down | down | down | down | down | down | 48.0 | A |
+------+------+------+------+------+------+-------+-------+-------+-------+-------+ |
| up | up | up | ok | down | down | down | down | down | down | 64.0 | R |
+------+------+------+------+------+------+-------+-------+-------+-------+-------+ |
| up | up | up | up | ok | down | down | down | down | down | 88.2 | D |
+------+------+------+------+------+------+-------+-------+-------+-------+-------+ |
| up | up | up | up | up | ok | down | down | down | down | 96.0 | W |
+------+------+------+------+------+------+-------+-------+-------+-------+-------+ |
| up | up | up | up | up | up | ok | down | down | down | 176.4 | A |
+------+------+------+------+------+------+-------+-------+-------+-------+-------+ |
| up | up | up | up | up | up | up | ok | down | down | 192.0 | R |
+------+------+------+------+------+------+-------+-------+-------+-------+-------+ |
| up | up | up | up | up | up | up | up | ok | down | 352.8 | E |
+------+------+------+------+------+------+-------+-------+-------+-------+-------+ |
| up | up | up | up | up | up | up | up | up | ok | 384.0 | |
a) 16-bit to 24/32-bit and 24-bit to 32-bit is done by zero extension.
b) 32-bit to 24/16-bit and 24-bit to 16-bit is done by truncation.
c) mono is converted to stereo by sample duplication.
d) downsampling is done by throwing away samples.
e) upsampling is done by duplicating samples.

Playback of DoP (DSD over PCM) is possible when your hardware supports it.
CAUTION: Inherent to DSD this requires bit perfect playback and muting and
not using maximum volume will result into harmfull noise/static.

Playback of raw DSD stereo (DSD32, DSD64, DSD128, DSD256, DSD512) is only
possible through the DART interface and when your hardware supports it.
CAUTION: Inherent to DSD this requires bit perfect playback and muting and
not using maximum volume will result into harmfull noise/static.

1) fix error in subtype protocol table: incorrectly specified sample frequency of 352000 Hz, needs to be 352800 Hz. This is already
correct in USBAUD2.

1) fixing an error when virtual (in memory) Track 0 of a "large floppy" media is accessed:
the driver only ever reads/writes 1 sector in this case,
and therefore should only report back handling 1 sector (no matter how many were requested)
2) minor changes in locking segments. No functional impact.

1) fix support for media/system keys on a USB keyboard. Changes to additional drivers (AMOUSE.SYS, IBMKBD.SYS, KBDBASE.SYS)
might be necessary to see and use these additional keys in applications. However, you can use XWorkplace to add scancodes
for these additional keys via the "function keys" page of the Keyboard object and use these additional keys as keyboard shortcuts
to open objects (as described in the XWorkplace help)
2) fix keyboard repeat (hopefully, please report if it still does not work ...).
3) fix handling of toggle flag
4) update/add tracing (major code:228 = 0xE4).

1) analogous to USBKBD 3), fix handling of toggle flag
2) update/add tracing (major code:228 = 0xE4).

1) minor changes in locking segments. No functional impact.
2) update/add tracing (major code:228 = 0xE4).

1) isochronous data transfer: fixed a bug in "AccIsoBuffer" when arming the context hook to start isochronous processing.
The bug lead to overwriting the device driver's header which in turn would break the device driver chain.

1) properly close notification mutex on DLL termination

changes in 10.224:
1) make USBD.SYS compatible with OS/4 kernel (to properly display HUB info in OS/2 Hardware Manager), USBD.SYS will still
properly load on the standard OS/2 kernel
2) fixes so that USB will work from a booted up commandline
3) back out Transaction Translater (TT) reset introduced in 10.223. Looks like some hubs don't like this command if issued
directly after hub ports power on (thanks Barry Landy)
4) change all delay timing in the root hub processing in the HC drivers ((U|O|E)HCD.SYS) from using blocking to using delay timers.
This should reduce device attach problems on bootup. The complete solution would also involve doing the same for USBD.SYS
but that has not been done due to lack of time.

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
3) revert change 2) of version 10.221

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.220:
USBUHCD,USBOHCD,USBEHCD: back out changes done in 10.219

1) for CD-ROMs, for devices without media and on failed attach, free the virtualization sectors
reserved already on device attach
2) minor fix to clear direction flag in "GetCmdBlkValue"

1) add support for 24-bit devices: the driver will now also automatically convert from
8-bit/16-bit mono/stereo to 24-bit stereo if necessary. It will also upsample the source
sample rate to the required device (target) sample rate (thanks Wim Brul)
2) fix the search algorithm to find the correct feature unit descriptor for control of
3) fix computation of stream play times, in particular if one stream is started and then
interrupted by starting another stream

1) fix a trap when a WAV file contains bogus header values for usBlockAlign and/or usAvgBytesPerSecond (thanks Wim Brul)
2) fix errors in MMX code on converting/upsampling stereo input (mono input was converting/upsampling ok already)

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)