Index: /trunk/src/VBox/Main/src-server/linux/USBGetDevices.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/linux/USBGetDevices.cpp	(revision 36993)
+++ /trunk/src/VBox/Main/src-server/linux/USBGetDevices.cpp	(revision 36994)
@@ -1499,10 +1499,10 @@
         PUSBDEVICE pDevices;
 
+        fOK = true;
         pDevices = getDevicesFromUsbfs(pcszRoot, true);
         if (pDevices)
         {
             PUSBDEVICE pDevice;
-            
-            fOK = true;
+
             for (pDevice = pDevices; pDevice && fOK; pDevice = pDevice->pNext)
                 if (access(pDevice->pszAddress, R_OK | W_OK))
Index: /trunk/src/VBox/Main/src-server/linux/USBProxyServiceLinux.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/linux/USBProxyServiceLinux.cpp	(revision 36993)
+++ /trunk/src/VBox/Main/src-server/linux/USBProxyServiceLinux.cpp	(revision 36994)
@@ -115,5 +115,5 @@
      * In the event of both failing, an appropriate error will be returned.
      */
-    bool fUseSysfs;
+    bool fUsbfsChosen = false, fSysfsChosen = false;
     const char *pcszUsbFromEnv = RTEnvGet("VBOX_USB");
     const char *pcszUsbRoot = NULL;
@@ -126,10 +126,10 @@
         {
             LogRel(("Default USB access method set to \"usbfs\" from environment\n"));
-            fUseSysfs = false;
+            fUsbfsChosen = true;
         }
         else if (!RTStrICmp(pcszUsbFromEnv, "SYSFS"))
         {
             LogRel(("Default USB method set to \"sysfs\" from environment\n"));
-            fUseSysfs = true;
+            fSysfsChosen = true;
         }
         else
@@ -144,12 +144,14 @@
     if (!pcszUsbRoot)
     {
-        if (USBProxyLinuxCheckDeviceRoot("/dev/vboxusb", true))
-        {
-            fUseSysfs = true;
+        if (   !fUsbfsChosen
+            && USBProxyLinuxCheckDeviceRoot("/dev/vboxusb", true))
+        {
+            fSysfsChosen = true;
             pcszUsbRoot = "/dev/vboxusb";
         }
-        else if (USBProxyLinuxCheckDeviceRoot("/proc/bus/usb", false))
-        {
-            fUseSysfs = false;
+        else if (   !fSysfsChosen
+                 && USBProxyLinuxCheckDeviceRoot("/proc/bus/usb", false))
+        {
+            fUsbfsChosen = true;
             pcszUsbRoot = "/proc/bus/usb";
         }
@@ -157,5 +159,5 @@
     if (pcszUsbRoot)
     {
-        mUsingUsbfsDevices = !fUseSysfs;
+        mUsingUsbfsDevices = fUsbfsChosen;
         mDevicesRoot = pcszUsbRoot;
 #ifndef UNIT_TEST /* Hack for now */
Index: /trunk/src/VBox/Main/testcase/tstUSBProxyLinux.cpp
===================================================================
--- /trunk/src/VBox/Main/testcase/tstUSBProxyLinux.cpp	(revision 36993)
+++ /trunk/src/VBox/Main/testcase/tstUSBProxyLinux.cpp	(revision 36994)
@@ -91,5 +91,5 @@
     { "sysfs", "/dev/bus/usb", "/dev/usbvbox", false, "/proc/usb/bus", false, VINF_SUCCESS, VINF_SUCCESS, "/dev/bus/usb", false },
     { "sysfs", "/dev/bus/usb", "/dev/usbvbox", false, "/proc/usb/bus", false, VERR_NO_MEMORY, VERR_NO_MEMORY, "/dev/bus/usb", false },
-    { "sysfs", NULL, "/dev/usbvbox", true, NULL, false, VINF_SUCCESS, VINF_SUCCESS, "/dev/vboxusb", false },
+    { "sysfs", NULL, "/dev/vboxusb", true, NULL, false, VINF_SUCCESS, VINF_SUCCESS, "/dev/vboxusb", false },
     { "usbfs", "/dev/bus/usb", NULL, false, NULL, false, VINF_SUCCESS, VINF_SUCCESS, "/dev/bus/usb", true },
     { "usbfs", "/dev/bus/usb", NULL, false, NULL, false, VERR_NO_MEMORY, VERR_NO_MEMORY, "/dev/bus/usb", true },
