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.
15 July 2008