Skip navigation

emUSB-Device Bulk Component

  • User defined class
  • Highest performance
  • Multi-platform support: Linux, Windows and macOS
  • C, C++ and C# API available
  • Small footprint
j-link-ultra-usb.png

About the Bulk component

The emUSB-Device Bulk component allows developers to quickly and painlessly develop software for an embedded device that communicates with a PC via USB. it offers easy and fast communication without any protocol overhead, allows quick implementation of custom protocols and requires minimal resources to run (memory and endpoints).

Sample Applications emUSB-Device Bulk Component

SEGGER Debug Probe J-Link
J-Link-PLUS-500x.png
Temperature Logger
thermostat.png
Software Protection Dongle
copy-protection-dongle.png

Bulk Component Structure

The emUSB-Device Bulk component stack consists of an embedded side, which is shipped in source code form, and an API for the host. SEGGER provides an easy-to-understand and easy-to-use API which allows an application to communicate with the device. The BULK API can be used on Windows, Linux and macOS systems. It is delivered in source code for Linux distributions and macOS.

Supported Platforms

The BULK API works on all Windows platforms starting with XP Service Pack 2. The API is tested for Linux using kernels 4.x and later and for macOS.

The Kernel Mode Driver (PC)

In order to communicate with a target (client) running emUSB-Device, a bulk kernel mode driver has to be installed on Windows PCs. emUSB-Device can use the generic USB driver WinUSB.sys which is provided by Windows. This driver is installed automatically when the device is connected to the Windows PC the first time. On Linux and macOS no additional driver is necessary, because the kernels already contain generic USB drivers.

Example Application

Example applications for both the target (client) and the PC (host) are supplied. These can be used for testing the correct installation and proper function of the device running emUSB-Device and as a starting point for easy developing an own application.

Components

Components required to use the BULK class:

  • emUSB BULK component
  • emUSB-Device core
  • emUSB target driver