NeVoT Installation

Retrieving the Necessary Files

The distribution is available by anonymous ftp from: The files that you need depend on your choice of installation method, discussed below.
Binary, statically-linked executables:
This requires the least work, with the trade-off of larger executables. You only need the nevot-version-arch-static.tar.gz file.
Binary, dynamically-linked executables:
This requires that you move the dynamic loaded libraries to an appropriate directories. Both these libraries and the executables are contained in the package nevot-version-arch.tar.gz
Compile nevot:
This assumes that you have working versions (either static or dynamically loadable) of the Tcl, Tk, Tcl-DP, BLT, DES and GSM libraries on your system. You only need the nevot-V.tar.gz file containing the NeVoT sources.
Compile NeVoT, use precompiled static libraries:
In addition to nevot-version.tar.gz, you need the static libraries (tcl, tk, tcl-DP, BLT, gsm, tksolo, des) contained in lib-arch.tar.gz.
Compile NeVoT, use precompiled loadable libraries:
In addition to the nevot sources in nevot-version.tar.gz, you need the static libraries in lib-arch.tar.gz and the loadable libraries contained in nevot-version-arch.tar.gz. The linker will automatically prefer the loadable (dynamic) versions of a library, where available.

Binary Installation

The binaries are standalone, that is, they do not require that any other packages are installed.
  1. Retrieve binaries. All files are stored as gzip'ed tar files. For some systems, both statically and dynamically linked versions may be obtained. The dynamically linked archives contain the necessary shared libraries. Not all the versions listed below may be available at any given time. For porting, any of the libraries may be used either as static or dynamic libraries; the listing simply indicates current usage for the platforms supported.

    The HP version was compiled with gcc or c89; c89 does not support 64-bit integers and has length limitations on string constants and thus should be avoided if at all possible.

  2. Unpack the tar files into a directory of yours containing executables:
      gunzip -c nevot-*.tar.gz | tar xvf -
    
  3. nevot (or their static equivalents, nevot.static, etc.) should be in the shell's path. Check this with which nevot, etc.
  4. Install the shareable libraries so that the dynamic loader can find them. The following table lists the file name patterns and the tool you can use to check which library will be used at runtime.
    operating system library tool environment variable
    DEC Alpha *.?? ??
    HP-UX *.sl chatr
    IBM AIX *.a dump -H LIBPATH
    Linux *.?? ??
    SGI Irix *.so ??
    SunOS 4.1.x *.so.*, *.sa.* ldd LD_LIBRARY_PATH
    Solaris 2.x *.so.*, *.sa.* ldd LD_LIBRARY_PATH

    For SGI Irix, the run-time loader rld and its debugging version, /usr/lib/rld.debug allow tracing of dynamic loading actions by setting the environment variables _RLD_PATH and _RLD_ARGS.

Installation from Sources

The sources are available from the same places by anonymous ftp as a gzip'ed tar file. The following additional libraries are needed and included as object libraries in the library distribution tar file, lib-arch.tar.gz. Each item indicates the version used; later versions should in general work. The links at each item retrieve the archive file. The Tcl-related files are available for anonymous ftp from ftp.aud.alcatel.com

BLT
version 1.8 or greater
DES
Probably any number of DES routines will work; currently the set (said to be ``one of the fastest around'') by Eric Young is used: version 4.0 Linked statically. A SPARC 20/50 needs 8.7 microseconds per byte for DES CBC, a Silicon Graphics IP22 22.9 microseconds per byte. See also this listing for alternate DES implementations.
gsm
version 1.0 patchlevel 7 or the original. A different Makefile is used.
tcl
version 7.5a2. Used as a shared library. Since the number of arguments has changed in the Tcl_Eval function, pre-7.0 versions will likely crash.
tk
Version 4.1a2 Used as a shared library.
tksolo
version 2.2 This library allows the creation of stand-alone versions, i.e., executables that do not require that Tcl, Tk, Tcl-DP, etc. are installed on the target system.
Tcl-DP
version 3.3b1. You also need to create the dplite library from this distribution if you want to compile nevotd. Always linked statically.
shared library extensions:
For saving disk space and load time, it is desirable to link the executables dynamically against the Tcl, Tk and Tix libraries. There is a plus patch for Tcl, Tk and Tix that generates both static and dynamic libraries.
If you don't want to build your own libraries, the needed static libraries are contained in The shareable (dynamic) libraries are contained in the binary distribution for the same platform. These libraries need to be installed so that they can be found during linking; you may have to modify the compile script to work for your directory structure. By default, the libraries are expected in sun4/lib hp/lib, etc., under your home directory. This location is set by the PREFIX_ARCH variable in compile.

In order to use the UDP multicast facilities, you have to install the appropriate multicast kernel modifications for systems without native multicast support. Currently, Solaris and SGI have built-in multicast support.

NeVoT can either use the compiled-in Tcl files or use local versions. When starting up, the applications check whether the Tcl files can be located. If not, the compiled-in versions are used. If you want to use the Tcl files, either the ones contained in the source distribution or your own, modified versions, you have to set a number of environment variables. The environment variable NEVOT_LIBRARY is used by NeVoT and should be defined as the directory where nevot.tcl resides.

By default, NeVoT always uses compiled-in versions of the Tcl and Tk standard libraries, linked in through the tksolo library. This can be changed by appropriate modification of the sources files *_init.c. If local versions are to be used, then the environment variable TK_LIBRARY should point to the directory containing tk.tcl and other files from the Tk library. The environment variable TCL_LIBRARY should point to the directory containing init.tcl and other files. In csh, for example, use something like

setenv TCL_LIBRARY        /usr/local/lib/tcl
setenv TK_LIBRARY         /usr/local/lib/tk
setenv DP_LIBRARY         /usr/local/lib/dp
setenv NEVOT_LIBRARY      /usr/foo/nevot/tk
setenv NEVOTD_LIBRARY     /usr/foo/nevot/tcl
Finally, modify the beginning of the shell script compile. By default, tk, tcl, etc. libraries are expected either in /usr/local/lib or in $HOME/ARCH/lib. Binaries are created in $HOME/ARCH/bin.

The following shell variables can be set in the script:

PREFIX_ARCH:
Prefix for architecture specific directories. By default, local libraries (e.g., tcl or tk) are expected in PREFIX_ARCH/lib, binaries are deposited in PREFIX_ARCH/bin. These defaults can be changed by the variables below.
TCL_INCLUDES:
Include files for Tcl and Tk; by default a list of "standard" directories is searched.
X11_INCLUDES:
Include files for X11; by default a list of directories is searched.
BIN_DIR:
Binaries are deposited here; created if necessary.
OBJ_DIR:
Object files are created in this directory; created if necessary.
INCLUDE_DIR:
An additional local include directory, looked at first. This may be needed, for example, if the system include file netinet/in.h has not been updated for IP multicast.
OPTIMIZE
Compiler optimization flag; typically -g for debugging and -O for production use.
LDFLAGS
List of directories to be searched for libraries.
LDFLAGS_STATIC
List of directories to be searched for libraries when linking statically.
Hardware and compiler specific options are in the file compile.ARCH, e.g., compile.sun4. You should define the environment variable CC to name your favorite compiler. Then type
  ./compile
You can define the environment variable CC to determine the compiler to be used. If you just want to compile parts of the system, you can use one of:
  ./compile nevot
  ./compile nevotd
By default, only a dynamically-linked version version of each executable will be created in $HOME/$ARCH/bin. If you want the static version as well, add all as the first argument, e.g., compile all. Similarly, the argument dyn and static create only the respective versions. The static version has the suffix .static.

Porting to Other Platforms

Normally, you should only have to change/create the following files when porting NeVoT to a new system. arch denotes the system designation, e.g., sun4 or hp: netutil/ARCH_audio.cnetutil/ARCH_sys.cinclude/types.h
audio hardware interface
emulation of system library calls
word-length dependent data types
Generally, #ifdef should be avoided where possible.

SunOS Audio Buffers

It is strongly recommended to reduce the SunOS audio buffer size to the packetization interval. A high number of audio output errors indicate that the buffer size is probably too large.

SunOS 4.1.1, 4.1.2

To set the buffer size in SunOS 4.1.1 and 4.1.2, you have to become super-user and execute the following Bourne shell script:
  adb -k -w /vmunix /dev/mem <<EOD
  audio_79C30_bsize/W 0t160
  audio_79C30_bsize?W 0t160 
  EOD

8-bit audio, SunOS 4.1.3

For SunOS 4.1.3 on systems with only 8-bit audio (SPARCstation II, IPX, IPC, etc.), the symbol names have changed, so that the proper sequence is
  adb -k -w /vmunix /dev/mem <<EOD
  amd_bsize/W 0t160
  amd_bsize?W 0t160
  EOD

SPARCstation 10

For SPARCstation 10s, use
  adb -k -w /vmunix /dev/mem <<EOD
  Dbri_recv_bsize/W 0t160
  Dbri_recv_bsize?W 0t160
  EOD

SPARCstation 5, SunOS 4.1.3 and 4.1.4

For SPARCstation 5 running SunOS 4.1.3 or 4.1.4, use a different audio buffer size:
  adb -k -w /vmunix /dev/mem <<EOD
  audio_4231_bsize/W 0t1200
  audio_4231_bsize?W 0t1200
  EOD
SPARCstation 5 have severe audio quality problems. The patches 101508-07 and 102161-01 must be installed. (Note: this information is current as of 11/02/94 and is subject to change.) For SunOS 4.1.4, install the SPARC 5 audio jumbo patch 102387-02.

Generic Patching Tool

The program tools/kernel.c displays and patches the necessary variables, assuming you have read/write access to kernel memory.

For SunOS 5.1 and later, the input buffer size is set within the NeVoT audio driver and thus no kernel modifications are needed.

To query the variable, omit the ``W''.

SPARC 5 Audio

As shipped, SPARC 5 audio is basically unusable with both SunOS or Solaris. You can find the patches below in in the UK or Columbia or at Sun. You can check which patches have been installed with the command showrev -p.

SunOS 4.1.3

For SunOS 4.1.3, install patches 101508-07 and 102161-02.

SunOS 4.1.4

For SunOS 4.1.4, apply patch 102387-02.

Solaris 2.3

For Solaris 2.3, install patch 101836-02 (``SunOS 5.3: SS5 audio jumbo patch for Solaris Ed II''). If you have previously applied the ms2 patch you will find it will not install (Sun got the version numbering wrong), so you need to do it manually by copying the audiocs driver file in the patch into the /kernel/drv directory. There are also patches 102182-02 and 102183-01.

Solaris 2.4

For Solaris 2.4, install patch 102037-01 (``SunOS 5.4: Extra clicks during audio mode changes'') and 102125-02 (which may not be available yet).