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 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.