SETI@Home Service

The SETI@Home service is a Windows NT service that controls a SETI@Home command-line client. Since it is implemented as a service, it is only usable on systems running Windows NT or Windows 2000.

The goal of the SETI@Home Service is to help maximize your system's SETI@Home work-unit output. It uses the command-line client, which elimiates processing cycles that would otherwise be lost to displaying graphics. As a further boost, even the client's text output is disabled. The client is run as a background process, so that it can continually work without impacting anything else you may want to do on your machine.

But the main benefit to running the client as a service is that it runs the client as long as your machine is booted. You no longer need to leave yourself logged on to process work units. If your machine is rebooted while you are away from it for any reason (eg: power outage), the SETI@Home Service will resume processing immediately after your machine reboots. A third way the SETI@Home Service helps you is with network outages. If your network connection happens to be down when the SETI@Home client completes a unit, it will quite likely terminate. This can leave you without any SETI processing for an extended period of time until you come back to the machine and notice the client's window is gone. The SETI@Home Service automaticly detects termination of the SETI@Home client and restarts it. A fourth way the SETI@Home Service helps you is with its handy built-in web server, which can report client status to any connected PC via your web-browser.

The SETI@Home Service requires a command-line SETI@Home client. To ensure the integrity of the results, SETI@Home clients must be downloaded from an approved server, so one is not distributed with this package. A list of approved download sites for the SETI@Home client is available at http://setiathome.ssl.berkeley.edu/unix.html. Look for the latest i386-winnt-cmdline.exe release.

Distributions

There are two distributions of the SETI@Home service available:

The Source Distribution

The SETI@Home Service is a Free Software project. This means that you have the right to a source distribution if you would like to experiment with the service's source code, or just see how it was written. To ensure the most reliability and maintainablity possible, the SETI@Home Service was written in Ada. To build the SETI@Home service from sources, you need an Ada compiler. There is one available at no cost at ftp://cs.nyu.edu/pub/gnat/3.13p/winnt/. Once you have the compiler installed, creating the service is simple. Just open a command shell, "cd" to the directory you extracted the sources into, and type the command "make install".

The install procedure will attempt to download a copy of the command-line SETI@Home client. If your internet access is provided through a proxy server, this will most likely fail. In that case you will need to manually download the SETI@Home client from the SETI@Home project website. It needs to be downloaded into the same directory as the sources, and renamed "setiathome.exe".

Contributions are welcome. I can be reached at dennison@telepath.com.

The Binary Distribution

If you aren't confident enough in your abilities to compile the SETI@Home service from sources, you can download the prebuilt binary distribution. To use it, all you have to do is extract it into a directory along with your SETI@Home command-line client (available at the SETI@Home project website). By default the client will have a large cryptic name that includes its version number (among other things). It will need to be (re)named "setiathome.exe".

There is a command script named "Setup.bat" that should be included in the distribution. If you don't access the internet through a proxy server, you can just run this script to automaticly download the SETI@Home client and configure the SETI@Home client.

The Web Browser Interface

Information about the currently running clients and their progress can be obtained using a web browser on any connected PC. Just point your browser to http://yourmachine:5518 , where "yourmachine" is the IP address or network name of the machine running the SETI@Home Service.

The web server was built using AWS (Ada Web Server)

Deferring to Other Processes

The SETI@Home service has the ability to force the SETI@Home client to stop running whenever another important process is running. This is accomplished by temproarily pausing the SETI@Home client, or by temporarily killing it. This is accomplished by specifying the name of a processs to defer to via the "-pausefor" or the "-stopfor" command-line parameters.

Integration With Outside Tools

SETIQueue

A true power-user will want work-unit caching capability. SETIQueue is the best solution I have seen so far that also runs as a service. To use it with the SETI@Home Service, set up SETIQueue according to its instructions. You will probably also want to follow the instructions to set it up as a service. However, I suggest running it as an application until you are confident that the SETI@Home Service is working with it properly. Make sure to note the IP address and Port Number it is configured with.

Next, install the SETI@Home Service on any machine that can communicate directly with SETIQueue's machine via ethernet (without having to go through a proxy server). Run the install command with the "-proxy" parameter set to the IP address and Port Number of SETIQueue. You can repeat this process for any number of machines in the network. You only need one SETIQueue to service your entire network.

SETIWatch

SETIWatch is a tool created by Mark Loukko that monitors and reports statistics about a currently running SETI client in the same directory. The SETI@Home service is fully compatable with SETIWatch. To use them together, simply install the SETI@Home service, then follow the installation directions for SETIWatch.

SETILog

SETILog is another tool created by Mark Loukko that runs a SETI client and gathers data about each work unit as it completes, for viewing in SETIWatch. The SETI@Home service can be made to work with SETILog by using the following procedure:

  1. Install the SETI@Home Service
  2. Copy setiathome.exe to setiathome-3.0.i386-winnt-cmdline.exe
  3. Download SETILog.exe into the SETI@Home Service's direcotory.
  4. Rename SETILog.exe to setiathome.exe

This will cause the SETI@Home service to run SETILog, which will in turn run the SETI client. The main downside to doing this is that pausing the SETI@Home service will no longer pause the SETI client.

The SETILog-specific parameters may also be specified by adding them to the Command Line value of the registry key HKEY_LOCAL_MACHINE\SOFTWARE\SETI\Service .

Licensing

The SETI@Home Service is licensed under the terms of the GNU Greater Public License (GPL). The license is available in this distribution in the file gpl.txt. The general gist of the license is that, for any distributed software ultimately derived from even a part of this package, you will always have the right to obtain a copy of the sources. Even sources that weren't ever part of this package must be made available under this license if they are linked with sources derived from this package. This is just a description though. Read the actual license for the binding terms.

Note that many Free Ada projects have a series of GPL exceptions, often termed the GMG (Gnat Modified GPL). This facility was purposely not given those exceptions. If you want to use any of the sources, you will probably have to release your software under the GPL. If you want to use some of the Ada bindings in your own software (not the SETI specific stuff), they will be released as their own mini-project under a more liberal license at a later point.

Future

Following is the current wishlist for future versions:

Feedback

Send contributions and comments to dennison@telepath.com