Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 51321)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 51322)
@@ -1576,9 +1576,8 @@
             && aMachine.GetUSBProxyAvailable())
         {
-            /* the USB controller may be unavailable (i.e. in VirtualBox OSE) */
-
-            ULONG cOhciCtls = aMachine.GetUSBControllerCountByType(KUSBControllerType_OHCI);
-
-            if (cOhciCtls)
+            /* The USB controller may be unavailable (i.e. in VirtualBox OSE): */
+            if (aMachine.GetUSBControllers().isEmpty())
+                item = QString(sSectionItemTpl1).arg(tr("Disabled", "details report (USB)"));
+            else
             {
                 CUSBDeviceFilterVector coll = flts.GetDeviceFilters();
@@ -1593,7 +1592,4 @@
                                  .arg (coll.size()).arg (active));
             }
-            else
-                item = QString (sSectionItemTpl1)
-                       .arg (tr ("Disabled", "details report (USB)"));
 
             report += sectionTpl
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp	(revision 51321)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp	(revision 51322)
@@ -392,12 +392,8 @@
         QString strFullData;
 
-
-        /*
-         * Check whether there is at least one OHCI USB controllers with
-         * an available proxy.
-         */
-        const CUSBDeviceFilters &filters = machine.GetUSBDeviceFilters();
-        ULONG cOhciCtls = machine.GetUSBControllerCountByType(KUSBControllerType_OHCI);
-        bool fUSBEnabled = !filters.isNull() && cOhciCtls && machine.GetUSBProxyAvailable();
+        /* Check whether there is at least one USB controller with an available proxy. */
+        bool fUSBEnabled =    !machine.GetUSBDeviceFilters().isNull()
+                           && !machine.GetUSBControllers().isEmpty()
+                           && machine.GetUSBProxyAvailable();
 
         setState(fUSBEnabled ? KDeviceActivity_Idle : KDeviceActivity_Null);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 51321)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 51322)
@@ -1553,8 +1553,8 @@
     /* USB stuff: */
     {
-        /* Check whether there is at least one OHCI USB controllers with an available proxy. */
-        const CUSBDeviceFilters &filters = machine.GetUSBDeviceFilters();
-        ULONG cOhciCtls = machine.GetUSBControllerCountByType(KUSBControllerType_OHCI);
-        bool fUSBEnabled = !filters.isNull() && cOhciCtls && machine.GetUSBProxyAvailable();
+        /* Check whether there is at least one USB controllers with an available proxy. */
+        bool fUSBEnabled =    !machine.GetUSBDeviceFilters().isNull()
+                           && !machine.GetUSBControllers().isEmpty()
+                           && machine.GetUSBProxyAvailable();
 
         /* Show/Hide USB menu depending on controller availability, activity and USB-proxy presence: */
@@ -1566,6 +1566,5 @@
         /* Check whether there is an accessible video input devices pool: */
         const CHostVideoInputDeviceVector &webcams = host.GetVideoInputDevices(); Q_UNUSED(webcams);
-        ULONG cOhciCtls = machine.GetUSBControllerCountByType(KUSBControllerType_OHCI);
-        bool fWebCamsEnabled = host.isOk() && cOhciCtls;
+        bool fWebCamsEnabled = host.isOk() && !machine.GetUSBControllers().isEmpty();
 
         /* Show/Hide WebCams menu depending on ExtPack availability: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 51321)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 51322)
@@ -495,7 +495,7 @@
         if (indicatorsPool()->indicator(IndicatorType_USB))
         {
-            const CUSBDeviceFilters &filters = m.GetUSBDeviceFilters();
-            ULONG cOhciCtls = m.GetUSBControllerCountByType(KUSBControllerType_OHCI);
-            bool fUSBEnabled = !filters.isNull() && cOhciCtls && m.GetUSBProxyAvailable();
+            bool fUSBEnabled =    !m.GetUSBDeviceFilters().isNull()
+                               && !m.GetUSBControllers().isEmpty()
+                               && m.GetUSBProxyAvailable();
 
             if (!fUSBEnabled)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElements.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElements.cpp	(revision 51321)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElements.cpp	(revision 51322)
@@ -910,5 +910,5 @@
             {
                 const CUSBDeviceFilters &flts = machine().GetUSBDeviceFilters();
-                if (!flts.isNull() && machine().GetUSBControllerCountByType(KUSBControllerType_OHCI))
+                if (!flts.isNull() && !machine().GetUSBControllers().isEmpty())
                 {
                     const CUSBDeviceFilterVector &coll = flts.GetDeviceFilters();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 51321)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 51322)
@@ -821,11 +821,7 @@
 #endif /* VBOX_WITH_VIDEOHWACCEL */
 
-        /* Enable OHCI controller if HID is enabled: */
-        if (pSystemPage && pSystemPage->isHIDEnabled())
-        {
-            ULONG cOhciCtls = m_machine.GetUSBControllerCountByType(KUSBControllerType_OHCI);
-            if (!cOhciCtls)
-                m_machine.AddUSBController("OHCI", KUSBControllerType_OHCI);
-        }
+        /* Enable OHCI controller if HID is enabled but no USB controllers present: */
+        if (pSystemPage && pSystemPage->isHIDEnabled() && m_machine.GetUSBControllers().isEmpty())
+            m_machine.AddUSBController("OHCI", KUSBControllerType_OHCI);
 
         /* Disable First RUN Wizard: */
@@ -1101,5 +1097,5 @@
             if (   !m_machine.isReallyOk()
                 && controllerColl.size() > 0
-                && m_machine.GetUSBControllerCountByType(KUSBControllerType_OHCI))
+                && !m_machine.GetUSBControllers().isEmpty())
                 msgCenter().warnAboutUnaccessibleUSB(m_machine, parentWidget());
             break;
