Building a Touch Squeezebox Using Raspberry Pi
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.