ages2001 / WINUSB
git clone https://github.com/ages2001/WINUSB.git
v1.0 · 5d ago
Universal USB driver for DOS, Windows 1.0x/2.xx/3.xx and Windows 95/98/ME
+13
stars, 24h · #2,823
+53
stars, 7 days · #3,854
+53
stars, 30 days · #12,003
53
★ total · +53% this week
1
forks · 3 open issues
Star history (as recorded here)
LanguageC
LicenseGPL-3.0
Created2026-10-17 (5d ago)
Last push5d ago
Watchers0
OwnerUser
Links
- GitHub: github.com/ages2001/WINUSB
- Releases · Issues · Hacker News mentions
README excerpt
# WINUSB 1.0 — USB driver for DOS, Windows 1.0x/2.xx/3.xx and Windows 95/98/ME WINUSB is a USB stack written from scratch for MS-DOS 5 / 6, Windows 1.0x, 2.x, 3.0, 3.1 / Windows for Workgroups 3.11 and Windows 95 / 98 / ME: * **Host controllers:** UHCI, OHCI, EHCI (USB 2.0), xHCI (USB 3.x) * **Mass storage:** Bulk-Only (BOT) and **UAS** (USB Attached SCSI; with streams on USB 3, without on USB 2), 4K-sector devices, write protection, media change * **HID:** keyboard (LEDs, typematic, Pause / PrintScreen), mouse (5 buttons, **wheel**, horizontal wheel) and **absolute pointers** (USB tablets, touch screens, graphics tablets, the "usb-tablet" of virtual machines) * **PS/2 keyboard and mouse** inside the driver: the mouse in IntelliMouse Explorer mode (wheel, buttons 4 and 5); on Windows 95/98/ME it replaces Windows' own PS/2 mouse driver; the PS/2 keyboard's LEDs follow the lock keys of the USB keyboards too * **Back / forward buttons** (4th and 5th mouse buttons, as Alt+Left / Alt+Right) and **autoscroll** (click the wheel and move the mouse to scroll, with a scroll cursor) on all Windows versions (§3) * **Multi-partition USB disks:** every partition (MBR, extended, GPT) gets its own letter; 4 letter slots by default, more when the disks plugged in at boot have more partitions * **Touchpads** on every system (DOS, Windows 1.0x–3.11, 95/98/ME): USB and **I2C** precision touchpads (HID over I2C: ACPI `PNP0C50` / `ACPI0C50`, Intel LPSS and AMD I2C controllers, the HID descriptor address from `_DSM`, the `GpioInt` interrupt line), **PS/2** touchpads (Synaptics, ELAN) and **SMBus** touchpads (Synaptics InterTouch / RMI4, ELAN); **two-finger scrolling** (vertical and horizontal), tap to click, two-finger tap = right click, clickpads, TrackPoint (§4a) * **USB cameras** (UVC 1.0–1.5; YUY2, NV12, Motion-JPEG; isochronous and bulk) and **WINCAM.EXE**: live picture, photos (BMP), video (AVI) (§5a) * **USB Audio 1.0 / 2.0** sound cards, headsets, DACs and **USB MIDI** output (through **WINSOUND.DRV** on Windows 3.0 MME / 3.1; §5) * **USB4 / Thunderbolt** host support (§4b): host router / NHI driver, software connection manager for USB4 and Thunderbolt 1–3 devices, Intel firmware connection manager (ICM); **NVMe** disks behind **PCIe tunnels** (read / write, hot plug, drive letters) and the xHCI controllers of docks, **USB3 tunnels** (hubs and devices on USB4 links); PCIe hot plug under DOS (bus and BAR assignment) * **USB CD/DVD drives** in DOS through MSCDEX (`WINUCD.SYS`) and on Windows 95/98/ME * **Dynamic drive letters**, hot plug and **safe removal** * **USBTREE.EXE** (Windows) and **WININFO.EXE** (DOS): detailed USB tree and descriptors * DOS, Windows 1.0x / 2.x, Windows 3.0 **Real Mode**, **Standard Mode** and **386 Enhanced Mode** (VxD) * **Windows 95 / 98 / ME**: Plug and Play device driver (`WINUSB.VXD`, installed from INF files through Device Manager), USB devices in their own Device Manager classes (USB, Keyboard, Mouse, HID,