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.
Parent topic: USB RNDIS
Related concepts
Related information
© Nokia 2010.