Index: /trunk/src/VBox/Frontends/VBoxShell/vboxshell.py
===================================================================
--- /trunk/src/VBox/Frontends/VBoxShell/vboxshell.py	(revision 48284)
+++ /trunk/src/VBox/Frontends/VBoxShell/vboxshell.py	(revision 48285)
@@ -207,5 +207,5 @@
     oVBoxMgr = _ctx['global'];
     if oVBoxMgr.errIsOurXcptKind(e):
-        print colored('%s: %s' % (oVBoxMgr.errToString(e), oVBoxMgr.errGetMessage(e)), 'red');
+        print colored('%s: %s' % (oVBoxMgr.xcptToString(e), oVBoxMgr.xcptGetMessage(e)), 'red');
     else:
         print colored(str(e), 'red')
@@ -845,6 +845,5 @@
     def enum(self):
         return [XPathNodeHolderNIC(self, self.obj),
-                XPathNodeValue(self, self.obj.BIOSSettings,  'bios'),
-                XPathNodeValue(self, self.obj.USBController, 'usb')]
+                XPathNodeValue(self, self.obj.BIOSSettings,  'bios'), ]
 
 class XPathNodeHolderNIC(XPathNodeHolder):
@@ -992,6 +991,4 @@
     if mach.audioAdapter.enabled:
         print "  Audio [via audioAdapter]: chip %s; host driver %s" % (asEnumElem(ctx, "AudioControllerType", mach.audioAdapter.audioController), asEnumElem(ctx, "AudioDriverType",  mach.audioAdapter.audioDriver))
-    if mach.USBController.enabled:
-        print "  USB [via USBController]: high speed %s" % (asState(mach.USBController.enabledEHCI))
     print "  CPU hotplugging [CPUHotPlugEnabled]: %s" % (asState(mach.CPUHotPlugEnabled))
 
@@ -1004,4 +1001,11 @@
     except:
         pass
+
+    print
+    print colCat(ctx, "  USB Controllers:")
+    for oUsbCtrl in ctx['global'].getArray(mach, 'USBControllers'):
+        print "    '%s': type %s  standard: %#x" \
+            % (oUsbCtrl.name, asEnumElem(ctx, "USBControllerType", oUsbCtrl.type), oUsbCtrl.USBStandard);
+
     print
     print colCat(ctx, "  I/O subsystem info:")
@@ -1012,5 +1016,5 @@
     if controllers:
         print
-        print colCat(ctx, "  Controllers:")
+        print colCat(ctx, "  Storage Controllers:")
     for controller in controllers:
         print "    '%s': bus %s type %s" % (controller.name, asEnumElem(ctx, "StorageBus", controller.bus), asEnumElem(ctx, "StorageControllerType", controller.controllerType))
@@ -3524,21 +3528,36 @@
 
     if options.autopath:
-        cwd = os.getcwd()
+        asLocations = [ os.getcwd(), ];
+        try:    sScriptDir = os.path.dirname(os.path.abspath(__file__));
+        except: pass; # In case __file__ isn't there.
+        else:
+            if platform.system() in [ 'SunOS', ]:
+                asLocations.append(os.path.join(sScriptDir, 'amd64'));
+            asLocations.append(sScriptDir);
+
+
         vpp = os.environ.get("VBOX_PROGRAM_PATH")
-        if    vpp is None \
-          and (   os.path.isfile(os.path.join(cwd, "VirtualBox")) \
-               or os.path.isfile(os.path.join(cwd, "VirtualBox.exe")) ):
-            vpp = cwd
-            print "Autodetected VBOX_PROGRAM_PATH as", vpp
-            os.environ["VBOX_PROGRAM_PATH"] = vpp
-            sys.path.append(os.path.join(vpp, "sdk", "installer"))
+        if vpp is None:
+            for sCurLoc in asLocations:
+                print "checking '%s'..." % (sCurLoc,)
+
+                if   os.path.isfile(os.path.join(sCurLoc, "VirtualBox")) \
+                  or os.path.isfile(os.path.join(sCurLoc, "VirtualBox.exe")):
+                    print "Autodetected VBOX_PROGRAM_PATH as", sCurLoc
+                    os.environ["VBOX_PROGRAM_PATH"] = sCurLoc
+                    sys.path.append(os.path.join(sCurLoc, "sdk", "installer"))
+
         vsp = os.environ.get("VBOX_SDK_PATH")
-        if vsp is None and os.path.isfile(os.path.join(cwd, "sdk", "bindings", "VirtualBox.xidl")) :
-            vsp = os.path.join(cwd, "sdk")
-        if vsp is None and vpp is not None and os.path.isfile(os.path.join(vpp, "sdk", "bindings", "VirtualBox.xidl")) :
-            vsp = os.path.join(vpp, "sdk")
-        if vsp is not None :
-            print "Autodetected VBOX_SDK_PATH as", vsp
-            os.environ["VBOX_SDK_PATH"] = vsp
+        if vsp is None:
+            for sCurLoc in asLocations:
+                if os.path.isfile(os.path.join(sCurLoc, "sdk", "bindings", "VirtualBox.xidl")):
+                    print "Autodetected VBOX_SDK_PATH as", sCurLoc
+                    os.environ["VBOX_SDK_PATH"] = sCurLoc
+                    sTmp = os.path.join(sCurLoc, 'sdk', 'bindings', 'xpcom', 'python');
+                    if os.path.isdir(sTmp):
+                        sys.path.append(sTmp);
+                    del sTmp;
+        del vsp, vpp, asLocations;
+
 
     #
