goto rc_dev_fail;
 
        /* wire up inbound data handler */
-       usb_fill_int_urb(ir->urb_in, dev, pipe, ir->buf_in, maxp,
-                               mceusb_dev_recv, ir, ep_in->bInterval);
+       if (usb_endpoint_xfer_int(ep_in))
+               usb_fill_int_urb(ir->urb_in, dev, pipe, ir->buf_in, maxp,
+                                mceusb_dev_recv, ir, ep_in->bInterval);
+       else
+               usb_fill_bulk_urb(ir->urb_in, dev, pipe, ir->buf_in, maxp,
+                                 mceusb_dev_recv, ir);
+
        ir->urb_in->transfer_dma = ir->dma_in;
        ir->urb_in->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;