USB Endpoint Terminal

USB Endpoint Terminal

The USB Endpoint plugin allows you to perform low-level interactions with a USB device by initiating USB control, bulk, interrupt, or isochronous transfers.

This functionality is especially useful when developing non-standard USB devices that do not fall into any predefined USB classes. In such cases, you can't simply use operating system-provided facilities to communicate with your device. With the USB Endpoint plugin, however, you can send carefully crafted commands over OUT-endpoints and inspect the replies from the device over IN-endpoints.

The USB Endpoint plugin allows you to read from multiple IN-endpoints (even on multiple USB interfaces) simultaneously.

As the engine for low-level USB communications, we use the industry-standard library libusb. Therefore, you can think of the USB Endpoint plugin as a convenient UI frontend to libusb.

Control Transfers

You can also initiate control transfers (EP0) on a USB device to fetch device/configuration/endpoint descriptors, read device string identifiers, send custom commands, and so forth. Conveniently fill control transfer parameters (type, request, index, value) in the form; for OUT-transfers, prepare the data buffer in the Transmit Pane; and then hit the small Send button right below the control transfer parameters form.

Windows Drivers

As noted above, the USB Endpoint plugin is powered by libusb. On Windows, libusb can only operate on a device if it's running one of the few supported drivers, the most popular of which is the Microsoft-supplied WINUSB.SYS that is present on all Windows installations by default.

As such, to use USB Endpoint with a device on Windows, you need to install WINUSB.SYS for the device first. Please read the official installation guide from Microsoft. Alternatively, you can use Zadig or other third-party USB driver installation utilities.