code: def add_usb_device_source(self, backend, id_p, address, property_names, property_values):
          
          if not isinstance(backend, basestring):
              raise TypeError("backend can only be an instance of type basestring")
          if not isinstance(id_p, basestring):
              raise TypeError("id_p can only be an instance of type basestring")
          if not isinstance(address, basestring):
              raise TypeError("address can only be an instance of type basestring")
          if not isinstance(property_names, list):
              raise TypeError("property_names can only be an instance of type list")
          for a in property_names[:10]:
              if not isinstance(a, basestring):
                  raise TypeError(
                          "array can only contain objects of type basestring")
          if not isinstance(property_values, list):
              raise TypeError("property_values can only be an instance of type list")
          for a in property_values[:10]:
              if not isinstance(a, basestring):
                  raise TypeError(
                          "array can only contain objects of type basestring")
          self._call("addUSBDeviceSource",
                       in_p=[backend, id_p, address, property_names, property_values])
docs: Adds a new USB device source.
  
          in backend of type str
              The backend to use as the new device source.
  
          in id_p of type str
              Unique ID to identify the source.
  
          in address of type str
              Address to use, the format is dependent on the backend.
              For USB/IP backends for example the notation is host[:port].
  
          in property_names of type str
              Array of property names for more detailed configuration. Not used at the moment.
  
          in property_values of type str
              Array of property values for more detailed configuration. Not used at the moment.