USB drivers for OS/2

Version: 
12.15
Release date: 
Saturday, 8 February, 2003
Price: 
$49.00

Categories:

License:

Interface:

USB basic driver stack including UHCI, OHCI, EHCI (USB 2.0) support, always required and to be installed first!

All this drivers are the result of Lars Erdmann's efforts and now support also isochronous transfers!

Basic USB Device Driver Stack for OS/2 Warp Programmer’s Reference, Version 1.1 reprinted Courtesy of International Business Machines Corporation on 08/12/2013. Thanks to International Business Machines and Martin Iturbide for mediating!

This software is distributed as compressed package. You have to download and manually install it; if prerequisites are required, you will have to manually install them too.

Manual installation

Available both as ZIP and WarpIN package:

  • download the ZIP package to temporary directory and unpack it to destination folder;
  • the WarpIN package is self-installing.

OS/2 Warp4 >= fixpak13 or equivalent is required to use these drivers. See below for download link(s).

Following ones are the download links for manual installation:

USB drivers for OS/2 v. 12.15 (1/3/2024, Arca Noae LLC) Readme/What's new
USB drivers update for ArcaOS and OS/2 In this release =============== This release is intended to update an existing installation. The installer does not install UHCI, OHCI, or EHCI host controller drivers, but it can install XHCI and the class drivers. This release contains the following files: The Host Controller drivers and USB driver: - USBXHCD.SYS (USB 3.x XHCI hardware driver) - USBEHCD.SYS (USB 2.0 EHCI hardware driver) - USBOHCD.SYS (USB 1.x OHCI hardware driver) - USBUHCD.SYS (USB 1.x UHCI hardware driver) - USBD.SYS (USB driver) The Human Interface class drivers - USBHID.SYS (Human Interface driver) - USBKBD.SYS (USB Keyboard driver) - USBMOUSE.SYS (USB Mouse driver) Some other class drivers: - USBMSD.ADD (USB Mass Storage Device driver) - USBCOM.SYS (USB COM port and modem driver) - USBSER.SYS (USB serial converter driver) - USBPRT.SYS (USB printer driver) - USBAUDIO.SYS (USB Class 1 Audio driver) - USBMOS.OS2 (Moschip USB to Ethernet driver) - USBASIX.OS2 (ASIX based USB to Ethernet driver) Other files: - USBRESMG.SYS (USBCALLS driver) - USBCALLS.DLL (USBCALLS DLL) - USBCALLS development sample code WARNING: Distributions labeled as "test" and drivers marked as "Test Build" may expire and stop working in 30 days. Copyrights and Licensing ======================== Copyright (c) 2011-2024 David Azarewicz <david@88watts.net> All rights reserved. Copyright (C) 1992, 2000-2001 IBM Corporation. All rights reserved. Portions of the code may also contain modifications from the contributors to this code such as Lars Erdmann, Wim Brul, and others, to whom we are very grateful for their work. Binary programs and documentation for the USB drivers are licensed to and distributed by Arca Noae, LLC. Important! By downloading or using this software, you acknowledge that you have read and consent to the license agreement contained in the separate License.txt file, that you understand it, and that you agree to be bound by its terms. Installation ============ The distribution is a self executing WarpIn package. Simply run it. This release is intended to update an existing installation only. Except for XHCI, the installer will not check for which host controllers you have in your system and it will not change the host controller drivers in your config.sys. If you are running ArcaOS, the installer will check for XHCI controllers and will modify your config.sys accordingly. The installer cannot install the XHCI driver on non-ArcaOS systems so you will not see the XHCI driver in the package list on those systems. The installer will only update the USBAUDIO driver if a version 11.x or 12.x driver is already installed. The USBAUDIO package will not be available if you have a version 10.x driver installed. The installer will not overwrite an existing version 10.x driver. On the Packages page, make sure you select and/or deselect the drivers you want and/or don't want to update. Many drivers are a matched set and cannot be updated individually. For this reason matched drivers are grouped into packages and cannot be selected individually. USBRESMG.SYS and USBCALLS.DLL are a matched set and must be the same version. There are many different old versions of USBRESMG.SYS and USBCALLS.DLL distributed with various other packages. If you are having problems with the USBCALLS interface, make sure that you are not using mismatched versions. Beware of other versions of USBCALLS.DLL in your LIBPATH or current directory. Starting with version 11.01, the usbcalls library was reorganized to try to merge the functionality from all the different versions and create a universal interface. A few versions were incompatible and those incompatible interfaces were discarded in favor of the more capable, more popular modern ones. If your application is very old or was linked with an incompatible library, you will need to relink your application with the new library. The version 12.x drivers require USBD.SYS to load before the HC drivers in CONFIG.SYS. This is different than the old 11.x drivers. The Warpin installer changes the CONFIG.SYS if necessary. Getting Support and Reporting Problems ====================================== For more information about the USB drivers please visit: https://www.arcanoae.com and click on SUPPORT. Or go directly to the USB support wiki at: https://www.arcanoae.com/wiki/usb/ Support is available from Arca Noae for Arca Noae supplied software. If you are using or have problems with third party software, please contact the supplier of that software for support. Requirements, Limitations, and Known Problems ============================================= If a device is plugged into a root hub and powers up in an inoperative state, or if the BIOS puts the device into an inoperative state, the device will not work until it is repowered (ie. plugged in after bootup). This applies to any type of device, but especially hubs and KVM switches when a non-compliant device is plugged into them. This is a hardware limitation, not a driver defect. This problem exists on all other platforms as well. Removing a USB MSD without properly ejecting it, or waiting for all I/O to finish can cause traps and/or data loss. This is *not* a USB issue. The OS/2 DASD/IFS architecture is not designed to handle aborted disk transfers well. DO NOT disconnect or remove a USB MSD while a transaction is active, or when an error recovery is in progress. Always wait until the I/O is finished. Failure to wait can result in lost data and/or traps. Be aware that if a cache is used, the disk I/O may be delayed. An eject or reboot should be safe provided that you wait until the I/O finishes. USBAUDIO -------- The OS/2 USB audio driver in this release is developed to support any USB audio device that follows USB Audio device class 1 specifications. This driver will not work on class 2 audio devices. To use this driver you must have the following prerequisites: 1. A USB audio device that conforms to the class 1 specification. 2. Basic USB support must be installed (HC driver, USBD). 3. Multimedia services must be installed. 4. The USBAUDIO driver must have already been installed in order to be updated by this release. USBXHCD ------- You may experience reduced performance and/or additional problems on systems that are not fully up-to-date or are not in the standard Modern Hardware configuration. Specifically, make sure you are are using the latest Arca Noae SMP kernel, the latest ACPI PSD, and that you are *not* using the /VW switch for the PSD. Some old vintage devices may not respond correctly to standard USB protocols. The USB3 spec and consequently XHCI hardware enforces strict compliance with the USB standards. If you have one of these non-compliant devices, please let us know and we will investigate if a workaround is possible. Some older USB class drivers may not be entirely USB3 compliant, or may have defects that were tolerated with the old USB2 stack. These drivers will need to be updated before they will work with the Arca Noae USB3 stack. The USB stack will block access to XHCI connected devices for drivers which are known to be XHCI unsafe. See the wiki https://www.arcanoae.com/wiki/usb/information-for-usb-class-driver-developers/ for more information. Change Log ========== v.12.15 01-Mar-2024 - David Azarewicz EHCI,OHCI,UHCI,XHCI: Fixed handling of physical addresses. KBD: Initialize keyboard earlier. Added new USBSER.SYS driver USBCALLS: Fixed an isochronous transfer issue. ASIX: Fixed address read on 772, 772A, and 178 devices. XHCI: Enhanced endpoint configuration. Installer changed to preserve certain config.sys driver parameters. Documentation updates v.12.14 16-Aug-2022 - David Azarewicz COM: Fixed handling of multiple devices. COM: Added support for PL2303HXN (067B:23x3) devices. AUDIO: Some enhancements for better audio. XHCI: Some improvements with Isochronous in. USBD: Fix simultaneous device initialization. ASIX: Added new driver v.12.13 10-Jun-2022 - David Azarewicz KBD: Prevent traps for keyboards with missing reports. KBD: Enhanced parsing for huge report descriptors. KBD: Fix device setup. MOUSE: Fix device setup. USBD: Fix notify class drivers in some hub configurations. USBD: Relax device descriptor validation. USBD: Correct the way device configuration works. USBCALLS: Fixed returned error status. USBCALLS: Fixed handling of set configuration requests. XHCI: Fixed verification of Isoc buffer pointers XHCI: Fix some CPU cache issues on Intel processors. v.12.12 02-Apr-2022 - David Azarewicz COM: Fixed USB3 issues. Added support for some newer PL2303 devices. USBD: Added protection from some XHCI unsafe drivers. USBCALLS: Added protection from some misbehaved applications. XHCI: Added isochronous support. May not be fully tested due to the lack of compatible drivers and applications. v.12.11 05-Jan-2022 - David Azarewicz USBD: Added device descriptor verification to reject bad devices. OHCI: Fixed typo in RM strings. MSD: Added missing endpoint stall recovery. HID: Fixed descriptor parser to handle unusual global sequences. XHCI: Added workaround for VirtualBox port change defect. XHCI: Don't accept transfers for not-ready endpoints. v.12.10 16-Nov-2021 - David Azarewicz PRT: Fixed mutex issue that can cause a driver hang in some error coditions. MSD: Fixed problem attaching devices with physically removable media. USBD: Fixed port status data/timing problem that caused bad port status reads. XHCI: Changed how initial device endpoints are pre-configured. v.12.09 11-Jun-2021 - David Azarewicz USBCALLS: Enhanced buffer management to accomodate some peculiarities with certain non-compliant applications. MSD: Added preliminary GPT support. Standardized some RM strings. v.12.08 30-Mar-2021 - David Azarewicz USBD: Fixed problem configuring a device when multiple class drivers claim it. MSD: Fixed some buffer problems. MSD: Cleaned up and fixed eject logic. MSD: Fixed multi-LUN device attach. MSD: Added support for disks larger than 2TB. XHCI: Reworked transfer ring structure and management. v.12.07 28-Jul-2020 - David Azarewicz All drivers now check interface version rather than driver version for compatiblity. All drivers have improved resource manager strings. EHCI: Cleaned up Isochronous buffer management. Scheduled processing of Isochronous buffers earlier. KBD: Corrected scan codes for F13-F24 USBD: Implemented CheckService interlock. USBD: Fixed enumeration when a default address conflict. XHCI: By default route USB2 ports to EHCI controllers on systems with switchable ports. v.12.06 28-May-2020 - David Azarewicz EHCI: Fixed IOCtl pointer verification error. v.12.05 09-Apr-2020 - David Azarewicz DOCS: Changed where documentation is installed. USBD: Fixed device attach on large hubs. USBD: Fixed hub descriptor read on SS hubs. MSD: Enhanced error recovery algorithm. MOS: Added setting threshold for rev C chips. v.12.04 01-Mar-2020 - David Azarewicz Added new USBMSD driver with many fixes including: SMP fixes, stability fixes, bad pointer/random error fixes, buffer management fixes. USBD: Fixed max packet size problems. USBD: Added support for SS hubs. USBCALLS: Fixed a trap on certain IOCtl calls. MSD: Added SS device support. MOS: Added to distribution. v.12.03 01-Sep-2019 - David Azarewicz USBD: Significant changes to accomodate XHCI connected hub support. OHCD: Fixed a problem with isochronous transfers. EHCD: Fixed a problem with isochronous transfers. XHCD: Added error/stall clearing. v.12.02 31-Mar-2019 - David Azarewicz USBCALLS driver (USBRESMG.SYS) is now 32 bit. Significant changes throughout all drivers to accomodate USB3. This includes massive changes to USBD.SYS and minor changes to all the other HC drivers. Fixed a problem with abnormal termination in the USBCALLS driver. v.12.01 05-Jan-2018 - David Azarewicz All HC, USBD, and most class drivers are now 32 bit with a 32 bit non-thunked inter-driver interface. v.11.17 08-Jun-2017 - David Azarewicz Added support for keyboard auto-repeat. Fixed bandwidth allocation for certain types of 1.x devices when plugged into a 2.0 hub. v.11.16 08-Jun-2017 - David Azarewicz Misc cosmetic changes for debugging. v.11.15 30-Mar-2017 - David Azarewicz USBD: Fixed a MaxPacketSize error when initializing high speed devices. v.11.14 27-Nov-2015 - David Azarewicz Fixed a problem booting from USB devices. v.11.13 03-Jul-2015 - David Azarewicz Fixed another buffer management problem in USBCALLS interface. Added version checking to prevent using USBCALLS.DLL with wrong usbcalls driver. USBCALLS: Incorporated some changes from Wim. USBD,HC: Incorporated some hub changes from Lars. v.11.12 13-May-2015 - David Azarewicz Changed the way devices are initialized to accomodate some so-called buggy devices. Fixed buffer management problems in USBCALLS interface. v.11.11 01-Apr-2015 - David Azarewicz KBD: Fixed error handling MOUSE: Fixed error handling EHCD,OHCD,UHCD: Fixed a problem with extremely slow devices HID,AUDIO,COM,PRT,USBD fixed a problem with concurrent device initialization. OHCI: Fixed a problem with isochronous transfers. Misc other minor changes. v.11.10 07-Mar-2015 - David Azarewicz USBCALLS: Reworked the way the DLL is built. Added query version function. USBCALLS: Fixed a transfer size problem which caused transfers to fail. USBCALLS: Added query version function. USBD: Changed the way devices are initialized. EHCD,OHCD,UHCD: Added transfer timeout and conflict logic. EHCD,OHCD,UHCD: Fixed a problem working on Warp4 systems. OHCD: Fixed a problem that caused transfers to be lost. OHCD: Fixed an error detection problem. OHCD: Fixed a problem with default address transfers. COM: Fixed a trap that could occur when certain devices are connected. Fixed an issue that could cause random traps in class drivers. Many other fixes and improvements so numerous I didn't keep track. Restructured the Warpin package to work on both OS/2 and eCS systems. v.11.09 10-Jan-2015 - David Azarewicz USBCALLS: Fixed a compatibility problem USBCALLS: merged a fix from Wim. EHCI: Fixed a queue management problem EHCI: Reworked BIOS/OS ownership change KBD: Fixed a problem with shared devices Added version detection to prevent problems with using incompatible versions. Reworked and enhanced tracing capability. v.11.08 12-Aug-2014 - David Azarewicz USBD: Fixed a problem with some devices not attaching PRT: Fixed some SMP issues USBCALLS: updates from Wim. v.11.07 19-Mar-2014 - David Azarewicz Fixed a failure on some UHCI controllers Create resource manager entries for mouse and keyboard devices. Serialize the initialization of HID devices. Temporarily added /S switch to USBMOUSE.SYS and USBKBD.SYS to allow reading product ID strings. Added USBPRT.SYS to the distribution. Added USBAUDIO.SYS to the distribution. v.11.06 11-Dec-2013 - David Azarewicz Updates to COM, USBCALLS, KBD, HID, MOUSE Some fixes for keyboard and mouse on one device. Created WPI package for installation. v.11.05 12-Sep-2013 - David Azarewicz Implemented ISO changes from Lars' branch. Added some class drivers to the distribution. Fixed PL2303 support in USBCOM driver. v.11.04 14-Aug-2013 - David Azarewicz Implemented some trace and RemoveTDList changes from Lars Implemented data toggle changes from Lars v.11.03 23-Jul-2013 - David Azarewicz Changes to device enumeration based on changes from Lars branch Fixed another trap during device de-enumeration. v.11.02 (10.193) 14-Jul-2013 - David Azarewicz Some code cleanup Merge in some changes from Lars. Fixed some traps when doing device enumeration. Fixed a device enumeration problem. Fixed setting interrupt handler. Fixed a problem that caused some quirky systems to not work. Improved tracing information. v.11.01 (10.192) 14-May-2013 - David Azarewicz Cleanup and modernize build environment. Updated to modern build level string. Merged in some changes from Lars. Added ACPI suspend/resume support. Fixed lock/unlock routines which were causing hangs. Fixed an excessive CPU load problem. Fixed a problem which caused interference with some applications when USB is active.
 ecsoft2.org/os2-ecs-drivers-and-software-package
USB drivers for OS/2 v. 10.249 (13/5/2023, Lars Edmann) Readme/What's new
****************************************************************** *** WARNING: This software is provived without any warranties. *** *** It has not been proven to be free of defects. *** *** Any use is at the user's own risk! *** ****************************************************************** "CMD", "VIA", "INTEL", "ETEQ", "OPTI", "SIS", "NEC", "ALI", "ACER", "AMD", "IBM", "USB", "OS/2", "EHCI", "OHCI", "UHCI", "Windows", "Microsoft", "APPLE", "MAC", "Apple IIe" are trade marks of their respective owners. Updates to the USB drivers NOTE: usbcalls.dll (and usbcalls.sys) is now installed to directory \OS2\DLL (in line with the ArcaNoae package). Please remove any usbcalls.dll/usbcalls.sym from the \ECS\DLL directory ! NOTE: usbcalls.dll might be in use by the system in which case it cannot be overwritten. You need to unlock the DLL from memory: from a command line, switch to directory \os2\dll and issue "unlock usbcalls.dll" before you attempt to overwrite the file. The "unlock" utility is part of every eCS installation and can be found in the \ecs\bin directory (or can be found on Hobbes). Alternatively, if you have EMX installed you can also issue: "emxupd -d usbcalls.dll" which will delete the DLL. You can then unzip the package which will recreate the DLL. usbwav.dll might be in use by the system in which case it cannot be overwritten. Follow the instructions given for usbcalls.dll. NOTE: rerunning an audio installation can be tricky at times. What you need to do is to FIRST uninstall the existing audio drivers by unpacking USBAUDIO.ZIP / USBAUD2.ZIP, running "minstall /*" and selecting 0 devices. After a reboot, you rerun the installation again by running "minstall /*" and this time, by selecting 1 device. If after an additional reboot you still hear no sound, open the "Multimedia Setup" object and select the USB Audio and Ampmix drivers as default devices by unselecting and the reselecting that setting. You should now hear sound without the need of an additional reboot. You are advised to do a "unlock \mmos2\dll\*" in order to unlock all DLLs in the MMOS2\DLL directory. That will prevent some problems with DLL that are in use but need to be updated by the multimedia installation. WARNINGS: 1) use of HPFS386.IFS: if you use HPFS386.IFS, avoid ejecting a stick from the commandline while the current drive letter/current directory is pointing to the stick you attempt to eject. Change to some other drive first before you do the eject. Otherwise, you will experience a trap in HPFS386.IFS. 2) if you want to wipe a large floppy stick with DFSee in order to create partitions under OS/2, it's a good idea to eject the stick after the wipe and to run a "rediscover prm" (lvm.exe /rediscoverprm) before you use lvm/minilvm to create partitions and format those. 3) NEVER EVER attempt to load the data segments of USBAUDIF.DLL into high memory. It contains data that needs to be accessible via 16-bit far pointers. Thunking from 32-bit to 16-bit pointers is only possible if that data is located in the low (compatibility) memory region. ----------------------------------------------------------------------------------------------------------------------- changes in 10.249: USBD: 1) revert a change done in 10.244: prevent a call for clearing a stalled endpoint if that clear would go against endpoint zero (default endpoint). The USB spec clearly states that a stalled endpoint zero will clear itself on the next occasion it is being used (and using endpoint zero in order to clear a stalled endpoint zero could also potentially lead to an infinite loop ...). An attempt to do otherwise leaves some devices (Logitech Laser Mouse) completely non-operational changes in 10.248: USBUHCD,USBOHCD,USBEHCD: 1) reinstate boot from USB MSD (USB stick tested, USB floppy and CD-ROM untested) USBD: 1) reinstate boot from USB MSD (USB stick tested, USB floppy and CD-ROM untested) USBMSD: 1) reinstate boot from USB MSD (USB stick tested, USB floppy and CD-ROM untested) 2) make /MAX_FLOPPY switch work again (USB floppy drives cannot be reliably queried for device geometry) Note: it is now mandatory that USBD.SYS precedes all other USB related BASEDEV drivers in config.sys (USB(U|O|E)HCD.SYS,USBMSD.ADD,USBHID.SYS) (same requirement as for the AN provided USB drivers) Note: booting from USB MSD requires the /I13 switch to be set for USBD.SYS in the config.sys on the boot device (as always) USBKBD: 1) implement key repetition in SW, there seemingly exist USB keyboards (gaming keyboards ?) that will accept a SET_IDLE request (the USB equivalent of programming typematic rate/delay) but not do anything. Now the key repetition is based on a timer/context hook based solution changes in 10.247: USBWAV: 1) new IPROCs: adding translating read+seek support for AIFF (uncompressed) and AIFC (uncompressed, alaw, mulaw) files (format originally invented for MAC and APPLE IIe, comparable to WAV files) replaces the broken AIFFPROC that is delivered with OS/2 the translation to the standard OS/2 WAV format makes it possible to play AIFF and AIFC files by double clicking an AIFF/AIFC sound file changes in 10.246: USBMSB: 1) revert change from 10.245 USBUHCD,USBOHCD,USBEHCD: 1) revert change from 10.245 USBD: 1) revert change in sequence of HC registration and start of device enumeration USBAUDIO,USBAUD2: 1) introduce 4 new waveform subtypes: 8kHz/Mono/24-bit, 8kHz/Stereo/24-bit, 8kHz/Mono/23-bit, 8kHz/Stereo/23-bit changes in 10.245: USBD: 1) in routines "DeviceFailed" and "SetAddrCompleted", fixed the logic to determine if the detected USB entity is a root hub, a hub or a (end user) device USBMSD: 1) changed to register with USBD.SYS already on BASEDEVINIT USBUHCD,USBOHCD,USBEHCD: 1) changed to register with USBD.SYS already on BASEDEVINIT USBAUDIO (please note that you will need AN USB stack >= 12.14 in order to use USB3 [XHCI] ports): 1) fixed logic to find the proper feature unit (for volume,bass,treble setting) 2) no longer sets alternate setting to 0 3) enhanced tracing 4) changing volume setting to logarithmic scaling for a more natural volume setting 5) supporting balance (left/right) for those USB audio devices that support volume control for individual channels 6) supporting gain setting (honour feature unit for microphone input) USBAUD2 (please note that you will need AN USB stack >= 12.14 in order to use USB3 [XHCI] ports): 1) fixed logic to find the proper feature unit (for volume,bass,treble setting) 2) no longer sets alternate setting to 0 3) enhanced tracing 4) fixed setting sampling frequency (interface number was not correctly set, device with audio control bInterfaceNumber > 0 would fail) 5) fixed handling of feedback endpoint (trying to read back > 1 feedback value per transfer is not allowed, this seemed to work for many devices but apparently not for all) 6) changing volume setting to logarithmic scaling for a more natural volume setting 7) supporting balance (left/right) for those USB audio devices that support volume control for individual channels 8) supporting gain setting (honour feature unit for microphone input) USBAUDIF: 1) supporting gain setting (to support "input" level control of WEPM.EXE, the standard OS/2 audio editor) changes in 10.244: USBUHCD,USBOHCD,USBEHCD: 1) again, fix all HD drivers to chain in "isoInfo" structure into global linked list BEFORE adding the iso TDs to the schedule, see 10.242 changes in 10.243: USBUHCD,USBOHCD,USBEHCD: 1) fix regression error introduced in 10.242 (OHCI and UHCI rely on former sequence) but keep Mutex protection for properly setting TD parameters and chaining in "isoInfo" structure USBUHCD,USBOHCD: 2) add some iso bandwidth tracing 3) slightly update packet transmission time computation (PacketTTime) changes in 10.242: USBUHCD,USBOHCD,USBEHCD: 1) in "OpenIsoReq"", chain in "isoInfo" structure into global linked list BEFORE adding the iso TDs to the schedule in order to avoid traps when the USB HW suddendy starts operation USBRESMG: 1) work around a VirtualBox specific problem: when USB 1.x emulation is used, VirtualBox will erroneously present the controller to be USB 2.x if the real HW is USB 2.x. That in turn will lead to "pIoRB" to become NULL after a call to "ClearStalled" in routine "DataRW". Now, pIoRB->pDevice pointer is saved into a local variable and subsequently "pDevice" pointer used after call to "ClearStalled" changes in 10.241: USBUHCD,USBOHCD,USBEHCD: 1) fix "cancel" handling for ischronous devices: unfortunately, iso transfers can be cancelled by 2 different means: calling USB_IDC_FUNCTION_CANCEL idc call or by USB_IDC_FUNCTION_ACCIO/isoFlags=USRB_ISOFLAGS_CANCEL. Change cancel processing to gracefully handle the condition that cancelling is done by either or both different ways. USBRESMG: 1) protect "CancelRequests" from being called with an NULL pDevice pointer USBCOM: 1) fix handling of handling stalled pipe 2) update tracing changes in 10.240: USBUHCD,USBOHCD,USBEHCD: 1) simplify and speed up routine "CreateTDList": this routine is called hundreds and hundreds of times, it is therefore time critical USBOHCD: 1) minimize the number of TDs used for a transfer, this will prevent TD depletion when larger transfers/ a lot of transfers are scheduled (example: I have a builtin webcam sending MPEG packets of size 3060 bytes via a bulk endpoint of wMaxPacketSize = 64 bytes: it now needs one TD to transfer this data, before, it needed 3060 / 64 = 48 TDs to transfer this data) USBRESMG: 1) change error return code from "ProcessIoRB" routine to cover the case a transfer is not scheduled at all and therefore no transmission result is available 2) add a check to "ClearStalled" (the data pipe of a device is to be cleared) for valid pDeviceInfo pointer: avoids a trap if a device is detached while this routine is being called, there might be more fixes like these in the future changes in 10.239: USBAUDIO,USBAUD2: 1) support rate/num channels/bps conversion for recording to the same extent as for playback. That will finally allow old audio applications like WEPM.EXE to generate a proper WAV file in case the USB HW does not support the outlived sample rates that OS/2 applications typically provide (thanks Wim Brul) USBAUDIO: 1) fix some trace codes (they incorrectly referred to USBAUD2.SYS) (thanks Wim Brul) USBUHCD,USBOHD,USBEHCD: 1) back out changes done in 10.238 regarding mapping of virtual addresses for isochronous transfers. Apps pass virtual addresses that are only valid in process context. These still need to be mapped to GDT addresses. USBRESMG: 1) remove double buffering in case (long term) locking of user buffers fail. The double buffering code was broken anyways and it turns out that locking of user buffers always succeeds. 2) add a safety check for device references in case the device has been removed or the IoRB reused for another device in order to avoid a trap if that happens. 3) add safety checks for input parameters for "SendIsoURB" 4) entirely remove clearing a stalled default pipe, a default pipe will automatically clear itself on the next control transfer and the attempt to clear a default pipe can itself lead to a situation where the clear will never finish changes in 10.238: USBAUDIO,USBAUD2: 1) fix drivers so that "record-only" devices can now be used with all multimedia applications that allow recording (thanks Martin Iturbide for extensive testing) 2) remove handover from one USB audio device, if active USB audio device is removed, we now immediately stop the streaming (thanks Martin Iturbide for extensive testing) (thanks Wim Brul for fixing a regression I accidentally introduced when porting USBAUDIO changes to USBAUD2) 3) fixed query of feature unit for volume control, in the past, it did not work properly for every device 4) fix various quirks when changing from record to playback stream if recording and playback are performed by different USB audio devices (for example, using WEPM.EXE for recording and subsequent playback) 5) on device detach, fix handover of active playback / record device index to another device (if another USB audio device is plugged in) USBAUDIF.DLL 1) fix this VSD (vendor specific driver) so that "record-only" devices can now be used with all multimedia applications that allow recording, fix numerous oddities and quirks and general cleanup of this component USBUHCD,USBOHCD,USBEHCD: 1) management of memory buffers used during isochronous transfers: remove mapping of physical addresses to GDT virtual addresses where that is not necessary (where virtual addresses are passed in by client drivers instead of physical addresses) USBOHCD: 1) "isoInfo" structure was prematurely freed from ctx hook handler, which lead to failure on "CancelIsoReq" and "CloseIsoReq". Now, only "CloseIsoReq" will free the structure, analogous to what is done in USBEHCD and USBUHCD USBWAV: 1) updated "listprocs.exe" tool to "guess" sample rate/number of channels/bits per sample for all data subtypes of data type DATATYPE_WAVEFORM (PCM) so that the user can associate a data subtype with these 3 vital stream parameters changes in 10.237: USBAUD2: 1) see 10.235 2), for usb audio 2 it seems to be necessary to do the opposite, say, first set sampling freq. and then set alternate interface (thanks Wim Brul) 2) add a hack to enable DSD on the Amanero Combo384 USB audio 2.0 device: this device has a non-standard, proprietary way to use the DSD format (aka: it follows no standard) (thanks Wim Brul) changes in 10.236: KEE16LIB: updated lib to make it Watcom compatible changes in 10.235: USBAUDIO: 1) add support for control interface status interrupt pipe including proper handling of interrupt pipe stall. On a notification, the driver will query the info as mandated by the spec but it will not do anything with the returned info. This is a precautionary measure for those devices that offer this optional pipe (maybe it is necessary to serve the pipe) 2) fix sequence of setting alternate interface and endpoint characteristics: for some devices it seems to be essential to FIRST set the alternate interface and THEN to set the endpoint characteristics (sampling freq.) in order to avoid a "hiss" sound or other sound distortion (thanks to Sean Casey for reporting the problem and having the patience to test the provided fixes) 3) fix "usCurrentFrame" to wrap around at 1000. This is necessary so that routine "GetCurrentFrame" size will always compute the proper frame size in case it varies over time (for a sampling freq of 44100 Hz, for example: whenever the sampling freq does not evenly divide by 1000) USBAUD2: 1) equivalent to USBAUDIO 1) 2) equivalent to USBAUDIO 2) Note: there is no USBAUD2 equivalent for USBAUDIO 3), audio 2.0 devices have a different mechanism to determine the necessary frame size changes in 10.234: USBAUDIO, USBAUD2: 1) USBAUDIO,USBAUD2: prevent these drivers from trapping if a sampling rate of 0 is passed to "Audio_IOCTL_Capability". This will happen if a MIDI file is selected and either USB driver is marked as the default ampmix device. changes in 10.233: USBPRT: 1) remove spinlock protection around calls to the semaphore devhelps. Because the semaphore devhelps reenable interrupts this can lead to a hang (spinlocks require interrupts to be disabled until they are released) USBMSD: 1) dito changes in 10.232: USBAUDIO,USBAUD2: fix volume/treble/bass control to prevent stuttering on using controls (thanks Wim Brul) PLEASE RERUN THE USBAUDIO (usbaudio.zip) and USBWAV INSTALLATION (usbwav.zip). Don't forget to reset the default audio device if necessary (use Multimedia Setup applet) changes in 10.231: USBCALLS: 1) place notification table in shared segment and fix the DLL init code to properly initialize shared mutex to protect this shared resource. Necessary to protect multiple applications making simultaneous use of USBCALLS changes in 10.230: USBRESMG: 1) for the SET_CONFIGURATION request, do not do anything but return indicating success. It is a really bad idea to change the configuration during runtime. It should only be set once on device enumeration (which USBD.SYS does). Note that there are very few devices (if any) that have multiple, different configurations. 2) fix toggle bit handling on clearing a stalled endpoint (for either a dedicated CLEAR_FEATURE request against a given endpoint to clear a stalled endpoint or after a data transfer that led to a stalled endpoint) 3) on stall of default pipe when a standard request has been issued, clear the default pipe by doing a standard request that we know is going to succeed (in our case, use GET_STATUS for first interface). That will clear the default pipe and is the ONLY WAY to clear a stalled default pipe (running a successful request). Need to do this so that a stalled standard request issued by USBRESMG.SYS will not interfere (hang) with operation of other class drivers accessing the same device (USBMSD.ADD etc.) USBCALLS: 1) fixes so that USB[Device|Interface|Endpoint]GetStatus will no longer hang the system if they address unknown interfaces or endpoints UHCI,OHCI,EHCI: 1) remove the restriction that the HC drivers can only queue one control transfer at a time. That should reduce device dropout in case multiple drivers (for example, USBRESMG.SYS and USBMSD.ADD) concurrently access the same device changes in 10.229: UHCI,OHCI,EHCI: 1) remove config.sys ordering dependency with USBD.SYS USBD: 1) remove config.sys ordering dependency with USB?HCD.SYS, make /I13 switch work for any possible config.sys ordering 2) adding some more tracing USBMSD: 1) remove config.sys ordering dependency with USBD.SYS, make USBMSD.ADD work for /I13 switch set for USBD.SYS or not 2) adding some more tracing *** Note ***: these combined changes should make this USB driver set compatible with the new config.sys ordering introduced by ArcaOS 5.0.4 where USBD.SYS precedes the USB?HCD.SYS drivers ! In fact, it is now completely irrelevant if USBD.SYS loads before the USB?HCD.SYS or after them,it will work either way. (thanks Dave Graser for reporting and testing the changes) USBAUDIO,USBAUD2 (thanks Wim Brul): 1) favor resampling with smallest integer ratios (in case requested sampling freq does not match available ones) EHCI (thanks Wim Brul): 1) for isochronous tranfer, arm context hook to add new iso buffers to schedule also from iso irq processing context hook in order to avoid data starvation 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 USBWAV: 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 PLEASE RERUN THE USBWAV INSTALLATION (usbwav.zip) changes in 10.227: USBD: 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) USBUHCD,USBOHCD,USBEHCD: 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) USBAUDIO,USBAUD2: 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. PLEASE RERUN THE USBAUDIO INSTALLATION (usbaudio.zip) changes in 10.226: USBAUDIO,USBAUD2: 1) added (playback) support for 16-bit mono/stereo at 12/15/24 kHz sampling rates. PLEASE RERUN THE USBAUDIO INSTALLATION (usbaudio.zip) USBMSD: 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 USBHID: 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 USBRESMG: 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) USBD: 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 UHCI,OHCI,EHCI: 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 OHCI: 1) additional fixes for endpoint cancel processing with regard to isochronous devices: fix a memory leak changes in 10.225: USBAUD2: 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. USBAUDIO: 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. USBMSD: 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. USBKBD: 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). USBMOUSE: 1) analogous to USBKBD 3), fix handling of toggle flag 2) update/add tracing (major code:228 = 0xE4). USBHID: 1) minor changes in locking segments. No functional impact. 2) update/add tracing (major code:228 = 0xE4). USBEHCD: 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. USBCALLS: 1) properly close notification mutex on DLL termination changes in 10.224: USBD: 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: EHCI: 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 freeze USBPRT: 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. USBD: 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: USBD: 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 USBWAV: 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 codecs. PLEASE RERUN THE USBWAV INSTALLATION EHCI: 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) USBAUDIO: 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. PLEASE RERUN THE USBAUDIO INSTALLATION. 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: USBD: 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 USBAUDIO: 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 USBMSD: 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" USBAUDIO: 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 volume/mute/treble/bass 3) fix computation of stream play times, in particular if one stream is started and then interrupted by starting another stream USBWAV: 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: USBCOM: 1) serialize all control transfers (only issue the next control transfer if the previous one has finished with a notification being sent to USBCOM) USBD: 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. USBUHCD,USBOHCD,USBEHCD: 1) completely remove the timeout processing for control transfers against the default address: this functionality is completely useless USBOHCD: 1) only reset HC, do not reset the complete USB bus (in line with what USBUHCD and USBEHCD do) USBAUDIO: 1) some changes to work around ICAT oddities on debugging USBWAV: 1) only cosmetic change, no functional change (remove unused function argument from internal function) USBKBD: 1) prevent devices from attaching that have a HID interface but that are not keyboards changes in 10.218: USBAUDIO: 1) fix stuttering sound when playing again after a rewind (thanks Win Brul) USBD: 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: USBD: 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. USBMOUSE,USBKBD: 1) properly set DS and also IDC entry point on a "ClearStalledPipe" call, is related to the fix in USBD USBAUDIO: 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) USBEHCD: 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) USBWAV: 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: target: 16-bit signed PCM, stereo, 44100 Hz source: 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) USBCOM: 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. USBETHR, USBHID, USBAUDIO, USBCOM, USBKBD, USBMOUSE, USBMSD, USBPRT, USBRESMGR: 1) changes so that all USB_IDC_FUNCTION_ACCIO, USB_IDC_FUNCTION_SETCONF, USB_IDC_FUNCTION_CLRSTALL commands 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: USBUHCD,USBOHCD,USBEHCD: 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 USBAUDIO: 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: USBMSD: 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: USBMSD: 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) USBOHCD,USBEHCD,USBD,USBCOM,USBAUDIO: 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: USBMSD: 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: USBMSD: 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: USBD: 1) increase power-on delay on hub attach USBPRT: 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) USBUHCD,USBOHCD,USBEHCD: 1) protect all write to PCI config space registers by disabling interrupts USBMSD: 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 commands 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: USBD: 1) add additional tracing for central transmission function (USBAcceptIO) USBUHCD: 1) back out change in 10.209 point 1) USBMSD: 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: USBD: 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) USBKBD: 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 USBMOUSE: 1) properly preset data toggle flag on initial arming and after pipe stall of interrupt data pipe USBHID: 1) change stalled pipe handling (for pipes that USBHID uses) to be in line with what USBD.SYS does USBPRT,USBCOM,USBETHR: 1) clean up and unify change stalled pipe handling USBAUDIO: 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 USBUHCD: 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: USBEHCD: 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 USBOHCD,USBUHCD: 1) change code to be analogue to that of USBEHCD USBD: 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: USBD: 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 USBEHCD,USBOHCD,USBUHCD: 1) changes to suspend/resume code USBMSD: 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 USBHID: 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) USBCALLS: 1) correct case of export names for REXX functions RXUSBIRQREAD,RXUSBIRQWRITE,RXUSBCTRLTRANSFER,RXUSBDATATRANSFER USBCOM: 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: USBMSD: 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 anyways 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: USBMSD: 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 USBMSD: 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 USBEHCD,USBOHCD,USBUHCD,USBD: 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 ...) USBETHR.OS2: 1) to the better or worse: added the USB ethernet driver (this driver is limited to Kawasaki LSI KL5KUSB101 chip) changes in 10.203: USBMOUSE.SYS, USBKBD.SYS: 1) fixed a problem with /V switch (even without /V, startup message would be shown on bootup) USBMSD: 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 USBEHCD.SYS: 1) increase timeouts for BIOS handover USBEHCD.SYS, USBOHCD.SYS: 1) for /FS switch specified, power off all ports before host controller reset changes in 10.202: USBD.SYS: 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: USBD.SYS: 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 USBMSD.ADD: 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 USBUHCD.SYS,USBOHCD.SYS,USBEHCD.SYS 1) fixed a trap for isochronous transfer buffer handling (properly serialize adding/removing buffers) changes in 10.200: USBD.SYS: 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) USBHID.SYS, USBD.SYS: 1) fixes to clearing a stalled pipe USBEHCD.SYS, USBOHCD.SYS, USBUHCD.SYS: 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 USBEHCD.SYS, USBOHCD.SYS 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 USBMSD.ADD: 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) USBAUDIO.SYS: 1) changes to make volume/bass/treble setting work 2) added initial tracing support (major trace code: 238) USBCALLS.DLL: 1) added missing exports for REXX functions "RxUsbDeviceClearFeature" "RxUsbInterfaceClearFeature" "RxUsbEndpintClearFeature" "RxUsbEndpointClearHalt" changes in 10.199: USBMSD.ADD: 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 USBD.SYS (,USBxHCD.SYS): 1) deal with external hubs sending more status change pipe data then they should (gleaned from the Linux implementation) USBPRT.SYS: 1) change the way stalled pipes are cleared (clear transmission error to get device operational again) USBCALLS.DLL (,USBRESMG.SYS): 1) latest updates to the interface functions (C and REXX interface) ----------------------------------------------------------------------------------------------------------------------- Parameters supported by these drivers: USBUHCD.SYS,USBOHCD.SYS,USBEHCD.SYS,USBD.SYS: /V: give some information on bootup (also supported by 10.162 drivers) USBUHCD.SYS,USBOHCD.SYS,USBEHCD.SYS: /FS: on shutdown, put the HC into reset instead of just letting it execute this is supposed to solve some problems on next bootup (also supported by 10.162 drivers) USBEHCD.SYS /S:x (where x=1,2,4,8,16,32,64), according to Robert Lalla, lower values are supposed to improve throughput. Technically, it will set "Interrupt Threshold Control", see EHCI spec (x=1: raise interrupt every 1ms frame, x=64: raise interrupt every 64th 1ms frame), this parameter might need some experimentation for optimal throughput/latency USBHID.SYS /V: give some information on bootup (also supported by 10.162 drivers) USBPRT.SYS /V: give some information on bootup (also supported by 10.162 drivers) /L: do all dynamic memory allocation in lower physical 16 MB (normally not necessary) /LPT : set driver name as printer name (by default name is $USBPRT) USBCOM.SYS /V: give some information on bootup (also supported by 10.162 drivers) /L: do all dynamic memory allocation in lower physical 16 MB (normally not necessary) USBAUDIO.SYS,USBAUD2.SYS: /V: give some information on bootup (also supported by 10.162 drivers) /L: do all dynamic memory allocation in lower physical 16 MB (normally not necessary) USBMSD.ADD /V: give some information on bootup (also supported by 10.162 drivers) /REMOVABLES:x : specify that you intend to use up to x USB removable devices (memory sticks) /FLOPPIES:x : specify that you intend to use up to x USB floppy drives /CDS:x : specify that you intend to use up to x USB CD-ROMs /OPTICALS:x : specify that you intend to use up to x USB optical drives /MAX_FLOPPY : specify that you intend to use LS-120/LS-240 USB drives /A_USAGE:n : n=0->do not attempt to assign drive letter A: to first floppy : n=1->assign drive letter A: to first floppy in any case : n=2->assign drive letter A: to first floppy but only if no other driver (IBM1FLPY.ADD for example) is using drive letter A: /BUFFER:x : specify max transfer buffer size in bytes (min:8192 bytes, max:20480 bytes) it is recommended to not specify this switch unless using a USB 1.x only system or using USB 1.x MSD devices (some USB card readers, for example) /FIXED_DISKS:, /REMOVABLE_AS_FLOPPY, /CHS, /MS10_OFF switches removed ! They are no longer needed with the contained driver. Note: use of USBCDROM.ADD is NOT necessary to use a CD-ROM ! You can achieve the same functionality by specifying /CDS:x switch for USBMSD.ADD. USBMOUSE.SYS /V: give some information on bootup (also supported by 10.162 drivers) USBKBD.SYS /V: give some information on bootup (also supported by 10.162 drivers) Make sure you back up your existing drivers ! These drivers come without any warranty whatsoever. If they don't work for you, revert back to your backed up drivers. ----------------------------------------------------------------------------------------------------------------------- Important note: if you have problems using the USB widget from eCenter/XCenter (part of eWorkplace/XWorkplace): You can revert back to the original daemon program that handles USB devices attaches/detaches. This is \ecs\boot\USBMSDD.EXE. Here is a piece of REXX code to create a program object in the startup folder: /* REXX script */ if RxFuncAdd('SysLoadFuncs','REXXUTIL','SysLoadFuncs') then do rc = SysLoadFuncs() end bootDrive = SysBootDrive() class='WPProgram' title='USB-Monitor V1.2' location='<WP_START>' app='EXENAME='bootDrive'\ecs\boot\usbmsdd.exe' startupdir='STARTUPDIR='bootDrive'\ecs\boot' parameters='PARAMETERS='bootDrive'\ecs\boot\usbmsdd.ini' icon='ICONFILE='bootDrive'\os2\boot\usbmon.ico' iconpos='ICONPOS=0,0' open='OPEN=RUNNING' minimized='MINIMIZED=YES' progtype='PROGTYPE=WINDOWABLEVIO' autoclose='NOAUTOCLOSE=NO' objectid='OBJECTID=<USB_MON>' rc = SysCreateObject(class,title,location,app';'startupdir';'parameters';'icon';'iconpos';'open';'minimized';'progtype';'autoclose';'objectid';','R') if rc==0 then ret = 0 else ret = 1 return ret Save this to a file with extension .cmd and execute from a commandline. Of course you can modify the title and/or object id to whatever you like. ----------------------------------------------------------------------------------------------------------------------- Enabling Tracing and taking a trace Many of the USB drivers support tracing. This means that operational data that allows offline error diagnosis is saved to a piece of memory called trace buffer. Then this memory can be read, the contents formatted and saved away as a file. The following drivers have these major trace codes: USBUHCD.SYS: 224 USBOHCD.SYS: 225 USBEHCD.SYS: 226 USBD.SYS: 227 USBHID.SYS,USBKBD.SYS,USBMOUSE.SYS: 228 (minor codes: HID:0x00-0x3F, USBMOUSE: 0x40-0x7F, USBKBD: 0x80-0xFF) USBCOM.SYS: 229 USBAUDIO.SYS,USBAUD2.SYS: 238 (minor codes: USBAUDIO: 0x00-0x7F, USBAUD2: 0x80-0xFF) USBMSD.ADD: 239 1) In order to enable tracing for say major trace code 239 (USBMSD.ADD), add this to config.sys and reboot: TRACEBUF=2048 /M=W,Q,NODTI /D=ALL TRACE=ON 239 Note: in order to say trace 224,225 and 226 you'd enter: TRACEBUF=2048 /M=W,Q,NODTI /D=ALL TRACE=ON 224,225,226 2) try to reproduce any problem that you want to trace 3) once you are done, run "tracefmt.exe" which will format the collected info. Then do a File->Save Formatted and save to a file with extension .ftf Make sure you save a FORMATTED trace and not an UNFORMATTED trace ! 4) Send the .ftf file to me Note: if your system traps once you did 1) then you need to get a replacement OS2DLR: http://212.12.30.18/other/QS_LDR.ZIP Read the contained readme in order to learn how to replace OS2LDR against the one contained in the package. ----------------------------------------------------------------------------------------------------------------------- FAQ 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, between USBD.SYS and USBAUDIO.SYS/USBMSD.ADD/USBCOM.SYS/USBPRT.SYS/USBHID.SYS/USBETHR.OS2 and between USBD.SYS and USBUHCD.SYS/USBOHCD.SYS/USBEHCD.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.
 hobbes.nmsu.edu/download/pub/os2/system/drivers/usb/usbdrv249.zip
USB drivers for OS/2 v. 12.14 (16/8/2022, Arca Noae LLC) Readme/What's new
USB drivers update for ArcaOS and OS/2 In this release =============== This release is intended to update an existing installation. The installer will not install or change UHCI, OHCI, or EHCI host controller drivers but it can install XHCI and certain class drivers. This release contains the following files: The Host Controller drivers and USB driver: - USBXHCD.SYS (USB 3.x XHCI hardware driver) - USBEHCD.SYS (USB 2.0 EHCI hardware driver) - USBOHCD.SYS (USB 1.x OHCI hardware driver) - USBUHCD.SYS (USB 1.x UHCI hardware driver) - USBD.SYS (USB driver) The Human Interface class drivers - USBHID.SYS (Human Interface driver) - USBKBD.SYS (USB Keyboard driver) - USBMOUSE.SYS (USB Mouse driver) Some other class drivers: - USBMSD.ADD (USB Mass Storage Device driver) - USBCOM.SYS (USB COM port and modem driver) - USBPRT.SYS (USB printer driver) - USBAUDIO.SYS (USB Class 1 Audio driver) - USBMOS.OS2 (Moschip USB to Ethernet driver) - USBASIX.OS2 (ASIX based USB to Ethernet driver) Other files: - USBRESMG.SYS (USBCALLS driver) - USBCALLS.DLL (USBCALLS DLL) - USBCALLS development sample code Copyrights and Licensing ======================== Copyright (c) 2011-2022 David Azarewicz <david@88watts.net> All rights reserved. Copyright (C) 1992, 2000-2001 IBM Corporation. All rights reserved. Portions of the code may also contain modifications from the contributors to this code such as Lars Erdmann, Wim Brul, and others, to whom we are very grateful for their work. Binary programs and documentation for the USB drivers are licensed to and distributed by Arca Noae, LLC. Important! By downloading or using this software, you acknowledge that you have read and consent to the license agreement contained in the separate License.txt file, that you understand it, and that you agree to be bound by its terms. Installation ============ The distribution is a self executing WarpIn package. Simply run it. This release is intended to update an existing installation only. Except for XHCI, the installer will not check for which host controllers you have in your system and it will not change the host controller drivers in your config.sys. If you are running ArcaOS, the installer will check for XHCI controllers and will modify your config.sys accordingly. The installer cannot install the XHCI driver on non-ArcaOS systems so you will not see the XHCI driver in the package list on those systems. The installer will only update the USBAUDIO driver if a version 11.x or 12.x driver is already installed. The USBAUDIO package will not be available if you have a version 10.x driver installed. The installer will not overwrite an existing version 10.x driver. On the Packages page, make sure you select and/or deselect the drivers you want and/or don't want to update. Many drivers are a matched set and cannot be updated individually. For this reason matched drivers are grouped into packages and cannot be selected individually. USBRESMG.SYS and USBCALLS.DLL are a matched set and must be the same version. There are many different old versions of USBRESMG.SYS and USBCALLS.DLL distributed with various other packages. If you are having problems with the USBCALLS interface, make sure that you are not using mismatched versions. Beware of other versions of USBCALLS.DLL in your LIBPATH or current directory. Starting with version 11.01, the usbcalls library was reorganized to try to merge the functionality from all the different versions and create a universal interface. A few versions were incompatible and those incompatible interfaces were discarded in favor of the more capable, more popular modern ones. If your application is very old or was linked with an incompatible library, you will need to relink your application with the new library. The version 12.x drivers require USBD.SYS to load before the HC drivers in CONFIG.SYS. This is different than the old 11.x drivers. The Warpin installer changes the CONFIG.SYS if necessary. Getting Support and Reporting Problems ====================================== For more information about the USB drivers please visit: https://www.arcanoae.com and click on SUPPORT. Or go directly to the USB support wiki at: https://www.arcanoae.com/wiki/usb/ Requirements, Limitations, and Known Problems ============================================= If a device is plugged into a root hub and powers up in an inoperative state, or if the BIOS puts the device into an inoperative state, the device will not work until it is repowered (ie. plugged in after bootup). This applies to any type of device, but especially hubs and KVM switches when a non-compliant device is plugged into them. This is a hardware limitation, not a driver defect. This problem exists on all other platforms as well. WARNING: The OS/2 DASD/IFS architecture is not designed to handle aborted disk transfers well. DO NOT disconnect or remove a USB MSD while a transaction is active, or when an error recovery is in progress. Always wait until the I/O is finished. Failure to wait will result in lost data and/or traps. Be aware that if a cache is used, the disk I/O may be delayed. An eject or reboot should be safe provided that you wait until it finishes. USBAUDIO -------- The OS/2 USB audio driver in this release is developed to support any USB audio device that follows USB Audio device class 1 specifications. This driver will not work on class 2 audio devices. To use this driver you must have the following prerequisites: 1. A USB audio device that conforms to the class 1 specification. 2. Basic USB support must be installed (HC driver, USBD). 3. Multimedia services must be installed. 4. The USBAUDIO driver must have already been installed in order to be updated by this release. USBXHCD ------- Current known limits and problems with USBXHCD.SYS: 1. Isochronous transfer support may not be fully tested due to the lack of compatible drivers and applications. You may experience reduced performance and/or additional problems on systems that are not fully up-to-date or are not in the standard Modern Hardware configuration. Specifically, make sure you are are using the latest Arca Noae 14.203 SMP kernel, the latest ACPI PSD, and that you are *not* using the /VW switch for the PSD. Some old vintage devices may not respond correctly to standard USB protocols. The USB3 spec and consequently XHCI hardware enforces strict compliance with the USB standards. If you have one of these non-compliant devices, please let us know and we will investigate if a workaround is possible. Some older USB class drivers may not be entirely USB3 compliant, or may have defects that were tolerated with the old USB2 stack. These drivers will need to be updated before they will work with the Arca Noae USB3 stack. The USB stack will block access to XHCI connected devices for drivers which are known to be XHCI unsafe. Change Log ========== v.12.14 16-Aug-2022 - David Azarewicz USBCOM: Fixed handling of multiple devices. USBCOM: Added support for PL2303HXN (067B:23x3) devices. USBAUDIO: Some enhancements for better audio. XHCI: Some improvements with Isochronous in. USBD: Fix simultaneous device initialization. v.12.13 10-Jun-2022 - David Azarewicz KBD: Prevent traps for keyboards with missing reports. KBD: Enhanced parsing for huge report descriptors. KBD: Fix device setup. MOUSE: Fix device setup. USBD: Fix notify class drivers in some hub configurations. USBD: Relax device descriptor validation. USBD: Correct the way device configuration works. USBCALLS: Fixed returned error status. USBCALLS: Fixed handling of set configuration requests. XHCI: Fixed verification of Isoc buffer pointers XHCI: Fix some CPU cache issues on Intel processors. v.12.12 02-Apr-2022 - David Azarewicz USBCOM: Fixed USB3 issues. Added support for some newer PL2303 devices. USBD: Added protection from some XHCI unsafe drivers. USBCALLS: Added protection from some misbehaved applications. XHCI: Added isochronous support. May not be fully tested due to the lack of compatible drivers and applications. v.12.11 05-Jan-2022 - David Azarewicz USBD: Added device descriptor verification to reject bad devices. OHCI: Fixed typo in RM strings. USBMSD: Added missing endpoint stall recovery. HID: Fixed descriptor parser to handle unusual global sequences. XHCI: Added workaround for VirtualBox port change defect. XHCI: Don't accept transfers for not-ready endpoints. v.12.10 16-Nov-2021 - David Azarewicz USBPRT: Fixed mutex issue that can cause a driver hang in some error coditions. USBMSD: Fixed problem attaching devices with physically removable media. USBD: Fixed port status data/timing problem that caused bad port status reads. XHCI: Changed how initial device endpoints are pre-configured. v.12.09 11-Jun-2021 - David Azarewicz USBCALLS: Enhanced buffer management to accomodate some peculiarities with certain non-compliant applications. USBMSD: Added preliminary GPT support. Standardized some RM strings. v.12.08 30-Mar-2021 - David Azarewicz USBD: Fixed problem configuring a device when multiple class drivers claim it. USBMSD: Fixed some buffer problems. USBMSD: Cleaned up and fixed eject logic. USBMSD: Fixed multi-LUN device attach. USBMSD: Added support for disks larger than 2TB. XHCI: Reworked transfer ring structure and management. v.12.07 28-Jul-2020 - David Azarewicz All drivers now check interface version rather than driver version for compatiblity. All drivers have improved resource manager strings. EHCI: Cleaned up Isochronous buffer management. Scheduled processing of Isochronous buffers earlier. KBD: Corrected scan codes for F13-F24 USBD: Implemented CheckService interlock. USBD: Fixed enumeration when a default address conflict. XHCI: By default route USB2 ports to EHCI controllers on systems with switchable ports. v.12.06 28-May-2020 - David Azarewicz EHCI: Fixed IOCtl pointer verification error. v.12.05 09-Apr-2020 - David Azarewicz DOCS: Changed where documentation is installed. USBD: Fixed device attach on large hubs. USBD: Fixed hub descriptor read on SS hubs. USBMSD: Enhanced error recovery algorithm. USBMOS: Added setting threshold for rev C chips. v.12.04 01-Mar-2020 - David Azarewicz Added new USBMSD driver with many fixes including: SMP fixes, stability fixes, bad pointer/random error fixes, buffer management fixes. USBD: Fixed max packet size problems. USBD: Added support for SS hubs. USBRESMG: Fixed a trap on certain IOCtl calls. USBMSD: Added SS device support. USBMOS: Added to distribution. v.12.03 01-Sep-2019 - David Azarewicz USBD: Significant changes to accomodate XHCI connected hub support. USBOHCD: Fixed a problem with isochronous transfers. USBEHCD: Fixed a problem with isochronous transfers. USBXHCD: Added error/stall clearing. v.12.02 31-Mar-2019 - David Azarewicz USBCALLS driver (USBRESMG.SYS) is now 32 bit. Significant changes throughout all drivers to accomodate USB3. This includes massive changes to USBD.SYS and minor changes to all the other HC drivers. Fixed a problem with abnormal termination in the USBCALLS driver. v.12.01 05-Jan-2018 - David Azarewicz All HC, USBD, and most class drivers are now 32 bit with a 32 bit non-thunked inter-driver interface. v.11.17 08-Jun-2017 - David Azarewicz Added support for keyboard auto-repeat. Fixed bandwidth allocation for certain types of 1.x devices when plugged into a 2.0 hub. v.11.16 08-Jun-2017 - David Azarewicz Misc cosmetic changes for debugging. v.11.15 30-Mar-2017 - David Azarewicz USBD: Fixed a MaxPacketSize error when initializing high speed devices. v.11.14 27-Nov-2015 - David Azarewicz Fixed a problem booting from USB devices. v.11.13 03-Jul-2015 - David Azarewicz Fixed another buffer management problem in USBCALLS interface. Added version checking to prevent using USBCALLS.DLL with wrong usbcalls driver. USBCALLS: Incorporated some changes from Wim. USBD,HC: Incorporated some hub changes from Lars. v.11.12 13-May-2015 - David Azarewicz Changed the way devices are initialized to accomodate some so-called buggy devices. Fixed buffer management problems in USBCALLS interface. v.11.11 01-Apr-2015 - David Azarewicz USBKBD: Fixed error handling USBMOUSE: Fixed error handling USBEHCD,USBOHCD,USBUHCD: Fixed a problem with extremely slow devices USBHID,USBAUDIO,USBCOM,USBPRT,USBD fixed a problem with concurrent device initialization. OHCI: Fixed a problem with isochronous transfers. Misc other minor changes. v.11.10 07-Mar-2015 - David Azarewicz USBCALLS: Reworked the way the DLL is built. Added query version function. USBCALLS: Fixed a transfer size problem which caused transfers to fail. USBRESMGR: Added query version function. USBD: Changed the way devices are initialized. USBEHCD,USBOHCD,USBUHCD: Added transfer timeout and conflict logic. USBEHCD,USBOHCD,USBUHCD: Fixed a problem working on Warp4 systems. USBOHCD: Fixed a problem that caused transfers to be lost. USBOHCD: Fixed an error detection problem. USBOHCD: Fixed a problem with default address transfers. USBCOM: Fixed a trap that could occur when certain devices are connected. Fixed an issue that could cause random traps in class drivers. Many other fixes and improvements so numerous I didn't keep track. Restructured the Warpin package to work on both OS/2 and eCS systems. v.11.09 10-Jan-2015 - David Azarewicz USBCALLS: Fixed a compatibility problem USBRESMGR: merged a fix from Wim. EHCI: Fixed a queue management problem EHCI: Reworked BIOS/OS ownership change KBD: Fixed a problem with shared devices Added version detection to prevent problems with using incompatible versions. Reworked and enhanced tracing capability. v.11.08 12-Aug-2014 - David Azarewicz USBD: Fixed a problem with some devices not attaching USBPRT: Fixed some SMP issues USBRESMGR: updates from Wim. USBCALLS: updates from Wim. v.11.07 19-Mar-2014 - David Azarewicz Fixed a failure on some UHCI controllers Create resource manager entries for mouse and keyboard devices. Serialize the initialization of HID devices. Temporarily added /S switch to USBMOUSE.SYS and USBKBD.SYS to allow reading product ID strings. Added USBPRT.SYS to the distribution. Added USBAUDIO.SYS to the distribution. v.11.06 11-Dec-2013 - David Azarewicz Updates to USBCOM, USBRESMG, USBKBD, USBHID, USBMOUSE Some fixes for keyboard and mouse on one device. Created WPI package for installation. v.11.05 12-Sep-2013 - David Azarewicz Implemented ISO changes from Lars' branch. Added some class drivers to the distribution. Fixed PL2303 support in USBCOM driver. v.11.04 14-Aug-2013 - David Azarewicz Implemented some trace and RemoveTDList changes from Lars Implemented data toggle changes from Lars v.11.03 23-Jul-2013 - David Azarewicz Changes to device enumeration based on changes from Lars branch Fixed another trap during device de-enumeration. v.11.02 (10.193) 14-Jul-2013 - David Azarewicz Some code cleanup Merge in some changes from Lars. Fixed some traps when doing device enumeration. Fixed a device enumeration problem. Fixed setting interrupt handler. Fixed a problem that caused some quirky systems to not work. Improved tracing information. v.11.01 (10.192) 14-May-2013 - David Azarewicz Cleanup and modernize build environment. Updated to modern build level string. Merged in some changes from Lars. Added ACPI suspend/resume support. Fixed lock/unlock routines which were causing hangs. Fixed an excessive CPU load problem. Fixed a problem which caused interference with some applications when USB is active.
 ecsoft2.org/os2-ecs-drivers-and-software-package
USB drivers for OS/2 v. 12.13 (10/6/2022, Arca Noae LLC) Readme/What's new
USB drivers update for ArcaOS and OS/2 In this release =============== This release is intended to update an existing installation. The installer will not install or change UHCI, OHCI, or EHCI host controller drivers but it can install XHCI and certain class drivers. This release contains the following files: The Host Controller drivers and USB driver: - USBXHCD.SYS (USB 3.x XHCI hardware driver) - USBEHCD.SYS (USB 2.0 EHCI hardware driver) - USBOHCD.SYS (USB 1.x OHCI hardware driver) - USBUHCD.SYS (USB 1.x UHCI hardware driver) - USBD.SYS (USB driver) The Human Interface class drivers - USBHID.SYS (Human Interface driver) - USBKBD.SYS (USB Keyboard driver) - USBMOUSE.SYS (USB Mouse driver) Some other class drivers: - USBMSD.ADD (USB Mass Storage Device driver) - USBCOM.SYS (USB COM port and modem driver) - USBPRT.SYS (USB printer driver) - USBAUDIO.SYS (USB Class 1 Audio driver) - USBMOS.OS2 (Moschip USB to Ethernet driver) Other files: - USBRESMG.SYS (USBCALLS driver) - USBCALLS.DLL (USBCALLS DLL) - USBCALLS development sample code Copyrights and Licensing ======================== Copyright (c) 2011-2022 David Azarewicz <david@88watts.net> All rights reserved. Copyright (C) 1992, 2000-2001 IBM Corporation. All rights reserved. Portions of the code may also contain modifications from the contributors to this code such as Lars Erdmann, Wim Brul, and others, to whom we are very grateful for their work. Binary programs and documentation for the USB drivers are licensed to and distributed by Arca Noae, LLC. Important! By downloading or using this software, you acknowledge that you have read and consent to the license agreement contained in the separate License.txt file, that you understand it, and that you agree to be bound by its terms. Installation ============ The distribution is a self executing WarpIn package. Simply run it. This release is intended to update an existing installation only. Except for XHCI, the installer will not check for which host controllers you have in your system and it will not change the host controller drivers in your config.sys. If you are running ArcaOS, the installer will check for XHCI controllers and will modify your config.sys accordingly. The installer cannot install the XHCI driver on non-ArcaOS systems so you will not see the XHCI driver in the package list on those systems. The installer will only update the USBAUDIO driver if a version 11.x or 12.x driver is already installed. The USBAUDIO package will not be available if you have a version 10.x driver installed. The installer will not overwrite an existing version 10.x driver. On the Packages page, make sure you select and/or deselect the drivers you want and/or don't want to update. Many drivers are a matched set and cannot be updated individually. For this reason matched drivers are grouped into packages and cannot be selected individually. USBRESMG.SYS and USBCALLS.DLL are a matched set and must be the same version. There are many different old versions of USBRESMG.SYS and USBCALLS.DLL distributed with various other packages. If you are having problems with the USBCALLS interface, make sure that you are not using mismatched versions. Beware of other versions of USBCALLS.DLL in your LIBPATH or current directory. Starting with version 11.01, the usbcalls library was reorganized to try to merge the functionality from all the different versions and create a universal interface. A few versions were incompatible and those incompatible interfaces were discarded in favor of the more capable, more popular modern ones. If your application is very old or was linked with an incompatible library, you will need to relink your application with the new library. The version 12.x drivers require USBD.SYS to load before the HC drivers in CONFIG.SYS. This is different than the old 11.x drivers. The Warpin installer changes the CONFIG.SYS if necessary. Getting Support and Reporting Problems ====================================== For more information about the USB drivers please visit: https://www.arcanoae.com and click on SUPPORT. Or go directly to the USB support wiki at: https://www.arcanoae.com/wiki/usb/ Requirements, Limitations, and Known Problems ============================================= If a device is plugged into a root hub and powers up in an inoperative state, or if the BIOS puts the device into an inoperative state, the device will not work until it is repowered (ie. plugged in after bootup). This applies to any type of device, but especially hubs and KVM switches when a non-compliant device is plugged into them. This is a hardware limitation, not a driver defect. This problem exists on all other platforms as well. WARNING: The OS/2 DASD/IFS architecture is not designed to handle aborted disk transfers well. DO NOT disconnect or remove a USB MSD while a transaction is active, or when an error recovery is in progress. Always wait until the I/O is finished. Failure to wait will result in lost data and/or traps. Be aware that if a cache is used, the disk I/O may be delayed. An eject or reboot should be safe provided that you wait until it finishes. USBAUDIO -------- The OS/2 USB audio driver in this release is developed to support any USB audio device that follows USB Audio device class 1 specifications. This driver will not work on class 2 audio devices. To use this driver you must have the following prerequisites: 1. A USB audio device that conforms to the class 1 specification. 2. Basic USB support must be installed (HC driver, USBD). 3. Multimedia services must be installed. 4. The USBAUDIO driver must have already been installed in order to be updated by this release. USBXHCD ------- Current known limits and problems with USBXHCD.SYS: 1. Isochronous transfer support may not be fully tested due to the lack of compatible drivers and applications. You may experience reduced performance and/or additional problems on systems that are not fully up-to-date or are not in the standard Modern Hardware configuration. Specifically, make sure you are are using the latest Arca Noae 14.203 SMP kernel, the latest ACPI PSD, and that you are *not* using the /VW switch for the PSD. Some old vintage devices may not respond correctly to standard USB protocols. The USB3 spec and consequently XHCI hardware enforces strict compliance with the USB standards. If you have one of these non-compliant devices, please let us know and we will investigate if a workaround is possible. Some older USB class drivers may not be entirely USB3 compliant, or may have defects that were tolerated with the old USB2 stack. These drivers will need to be updated before they will work with the Arca Noae USB3 stack. The USB stack will block access to XHCI connected devices for drivers which are known to be XHCI unsafe. Change Log ========== v.12.13 10-Jun-2022 - David Azarewicz KBD: Prevent traps for keyboards with missing reports. KBD: Enhanced parsing for huge report descriptors. KBD: Fix device setup. MOUSE: Fix device setup. USBD: Fix notify class drivers in some hub configurations. USBD: Relax device descriptor validation. USBD: Correct the way device configuration works. USBCALLS: Fixed returned error status. USBCALLS: Fixed handling of set configuration requests. XHCI: Fixed verification of Isoc buffer pointers XHCI: Fix some CPU cache issues on Intel processors. v.12.12 02-Apr-2022 - David Azarewicz USBCOM: Fixed USB3 issues. Added support for some newer PL2303 devices. USBD: Added protection from some XHCI unsafe drivers. USBCALLS: Added protection from some misbehaved applications. XHCI: Added isochronous support. May not be fully tested due to the lack of compatible drivers and applications. v.12.11 05-Jan-2022 - David Azarewicz USBD: Added device descriptor verification to reject bad devices. OHCI: Fixed typo in RM strings. USBMSD: Added missing endpoint stall recovery. HID: Fixed descriptor parser to handle unusual global sequences. XHCI: Added workaround for VirtualBox port change defect. XHCI: Don't accept transfers for not-ready endpoints. v.12.10 16-Nov-2021 - David Azarewicz USBPRT: Fixed mutex issue that can cause a driver hang in some error coditions. USBMSD: Fixed problem attaching devices with physically removable media. USBD: Fixed port status data/timing problem that caused bad port status reads. XHCI: Changed how initial device endpoints are pre-configured. v.12.09 11-Jun-2021 - David Azarewicz USBCALLS: Enhanced buffer management to accomodate some peculiarities with certain non-compliant applications. USBMSD: Added preliminary GPT support. Standardized some RM strings. v.12.08 30-Mar-2021 - David Azarewicz USBD: Fixed problem configuring a device when multiple class drivers claim it. USBMSD: Fixed some buffer problems. USBMSD: Cleaned up and fixed eject logic. USBMSD: Fixed multi-LUN device attach. USBMSD: Added support for disks larger than 2TB. XHCI: Reworked transfer ring structure and management. v.12.07 28-Jul-2020 - David Azarewicz All drivers now check interface version rather than driver version for compatiblity. All drivers have improved resource manager strings. EHCI: Cleaned up Isochronous buffer management. Scheduled processing of Isochronous buffers earlier. KBD: Corrected scan codes for F13-F24 USBD: Implemented CheckService interlock. USBD: Fixed enumeration when a default address conflict. XHCI: By default route USB2 ports to EHCI controllers on systems with switchable ports. v.12.06 28-May-2020 - David Azarewicz EHCI: Fixed IOCtl pointer verification error. v.12.05 09-Apr-2020 - David Azarewicz DOCS: Changed where documentation is installed. USBD: Fixed device attach on large hubs. USBD: Fixed hub descriptor read on SS hubs. USBMSD: Enhanced error recovery algorithm. USBMOS: Added setting threshold for rev C chips. v.12.04 01-Mar-2020 - David Azarewicz Added new USBMSD driver with many fixes including: SMP fixes, stability fixes, bad pointer/random error fixes, buffer management fixes. USBD: Fixed max packet size problems. USBD: Added support for SS hubs. USBRESMG: Fixed a trap on certain IOCtl calls. USBMSD: Added SS device support. USBMOS: Added to distribution. v.12.03 01-Sep-2019 - David Azarewicz USBD: Significant changes to accomodate XHCI connected hub support. USBOHCD: Fixed a problem with isochronous transfers. USBEHCD: Fixed a problem with isochronous transfers. USBXHCD: Added error/stall clearing. v.12.02 31-Mar-2019 - David Azarewicz USBCALLS driver (USBRESMG.SYS) is now 32 bit. Significant changes throughout all drivers to accomodate USB3. This includes massive changes to USBD.SYS and minor changes to all the other HC drivers. Fixed a problem with abnormal termination in the USBCALLS driver. v.12.01 05-Jan-2018 - David Azarewicz All HC, USBD, and most class drivers are now 32 bit with a 32 bit non-thunked inter-driver interface. v.11.17 08-Jun-2017 - David Azarewicz Added support for keyboard auto-repeat. Fixed bandwidth allocation for certain types of 1.x devices when plugged into a 2.0 hub. v.11.16 08-Jun-2017 - David Azarewicz Misc cosmetic changes for debugging. v.11.15 30-Mar-2017 - David Azarewicz USBD: Fixed a MaxPacketSize error when initializing high speed devices. v.11.14 27-Nov-2015 - David Azarewicz Fixed a problem booting from USB devices. v.11.13 03-Jul-2015 - David Azarewicz Fixed another buffer management problem in USBCALLS interface. Added version checking to prevent using USBCALLS.DLL with wrong usbcalls driver. USBCALLS: Incorporated some changes from Wim. USBD,HC: Incorporated some hub changes from Lars. v.11.12 13-May-2015 - David Azarewicz Changed the way devices are initialized to accomodate some so-called buggy devices. Fixed buffer management problems in USBCALLS interface. v.11.11 01-Apr-2015 - David Azarewicz USBKBD: Fixed error handling USBMOUSE: Fixed error handling USBEHCD,USBOHCD,USBUHCD: Fixed a problem with extremely slow devices USBHID,USBAUDIO,USBCOM,USBPRT,USBD fixed a problem with concurrent device initialization. OHCI: Fixed a problem with isochronous transfers. Misc other minor changes. v.11.10 07-Mar-2015 - David Azarewicz USBCALLS: Reworked the way the DLL is built. Added query version function. USBCALLS: Fixed a transfer size problem which caused transfers to fail. USBRESMGR: Added query version function. USBD: Changed the way devices are initialized. USBEHCD,USBOHCD,USBUHCD: Added transfer timeout and conflict logic. USBEHCD,USBOHCD,USBUHCD: Fixed a problem working on Warp4 systems. USBOHCD: Fixed a problem that caused transfers to be lost. USBOHCD: Fixed an error detection problem. USBOHCD: Fixed a problem with default address transfers. USBCOM: Fixed a trap that could occur when certain devices are connected. Fixed an issue that could cause random traps in class drivers. Many other fixes and improvements so numerous I didn't keep track. Restructured the Warpin package to work on both OS/2 and eCS systems. v.11.09 10-Jan-2015 - David Azarewicz USBCALLS: Fixed a compatibility problem USBRESMGR: merged a fix from Wim. EHCI: Fixed a queue management problem EHCI: Reworked BIOS/OS ownership change KBD: Fixed a problem with shared devices Added version detection to prevent problems with using incompatible versions. Reworked and enhanced tracing capability. v.11.08 12-Aug-2014 - David Azarewicz USBD: Fixed a problem with some devices not attaching USBPRT: Fixed some SMP issues USBRESMGR: updates from Wim. USBCALLS: updates from Wim. v.11.07 19-Mar-2014 - David Azarewicz Fixed a failure on some UHCI controllers Create resource manager entries for mouse and keyboard devices. Serialize the initialization of HID devices. Temporarily added /S switch to USBMOUSE.SYS and USBKBD.SYS to allow reading product ID strings. Added USBPRT.SYS to the distribution. Added USBAUDIO.SYS to the distribution. v.11.06 11-Dec-2013 - David Azarewicz Updates to USBCOM, USBRESMG, USBKBD, USBHID, USBMOUSE Some fixes for keyboard and mouse on one device. Created WPI package for installation. v.11.05 12-Sep-2013 - David Azarewicz Implemented ISO changes from Lars' branch. Added some class drivers to the distribution. Fixed PL2303 support in USBCOM driver. v.11.04 14-Aug-2013 - David Azarewicz Implemented some trace and RemoveTDList changes from Lars Implemented data toggle changes from Lars v.11.03 23-Jul-2013 - David Azarewicz Changes to device enumeration based on changes from Lars branch Fixed another trap during device de-enumeration. v.11.02 (10.193) 14-Jul-2013 - David Azarewicz Some code cleanup Merge in some changes from Lars. Fixed some traps when doing device enumeration. Fixed a device enumeration problem. Fixed setting interrupt handler. Fixed a problem that caused some quirky systems to not work. Improved tracing information. v.11.01 (10.192) 14-May-2013 - David Azarewicz Cleanup and modernize build environment. Updated to modern build level string. Merged in some changes from Lars. Added ACPI suspend/resume support. Fixed lock/unlock routines which were causing hangs. Fixed an excessive CPU load problem. Fixed a problem which caused interference with some applications when USB is active.
 ecsoft2.org/os2-ecs-drivers-and-software-package
USB drivers for OS/2 v. 11.17 (8/10/2017, Arca Noae LLC) Readme/What's new
This is a maintenance release and includes minor fixes and enhancements. Specifically, this version fixes keyboard auto-repeat so that it works for all USB keyboards. This version also fixes the ability to use certain unusual types of USB 1.x devices when plugged into a USB 2.0 hub.
 ecsoft2.org/os2-ecs-drivers-and-software-package
USB drivers for OS/2 v. 11.16 (8/6/2017, Arca Noae LLC) Readme/What's new
Change Log ========== v.11.16 08-Jun-2017 - David Azarewicz Misc cosmetic changes for debugging.
 ecsoft2.org/os2-ecs-drivers-and-software-package
USB drivers for OS/2 v. 11.15 (30/3/2017, Arca Noae LLC) Readme/What's new
Change Log ========== v.11.15 30-Mar-2017 - David Azarewicz USBD: Fixed a MaxPacketSize error when initializing high speed devices.
 ecsoft2.org/os2-ecs-drivers-and-software-package
USB drivers for OS/2 v. 11.14 (27/11/2015, Arca Noae LLC) Readme/What's new
Change Log ========== v.11.14 27-Nov-2015 - David Azarewicz Fixed a problem booting from USB devices.
 ecsoft2.org/os2-ecs-drivers-and-software-package
USB drivers for OS/2 v. 10.84 (8/2/2003, Einhandler von Schranzenstaad) Readme/What's new
2003/02/07 Unofficial Release 10.84 USB 2.0 drivers compiled from DDK by Einhandler von Schranzenstaad
 hobbes.nmsu.edu/download/pub/os2/system/drivers/usb/USB2_10-84un.zip  local copy
Record updated last time on: 12/04/2024 - 17:28

Translate to...

Add new comment