Here you can find information about the port of the iperf tool to the Windows Mobile platform and about adding BlueTooth support to the tool.

NOTE: if you use any of these extensions for your scientific publication, please, cite a technical report, which describes the extensions in more detail.


Windows Mobile porting

The port to the Windows Mobile OS consists of two parts:

  1. iperfWM - iperf tool version 2.0.4 compiled for Windows Mobile .Net Compact Framework as a single-threaded application.
    The source was modified to redirect all the output (standard error and out streams) to files, instead of a console.
  2. runnerWM - a GUI tool, which actually runs the iperf tool and displays the produced output.

The user interacts directly only with the second part, i.e., runnerWM tool. Its screenshots look like the following:

 

It allows a user to choose the executable file of iperfWM, specify any command line arguments and, finally, run the tool. runnerWM starts the iperfWM as a separate process and spawns a thread that periodically checks whether the iperf's log files have been changes; if yes, the thread update the log. All output produced by the iperf is displayed in the Log section runner's window . This log can also be saved for further investigation.

More details about both tools are available in the technical report.

Command line interface
The ported version supports the same set of options recognized by the original iperf tool, with one exception: since the output of the tool is already redirected into a file to be read and displayed by the runnerWM application, the user is not allowed to specify the -o option, which instructs iperf to redirect its output into a file.


BlueTooth support

The iperf tool was extended to support Microsoft BlueTooth communication stack provided natively by Microsoft starting from the introduction of Service Pack 2 to Windows XP. The BlueTooth API provided by Microsoft extends the Windows Sockets 2 API, used by iperf for TCP/UDP programming. In particular, it includes all standard operations required for creating sockets, establishing a connection, sending/receiving data and closing the socket. The main differences are, essentially, at the syntactic details (e.g., the address family being AF_NET and the protocol being RFCOMM) and at the layout of basic data structures, such as a socket address structure. As a result, adding BlueTooth support required intervention in a very limited number of places in the original source, fitting the parameters in the calls for socket creations and casting to/from appropriate data structures to handle information on sockets, such as network address and port number.

More details about the BlueTooth support are available in the technical report.

Command line interface
In order to specify that BlueTooth communication is required, a special command line flag -z was introduced.
This flag should be used in conjunction with other standard flags, such as-c for the client mode and -s for the server mode.

An iperf user has several options to specify the server for BlueTooth communication when running the tool in the client mode. First, there is the usual option of giving the full address of the corresponding server as a parameter for -c option. In the case of BlueTooth, this is an 48-bits address, which should be given in the XX:XX:XX:XX:XX:XX format.
Sometimes, however, the address might not be available or require non-trivial operations to be discovered. For this purpose, the iperf tool can be invoked to perform the BlueTooth server discovery by specifying zero for the server address (i.e., -c 0 option). In this case, the client will make an inquiry for any available BlueTooth devices around and display their addresses and assigned names. In case only one device is found, the client will try to connect to it; otherwise, it will finish the discovery and exit. Finally, the last option to identify the server is to specify some portion of the server's address, e.g., the middle (or last) five digits in the format X:XX:XX. In this case, the client will run server discovery and will try to connect to the server with the address containing the given portion.
Also, since the RFCOMM protocol has only 30 ports available, running iperf with BlueTooth communication will normally require to specify a port from the allowed range, instead of using the default one (5001).

To summarize, the common invocation of iperf in a BlueTooth server mode would be:

iperf -z -s -p 15

while in a BlueTooth client mode it would be:

iperf -z -c 00:09:dd:10:6e:2f -p 15

or:

iperf -z -c 0 -p 15

or:

iperf -z -c 6e:2f -p 15


The extended iperf tool was tested on Samsung i900 (Omnia) mobile phones, running Windows Mobile 6.1 and on devices equipped with BlueTooth radio running Windows XP and Windows Mobile 6.1.
The installation package for the Windows Mobile runnerWM and iperfWM tools (which include also the BlueTooth support) can be downloaded here:

To run the tools, download, unzip, copy to your Windows Mobile device and install in either order. It is advised to put the applications in the "Device" location when prompted.

Before taking any of these steps, please, read the license here.

Note: The runnerWM tool depends on the .Net Compact Framework installed on the device. It can be dowloaded here.

Sources of the modified iperf tool are available upon request.


Feel free to contact me for further details / sources / comments / questions / bug fixes (sakogan@cs.technion.ac.il)

Back to the home page


Last updated: 17.06.10


free hit counters
free hit counters