Index: /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py	(revision 60548)
+++ /trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py	(revision 60549)
@@ -2010,5 +2010,7 @@
         return fRc;
 
-    def addUsbDeviceFilter(self, sName, sVendorId, sProductId):
+    def addUsbDeviceFilter(self, sName, sVendorId = None, sProductId = None, sRevision = None, \
+                           sManufacturer = None, sProduct = None, sSerialNumber = None, \
+                           sPort = None, sRemote = None):
         """
         Creates a USB device filter and inserts it into the VM.
@@ -2019,10 +2021,24 @@
 
         try:
-            usbDevFilter = self.o.machine.USBDeviceFilters.createDeviceFilter(sName);
-            usbDevFilter.active = True;
-            usbDevFilter.vendorId = sVendorId;
-            usbDevFilter.productId = sProductId;
-            try:
-                self.o.machine.USBDeviceFilters.insertDeviceFilter(0, usbDevFilter);
+            oUsbDevFilter = self.o.machine.USBDeviceFilters.createDeviceFilter(sName);
+            oUsbDevFilter.active = True;
+            if sVendorId is not None:
+                oUsbDevFilter.vendorId = sVendorId;
+            if sProductId is not None:
+                oUsbDevFilter.productId = sProductId;
+            if sRevision is not None:
+                oUsbDevFilter.revision = sRevision;
+            if sManufacturer is not None:
+                oUsbDevFilter.manufacturer = sManufacturer;
+            if sProduct is not None:
+                oUsbDevFilter.product = sProduct;
+            if sSerialNumber is not None:
+                oUsbDevFilter.serialnumber = sSerialNumber;
+            if sPort is not None:
+                oUsbDevFilter.port = sPort;
+            if sRemote is not None:
+                oUsbDevFilter.remote = sRemote;
+            try:
+                self.o.machine.USBDeviceFilters.insertDeviceFilter(0, oUsbDevFilter);
             except:
                 reporter.errorXcpt('insertDeviceFilter(%s) failed on "%s"' \
Index: /trunk/src/VBox/ValidationKit/tests/usb/tdUsb1.py
===================================================================
--- /trunk/src/VBox/ValidationKit/tests/usb/tdUsb1.py	(revision 60548)
+++ /trunk/src/VBox/ValidationKit/tests/usb/tdUsb1.py	(revision 60549)
@@ -315,12 +315,13 @@
             self.oVBox.host.addUSBDeviceSource('USBIP', sGadgetHost, sGadgetHost + (':%s' % oUsbGadget.getUsbIpPort()), [], []);
 
-            # Create device filter
-            fRc = oSession.addUsbDeviceFilter('Compliance device', '0525', 'a4a0');
+            # Create test device gadget and a filter to attach the device automatically.
+            fRc = oUsbGadget.impersonate(usbgadget2.g_ksGadgetImpersonationTest);
             if fRc is True:
-                fRc = oUsbGadget.impersonate(usbgadget2.g_ksGadgetImpersonationTest);
+                iBusId, _ = oUsbGadget.getGadgetBusAndDevId();
+                fRc = oSession.addUsbDeviceFilter('Compliance device', sVendorId = '0525', sProductId = 'a4a0', sPort = str(iBusId));
                 if fRc is True:
 
                     # Wait a moment to let the USB device appear
-                    self.sleep(10);
+                    self.sleep(3);
 
                     tupCmdLine = ('UsbTest', );
