Chapter 159. RNDIS Target USB driver


eCosPro-RNDIS is eCosCentric's commercial name for the USB peripheral device CYGPKG_DEVS_ETH_USB_RNDIS package. The package is not included as standard in eCosPro Developer's Kit releases, but is available as a separate add-on package.

The CYGPKG_DEVS_ETH_USB_RNDIS package implements a USB peripheral device Remote NDIS transport driver. The current implementation makes use of the generic Ethernet driver package CYGPKG_DEVS_ETH_GENERIC_DIRECT to integrate with the lwIP TCP/IP stack.

This driver has been tested against a range of host operating systems, including:

  • Linux

    Most modern Linux distributions will, by default, have support for RNDIS USB devices. For example, Ubuntu 12, CentOS 6, etc. The target driver has been explicitly tested against 2.6 and 3.8 kernel based hosts.

  • Mac OS X

    The 3rd-party, open-source, HoRNDIS driver needs to be installed on the host. The eCos RNDIS driver has been explicitly tested against Mac OS X versions 10.8.5 and 10.9, though earlier versions of Mac OS X should present no problems assuming available HoRNDIS support.

  • Windows

    Windows XP (SP2), 7 (SP1), 8 and 8.1 have been testing using the standard Windows RNDIS host driver support.

The RNDIS peripheral driver is currently limited to use with the lwIP network stack, and is not available for the BSD network stacks. This is a limitation of the parent CYGPKG_DEVS_ETH_GENERIC_DIRECT package, and not explicitly a limitation of this RNDIS peripheral driver.

Normally the eCos lwIP network interface should be configured to use AutoIP, so that a link-local network address is assigned. This ensures that when connected to hosts that do not provide a DHCP daemon, or support for routing to manual or application set network addresses, an automatic connection is still configured.

One side-effect of the RNDIS networking model (as opposed to CDC-EEM for example) is that two network interfaces exist; the host-end network interface created by the host O/S, and the peripheral lwIP interface providing the target application networking. This means that each device configured to use the RNDIS USB target driver needs to provide two IEEE MAC addresses. The platform HAL support supplying the MAC address to this driver, in conjunction with the developer/manufacturer build world, must be aware of the requirements for managing the “unique identity” 24-bit MAC space in conjunction with the 24-bit IEEE OUI space specific to the device manufacturer.

Documentation license for this page: eCosPro License