#include <linux/usb.h>
 
 
+/*-------------------------------------------------------------------------*/
+
+static int override_alt = -1;
+module_param_named(alt, override_alt, int, 0644);
+MODULE_PARM_DESC(alt, ">= 0 to override altsetting selection");
+
 /*-------------------------------------------------------------------------*/
 
 /* FIXME make these public somewhere; usbdevfs.h? */
                iso_in = iso_out = NULL;
                alt = intf->altsetting + tmp;
 
+               if (override_alt >= 0 &&
+                               override_alt != alt->desc.bAlternateSetting)
+                       continue;
+
                /* take the first altsetting with in-bulk + out-bulk;
                 * ignore other endpoints and altsettings.
                 */
 
 found:
        udev = testdev_to_usbdev(dev);
+       dev->info->alt = alt->desc.bAlternateSetting;
        if (alt->desc.bAlternateSetting != 0) {
                tmp = usb_set_interface(udev,
                                alt->desc.bInterfaceNumber,
                        wtest = " intr-out";
                }
        } else {
-               if (info->autoconf) {
+               if (override_alt >= 0 || info->autoconf) {
                        int status;
 
                        status = get_endpoints(dev, intf);