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 naïve): 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 /etc/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.