› projects
› PocketPC
 

Radio Interface Layer Research

The Radio Interface Layer (RIL) is the interface between the Pocket PC and the radio module. In the case of the XDA this is the GSM module. Because the GSM part and the Pocket PC run on separate CPU's, no direct control over the GSM modules code is possible. It is interfaced through a serial line with the StrongARM. On top of RIL Microsoft built a few other interfaces such as the SMS interface. Although this interface was made somewhat public, the RIL interface hasn't been.

One of the troublesome parts of the RIL is that it blocks access to the GSM AT command interface. This results in denying developers direct access, for example to overcome problems with the existing interfaces. An example is that the AT%UREG command cannot be sent directly from the device, but needs to be sent through a serial cable in bootloader mode.
A more detailed description of the RIL was found in a patent application that Microsoft did to the European Patent Office. In application EP1233343 a description can be found of how the RIL works and an appendix describing the API itself. Luckily this description was quite detailed, so it was possible to write an example application that makes use of this API to display incoming SMS messages.

The RIL also implements a special multiplexing of commands and data over the same serial port. Microsoft calls this the Virtual Serial Port (VSP), which is described in a separate patent EP1233631.

As can be seen from the diagram below, RIL is divided into two parts. The device driver part and the RIL proxy which has the form of a DLL that is linked to an application. The proxy and the device driver communicate through a device handle and IO controls.

An example of how the RIL can be used can be found in this Embedded Visual C++ project called tstril.zip. The project contains a compiled application, but can be further developed using the Embedded Visual Tools 3.0 from Microsoft.