USB RNDIS Overview

USB Remote Network Driver Interface Specification (RNDIS) provides IP connectivity over USB. This enables developers to write IP-based applications that work over USB as well as existing IP bearers such as WiFi, Bluetooth and 3G.

Purpose

USB Remote Network Driver Interface Specification (RNDIS) enables developers to write IP-based applications that work over USB.

Required background

If you wish to use RNDIS on the Symbian platform, you need to be familiar with the the RNDIS specification

Key concepts and terms

Dynamic Host Configuration Protocol (DHCP) client / server

To ensure that the connected PC on the private network has the correct IP address, DHCP Server functionality is used to assign a Windows PC an IP address when the RNDIS network connection is established.

IP forwarding

The ability to forward between two different interfaces on the IP stack. IP forwarding must be enabled in order that NAPT can forward data between the internal and external networks.

IP hooks

A generic mechanism for adding functionality to the IP stack.

RNDIS Control Application

A control application that the device creator provides. Its main function is to start and stop the uplink IAP. It can also use notifications to make more informed decisions.

RNDIS Service

Together with RNDIS Control Application provides IP over USB functions.

Uplink

Communication link from an internal network to an external network. In the case of RNDIS, the communication link uses GPRS. Device creators need to configure the uplink IAP.

USB Control Application

Detects when a USB cable attaches or detaches. Device creators can take that for reference and add the starting and stopping of the RNDIS Control Application.

RNDIS Uplink Authorization Notifier

Retrieves user’s uplink authorization for RNDIS Service.

RNDIS Network Connection Refusal Notifier

Notifier to tell the device user that the RNDIS Service cannot be started because PAN NAP is already started.

RNDIS Requirement P&S Key

Notifications from RNDIS Service for uplink requirements.

Architecture

RNDIS is a USB specification. The Symbian RNDIS implementation is maintained under the framework of USB. It interacts with several networking components.

The diagram below shows the major components in the Symbian platform RNDIS implementation. The components coloured blue are the RNDIS specific components.

Figure 1. Figure 1 - RNDIS components

USB RNDIS Summary

USB RNDIS provides the following:

  • RNDIS Class Controller

    rndisclasscontroller.dll

    The RNDIS Class Controller is an ECOM plug-in to USB Manager. It starts the RNDIS IAP (Internet Access Point) to make a PC connection. USB Manager starts the RNDIS Class Controller when the RNDIS personality is started.

  • RNDIS Agent

    rndisagt.agt

    RNDIS Agent works with the RNDIS packet driver (rndispkt.drv). It issues uplink authorization notification and the uplink requirement notifications (only available in IP modem scenario) and it loads the uplink access IP hook.

  • RNDIS packet driver

    rndispkt.drv

    The RNDIS packet driver is a polymorphic DLL plugin to the ethernet NIF (Ethint.NIF). It provides a connection into the communications subsystem.

Building a ROM including RNDIS

To use RNDIS it is necessary to include the binaries in the ROM. This can be done by specifying the macro SYMBIAN_INCLUDE_USB_RNDIS. In addition usbman.iby must be included.

Note: There is a potential issue with Windows XP. On a Windows XP based computer, a deadlock occurs in RNDIS drivers when the device is removed without first notifying the operating system. This issue may occur when connecting your RNDIS device if RNDIS has been stopped at device side. A hotfix for this issue is available from the Microsoft Windows support site. Please refer to the following link http://support.microsoft.com/kb/959765/en-us

Typical uses

RNDIS enables PCs and mobile devices to establish Ethernet-based network connections. An RNDIS-enabled mobile device can do either of the following:

  • Act as an IP modem

  • Provide local IP connectivity.

Related information