Index

Using Low-speed Bulk Transfer on Windows Vista


Osamu Tamura @ Recursion Co., Ltd.

Although the low-speed bulk transfer is not supported on the USB standard, it has been working fine on Windows 2000/XP. However, it seems Microsoft changed their policy and Windows Vista does not allow this mode any more.

"lowbulk.sys" is a tiny filter driver to enable this transfer. It resides between "usbser.sys" and the USB port driver, and it helps configuring bulk pipes for low-speed device when connected. It just passes through the packets between the layers at other times.

This patch works as follows:
        Step 1.  Configures the interrupt pipes instead of bulk pipes.
        Step 2.  Reforms the interrupt pipes to the bulk pipes after the endpoints were generated.

This driver is designed for AVR-CDC, and may not work properly on other "low-speed bulk" devices.
This driver works on Vista x32 only. Vista x64 does not accept unauthorized kernel-mode drivers.

[ Installation ]

1. Clean up the previously installed AVR-CDC drivers, if any.
        Connect AVR-CDC device and completely delete the driver using "Device Manager".
        Remove the "avrcdc.inf"-corresponded "oem**.inf/pnf" pair from "/windows/inf/" folder, if any.

2. Install the virtual COM/CDC protocol interface driver.
        Connect AVR-CDC device and follow the dialog instructions.
        Indicate "inf/vista/" folder to install "usbser.sys" and "lowbulk.sys".

/inf -- /vista   -- lowbulk.inf         <-- setup file for "usbser.sys" and "lowbulk.sys"
                    -- lowbulk.sys
      -- /xp2k -- avrcdc.inf           <-- setup file for "usbser.sys"

avrcdc_inf.zip            (42 KB)

This program was built using WinDDK and the code is based on its sample (general/toaster/filter/devlower). The portion of the code that I added are published under GPL2 license.
@

[ LibUSB-Win32 ]

LibUSB is an open-source project of the general purpose USB interface driver. You can control AVR-CDC device directly without loading "usbser.sys". This is the patch to enable low-speed bulk transfer on Vista. This may be useful for all "low-speed bulk" devices. Download the original LibUSB and add this portion. Rebuild the "libusb0.sys" with this replacement.  "bulk.c" is a CDC-IO sample to transfer data.

libusb-win32-lowbulk-0.1.12.zip

The low-speed bulk transfer is an experimental solution that violates the USB standard. Consider other methods in your future project.

related page ( CDC over Interrupt pipes )

15 July 2008

<<