Table of Contents:
I)      Compiling Squash
II)     Setting up the Empeg
    A)      Installing the development image
    B)      Setting up minicom
    C)      Installing the hijack kernel
    D)      Setting up config.ini
    E)      Installing preinit.d
    F)      Installing telnetd
    G)      Installing dhcpcd
III)    Setting up Squash on the Empeg

I) Compiling Squash

You do not need to compile Squash if you do not want to.  Instead you
may used the precompiled binaries.  You still need to follow the steps
in II and III which cover setting up the Empeg for Squash and setting
up Squash for the Empeg.

Please see empeg/TOOLCHAIN, empeg/LIBRARIES and empeg/PROGRAMS on how to
install a toolchain, libraries and programs needed to compile and run
squash for the empeg unit.

For Squash itself, you will need to set 'EMPEG=1' and you probably also
want 'USE_MAGIC=1' (this allows squash to run with the original player's
database of mp3 files).  To do this use:

export EMPEG=1 USE_MAGIC=1

Then you can just run 'make'.  Please run 'make clean' first if you have
already tried to compile squash; or if you have compiled a previous
version of squash.  In fact, anytime you change the compile settings with
the 'export' command you must run 'make clean'.

Hopefully, squash will compile (if you have really done everything
described in empeg/TOOLCHAIN, empeg/LIBRARIES and empeg/PROGRAMS).

One cavaet, if you are using the debian toolchain described in the
empeg/TOOLCHAIN file, you will need to uncomment the debian toolchain
lines in the Makefile.  You also need to comment the hijack toolchain
lines in the Makefile.  If you are using the hijack toolchain you do not
need to modify the Makefile.

Now you will need to read section II on how to setup the empeg.  And
section III will describe how to configure squash for the empeg.

II) Setting up the Empeg

If you already have a development image, the hijack kernel (and thus
an ftp server) and either a telnet daemon or serial terminal setup, you
can skip down to section III and begin immediately with setting Squash up
for the Empeg.

Installing these things can be tricky because some of the steps can have
small pitfalls.  Sections A through G will cover how to install the
development image and setup minicom.  Also these sections describe how to
install the hijack kernel, modify your config.ini and install preinit.d,
telnetd and dhcpcd.

Please note throughout this section it will be assumed you have a free
serial port COM2 (i.e. /dev/ttyS1).  Also that your player is named orpheus,
and you have a dhcp server setup on your local area network.  And that the
user name is gryn, etc.

Please use your head when reading path names, etc.  Most can be changed
except where explicitly told otherwise.

II) A) Installing the development image

For this section you need a development image and a tool to install this
image on your empeg:

http://www.empeg.com/downloads/car2-developer-v2.00.upgrade
http://www.empeg.com/downloads/empegcar-v2.00.i386-linux.tar.gz

Untar empegcar, and run:
empeg-car/upgclient -p /dev/ttyS1 car2-developer-v2.00.upgrade

If you have any problems with the serial port, check /var/lock for tty
lock files, delete them and try again.

II) B) Setting up minicom

Once you have the developer image you will need hijack as well, but
before that, let's go ahead and make sure you can use the serial port as
a console.  First install minicom.  Then as root run 'minicom -s'.
Make sure these settings are choosen:

Serial port settings
    Serial Device to /dev/ttyS1
    Bps/Par/Bits to 115200 8N1
    turn off both hardware and software flow control
    (this last one is very important!)

Modem and dialing
    clear both the init and the reset string
    (this is optional, it shouldn't cause any bad mischief)

Remember to 'Save setup as dfl' and then quit.

Before you can run minicom run these commands to ensure you have
permission to access the COM port:

adduser gryn dialup
chgrp dialup /dev/ttyS1
chmod g+rw /dev/ttyS1

Now you should be able to run minicom as a regular user.

To verify, run minicom and then turn on the empeg device. You should see
lots of messages as the empeg boots.  Once the player has finished
loading (you know, the music starts playing?), try typing 'q' in minicom.
If all goes well you will be at a shell prompt.

II) C) Installing the hijack kernel

Next is to install the hijack kernel.  This will give you lots of nifty
features but the most important is the ftp server.

Download the hijack kernel here:
http://empeg-hijack.sourceforge.net/v340.hijack.mk2.zImage

And the download utility here:
http://empeg-hijack.sourceforge.net/download.c

You will need to compile download.c .  You must also edit download.c
and change "#define DEVICE "/dev/ttyS1"" to be whatever you are using as
your serial port.  You can compile download.c with:

gcc download.c -o download

Now run:

./download v340.hijack.mk2.zImage 10000

You may also want to try:
http://www.beaglebros.com/empeg/download/empeg-download.c

Which is supposedly more portable, nicer, etc.  For the least, you don't
have to edit the code to change the serial device!

II) D) Setting up config.ini

Once you have a hijack kernel installed, you will want to setup your
config.ini file so that a few things get turned on. The most important
is networking.

You can use the tools provided by the developers to edit configuration
settings.  Alternatively, you can use your shell prompt under minicom.
To edit the file use copy and paste along with these commands:

rwm
cd /empeg/var
cp config.ini config.ini.backup
cat config.ini

(copy this from the screen to a local text editor, do whatever changes
need to be done then copy the new version)

cat -> config.ini

(paste new version, then hit ctrl-d)

rom

Here are the configuration settings you need to have in your config.ini
file:

[Options]
# you need a name if you have a dhcp server that can setup dns based off of
# this name.
Name=orpheus
[Network]
# You need to set a static IP address or use DHCP.
Gateway=10.0.0.1
Netmask=255.0.0.0
IPAddress=10.0.0.42
DHCP=1
[menu]
# You may want this setting so that you may exit the original player and
# and then run squash.
quit=1

Please note these settings are needed unless you decide to not run the
original player.  Even if you choose to not run it, you will need to have
these settings until you can install the dhcpcd client, so that you can
have the network enabled and use ftp.

Now you should be able to ftp into your empeg device!  Yeah!  You will
still need minicom loaded to type rwm and rom, in order to turn on write
access when putting files over ftp.

Also remember to turn off passive mode when using ftp (as this daemon does
not support it).  Under lftp, this can be done with 'set passive off'.
You may also have problems when using advanced commands like mirroring
with this ftp daemon.

II) E) Installing preinit.d

Next is setting up preinit.d, this is an optional step but you may find
it useful in order to run things at boot time.

To do this first download the preinit.d package:
http://www.beaglebros.com/empeg/empeg-preinit/empeg-preinit.v7.tar.gz

You can use the install.ftp script included or follow these instructions
(I installed the shared version since it is so small, and I don't see
what's wrong with using it, but then again I'm pretty nave):

site rw
cd /bin
put empeg-preinit.shared hijack
chmod 755 hijack
mkdir /etc/preinit.d
site ro

II) F) Installing telnetd

Next is setting up a telnet daemon.  You do not have to do this step as
everything can be done through minicom and the ftp daemon.  But you may
like using a telnet daemon just for the thrill!

First download the telnetd package:
http://www.riocar.org/download.php?op=getit&lid=32

Now send telnetd to /bin remembering to chmod 755 it.  Also create a
file to /etc/preinit.d/N01telnetd , with this in it:

#!/bin/sh
exec /bin/telnetd

Alternatively you can use a symlink.  Make sure the script has chmod 755
too (though I think preinit.d does not care).

Now you need to run the devs script to make the devices.  Copy and paste
into the console is the easiest method.  Alternatively, you can send
the file using the ftp daemon and then run it using minicom.

II) G) Installing dhcpcd

Last, install the dhcpcd client.  This will allow you to setup the network
device without having to run the original player.

Please see empeg/PROGRAMS on how to download and compile dhcpcd.

Once compiled, just send dhcpcd to the /bin directory and chmod 755 it.
If you want, you can have it run at bootup through preinit.d .
Alternatively, you can use the player.script described in section III to run
dhcpcd.

III) Setting up Squash on the Empeg

You will need to make a directory /drive0/squash and send the compiled squash
to /drive0/squash, and also send empeg/squash.conf to
/drive0/squash/squash.conf . Make sure squash is chmod 755 and squash.conf is
chmod 644.

You need to make a /drive0/squash/music directory and also put lots of
music in there.  You can have squash read the original player's database
by symlinking the directory inside of /drive0/squash/music .  Do this with:

cd /drive0/squash/music
ln -s /drive0/fids

This should make squash work fine.  To test, make sure the original player
is off and run /drive0/squash/squash .  This will take a -long- time the first
time it is run (no more than 5 minutes or so).  But it will be much faster the
second time.

Please see empeg/USERS_GUIDE for how to use squash now that it is running.
Please also note that you must run rwm before squash can be run, and
probably it's a good idea to run rom after it is done running.

The last thing to do is to have squash running automatically when
you start the player.

To do this backup the old player (/empeg/bin/player).  Now take a look at the
script empeg/player.script .  If you want the old player to run or if you
want dhcpcd to not run, you need to edit this file.  Otherwise send it to the
empeg as /empeg/bin/player .

You also need to send the empeg_poweroff utility to the /bin directory.  Don't
forget to chmod 755 it.

Hopefully all that will work.  Please contact me if I left out anything or if
there are any mistakes, etc.

