Quantcast
Channel: Squeezebox : Community : Forums - 3rd Party Software
Viewing all articles
Browse latest Browse all 2050

Success: MusicIP and Spicefly Sugarcube running on Raspberry Pi

$
0
0
I managed to get MusicIP (headless), sugarcube, and the MusicIP plugin on raspberry pi LMS working with the help of Qemu. This is a inexpensive and simple setup without requiring an intel processor architecture.

For my 25k track collections, a new mix keeps one core of the raspberry pi 2 busy for approximately 10 seconds, while LMS continues to play in the background.
Basically all is working so far. I have not tested validation of music, as all my tracks have been validated and fingerprints archived using the Windows version of MusicIP. Scanning / adding 25k tracks to MusicIP takes approximately 30 minutes
High Level tutorial (I used a Max2Play installation of LMS):


Download and unpack MusicIP 1.8 for linux (http://www.spicefly.com/article.php?...sicip-software)


You have to edit your /etc/apt/sources.list file and every file in /etc/apt/sources.list.d, adding [arch=armhf] behind each occurence of deb.
So for example the line
deb http://archive.raspbian.org/raspbian jessie main contrib non-free
would become
deb [arch=armhf] http://archive.raspbian.org/raspbian jessie main contrib non-free

For the Max2Play installation, following two files had to be modified:
sudo nano /etc/apt/sources.list
sudo nano /etc/apt/sources.list.d/raspi.list


Next, we have to add package sources for i386 packages to our apt configuration. We'll do it the obvious way and take the official Debian repositories.
Of course you are free to choose other mirrors, if you prefer.
To do that, you create the file /etc/apt/sources.list.d/i386.list via sudo nano /etc/apt/sources.list.d/i386.list and insert the following:

deb [arch=i386] http://ftp.debian.org/debian/ jessie main contrib non-free
deb [arch=i386] http://ftp.debian.org/debian/ jessie-updates main contrib non-free
deb [arch=i386] http://security.debian.org/ jessie/updates main contrib non-free


Then add the i386 architecture and update packages:
sudo dpkg --add-architecture i386
sudo apt-get update



Install binfmt, qemu and libc for i386:
sudo apt-get install binfmt-support qemu-user
sudo apt-get install libc6:i386

Ignore warnings about certificates


You can start the MusicMagic server (in my case installed in the pi home-directory):
sudo /home/pi/MusicIP/MusicMagicMixer/MusicMagicServer start
It should be accessible viahttp://localhost:10002/server

ignore warnings about ERROR: ld.so: object '/usr/lib/arm-linux-gnueabihf/libarmmem.so' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored, the server runs anyway.


To start the sever everytime when the raspberry boots:
sudo cp /home/pi/MusicIP/MusicMagicMixer/mmserver /etc/init.d
cd /etc/init.d
sudo nano mmserver

Edit the file and add the header for the init daemon, adapt the pathes. My version looks like:


------------
#! /bin/sh

### BEGIN INIT INFO
# Provides: mmserver
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start MusicIP daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO



# NON-PRIVIELEGED USER TO RUN MUSICMAGICSERVER.
USER=pi
# PATH TO THE MUSICMAGICMIXERSERVER
export MUSICHOME=/home/pi/MusicIP/MusicMagicMixer/
case $1 in
start)
# next line was original
# su - $USER -c $MUSICHOME"MusicMagicServer start & > /dev/null"
sudo -u pi /home/pi/MusicIP/MusicMagicMixer/MusicMagicServer start & > /dev/null 2>&1
echo "Running MusicMagicServer"
exit
;;
stop)
# next line was original
# su - $USER -c $MUSICHOME"MusicMagicServer stop & > /dev/null"
sudo -u pi /home/pi/MusicIP/MusicMagicMixer/MusicMagicServer stop & > /dev/null 2>&1
echo "Stopped MusicMagicServer"
exit
;;
*)
echo "Usage: /etc/rc.d/init.d/mmserver { start | stop }"
exit
;;
esac


--------



Then register the start script and reboot:
sudo update-rc.d mmserver defaults
sudo reboot


The MusicIP plugin should run out of the box (may require restart of LMS to recognize the MusicIP server in case LMS is started to early).



Spicefly Sugarcube requires some modifications to prevent timeouts (maybe C Parker can create a new version with these extended timeouts included):

Modifications in plugin.pm (line number for version 4.75 of sugarcube):

Original Plugin.pm line 666:
my$http=Slim::Networking::SimpleAsyncHTTP->new(\&ScalarLoop,\&gotErrorViaHTTP,{caller=>'Spic efly',callerProc=>\&ArrayLoop,client=>$client});


New modified line 666:
my$http=Slim::Networking::SimpleAsyncHTTP->new(\&ScalarLoop,\&gotErrorViaHTTP,{caller=>'Spic efly',callerProc=>\&ArrayLoop,client=>$client,time out=>60});

Original line 887:
if($sugarcube_activefilter eq '0'||$sugarcube_activefilter eq '(None)'){$log->debug("Genre Filter is not set\n");}else{$mypageurl=($mypageurl.'&filter='.$s ugarcube_activefilter);}}my$http=Slim::Networking: :SimpleAsyncHTTP->new(\&ScalarLoop,\&gotErrorViaHTTP,{caller=>'Spic eflyAutoMix',callerProc=>\&AutoStartMix,client=>$c lient});

New line 887:
if($sugarcube_activefilter eq '0'||$sugarcube_activefilter eq '(None)'){$log->debug("Genre Filter is not set\n");}else{$mypageurl=($mypageurl.'&filter='.$s ugarcube_activefilter);}}my$http=Slim::Networking: :SimpleAsyncHTTP->new(\&ScalarLoop,\&gotErrorViaHTTP,{caller=>'Spic eflyAutoMix',callerProc=>\&AutoStartMix,client=>$c lient,timeout=>60});

original line 925:
my$http=Slim::Networking::SimpleAsyncHTTP->new(\&ScalarLoop,\&gotErrorViaHTTP,{caller=>'Spic eflyAlarm',callerProc=>\&AlarmFired,client=>$clien t});

New line 925:
my$http=Slim::Networking::SimpleAsyncHTTP->new(\&ScalarLoop,\&gotErrorViaHTTP,{caller=>'Spic eflyAlarm',callerProc=>\&AlarmFired,client=>$clien t,timeout=>60});

Old 166:
my$http=Slim::Networking::SimpleAsyncHTTP->new(\&ScalarLoop,\&gotErrorViaHTTP,{caller=>'Spic eflyONE',callerProc=>\&sc_one_off,client=>$client} );

New 166:
my$http=Slim::Networking::SimpleAsyncHTTP->new(\&ScalarLoop,\&gotErrorViaHTTP,{caller=>'Spic eflyONE',callerProc=>\&sc_one_off,client=>$client, timeout=>60});





Restart LMS and Sugarcube should be running.

Viewing all articles
Browse latest Browse all 2050

Trending Articles