<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<TITLE>Production and testing: Software setup</TITLE>
<BODY bgcolor="#ffffff" link="#000000" vlink="#404040">

<INCLUDE file="style.inc">

<PAGE_BAR title="Production and testing">
  <PAGE_CURR href="setup.html">Software setup</PAGE_CURR>
  <PAGE_ITEM href="flash.html">Flashing</PAGE_ITEM>
  <PAGE_ITEM href="test.html">Functional test</PAGE_ITEM>
  <PAGE_ITEM href="analysis.html">Fault analysis</PAGE_ITEM>
</PAGE_BAR>

<SECTION_BAR>
  <SECTION_ITEM href="#intro">Introduction</SECTION_ITEM>
  <SECTION_ITEM href="#pcsw">PC installation</SECTION_ITEM>
  <SECTION_ITEM href="#bensw">Ben installation</SECTION_ITEM>
  <SECTION_ITEM href="#bensys">Ben setup</SECTION_ITEM>
  <SECTION_ITEM href="#profiles">Test profiles</SECTION_ITEM>
</SECTION_BAR>


<!-- ====================================================================== -->


<SECTION ref="intro" title="Introduction">

Before performing production tests, various pieces of software
need to be installed on Ben and PC, and configuration settings may
have to be adjusted. The following sections describe the installation
and configuration process.


<!-- ====================================================================== -->


<SECTION ref="pcsw" title="PC software installation">

For a DUT and reference device role, the ben-wpan tools
and the test scripts have to be installed on the PC. For flashing the
<B>atusb</B> application
firmware, also dfu-util and the firmware binary are required.
<P>
The instructions below assume that a complete development environment
is already present on the PC, including SDL, SDL_gfx, and GSL.
If any prerequisites are not met,
compilation will fail, and you'll have to install the corresponding
package and try again.


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Install ben-wpan tools">

To build the ben-wpan tools and install them under
<SAMP>/usr/local/</SAMP> on the local machine,
run the following commands:
<PRE>
git clone git://projects.qi-hardware.com/ben-wpan.git
cd ben-wpan/tools
make
make install
</PRE>
<P>
A different directory prefix can be chosen by overriding the
<SAMP>INSTALL_PREFIX</SAMP> variable, e.g.,
<PRE>
make INSTALL_PREFIX=/usr install
</PRE>
<P>
Note that the test scripts expect <SAMP>${INSTALL_PREFIX}/bin</SAMP>
to be in <SAMP>PATH</SAMP>.


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Install test scripts">

The test scripts are in the directory <SAMP>prod/</SAMP> of the
ben-wpan project. They currently are designed to be run from
this directory. Therefore, all that's necessary is to check out the
repository, as shown above.


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Install dfu-util">

dfu-util is used to transfer the application firmware to
<B>atusb</B> boards. To build dfu-util from source, run these
commands:

<PRE>
git clone git://git.openezx.org/dfu-util.git
cd dfu-util
./autogen.sh
./configure
make
make install
</PRE>

Note that some Linux distributions already provide a pre-compiled
version of dfu-util, which could be used instead of building
it from source.


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Install and run NTP">

The clock frequency test for <B>atusb</B> measures the clock frequency
relative to the PC clock. Many PC clocks are highly inaccurate, which
would render the result of the measurement meaningless. To improve the
quality of the reference clock, it should be disciplined by NTP.
<P>
If NTP is not available, it may be necessary to increase the test's
tolerance by changing the variable <SAMP>CLOCK_DRIFT_PPM</SAMP> in
the script <SAMP>atusb</SAMP>.


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Install firmware binary">

The binary of the application running on <B>atusb</B> is transferred from
the PC. To download a pre-compiled version, use this command:

<PRE>
wget -O atusb.bin \
     http://downloads.qi-hardware.com/people/werner/wpan/bindist/atusb-ce16a16.bin
</PRE>

Instructions for building the binary from sources are
<A href="http://projects.qi-hardware.com/index.php/p/ben-wpan/source/tree/master/atusb/fw/README">here</A>.


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Register Ben host name">

To simplify accessing the Ben via TCP/IP, its IP address should be
registered in the <SAMP>/etc/hosts</SAMP> file on the PC. If the Ben is
running OpenWrt, use the following command:
<PRE>
echo 192.168.254.101 ben >>/etc/hosts
</PRE>
<P>
If the Ben is running Jlime, the address would be as follows:
<PRE>
echo 192.168.1.202 ben >>/etc/hosts
</PRE>
<P>
If using the same PC with Bens running OpenWrt and Jlime, one may choose
different host names depending on the distribution, and adapt the commands
used in the production and testing process accordingly. For example,
<PRE>
echo 192.168.254.101 ben >>/etc/hosts
echo 192.168.1.202 jlime >>/etc/hosts
</PRE>


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Customize test scripts">

If using <SAMP>prod/Makefile</SAMP> to run the production test process,
the names of the drivers for DUT and reference device are defined
through variables at the beginning of the Makefile. In particular,
if the host name or IP address under which the Ben is reached differs from
"ben", the value of <SAMP>ATBEN_DUT</SAMP> and <SAMP>ATUSB_REF</SAMP>
will have be changed accordingly.
<P>
The Makefile also contains the variable <SAMP>SPECTRUM_MARGIN</SAMP> that
defines how many dB of tolerance should be allowed below and above the
reference signal strength. The default is to allow a margin of 5 dB in
either direction.
<P>
The scripts <SAMP>atusb</SAMP> and <SAMP>atusb-flash</SAMP> also contain
configuration variables. If the names of the files containing the
<B>atusb</B> firmware binaries are not <SAMP>boot.hex</SAMP> and
<SAMP>atusb.bin</SAMP>, <SAMP>atusb-flash</SAMP> needs to be adapted.


<!-- ====================================================================== -->


<SECTION ref="bensw" title="Ben software installation">

For a DUT and reference device role, the ben-wpan utilities
have to be installed on a Ben. For flashing the <B>atusb</B> boot
loader, also avrdude and the boot loader binary are needed.
<P>
The instructions below apply for OpenWrt and Jlime. For building
things from source, a cross-compilation toolchain has to be installed
on the PC.


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Password-less remote access">

To enable password-less remote access from the PC, set up network
access to the Ben and run the following command:
<PRE>
ssh ben 'cat >>/etc/dropbear/authorized_keys' <~/.ssh/id_rsa.pub
</PRE>


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Install ben-wpan tools">

To build and install the ben-wpan tools on the Ben, first set
up networking between the PC and the Ben. If you have not yet checked
out the project's repository, run these commands:

<PRE>
git clone git://projects.qi-hardware.com/ben-wpan.git
cd ben-wpan/tools
</PRE>

If you have already checked out the repository, <SAMP>cd</SAMP> to
<SAMP>ben-wpan/tools/</SAMP> and run

<PRE>
make clean
</PRE>

Next, if on OpenWrt, compile the tools with
<PRE>
make TARGET=ben_openwrt
</PRE>

If on Jlime, use
<PRE>
make TARGET=ben_jlime
</PRE>

Finally, upload the tools to the Ben and install them under
<SAMP>/usr/bin/</SAMP> with

<PRE>
make HOST=ben upload
</PRE>

Where <SAMP>ben</SAMP> is the host name or IP address assigned to the Ben.


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Install avrdude">

The <B>atusb</B> boot loader is flashed using avrdude. A pre-compiled
static binary (suitable for OpenWrt and Jlime) can be installed by running
the following two commands on the Ben:

<PRE>
wget http://downloads.qi-hardware.com/people/werner/wpan/bindist/avrdude-5.10-de72af351f661b538add81cbc9965278a2f8c40c.tar.gz
tar -xz -C / -f avrdude-5.10-de72af351f661b538add81cbc9965278a2f8c40c.tar.gz
</PRE>

Instructions for building avrdude from sources are
<A href="http://projects.qi-hardware.com/index.php/p/ben-blinkenlights/source/tree/master/avrdude/README
">here</A>.


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Install boot-loader binary">

The binary of the boot loader running on <B>atusb</B> is transferred from
the Ben. To download a pre-compiled version, use this command:

<PRE>
wget -O boot.hex \
   http://downloads.qi-hardware.com/people/werner/wpan/bindist/boot-ce16a16.hex
</PRE>

Instructions for building the binary from sources are
<A href="http://projects.qi-hardware.com/index.php/p/ben-wpan/source/tree/master/atusb/fw/README">here</A>.


<!-- ====================================================================== -->


<SECTION ref="bensys" title="Ben system setup">

The configuration settings described in this section are lost on each
reset or reboot and need to be entered again. Alternatively,
a setup script running at boot time can be written.


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Enable network access">

Once the Ben has booted and started USB networking, the interface
on the PC side is configured as follows:
<PRE>
ifconfig usb0 192.168.254.100 up
</PRE>
<P>
These are the settings for OpenWrt, assuming the network device is
called "usb0". If using Jlime, the command would be as follows:
<PRE>
ifconfig usb0 192.168.1.200 up
</PRE>


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Silence other 8:10 card users">

Before running any of the ben-wpan utilities, other users of the 8:10
card slot have to be disabled. In a Ben running the regular OpenWrt or
Jlime distribution, the only such user that is automatically started
is the MMC kernel driver. The following command disables it:
<PRE>
echo jz4740-mmc.0 >/sys/bus/platform/drivers/jz4740-mmc/unbind
</PRE>
<P>
If a WPAN-enabled kernel has been installed, the AT86RF230 driver takes
the place of the MMC driver. To disable it, run
<PRE>
echo spi2.0 >/sys/bus/spi/drivers/at86rf230/unbind
</PRE>
Note that the above command only has the desired effect if used
before running any of the user-space tools. If the kernel driver and
the user-space tools have already clashed over access to the board, the
driver will not unbind and a reboot is needed.


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Start atrf-proxy">

On the Ben, launch the proxy daemon. We pass the option -b to background it:
<PRE>
atrf-proxy -b
</PRE>


<!-- ====================================================================== -->


<SECTION ref="profiles" title="Test profiles">

Some of the functional tests measure characteristics that are strongly
influenced by the test setup. It is therefore not possible to provide
universally applicable reference values, but they have to be measured
in the actual test environment.


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Clock count (atben only)">

Insert a known to be good <B>atben</B> board and run the following
command directly on the Ben to record the reference value for the
clock count with an accuracy of roughly +/&minus;20 ppm:

<PRE>
atrf-xtal 1000 >ben.xtal
</PRE>
<P>
This takes about 5 seconds.
<P>
Note that the result depends on the tolerance of the crystal in the Ben
and is also affected by temperature. Good accuracy can therefore
only be obtained if this measurement is performed individually on each
Ben, and if a stable temperature is maintained.


<!-- ---------------------------------------------------------------------- -->


<SUBSECTION title="Signal strength">

The signal strength of a DUT is assessed by comparing it with
measurements previously obtained in the same setup, with a known to
be good device taking the role of the DUT. It is therefore necessary
to establish a reference profile each time the test environment changes,
e.g., when changing location or when using a different reference device.
<P>
The physical arrangement of the devices should have the characteristics
described in <A href="test.html#atben">the test section</A>. The orientation
of the devices should be chosen such that the overall signal strength is
near its maximum, that the spectrum is relatively "flat", and that small
changes in the orientation only produce small variations in the measured
signal strength.
<P>
To generate the profiles for <B>atben</B> and <B>atusb</B>, simply run
<PRE>
make spectrum
</PRE>
Then place the devices appropriately and press <B>D</B>
to use the displayed spectrum as the reference. Multiple spectra
can be merged into the reference, e.g., if unavoidable environmental
variations cause
significant changes. Spectra included in the reference are shown in blue.
<P>
After a obtaining the reference spectrum, press <B>Q</B> to exit. The
Makefile will then record the signal strength limits for an <B>atben</B>
DUT in the file <SAMP>ben.profile</SAMP> and proceed with the reverse
measurement, i.e., with <B>atusb</B> acting as the DUT.


<END author="Werner Almesberger" date="<GEN_DATE>">
</BODY>
</HTML>
