This class specification was offered and introduced by National Instruments and supported with drivers available with NI LabVIEW and NI LabWindows/CVI. This class was introduced in order to support USB interface of test and measurement devices. For such devices there were lots of developments which used GRIB (IEEE488) commands therefore USBTMC is also the same commands-oriented. In fact USBTMC is USB wrapper for GRIB protocol. Due to it they often use USB488 term instead of USBTMC though it’s not quite right: USB488 is only one of USBTMC protocols.
USBTMC specification is available on www.usb.org and doesn’t limit the development engineers with IEEE488 commands, it also allows free commands and data transfer.
USBTMC interface is a collection of endpoints that conforms on a device and can be used to provide the physical/signaling/packet connectivity to a Host. In order to arrange data transfer there should be a special USBTMC client software residenting on the host that could interact with the USB System Software and be able to support the endpoints.
The general communication model for a USBTMC interface can be seen in the following picture:
The control endpoint is required by the USB 2.0 specification.
The Bulk-OUT endpoint is used to send USBTMC command messages to the T&M device. Afterwards these messages are processed in the order they are received. The Host must also use the Bulk-OUT endpoint to set up all transfers on the Bulk-IN endpoint.
The Bulk-IN endpoint is used to send the USBTMC response messages from the device.
The Interrupt-IN endpoint is used by the device to send notifications to the Host. A USBTMC subclass specification may require an Interrupt-IN endpoint. If the interface descriptor has bInterfaceProtocol = 0, then no subclass specification applies and the USBTMC interface is not required to have an Interrupt IN endpoint.
USB official website (USB Implementers Forum, Inc.) - http://www.usb.org/home.
Test & Measurement Class Specifications