void *ctrl;
        struct usb_device *dev;
        int i, start_index = 0;
+       int controllers_initialized = 0;
        int ret;
 
        dev_index = 0;
                ret = usb_lowlevel_init(i, USB_INIT_HOST, &ctrl);
                if (ret == -ENODEV) {   /* No such device. */
                        puts("Port not available.\n");
+                       controllers_initialized++;
                        continue;
                }
 
                 * lowlevel init is OK, now scan the bus for devices
                 * i.e. search HUBs and configure them
                 */
+               controllers_initialized++;
                start_index = dev_index;
                printf("scanning bus %d for devices... ", i);
                dev = usb_alloc_new_device(ctrl);
 
        debug("scan end\n");
        /* if we were not able to find at least one working bus, bail out */
-       if (!usb_started) {
+       if (controllers_initialized == 0)
                puts("USB error: all controllers failed lowlevel init\n");
-               return -1;
-       }
 
-       return 0;
+       return usb_started ? 0 : -1;
 }
 
 /******************************************************************************