Skip navigation
  • Makes any TCP/IP application available using USB
  • No host driver needed for macOS & Linux
  • Small footprint, typically 1.2KB RAM and 1.6KB ROM

CDC-ECM class

emUSB-Device CDC-ECM enables a USB device to act as a virtual network adapter. This can be used to run TCP/IP-based applications over USB

USB-based webserver

The most noteworthy application is a USB-based webserver. The USB webserver allows users to configure their device and to view data using a web browser. This saves development costs as there is no need to develop an application for every major operating system which would allow the user to interact with the USB device. The hardware costs can also be reduced as an Ethernet interface is not required.

ethernet-2-usb-400x.png

Typical Applications

  • Router/gateway
  • USB to Ethernet adapter
  • Configuring a USB device using a web browser

Components

emUSB-Device CDC-ECM comes as a complete package and contains the following components:

  • CDC-ECM device class implementation
  • Network interface driver which uses embOS/IP as a TCP/IP stack
  • A sample application demonstrating how to work with CDC-ECM  

The CDC-ECM Class is a standard USB class protocol defined by the USB.org consortium.
A TCP/IP stack like embOS/IP is required on the USB device side to handle the actual IP communication.
Any available IP protocol (UDP, TCP, FTP, HTTP, etc.) can be used to exchange data.

Linux kernel versions newer than 2.6.22 have full support for CDC-ECM. macOS supports CDC-ECM natively from version 10.4 (Tiger).
For Windows a CDC-ECM driver is required.

One Bulk IN, one Bulk OUT and one Interrupt IN endpoint are required for emUSB-Device CDC-ECM.

emUSB-Device CDC-ECM can be used in combination with other interfaces (Bulk, CDC, MSD, MTP, HID) without any issues.

On a typical Cortex-M CPU running at 120MHz a transfer speed of about 5 MByte/sec can be achieved when using a high-speed USB connection.

Resource Usage by this Component

ROM usage RAM usage
App. 2.8 KByte  App. 200 Byte + size of IP stack