Command: usbhub

  USBDOS is a collection of different USB drivers and tools:
  USBHUB is a DOS Driver for up to 16 Generic USB ver 1 Hubs, with
  up to 7 ports on each Hub.

Syntax:

  USBHUB [Options]

Options:

  ?         Show this HELP screen
  A         Show all ALIASES for these command line Options
  ErrLvl    Show all ErrorLevels (DOS Return Codes)
  U         UNINSTALL from memory
  L:Y/N     Force installation into LOW memory (Default = No)

  S         Display current STATUS of program & hubs
  C         Display CONFIGURATION (& other) descriptors of last hub found

  B         Show list of BAD (incompatible) hubs found
  Beep:Y/N  BEEP Speaker when bad hub is found (Default = Yes)

  X         Show stage where last eXTERNAL device failed to connect

Comments:

  USB Hubs are the most basic of Device/Interfaces that you can attach to
  your computer. In fact, Hubs are so basic to USB busses that they are
  completely defined in the base USB specification -- there isn't a
  separate document needed to specify them the way there is for all other
  Device/Interfaces.
  A USB Hub is a special Device/Interface that effectively "expands" a USB
  bus by creating additional ports. If the Root Hubs (integrated with the
  Host Controllers) do not have enough ports to support all of the
  Physical Devices you want to plug in, you will need a USB Hub to create
  new ports. USBHUB is the software driver it takes to enable and manage
  any USB Hubs you have. If you do not have any USB Hubs installed on
  your computer, or if you do not want to use the Physical Devices you
  have attached to those Hubs (the only Physical Devices you want to use
  are attached to Root Hubs), you do not need to install USBHUB.
  To install USBHUB into memory, you can simply run it with no option
  switches. Note, however, that at least one instance of USBUHCI{L} must
  be installed in memory before USBHUB can be installed. For example:
    USBHUB
  USBHUB will enable and manage up to 16 USB Hubs, with up to 7 ports on
  each Hub. USBHUB will not manage a Hub with more than 7 ports (USBHUB
  will classify a Hub with more than 7 ports as a "bad" Device).
  To have USBHUB display the General Descriptors (Device, Configuration,
  Interface, End Point) of the last Hub that was attached, you would do
  the following:
    USBHUB Descriptors
  In addition to displaying the contents of the General Descriptors, this
  option switch will also display the contents of the class-specific Hub
  Descriptor. The Hub Descriptor includes specific details about the Hub,
  such as the number of ports and power control characteristics.
  To have USBHUB show you the current status of the Hubs that it is
  managing, you would to the following:
    USBHUB Status
  This will display all of the Hubs that are being controlled, as well as
  details about each of the ports on each Hub (power usage, which ports
  have Physical Devices connected, etc.). The details can be a little bit
  cryptic, so you may want to read the appropriate parts of the USB
  specifications if you need further explanation of what the different
  data items are actually telling you.
  While a New Device is being detected, initialized, and enumerated, there
  is a large amount of interaction that takes place back and forth between
  the Host Controller Driver (USBUHCI{L}) and USBHUB. If a Logical Device
  fails to enumerate properly for some reason, and it is attached to a Hub
  being managed by USBHUB, you can have USBHUB tell you where and why the
  failure occurred. You do this as follows:
    USBHUB ExternalStage
  As with most troubleshooting details in these programs, the results are
  rather cryptic. You will need to correlate the error information
  provided with the Assembly Language source code for USBHUB to figure out
  exactly what happened. The source code for USBHUB is available if you
  want it, but if you are not familiar with Assembly Language programming,
  it may confuse you more than it helps you.
  Just as a point of clarification, it is not possible to electrically
  "split" or "tap" the USB bus wires to go to two (or more) different
  Physical Devices. Everything on a USB bus is carefully managed through
  the Host Controller Driver (software), and any "splits" in the bus to
  go to multiple Devices MUST go through a Hub. Each Physical Device must
  plug into a port that is on either a Root Hub or a managed USB Hub.
  In order to write the contents of the Descriptors, USBHUB calls the
  support program USBSUPT1 (page 178 of USBINTRO.DOC, see links below).

  For more information see:
    https://gitlab.com/FreeDOS/drivers/usbdos/-/tree/master/DOC/DOSUSB
  OR:
    C:\FREEDOS\DOC\usbintro.doc (too big for edit, please use
    another editor, e.g. Blocek!)
  OR:
    https://bretjohnson.us/

Examples:

  usbuhci    (only UHCI is supported at the moment!)
  usbhub

See also:

  boundtst
  drives
  hidsupt1
  inklevel
  irq
  ps2mtest
  scantest
  thrust
  uni2asci
  usbdevic
  usbdos
  usbdrive
  usbhosts
  usbjstik
  usbkeyb
  usbmouse
  usbprint
  usbsupt1
  usbuhci
  usbuhcil
  vendorid

  Copyright © 2007-2009 Bret E. Johnson, help version 2023 W. Spiegl.

  This file is derived from the FreeDOS Spec Command HOWTO.
  See the file H2Cpying for copying conditions.