--- usb-linux.c.orig 2008-01-12 12:56:09.000000000 +0100 +++ usb-linux.c 2008-01-12 14:02:47.000000000 +0100 @@ -229,12 +229,14 @@ if (ret < 0) { switch(errno) { case ETIMEDOUT: + ret = ioctl(s->fd, USBDEVFS_CLEAR_HALT, &(bt.ep)); return USB_RET_NAK; case EPIPE: default: #ifdef DEBUG printf("handle_data: errno=%d\n", errno); #endif + ret = ioctl(s->fd, USBDEVFS_CLEAR_HALT, &(bt.ep)); return USB_RET_STALL; } } else {