-- REALLY-QUICK START --------------------------------------------------

If you're in a desperate hurry type:
./configure --enable-drivers=all
make

And if you start wondering why it doesn't work, come back and read the
rest of the file. 8)

-- PREREQUISITES -----------------------------------------------------

First read the README if you haven't already.

In order to compile LCDproc, you'll need:

an ANSI C compiler, we recommend GCC. Most Linux or BSD systems come 
with GCC.

GNU Make, Most Linux come with GNU Make, on some BSD you will need to 
install it. See the PLATFORM SPECIFIC section for more infos.


LCDproc is in fact two things, a client (lcdproc) and a server (LCDd).
The client gathers informations and sends them to the server.
The server displays the informations on an LCD display.
The client and the server use a TCP connection to communicate, so it is
possible to have a client on a box in Sweden showing its stats on a LCD
display in the United States. For hardware reasons, the client is much 
more portable than the server. Here's are the prerequistes for both:

--- Client ---
The client should run on any POSIX compliant system. 
It has been sucessfully tested on:
Linux 2.2.x, Linux 2.4.x, NetBSD 1.5, OpenBSD 3.0
In the future want it to run on Windows, MacOS and others.

--- Server ---
The server needs to talk with the LCD display. At this time, it only works
on Intel i386 (PC Compatible) architecture.
It has been sucessfully tested on:
Linux 2.2.x, Linux 2.4.x, NetBSD 1.5, OpenBSD 3.0

Connecting the display to your system

Depending on what kind of LCD display that you have, there are several
sources for informations. If your LCD display came with a manual, this
is a great place to start. If you don't have a manual, then you must find
out what kind of display this is, and check the related informations:

HD44780 and compatible: http://robijn.net/lcdproc/
STV5730: http://www.adams-online.de/lcd/
SED1520: http://www.adams-online.de/lcd/

Also take a look at the comments in the driver source code in 
server/drivers. You may have some good indications there.

You may want to take a look at LCDproc's hardware page at
http://lcdproc.omnipotent.net/hardware.php3 for details. Several
different types of displays are now supported.


-- BUILDING LCDPROC -------------------------------------------------

--- Configuration ---
The simplest way of doing it is with:
    ./configure
But it may not do what you want, so please take a few seconds to type:
    ./configure --help
And read the available options, especially --enable-drivers

--- Compilation ---
Run make to build the server and all clients
    make

If you only want to compile the clients, you can omit to compile the 
server:
    cd shared
    make
    cd ../clients
    make

Similarly, if you only want to compile the server, you can omit to 
compile the clients:
    cd shared
    make
    cd ../server
    make

Depending on your system, LCDproc will build in a few seconds to a 
few minutes. It's not very big. 

If you want, you can install it (if you're root) by typing:
    make install

This will install the binaries and the man pages in the directory you
specified in configure.

-- PLATFORM SPECIFIC ------------------------------------------------

Here are some comments specific to each platform that LCDproc has been
tested on.

--- Linux ---
Nothing special to say, everything should go well.

You may be able to compile the server on something else than i386 if your
linux installation can emulate ioperm, inb and outb commands. I heared 
that some Alpha do that.

--- NetBSD ---
You need to use GUN Make instead of NetBSD's make. 
You can find a GNU Make binary package to use with pkg_add at:
ftp://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/devel/gmake/README.html

Or download the source code at: 
http://www.gnu.org/software/make/make.html

Remember to type gmake instead of make to compile LCDproc.


If you try to run LCDd and you get this error:
Bus error (core dumped)
It is likely that you did not have the right permission to access the ports. 
Try starting the program as root.

As said ealier, the server should only compile on NetBSD/i386.

--- OpenBSD ---
You need to use GUN Make instead of OpenBSD's make. 
You can find a GNU Make binary package to use with pkg_add at:
ftp://ftp.openbsd.org/pub/OpenBSD/3.0/packages/i386/

Or download the source code at: 
http://www.gnu.org/software/make/make.html

As said ealier, the server should only compile on i386.

--- FreeBSD ---
(not tested yet)

-- RUNNING LCDPROC -----------------------------------------------------

--- Configuration file ---

The first thing that you need to do is to modify the configuration file
for your server. A example file (LCDd.conf) is available in the tarball.
The comments present in this file should give you indications on what
to do.

--- Starting the server ---

If you're in the LCDproc source directory, and have just built it, run:
    server/LCDd -c path/to/config/file

You can find out what drivers were compiled by running "LCDd -h".  
Note that you cannot use more than one display driver at the same time.

For security reasons, LCDd only accept connections from the 
localhost, it will not accept connections from other computers on 
the Internet. You can change this behavior in the configuration file.

--- Starting the client(s) ---

Then, you'll need some clients.  LCDproc comes with one:
    clients/lcdproc/lcdproc C M T X &

This will run the main LCDproc client, with the [C]pu, [M]emory,
[T]ime, and [X]load screens.  The ampersand (&) puts it in the background.

By default, the client tries to connect to a server located on localhost
and listening to port 13666. To change this, use the -s and -p options.

-- PUTTING LCDPROC IN SYSTEM STARTUP -----------------------------------

It's nice to have LCDproc start when the computer boots, so here's how
to do it:

In Slackware or RedHat:
	Add lines to your /etc/rc.d/rc.local, such as the following:
	  echo "Starting LCDproc..."
	  /usr/local/bin/lcdproc C M X &

In Debian:
      - Make a file "/etc/init.d/lcd" which works the same as the
	other scripts in that directory.  (it should accept "start"
	and "stop" as parameters...)
      - To start, run "LCDd" with any necessary parameters.  It will
	put itself in the background as a daemon.
      - Also in the "start" section, add "lcdproc" with some
	parameters.  Be sure to put a "&" on the end, or the system
	will get stuck there when you boot.
      - And, put in any other clients you want to run all the time.
      - For the "stop" section, simply "kill" all the programs you
	started in the "start" section.  They will shut down and exit.
	I recommend killing the server after all the clients, but it
	really doesn't matter much.

      - Now, add symlinks from /etc/rc[2-5].d/S50lcd to /etc/init.d/lcd,
        and be sure to get /etc/rc[06].d/K50lcd to /etc/init.d/lcd.
	This will cause LCDproc to shut down when your system does.

That's all the OS`s we've actually done this with so far..

-- WEB SITE -------------------------------------------------------------

Visit http://lcdproc.omnipotent.net/ for the latest updates and news
for LCDproc. If you've got comments, suggestions, bug fixes, or 
problems (related to LCDproc, not women ;), send e-mail to either
William W. Ferrell (willfe@yahoo.com) or Scott Scriven
(toykeeper@cheerful.com).
