This is a fix to usb/lib/dev.c regarding maxpkt size along with a change to disk to adjust to the new timeouts changes. Reference: /n/sources/patch/applied/usb-disk-fixes Date: Fri Jul 24 12:06:45 CES 2009 Signed-off-by: nemo@lsub.org --- /sys/src/cmd/usb/disk/disk.c Fri Jul 24 12:05:28 2009 +++ /sys/src/cmd/usb/disk/disk.c Fri Jul 24 12:05:25 2009 @@ -630,6 +630,9 @@ } dprint(2, "disk: ep in %s out %s\n", ums->epin->dir, ums->epout->dir); + devctl(ums->epin, "timeout 2000"); + devctl(ums->epout, "timeout 2000"); + if(usbdebug > 1 || diskdebug > 2){ devctl(ums->epin, "debug 1"); devctl(ums->epout, "debug 1"); --- /sys/src/cmd/usb/lib/dev.c Fri Jul 24 12:05:33 2009 +++ /sys/src/cmd/usb/lib/dev.c Fri Jul 24 12:05:30 2009 @@ -53,7 +53,10 @@ snprint(name, sizeof(name), "/dev/usb/ep%d.%d", d->id, id); if(access(name, AEXIST) == 0){ dprint(2, "%s: %s already exists; trying to open\n", argv0, name); - return opendev(name); + epd = opendev(name); + if(epd != nil) + epd->maxpkt = ep->maxpkt; /* guess */ + return epd; } if(devctl(d, "new %d %d %s", id, ep->type, mode) < 0){ dprint(2, "%s: %s: new: %r\n", argv0, d->dir);