module_param_array(card,  int, NULL, 0444);
 MODULE_PARM_DESC(card,     "card type");
 
+static unsigned int prefer_bulk;
+module_param(prefer_bulk, int, 0644);
+MODULE_PARM_DESC(prefer_bulk, "prefer USB bulk transfers");
+
+
 /* Bitmask marking allocated devices from 0 to EM28XX_MAXBOARDS - 1 */
 static unsigned long em28xx_devused;
 
        }
 
        /* Select USB transfer types to use */
-       if (has_video && !dev->analog_ep_isoc)
+       if (has_video &&
+           (!dev->analog_ep_isoc || (prefer_bulk && dev->analog_ep_bulk)))
                dev->analog_xfer_bulk = 1;
-       if (has_dvb && !dev->dvb_ep_isoc)
+       if (has_dvb &&
+           (!dev->dvb_ep_isoc || (prefer_bulk && dev->dvb_ep_bulk)))
                dev->dvb_xfer_bulk = 1;
 
        snprintf(dev->name, sizeof(dev->name), "em28xx #%d", nr);