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:
iperfWM - iperf tool version
2.0.4 compiled for Windows Mobile .Net Compact Framework as a single-threaded
application.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