USB Endpoint Terminal
Requires: | org.jancy.io.usb |
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.