Repository navigation
Releases: yeokm1/xhci98
Release list
v2.2.0.0
New
- SuperSpeed now works on Intel Sunrise Point-LP (
8086:9D2F) – e.g. ThinkPad E460, HP EliteBook 850 G5. Previously USB 3 sticks were not seen and USB 3 hubs showed only their USB 2.0 half. - Devices recover from controller faults instead of staying dead until replugged
- New settings:
XhciTolerance(on by default;0turns the fault handling off),XhciIntervalCapandXhciAvgTrbEsit(for AMD controllers). XhciIntelPortSwitch=2: moves the switchable USB 3 connectors to this driver on any Intel controller, not only the six listed. At your own risk; leave it at1unless you know your chipset has the switch registers.- Better diagnostics:
XHCISNAPreports now say why a device was not enumerated and count every fault, so a report from a misbehaving machine names its own cause.
Updating
- Remember to update both "xHCI98 USB 3.x eXtensible Host Controller" and "xHCI98 USB 3.x Root Hub", both pointed at
release-x86\orrelease-x64\. - Your registry values are kept and the new ones added. On Windows 98 SE / ME, restart afterwards.
Known limitations (new)
- Windows 2000: after a controller recovery, a mounted USB drive may come back at Code 31 until it is replugged.
- A device the controller keeps faulting on is removed after three tries; its port is held until the device is unplugged for a few seconds, or until the controller restarts.
The architecture of this release is a drastic change from previous 1.x.x.x USB 2.0 miniport releases. It may have bugs or edge cases that may not be accounted for due to the large xHCI/USB 3.x specification and numerous host controller implementations and devices. Please report any issues if you find any.
v2.1.1.0
New
- The install writes every registry value the driver reads. All eight values are written at their defaults, so you can find and change them in the controller's driver key.
- A value is written only where it is missing, so a value you changed survives an install or update.
- A machine updated straight from 1.2.0.0 keeps that release's
XhciImodInterval250nsof500. Set it to160by hand if you want.
- Fixed: the Power tab's current for SuperSpeed devices. Under 2.1.0.0 it showed a quarter of the real draw. It now shows the device's own figure, up to 510 mA (anything above reads 510 mA).
XHCISNAPreports each SuperSpeed device's exact declared current (dev.ss.maxpower.ma, withXhciLogVerbosityraised).
- Intel 7-, 8- and 9-series chipsets (Ivy Bridge to Broadwell, and C610/X99): the switchable ports now work.
- The driver moves the switchable connectors (usually the blue ones) from the USB 2.0 controller to itself at each start.
- Before this, with the firmware on Auto, devices on those connectors were invisible to this driver.
- xHCI device ids this is applied to:
1E31,8C31,9C31,8CB1,9CB1,8D31. - To turn it off, set
XhciIntelPortSwitchto0.
Known limitations
- the SuperSpeed Power-tab figure is now capped at 510 mA due to Device Manager limitations.
The architecture of this release is a drastic change from previous 1.x.x.x USB 2.0 miniport releases. It may have bugs or edge cases that may not be accounted for due to the large xHCI/USB 3.x specification and numerous host controller implementations and devices. Please report any issues if you find any.
v2.1.0.0
New
- External hubs appear in Device Manager with their devices beneath them
- Devices with a serial number keep their Device Manager entry when moved to another port
- Devices show their own product name instead of "USB Device" where no Windows INF names them
txtsetup.oemin every driver directory: load the driver at the F6 prompt in Windows 2000/XP/XP x64 Setup and the Recovery Console- SweetLow's hidusbf works under this driver, at root ports and behind hubs
XhciFastPollFsLs(not set by default, experimental): polls Low/Full-Speed mice at 2000 to 8000 Hz with hidusbf
Fixed
- Windows ME: re-enabling the controller with a USB mouse attached no longer hangs
- The root hub's Power tab shows each device's power in mA instead of "unknown"
The architecture of this release is a drastic change from previous 1.x.x.x USB 2.0 miniport releases. It may have bugs or edge cases that may not be accounted for due to the large xHCI/USB 3.x specification and numerous host controller implementations and devices. Please report any issues if you find any.
v2.0.0.0
- A new driver generation. xhci98.sys is now a complete USB host controller driver. It runs the controller, the root hub, every hub behind it and composite-device splitting itself, replacing Windows' usbport.sys, usbhub.sys and usbccgp.sys. Windows own class drivers (keyboard, mouse, storage, audio, network) sit on top unchanged.
- SuperSpeed (USB 3.x) devices and SuperSpeed hubs are supported, alongside High, Full and Low Speed devices.
- Every device runs at its true speed. The virtual High-Speed hub and the "everything is High Speed" reporting of 1.x are gone, along with the polling, audio and USB 1.1 hub problems they caused.
- UAS (USB Attached SCSI) storage through the new xhciuas.sys, with streams at SuperSpeed and streamless UAS at High Speed.
- UAS drives that also offer Bulk-Only can be forced to Bulk-Only with XhciForceBulkOnly.
The architecture of this release is a drastic change from previous 1.x.x.x USB 2.0 miniport releases. It may have bugs or edge cases that may not be accounted for due to the large xHCI/USB 3.x specification and numerous host controller implementations and devices. Please report any issues if you find any.
v1.2.0.0
This is the last release that follows the current miniport architecture. The next release will be a full USB 3.0 Host Controller Driver to get proper USB 3.0 speeds.
- New: virtual USB 2.0 hub (experimental, off by default). When it's on, a Full- or Low-Speed device plugged into a root port is reported to Windows at its true speed instead of as High Speed. Only turn it on if you know what you're doing. It is controlled by
XhciVirtualHSHubin the controller's driver key:0: off (the default)1: on when needed. A virtual hub appears above a Full- or Low-Speed device on a root port and goes away when the device is unplugged.2: always on. Every USB 2.0 port has a virtual hub from start to stop.
- With the virtual hub on:
- A mouse on a root port polls at the rate it asks for, and a Full-Speed audio device on a root port plays from Windows XP onward.
- On Windows Vista and 7, a USB 1.1 hub on a root port no longer crashes the machine.
- The virtual hub counts as one hub level, so you can chain one fewer external hub than usual.
- Fixed: a Low-Speed device behind a hub showed Code 10 under SweetLow's stack on Windows 98 at 250 Hz and faster (#4).
- Fixed: a High-Speed interrupt device behind a USB 2.0 hub could be polled every 125 us. It is now polled at the interval usbport sets for it.
v1.1.1.0
New features:
- The xHCI controller's properties in Device Manager now have an Advanced tab with "Disable USB error detection" checkbox and "Bandwidth Usage" button. (Suggested in this issue #4)
- The install sets a shorter default interrupt moderation interval of 500 (0.125ms). Transfer speeds should approach 33 MB/s which is near the practical maximum of USB 2.0. Previously this was hardcoded at 4000 (1ms) and only managed 18 MB/s.
Known limitation:
- USB Audio playback may more likely stutter with high USB traffic like file transfers at default moderation interval. If you prefer to prioritise audio quality, experiment with increasing the value or change it back to 4000. You can change this with a registry key XhciImodInterval250ns. Details in tuning section of the main readme.
v1.1.0.0
Changes:
- Windows XP x64, Vista (x86/x64) and 7 (x86/x64) are now supported.
- Use
release-x86for 32-bit Windows orrelease-x64for 64-bit Windows. - The driver no longer changes a machine-wide registry to disable suspend. It does it internally via a
USB_MINIPORT_FLAGS_DISABLE_SSflag tousbport.sys. You may delete theHKLM\System\CurrentControlSet\Services\USB\DisableSelectiveSuspendkey if you have upgraded from a previous version. - Several reliability fixes including one that could crash machines with more than one processor.
- Small fixes to
XHCIQUALandXHCISNAP.
Additional issues:
- Windows Vista and 7: an old USB 1.1 hub plugged straight into the PC will crash Windows once you use a mouse or keyboard behind it. Plug those devices directly into the PC, or use a USB 2.0 hub.
- Windows XP and later: a USB sound card or headset plugged straight into the PC plays no sound, even though Windows shows it playing. Plug it in through a USB 2.0 hub and it works. Windows 98 and 2000 are not affected.
- Windows 7: disabling the USB controller in Device Manager can hang, and so can the restart after it. This was seen on the one real machine tried, and the cause is not known yet.
v1.0.2.0
This is more of a robustness release. No change in main driver features.
- The install now supplies usbui.dll from Windows' own installation source only if absent. Will create extra property page in Device Manager.
- Bug fixes to driver regarding endpoint edge cases (More details in release history)
v1.0.1.0
- Added 32-bit Windows XP SP3 support for completeness. Tested in virtual machines only. (Backported Win 8 USB 3.0 drivers exist)
- On Windows 2000 and XP, the install now places usbport.sys, usbd.sys and usbhub.sys from the OS's own driver cache. Before this, a machine that never had another USB controller could install the driver but not load it.
- Idle suspend is now disabled on the NT path too as on Windows 98. XP's usbport idled the controller about thirty seconds after start and anything plugged in afterwards was invisible.
- [Bugfix]: One driver code change: XP's hub can re-create a device mid-enumeration through a second handle and then remove the first. The driver no longer reads that removal as the live pipe closing. Before, a mass-storage or composite device failed on its first attach on XP and worked on a replug. Windows 98 and 2000 never trigger it and read unchanged on the same binary but may silently have this fault too.
v1.0.0.1
This version is functionally identical to v1.0.0.0. If you already have that, you can stay with that.
Only changes are the install procedure to do the following: