This document is part of a series about Belcarra’s USB Testdrive, a quick and easy system for setting up and testing USB solutions between a Windows host and a Gumstix Overo.
The TestDrive system can be used to test and evaluate various Networking over USB solutions. This document describes
A USB system consists of a host and one or more peripherals, also known as targets. The TestDrive system uses Windows (all recent versions) as the host environment, and the Gumstix Overo as the target.
A base installation Microsoft Windows does not include many tools needed to test a USB system. For the TestDrive, an initial focus of testing is networking using tools available in the Cygwin Project.
This project provides a variety of Linux network tools and scripting tools so that tests can be assembled from the simple scripts. Some are provided by Belcarra in the TestDrive kit, but the user should have no difficulty in constructing other tests that test aspects not covered by the kit, all without writing a line of C code.
In addition, most of the scripts will be symmetric, i.e. will work with minimal modification on the Overo device, allowing device-based tests of the USB link.
The following Windows programs will need to be installed. Visit the web site listed for download and installation procedures.
The Cygwin software suite can be found at http://www.cygwin.com. Once there you can find directions for installing the suite on your computer. A basic introduction to Cygwin can be found at http://www.physionet.org/physiotools/cygwin/.
The default installation of Cygwin does not include some tools which will be needed for USB testing. The required tools can be downloaded with the installation if they are selected from the package installation window which the setup program displays. To add packages click on the small box next to the category to get a list of packages in that category. Find the package and click on the word “Skip” (or the circular arrow icon) to add it to the download.
This is a list of required packages and the categories they are in:
A set of test scripts to assist in the operations that follow is available for download from Belcarra. The scripts include the following
Network stages are best conducted by steps, from basic ping to long term stress tests. These are all described below
The first step is to choose a protocol: CDC-EEM, CDC-ECM, or RNDIS. Belcarra USBLAN supports CDC-EEM and CDC-ECM. CDC-EEM in particular has better performance than RNDIS or CDC-ECM. The tools described below can be used to confirm this.
Belcarra USBLAN has a time limiited (60 minutes) demonstration version which supports CDC-ECM and CDC-EEM on two special Product ID/Vendor ID pairs:
USBLAN includes a built-in DHCP server. This feature is activated for Demo pair 1, but not for Demo pair 2. When the USBLAN DHCP server is active, and Windows is set up as a DHCP client (the default), the Windows side will receive the address 169.254.1.1 and the Overo side will receive the address 169.254.1.2.
By DHCP (see above), determine the address of the Overo end of the link and write it to a Cygwin shell variable.
The first test of a network link is to make sure that layer 3 (IP) packets can be passed back and forth. This, of course, is done with the ping command, basic and flood version.
Note: ping and flood ping are restricted in Windows 7. To use these capabilities, run Cygwin as an administrator. This can be done in two ways:
Basic “ping” issues an ICMP echo request. If the link is set up correctly, the other end of the link will reply. The requests are sent once per second.
A basic ping request is sent as follows in Cygwin:
ping $IP packetsize count #IP should contain the Overo IP address
The parameters are
Note: This command may not work as expected if the Cygwin version of ping is not installed (Windows version is substituted) also has its own ping command with different arguments. To determine which ping you are using, do this:
The reply /usr/bin/ping indicates the Cygwin version.
Using Cygwin, you can greatly increase the stress on the link by adding the flood option to a ping command. This causes the ICMP ECHO requests to be sent 100 times per second.
The output format is changed. A dot is printed for a block of outgoing requests, and erased for replies received.
ping -f $IP
To increase the stress further, increase the packet size:
ping -f $IP 1500
On the Overo side, flood ping is done in a slightly different way:
ping -f -s 1500 $IP
Belcarra has created a script called “pingall” which generalizes flood ping to try every size of test packet from a given minimum (typically 56) to a given maximum (typically 1500).
This script is contained in the test scripts archive described in the Test Scripts
Networks can be benchmarked and put under long-term stability tests two tools
Web/HTTP tests have the advantage that they are representative of practical use of the USB network link. The only complication is that in order to properly capture results in a simple way, a command-line web client should be used.
Using Cygwin, both directions of HTTP operations are symmetrical
The WIN32 version of Apache typically creates the document root as a place like C:/Program Files/Apache Software Foundation/Apache2.2/htdocs. Note the use of / in place of \ for pathnames in Apache and Cygwin. For testfiles, download and unpack Belcarra’s archive of test files (testfiles.zip see Downloads page) and copy them to the document root. These files have names and sizes as follows
A basic HTTP test is extremely simple:
wget -O /dev/null http://$IP/filename
Here the option -O /dev/null means to discard the file. This is important for two different reasons
Here for example is a simple basic Cygwin (Windows) or Linux (Overo) test loop:
IP=169.254.1.2 # IP address of Overo side
while true; do # infinite loop
echo “Starting run $run”
for suffix in 15 16 17 18; do # The four biggest test files
wget -O /dev/null http://$IP/test$suffix
echo “Run $run finished”
run=`expr $run + 1`
The procedure is identical from Cygwin and the Overo. The IP addresss in the two cases will, of course, be different.
iperf is a widely used tool to stress a network link by generating random traffic. The are two roles, client and server. The server side reflects the data back to the client. The iperf tool is available in Cygwin, and it is pre-installed in the Overo Testdrive root filesystem.
The iperf tool has many options. They can be found by issuing a help request:
Here is a useful iperf client command:
iperf -c 169.254.1.2 -t 60 -f M -i 2 -l 32K -d
These options mean:
The following variant just suppresses some useless output lines:
iperf -c 169.254.1.2 -t 60 -f M -i 2 -l 32K -d | grep -v ID
The server side is set up more readily
iperf -s -f M -i 4
To run a test within a single screen, here is a possible procedure
The iperf system is capable almost infinite variation, including the following
Belcarra’s USBLAN Evaluation Driver is available via Windows Update. It is available for use when a device using either of the following Vendor / Product ID’s is plugged into Windows.
Please note that the evaluation driver will only work for sixty minutes at a time.