There is provided a method of communicating diagnostic information between
a Universal Serial Bus (USB) host and a USB device, the USB host
including a host USB controller, a main driver and a host main
application. The method comprises establishing a data pipe in a data
class interface between the USB host and the USB device for data
communication; establishing a diagnostic information pipe in the data
class interface between the USB host and the USB device for diagnostic
information communication; monitoring the data class interface between
the host USB controller and the main driver using a filter driver;
intercepting the diagnostic information in the diagnostic information
pipe of the data class interface using the filter driver; directing the
diagnostic information intercepted by the filter driver to a host
diagnostics application; and directing the data in the data pipe of the
data class interface to the main driver.