wmaloader
Version 0.1a
Copyright 2004 Andrew Wild <acw43@cam.ac.uk>

What is it?
-----------
wmaloader is a simple program that allows the Linksys Wireless Media
adapter to be booted from a linux system. It does *not* supply media
files to the device (yet!) but even so it might prove useful to those who
wish to experiment hacking the device.

How does it work?
-----------------
The WMA uses the Simple Service Discovery Protocol (SSDP) to advertise
its presence on the network. When wmaloader discovers the WMA it makes
contact and tells the WMA where to find the image (brain!) needed for
it to boot. Communication takes place within the Universal Plug and
Play Framework (uPnP).

Building
--------
This software requires the Intel uPnP SDK (libupnp). The only version tested
is 1.2.1 but others should work. You can find this
at http://upnp.sourceforge.net. To avoid mysterious uPnP problems ensure
you add a route for multicasting:

route add -net 239.0.0.0 netmask 255.0.0.0 eth0

This must be performed each time your system boot so you probably
want to add it to your system startup scripts.

Before trying to compile wmaloader you should edit the supplied
Makefile to ensure the UPNP_INC and UPNP_LIBS variables are correct:
UPNP_INC should be a path to the uPnP header files (upnp.h etc.)
UPNP_LIBS should be a path to the uPnP shared libraries (libupnp.so etc.)

Then:
$ make

Running
-------
wmaloader does not come with an image to boot your device. You should
be able to find the original image supplied on the installation CD
somewhere like:
/mnt/win/Program Files/Linksys Wireless-B Media Adapter/bootimg/squishguava

Then start wmaloader (root privileges not needed):

$ ./wmaloader --image /path/to/squishguava

Other options include:
--interface   Bind to a specific interface.
--daemon      Detach and run in background. Log to syslog.

Sample output from my system:
acw43@io:~/wma11b/WMALoader$ ./wmaloader --image wmamp.img
  Listening for image transfer on port 32864
  UPnP Library initialised. Using 10.0.0.12:49153
  Querying uuid:0006250ECF2E-AppLoaderClient
  Device reports state: NOT_STARTED
  Device reports firmware version: Ver. 11 R06
  Booting uuid:0006250ECF2E-AppLoaderClient
  Querying uuid:0006250ECF2E-AppLoaderClient
  Device reports state: STARTED


Installing
----------
$ make install

This will install the binary in /usr/local/bin. If you would like to
install it elsewhere edit the DEST variable in the makefile.

Uninstalling
------------
$ make uninstall

Thanks
------
I'd like to express my gratitude to Intel for making the UPnP library
freely available.
