EGG Project Host-Site Setup

This is a brief and very general discussion of the installation and operation of the egg software. Please note what problems you encounter and let me know how best to improve this process. For immediate help, you can reach me by email at This is adapted from instructions for newcomers to unix who will be using a prepared machine, but the notes may be of some use for others. For clarity, I'll type computer commands inside quotes; invoke the command by typing enter. You can retrieve recent commands with the cursor up arrow and edit them by backspacing.

1. Logging on

The GCP software should be installed in its own subdirectory within your primary directory, usually in the /home directory tree. We will assume you have made an egg directory called /home/yourdir/egg. and installed the software there. Go there by typing "cd /home/yourdir/egg". Type "ls" for a simple listing of files or "ls -l" for a more informative list with dates, sizes, and more. The eggsh executable and the .eggrc configuration file should be in the listing, and the eggsh listing should indicate it is executable. When the system is running, the eggsh program will create subdirectories for data storage, using the year and month for directory name.

Make sure the time on your computer is accurate before starting other things. The hardware (CMOS) clock should be set to GMT (or UTC) time, and you can check this time by typing "date -u". The local time is given if you simply type "date". If you are root you can set the time with the command "date -s "hh:mm:ss"" (note the quotes around the time.) Become root using the command "su". The date command can be used to set the whole date if necessary. Use the same format as the date command uses, but in quotes. Do this as accurately as you can, by getting a telephone time or other service to synchronize to. If the UTC time is off, you can set it correctly after you have set the local time accurately, by typing "clock -w". Unfortunately, PC clocks lose or gain amazing amounst of time, so you must automate the time synchronization. How to do that is described later in the section on Keeping Correct Time.

2. Egg Software

There are a few parts: the program to read, store, and transmit data, the configuration file, and the scripts for dialing the network connection. If you have an ethernet or continuous connection, it is just the main program and the configuration file.

2.1 The eggsh program

The program and configuration file should be installed in the /home/yourdir/egg directory. If you are doing dialup, you probably have the ppp and chat scripts there too. Any executable programs or scripts have to have appropriate permissions, which will show as "x" in the long listing.

The program that records, archives, and sends data is called "eggsh". It uses a configuration file called ".eggrc". The latter is normally hidden, but can be seen in a directory listing with a different switch "ls -a" or "ls -al". This file contains the information to specify the egg's name, its ID number, its IP address, its basket (the server where it will send data) and its communication parameters. This information is near the end in uncommented lines (no leading #). You can edit it using the vi editor, or a more user-friendly editor called joe. The command would be "joe .eggrc". Then type "ctrl-k h" for a help screen with commands. For example, "ctrl-k v" brings you to the end of the file, where you can use the cursor keys, delete, etc to move about and edit the necessary items. Here is a sample of the informational lines in the .eggrc:

EGG 172 noosphere PERM 1
BASKET noosphere
PROTOCOL 10 10 30 200
REG PEAR 0 9600

The first line identifies your egg by name, ID, and IP address. It says the server is noosphere and the connection is permanent and attempts to communicate data occur at 1-minute intervals. You will need to edit the file to put in your actual name, ID, and IP address The second line gives the server name and IP address. Line three specifies the structure of the data packets that will be sent to the server, and the last like shows the type of REG device, which COM port it is connected to, and its transmission speed. You may need to edit the COM port designation. The 0 in the sample means COM1, a 1 would specify COM2. The long version of the .eggrc has more information in comments.

2.2 Dialup scripts

Setting up your internet connection to be made in an automated way will be your task, with which I can't help as much as I would like. Your ISP should provide some information, and there are programs that you can find on the net which may be helpful. One is called XISP, but I haven't looked into this for a while.

Here is some description of an old-fashioned way to do the job, using dialup scripts you that are appended below: The scripts specify how the information should be routed, and provide necessary parameters. If you use these, they should be installed in the /home/yourdir/egg directory. One is called pppscript, and you probably will not need to edit it. The other is called pppchat, and it has the phone number that will be dialed if pppscript is invoked (it will be automatically dialed at times we can specify.) The pppchat also has the username and password information to login; these are the difficult items. The format of the login negotiation is not the same everywhere, so you must learn exactly what is required at your ISP. To actually use the pppscript file, make it executable by typing "chmod a+x pppscript".

3. Keeping correct time

The eggs must all be synchronized within a small range, and it is possible to make this a matter of seconds using programs that get correct time from "timeservers" and keep the local clock close by making small adjustments. Begin by setting the CMOS clock to UTC (also known as GMT) as indicated earlier.

3.1 The xntpd program is the preferred way to set the time, and it must be configured in the setup. It is not installed by default is some Linux distributions, so you may have to add it to your system. If this works correctly, you will need only check to be sure the time is set correctly if you reboot. Check the time occasionally by looking at the output of the eggsh program. If it appears to be drifting by more than a second or two, let me know, and we will try to correct the situation.

3.2 The xntpd configuration files require specifying timeservers. You can use the ones specified in the following, but you may prefer to use timeservers closer to home. This is the configuration information for xntpd that must be available in /etc/ntp.conf

    driftfile /etc/ntp.drift

The driftfile should be created as an empty file; it will later have the adjustment coefficients.

4. Useful commands

mkdir (makes a new directory called "name")
cd (change directory to "name"; cd without argument goes to home directory (e.g. /home/yourusername
mount /dos_a (this might be /mnt/dos_a) (allows reading files from floppy disk)
umount /dos_a (unmounts floppy)
ls (lists files and subdirectories)
ls -l (long listing, gives much information)
more (displays files one screenfull at a time; space-bar to go on, q to quit)
ctrl-c (stops program and returns to prompt)
cp (copies files)
mv (moves or renames files)
locate (tells you where to find things)
df (tells disk usage)
ps aux |grep eggsh (will tell you the process number of eggsh program)
su (allows you to become another user or root, if you know password)
joe or vi (editors. vi is arcane, but everywhere; joe is more familiar and may be used with a little experimentation)

4.1 Documentation, man pages, info

If you want terse but useful information on commands, the man pages are excellent. Just type "man ". Be forewarned that this is very condensed reading. There are also so-called info pages that have broader information with hyperlinks; just type "info". For larger-scale questions on getting things working, there is a collection of excellent documentation in /usr/doc/HOWTO.

5. The Dialup Scripts

The "pppscript", which you will not need to modify:


if ("$1" == "up") then
  echo "Bringing net up"

  /usr/sbin/pppd /dev/cua1 115200 connect '/usr/sbin/chat -v -f /egg/pppchat' crtscts modem defaultroute noipdefault

# Wait for connection success
  set timer = 120
  while ($timer > 0) 
    if (-e "/var/run/") exit 0
    sleep 1
    @ timer = $timer - 1

  echo "Couldn't get it up!"
  exit -1

if ("$1" == "down") then
  echo "Bringing net down"
  if (! -e "/var/run/") exit 0
  set pid = `cat /var/run/`
  kill $pid

  exit 0

echo "Usage: pppscript up down"
exit 1

----- The CHAT script:

'' ATZ
# following ####### is local telephone number of ISP
OK ATDT#######
# following is a possible style of ISP negotiation.  There is usually
# a "challenge" and a "response"  or an expect/reply pair, but this varies
# greatly.  Get help from your ISP
sername roger
assword ------
# following is the command to start ppp on a computer named comserv at Princeton.
comserv 'ppp'
assword ------


GCP Home