Common USB FAQ
Q1: I want attach USB 2.0 device to USB 1.1 controller. Will it work?
A1: This depends on device. Read the manual, usually they write about USB 2.0
on the box but mention compatibility with USB 1.1 in documentation.
Q2: Can I disconnect an USB device embedded in my notebook?
A2: You can disable USB controller via ACPI.
Q3: I have 1 USB controller, can I attach 127 USB devices?
A3: Yes, attach via USB hubs. The carrying capacity is shared among all
this devices. So, if possible, attach USB devices directly to controllers.
Q4: How many USB controllers in my PC?
A4: Query the quantity of controllers: x:\OS2\BOOT\HCIMONIT.EXE
Load the corresponding quantity of USB controllers drivers via CONFIG.SYS
Q5: I have USB 2.0 flash disk. How to attach it to USB 2.0 controller?
Seems that it is working via USB 1.1 controller.
A5: Robert Lalla offers an algorithm:
- Open WPS hardware manager window in tree mode, with flash disk disconnected
- Then connect flash disk
- Call "refresh" from hardware manager's context menu: An additional
"USB device" should appear as child to one of several "USB host
- If the affected "USB host controller" is of type UHCI or OHCI goto
Step2a, if the affected "USB host controller" is of type EHCI
goto Step2b. Note that due to a WPS bug, USB devices will not
disappear from the hardware manager's tree when unplugged, but
will appear duplicate when plugged in again.
* Flash disk is connected to an USB1 only host port,
then connect flash disk to a different USB2 capable host port
* Flash disk is connected to an USB1 hub (maybe keyboard's or screen's
hub), then use for flash disk an USB2 hub connected to an USB2
capable host port or connect it directly to an USB2 capable host port
* USB1/2 recognition inside USB host port hardware is broken,
then try connecting flash disk to a different USB2 capable host port
* EHCI driver is not installed (missing in hardware manager tree),
then add BASEDEV=USBEHCD.SYS to CONFIG.SYS behind all occurences
of USBUHCD.SYS or USBOHCD.SYS
Flash disk is connected to an USB1 hub (maybe keyboard's or screen's hub)
which is connected to another USB2 hub, then connect flash disk directly
to the USB2 hub
Flash disk is piece of garbage and doesn't cooperate well with our
USB stack, then you're out of luck
Q6: What is the speed of USB 2.0?
A6: Robert Lalla gives some info about USB 2.0 speed:
* USB 2.0 bus raw data speed is 60 MB/s (1 MB = 1,000,000 bytes)
* USB 2.0 theoretical max throughput is 53 MB/s
* USB 2.0 onboard controller from Intel can reach about 40 MB/s
* USB 2.0 onboard controller from VIA can reach about 30 MB/s
* USB 2.0 PCI addon card can reach about 20 MB/s
* USB 2.0 flash disk can reach from 1 MB/s to about 32 MB/s,
depending on hardware quality. Write speed is typically slower
or much slower than read speed.
* IBM USB stack has some bottleneck when writing to mass storage,
don't know where. So write speed might stay way below hardware limits.
* IBM USB 2.0 driver (USBEHCD.SYS) is leaving USB host controller
in default speed, which keeps interrupt load low even on slow cpu.
So USB 2.0 host controller cannot reach its max speed.
Q7: How to improve USB 2.0 read performance:
A7: Robert Lalla offers a patch:
* Open command window and change current directory to \OS2\BOOT
* Verify that you have latest USBEHCD.SYS (v10.162, 42112 bytes)
and make backup copy of USBEHCD.SYS
* Copy 3 lines of text to a new file called USBPATCH.TXT:
VER 1723 FF76F2
CHA 1723 6A0190
* Run the following command:
PATCH USBPATCH.TXT /A
* In case system load is too much now when accessing USB device,
you can try out different speed settings by using different
USBPATCH.TXT containing "CHA 1723 6A0*90", where * is a hex digit.
(1=fastest, 2=nearly_fastest, 4=slower, 8=default)
Q8: What to know about writing to USB flash disks...
A8: Some facts:
* Many low-cost flash sticks/cards of 1GB or bigger are nowadays populated with
cheap "MLC" flash chips which are not only 4x slower on writes compared to same
generation high performance "SLC" flash chips, but also survive 10x less write cycles.
Manufacturers tend to hide those facts by specifying only "upto" read performance,
and by promising generous warranty conditions.
* Data inside flash memory can be erased only in big blocks. Any modification
of a single 512 byte random sector will cause several 100 kBytes to be copied
internally to a different empty flash block. So random writes are extremely
slow compared to sequential writes.
* Flash memory controllers tend to have only tiny internal RAM buffers.
In order to show good sequential write performance, data must be transferred
in big chunks, strictly sequential, and not interrupted by any read accesses.
(thx Robert Lalla)
Q9: What to know about OS/2 USB 2.0 EHCI driver....
* OS/2 USB 2.0 driver can handle 15 (=3*5) 4kB sized pages of data per request,
this corresponds to a 56kB..60kB sized buffer, depending on page alignment.
(thx Robert Lalla)
Q10: Rules how to improve OS/2 write speed to an USB flash disk?
* Ensure that data is written to USB flash disk in strictly sequential way. ***
Non-sequential writes will cause huge amounts of internal copy traffic inside
the device and catastrophic slowdown.
* Use as big as possible write buffer, but not bigger than 60kB. ***
Small data blocks (16kB or below) tend to reduce write throughput considerably,
data blocks >60kB have to be broken down into small blocks by upper driver layers.
* Use write buffer in page aligned RAM. ***
Not RAM page aligned data buffers will cause USB hardware to transfer data in sub-blocks
not aligned to internal flash memory structures, which might result into inefficient
processing inside the flash device.
* Write directly to flash disk, don't use cached (default) writes. ***
The OS/2 filesystem cache will modify the data chunk sizes and possibly rearrange
the sequence of write transfers. This way performance will suffer.
* If file size is known, pre-allocate file on flash disk, and write data afterwards. ***
This way sequential file writing won't be disturbed by directory or FAT accesses.
(thx Robert Lalla)