Index: trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp
===================================================================
--- trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp	(revision 94206)
+++ trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp	(revision 94207)
@@ -229,5 +229,5 @@
     { "setextradata",       USAGE_S_NEWCMD, HELP_CMD_SETEXTRADATA, handleSetExtraData,         0 },
     { "setproperty",        USAGE_S_NEWCMD,  HELP_CMD_SETPROPERTY, handleSetProperty,          0 },
-    { "usbfilter",          USAGE_USBFILTER,        VBMG_CMD_TODO, handleUSBFilter,            0 },
+    { "usbfilter",          USAGE_S_NEWCMD,    HELP_CMD_USBFILTER, handleUSBFilter,            0 },
     { "sharedfolder",       USAGE_S_NEWCMD, HELP_CMD_SHAREDFOLDER, handleSharedFolder,         0 },
 #ifdef VBOX_WITH_GUEST_PROPS
Index: trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h
===================================================================
--- trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h	(revision 94206)
+++ trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h	(revision 94207)
@@ -101,5 +101,4 @@
     USAGE_CREATEHOSTIF,
     USAGE_REMOVEHOSTIF,
-    USAGE_USBFILTER,
     USAGE_I_LOADSYMS,
     USAGE_I_LOADMAP,
@@ -139,8 +138,4 @@
 
 
-#define HELP_SCOPE_USBFILTER_ADD        RT_BIT_64(0)
-#define HELP_SCOPE_USBFILTER_MODIFY     RT_BIT_64(1)
-#define HELP_SCOPE_USBFILTER_REMOVE     RT_BIT_64(2)
-
 #ifdef VBOX_WITH_GUEST_CONTROL
 # define HELP_SCOPE_GSTCTRL_RUN             RT_BIT(0)
Index: trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
===================================================================
--- trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 94206)
+++ trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 94207)
@@ -639,47 +639,4 @@
                      "\n", SEP);
 
-    if (enmCommand == USAGE_USBFILTER || enmCommand == USAGE_S_ALL)
-    {
-        if (fSubcommandScope & HELP_SCOPE_USBFILTER_ADD)
-            RTStrmPrintf(pStrm,
-                               "%s usbfilter %s       add <index,0-N>\n"
-                         "                            --target <uuid|vmname>|global\n"
-                         "                            --name <string>\n"
-                         "                            --action ignore|hold (global filters only)\n"
-                         "                            [--active yes|no] (yes)\n"
-                         "                            [--vendorid <XXXX>] (null)\n"
-                         "                            [--productid <XXXX>] (null)\n"
-                         "                            [--revision <IIFF>] (null)\n"
-                         "                            [--manufacturer <string>] (null)\n"
-                         "                            [--product <string>] (null)\n"
-                         "                            [--remote yes|no] (null, VM filters only)\n"
-                         "                            [--serialnumber <string>] (null)\n"
-                         "                            [--maskedinterfaces <XXXXXXXX>]\n"
-                         "\n", SEP);
-
-        if (fSubcommandScope & HELP_SCOPE_USBFILTER_MODIFY)
-            RTStrmPrintf(pStrm,
-                               "%s usbfilter %s       modify <index,0-N>\n"
-                         "                            --target <uuid|vmname>|global\n"
-                         "                            [--name <string>]\n"
-                         "                            [--action ignore|hold] (global filters only)\n"
-                         "                            [--active yes|no]\n"
-                         "                            [--vendorid <XXXX>|\"\"]\n"
-                         "                            [--productid <XXXX>|\"\"]\n"
-                         "                            [--revision <IIFF>|\"\"]\n"
-                         "                            [--manufacturer <string>|\"\"]\n"
-                         "                            [--product <string>|\"\"]\n"
-                         "                            [--remote yes|no] (null, VM filters only)\n"
-                         "                            [--serialnumber <string>|\"\"]\n"
-                         "                            [--maskedinterfaces <XXXXXXXX>]\n"
-                         "\n", SEP);
-
-        if (fSubcommandScope & HELP_SCOPE_USBFILTER_REMOVE)
-            RTStrmPrintf(pStrm,
-                               "%s usbfilter %s       remove <index,0-N>\n"
-                         "                            --target <uuid|vmname>|global\n"
-                         "\n", SEP);
-    }
-
 #ifdef VBOX_WITH_GUEST_PROPS
     if (enmCommand == USAGE_GUESTPROPERTY || enmCommand == USAGE_S_ALL)
Index: trunk/src/VBox/Frontends/VBoxManage/VBoxManageUSB.cpp
===================================================================
--- trunk/src/VBox/Frontends/VBoxManage/VBoxManageUSB.cpp	(revision 94206)
+++ trunk/src/VBox/Frontends/VBoxManage/VBoxManageUSB.cpp	(revision 94207)
@@ -176,18 +176,30 @@
     /* at least: 0: command, 1: index, 2: --target, 3: <target value> */
     if (a->argc < 4)
-        return errorSyntax(USAGE_USBFILTER, Usb::tr("Not enough parameters"));
+        return errorSyntax(Usb::tr("Not enough parameters"));
 
     /* which command? */
     cmd.mAction = USBFilterCmd::Invalid;
-    if      (!strcmp(a->argv[0], "add"))     cmd.mAction = USBFilterCmd::Add;
-    else if (!strcmp(a->argv[0], "modify"))  cmd.mAction = USBFilterCmd::Modify;
-    else if (!strcmp(a->argv[0], "remove"))  cmd.mAction = USBFilterCmd::Remove;
+    if      (!strcmp(a->argv[0], "add"))
+    {
+        cmd.mAction = USBFilterCmd::Add;
+        setCurrentSubcommand(HELP_SCOPE_USBFILTER_ADD);
+    }
+    else if (!strcmp(a->argv[0], "modify"))
+    {
+        cmd.mAction = USBFilterCmd::Modify;
+        setCurrentSubcommand(HELP_SCOPE_USBFILTER_MODIFY);
+    }
+    else if (!strcmp(a->argv[0], "remove"))
+    {
+        cmd.mAction = USBFilterCmd::Remove;
+        setCurrentSubcommand(HELP_SCOPE_USBFILTER_REMOVE);
+    }
 
     if (cmd.mAction == USBFilterCmd::Invalid)
-        return errorSyntax(USAGE_USBFILTER, Usb::tr("Invalid parameter '%s'"), a->argv[0]);
+        return errorSyntax(Usb::tr("Invalid parameter '%s'"), a->argv[0]);
 
     /* which index? */
     if (VINF_SUCCESS !=  RTStrToUInt32Full(a->argv[1], 10, &cmd.mIndex))
-        return errorSyntax(USAGE_USBFILTER, Usb::tr("Invalid index '%s'"), a->argv[1]);
+        return errorSyntax(Usb::tr("Invalid index '%s'"), a->argv[1]);
 
     switch (cmd.mAction)
@@ -200,7 +212,7 @@
             {
                 if (cmd.mAction == USBFilterCmd::Add)
-                    return errorSyntaxEx(USAGE_USBFILTER, HELP_SCOPE_USBFILTER_ADD, Usb::tr("Not enough parameters"));
-
-                return errorSyntaxEx(USAGE_USBFILTER, HELP_SCOPE_USBFILTER_MODIFY, Usb::tr("Not enough parameters"));
+                    return errorSyntax(Usb::tr("Not enough parameters"));
+
+                return errorSyntax(Usb::tr("Not enough parameters"));
             }
 
@@ -332,6 +344,5 @@
                 }
                 else
-                    return errorSyntaxEx(USAGE_USBFILTER, cmd.mAction == USBFilterCmd::Add ? HELP_SCOPE_USBFILTER_ADD : HELP_SCOPE_USBFILTER_MODIFY,
-                                         Usb::tr("Unknown option '%s'"), a->argv[i]);
+                    return errorSyntax(Usb::tr("Unknown option '%s'"), a->argv[i]);
             }
 
@@ -350,5 +361,5 @@
                    )
                 {
-                    return errorSyntaxEx(USAGE_USBFILTER, HELP_SCOPE_USBFILTER_ADD, Usb::tr("Mandatory options not supplied"));
+                    return errorSyntax(Usb::tr("Mandatory options not supplied"));
                 }
             }
@@ -360,5 +371,5 @@
             /* at least: 0: command, 1: index, 2: --target, 3: <target value> */
             if (a->argc < 4)
-                return errorSyntaxEx(USAGE_USBFILTER, HELP_SCOPE_USBFILTER_REMOVE, Usb::tr("Not enough parameters"));
+                return errorSyntax(Usb::tr("Not enough parameters"));
 
             for (int i = 2; i < a->argc; i++)
@@ -382,5 +393,5 @@
             // mandatory options
             if (!cmd.mGlobal && !cmd.mMachine)
-                return errorSyntaxEx(USAGE_USBFILTER, HELP_SCOPE_USBFILTER_REMOVE, Usb::tr("Mandatory options not supplied"));
+                return errorSyntax(Usb::tr("Mandatory options not supplied"));
 
             break;
