This post gives a brief overview of the process of building a touchscreen Squeezebox replacement. There may be a future post on building an enclosure for the player.

The system will run on a Raspberry Pi, using SqueezePlug, a customized version of Raspbian specifically tailored for Squeezebox player/server installations. For the player it will use Squeezelite (included with SqueezePlug) and for the UI JiveLite. Depending on the touchscreen the kernel needs to be rebuilt to include touch drivers (there is a link at the bottom of this post where this is described in detail).

Setup SqueezePlug

Download latest version from squeezeplug.eu.

Extract the .img file from the downloaded .zip file then using an imager such as Win32DiskImager write it to your SD card.

Boot up the Raspberry Pi and configure the system (setup networking, configure squeezelite, etc, might expand on this later…).

Install JiveLite

Install required libraries:

sudo apt-get install git libsdl1.2-dev libsdl-ttf2.0-dev libsdl-image1.2-dev libsdl-gfx1.2-dev libexpat1-dev

Get and build luajit:

git clone http://luajit.org/git/luajit-2.0.git
cd luajit-2.0
make
sudo make install
sudo ldconfig
cd..

Get and build JiveLite:

git clone https://code.google.com/p/jivelite/
cd jivelite
make PREFIX=/usr

To run JiveLite:

/path_to_jivelite_source/bin/jivelite

Setup auto-login

In /etc/inittab comment out the following line:

1:2345:respawn:/sbin/getty 115200 tty1

and add in the following line instead (replace your_username with appropriate user name, for SqueezePlug this is root by default):

1:2345:respawn:/bin/login -f your_username tty1 </dev/tty1 >/dev/tty1 2>&1

Auto-start X and JiveLite

In /etc/rc.local, above the exit 0 line, add the following:

su -s /bin/bash -c startx your_user&

If not running as root then edit /etc/X11/Xwrapper.config and change allowed_users=console to allowed_users=anybody to allow non-interactive processes to launch an X server (more info here)

Edit ~/.xinitrc and add the following (replace path_to_jivelite_bin with appropriate path):

/path_to_jivelite_bin/jivelite

Alternatively, if for some reason you want to boot into the desktop and then launch JiveLite then you may do this:

In /etc/rc.local, above the exit 0 line, add the following:

su -l root -c startx

Then create a jivelite.destop file in ~/.config/autostart/ (see e.g. here for details).

Hide mouse cursor

JiveLite seems to hide the mouse cursor automatically depending on how it is launched, but if it is started via the first method above then it does not hide it.

So, if needed, you may add the -nocursor option in /etc/X11/xinit/xserverrc (this will fully disable mouse cursor), or alternatively, sudo apt-get install unclutter and put the following in .xinitrc (above the jivelite command): unclutter -idle 1 -grab -noevents -display :0& (this will hide mouse cursor if idle for 1 second, lower numbers seem not to work).

Calibrating touchscreen

Andrew Fraser has written a great guide for eGalax devices. It involves rebuilding the kernel to include the touch drivers. Worked great for my Sainsmart 7” 800x480 panel.