After a month of code refactoring and clean ups, etc, I thought I would send along an update. The attached patch is relative to your ehci branch; I also attached the full usb-ehci.c file for easier reading. At this point I can get a Windows XP guest to format a 4GB key and read from and write to it. I can get an FC-12 guest to format a 4GB key and an 8GB key as well as read from and write to both. Write rates are on the order of 8 MB/sec for dd: # dd if=/dev/zero of=test bs=1M count=100 oflag=dsync 100+0 records in 100+0 records out 104857600 bytes (105 MB) copied, 12.1205 s, 8.7 MB/s rsync of text files (e.g., /var/log) is on the order of 2MB/sec. 4GB keys are definitely more stable; the 8GB is not recognized by Windows XP. It still needs a lot of love, but definitely an improvement from the last version. The biggest difference for the performance boost and stability is discovering that the usbfs in linux limits transactions to 16k versus the EHCI spec which allows 20k per qTD. I added a hack to submit which detects 20k requests from a guest and breaks it up into 2 requests through the host (a 16k and then a 4k). David