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.
USB Remote Network Driver Interface Specification (RNDIS) enables developers to write IP-based applications that work over USB.
If you wish to use RNDIS on the Symbian platform, you need to be familiar with the the RNDIS specification
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.
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.
A generic mechanism for adding functionality to the IP stack.
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.
Together with RNDIS Control Application provides IP over USB functions.
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.
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.
Retrieves user’s uplink authorization for RNDIS Service.
Notifier to tell the device user that the RNDIS Service cannot be started because PAN NAP is already started.
Notifications from RNDIS Service for uplink requirements.
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.
USB RNDIS provides the following:
RNDIS Class Controller
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 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
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