eg-blog

Feed Rss

Subsonic 4.7-028 package for Synology

11.04.2012, Allgemein, Download / Release Notes, Subsonic on Synology DS, by .

Attention: There are some serious issues with this package on x86 and ppc Disk Stations. I will fix them as soon as I can. Until then: Don’t update if your Subsonic runs fine now!

Hi everyone,

I’ve spent the last 2 days completely rewriting the install script, updating ffmpeg and adding power pc support for this package and here it is:

What is different?

  • Support of new Powerpc Qoriq powered Diskstations DS413 and DS213+
  • completely rewrote installation script
  • Now Subsonic, MashupMod, MiniSub, Subtunes and the ffmpeg packages are downloaded from the original sources during install
  • There is just one .spk for all CPU architectures
  • Updated MiniSub to the latest version (which is detected during install thanks to github) – now with Podcast support
  • Updated MashupMod to 4.7_B3158SE
  • now the Synology standard scripts are calling one big installer.sh which contains every script (inspired by patters from pcloadletter.co.uk)
  • fixed a few old bugs and many many new ones created during recoding

But my Diskstation is not connected to the Internet, what can I do?

  • Download Subsonic Stand alone from here  http://www.subsonic.org/pages/download.jsp and rename the downloaded file to Subsonic.tgz
  • OR if you want to use MashupMod download the newest SE version from here http://uploaded.net/f/zryfjb and rename the downloaded file to Mashupmod.zip
  • Download the correct ffmpeg binary from here http://www.eg-blog.de/download/ (yes they are called serviio-native because I am using the ones from patters) and rename it to ffmpeg.tgz
  • Put the two downloaded files into your public folder and start the installation, the script will detect and use them.
  • Note: you can not update MiniSub or install Subtunes with this method, but you can download them separately and place them into /volumeX/@appstore/Subsonic/jetty/<number>/webapp/mini or …/subtunes to install/update them.

Note for MashupMod users who use transcoding:

  • Go to Settings->Transcoding and change the three “Audioffmpeg” lines in “Step 1″ into “ffmpeg”.
  • Copy the “Step1″ field from mp3 audio into the one from m4a/FLAC audio.
  • Afterwards it should look like this:

Download from Dropbox: https://www.dropbox.com/sh/vd06e2fn2157gh0/kE6FO5J1cD

scripts:

installer.sh:

#!/bin/sh

#--------Subsonic installer script
#--------package maintained at eg-blog.de

DOWNLOAD_URL_STANDARD="http://sourceforge.net/projects/subsonic/files/subsonic/4.7/subsonic-4.7-standalone.tar.gz/download"
DOWNLOAD_URL_MASHUPMOD="http://uploaded.net/file/6kzehtl6/from/zryfjb"
DOWNLOAD_URL_SUBTUNES="http://subtunes.googlecode.com/files/subtunes-0.9.4b.zip"
DOWNLOAD_URL_MINISUB="https://github.com/tsquillario/MiniSub/tarball/master"
SYNO_CPU_ARCH="`uname -m`"
NATIVE_BINS_URL="http://eg-blog.de/download/serviio-native-${SYNO_CPU_ARCH}.tgz"
NATIVE_BINS_FILE="`echo ${NATIVE_BINS_URL} | sed -r "s%^.*/(.*)%\1%"`"

source /etc/profile
TEMP_FOLDER="`find / -maxdepth 2 -name '@tmp' | head -n 1`"
PUBLIC_FOLDER="`cat /usr/syno/etc/smb.conf | sed -r '/\/public$/!d;s/^.*path=(\/volume[0-9]{1,4}\/public).*$/\1/'`"

PID=""
subsonic_get_pid ()
{
	PID=`ps | grep java | grep subsonic | awk '{print $1}'`
}

preinst ()
{
	source /etc/profile

	########################################
	#check if Java is installed

	if [ -z ${JAVA_HOME} ]; then
		echo "Java is not installed or not properly configured. JAVA_HOME is not defined. " > $SYNOPKG_TEMP_LOGFILE
			echo "Download and install the Java Synology package from http://wp.me/pVshC-z5" >> $SYNOPKG_TEMP_LOGFILE
			echo "$(date +%d.%m.%y_%H:%M:%S): Download and install the Java Synology package from http://wp.me/pVshC-z5" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		exit 1
	fi

	if [ ! -f ${JAVA_HOME}/bin/java ]; then
		echo "Java is not installed or not properly configured. The Java binary could not be located. " > $SYNOPKG_TEMP_LOGFILE
			echo "Download and install the Java Synology package from http://wp.me/pVshC-z5" >> $SYNOPKG_TEMP_LOGFILE
			echo "$(date +%d.%m.%y_%H:%M:%S): Download and install the Java Synology package from http://wp.me/pVshC-z5" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		exit 1
	else
		echo "$(date +%d.%m.%y_%H:%M:%S): found Java in ${JAVA_HOME}" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	fi

	#########################################
	#check if Subsonic folder is in public folder wehn restore is selected
	if [ ! -z ${install_restore} ]; then

		if [ ! -d $PUBLIC_FOLDER/Subsonic ]; then
			echo "Can't find a folder named 'Subsonic' in your public folder. " > $SYNOPKG_TEMP_LOGFILE
			echo "$(date +%d.%m.%y_%H:%M:%S): Can't find a folder named 'Subsonic' in your public folder. " >> ${SYNOPKG_PKGDEST}/subsonic_package.log
			echo "Please check your public folder and make sure there is a folder called Subsonic (with Capital S) in it. Or select 'No' if you don't want to restore anything and just install Subsonic normally" >> $SYNOPKG_TEMP_LOGFILE
			echo "$(date +%d.%m.%y_%H:%M:%S): Please check your public folder and make sure there is a folder called Subsonic (with Capital S) in it. Or select 'No' if you don't want to restore anything and just install Subsonic normally" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
			exit 1
		fi
	fi

	#########################################
	#is the User Home service enabled?
	UH_SERVICE=maybe
	synouser --add userhometest Testing123 "User Home test user" 0 "" ""
	UHT_HOMEDIR=`cat /etc/passwd | sed -r '/User Home test user/!d;s/^.*:User Home test user:(.*):.*$/\1/'`
	if echo $UHT_HOMEDIR | grep '/var/services/homes/' > /dev/null; then
		if [ ! -d $UHT_HOMEDIR ]; then
			UH_SERVICE=false
		fi
	fi
	synouser --del userhometest
	if [ ${UH_SERVICE} == "false" ]; then
		echo "The User Home service is not enabled. Please enable this feature in the User control panel in DSM." >> $SYNOPKG_TEMP_LOGFILE
		echo "The User Home service is not enabled. Please enable this feature in the User control panel in DSM." >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		exit 1
	else
		echo "$(date +%d.%m.%y_%H:%M:%S): User home is enabled" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	fi

	exit 0
}

postinst ()
{
	#create subsonic daemon user
	synouser --add subsonic `${SYNOPKG_PKGDEST}/passgen 1 20` "Subsonic daemon user" 0 "" ""
	echo "$(date +%d.%m.%y_%H:%M:%S): create subsonic daemon user" >> ${SYNOPKG_PKGDEST}/subsonic_package.log

	#determine the subsonic user homedir and save that variable in the user's profile
	#this is needed because librtmp needs to write a file called ~/.swfinfo
	#and new users seem to inherit a HOME value of /root which they have no permissions for
	SUBSONIC_HOMEDIR=`cat /etc/passwd | sed -r '/Subsonic daemon user/!d;s/^.*:Subsonic daemon user:(.*):.*$/\1/'`
	su - subsonic -s /bin/sh -c "echo export HOME=${SUBSONIC_HOMEDIR} >> .profile"

	#########################################
	##download stuff
	#select the right mods / version to download/install
	if [ ! -z ${mashupmod_install} ]; then
		echo "$(date +%d.%m.%y_%H:%M:%S): download and install MashupMod" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		wget ${DOWNLOAD_URL_MASHUPMOD} --output-document=${SYNOPKG_PKGDEST}/MashupMod.zip
		if [ -f ${SYNOPKG_PKGDEST}/MashupMod.zip ]; then
			echo "$(date +%d.%m.%y_%H:%M:%S): downloaded MashupMod from $DOWNLOAD_URL_MASHUPMOD" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		else
			if [ -d ${PUBLIC_FOLDER} ] && [ -f ${PUBLIC_FOLDER}/Mashupmod.zip ]; then
				cp ${PUBLIC_FOLDER}/Mashupmod.zip ${SYNOPKG_PKGDEST}
				echo "$(date +%d.%m.%y_%H:%M:%S): copied Mashupmod install files from public folder" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
			else
				echo "There was a problem downloading  Mashupmod from the official download link, " >> $SYNOPKG_TEMP_LOGFILE
				echo "which was ${DOWNLOAD_URL_MASHUPMOD}" >> $SYNOPKG_TEMP_LOGFILE
				echo "Alternatively, you may download this file manually and place it in the 'public' shared folder. and name it Mashupmod.zip" >> $SYNOPKG_TEMP_LOGFILE
				exit 1
			fi
		fi
		unzip ${SYNOPKG_PKGDEST}/MashupMod.zip -d ${SYNOPKG_PKGDEST}
		echo "$(date +%d.%m.%y_%H:%M:%S): extracted MashupMod" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		rm ${SYNOPKG_PKGDEST}/MashupMod.zip
		echo "$(date +%d.%m.%y_%H:%M:%S): deleted downloaded files" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	else
		#download Subsonic
		echo "$(date +%d.%m.%y_%H:%M:%S): download and install Subsonic standard" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		wget ${DOWNLOAD_URL_STANDARD} --output-document=${SYNOPKG_PKGDEST}/Subsonic.tgz
		if [ -f ${SYNOPKG_PKGDEST}/Subsonic.tgz ]; then
			echo "$(date +%d.%m.%y_%H:%M:%S): downloaded Subsonic install file from $DOWNLOAD_URL_STANDARD" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		else
			if [ -d ${PUBLIC_FOLDER} ] && [ -f ${PUBLIC_FOLDER}/Subsonic.tar.gz ]; then
				cp ${PUBLIC_FOLDER}/Subsonic.tgz ${SYNOPKG_PKGDEST}
				echo "$(date +%d.%m.%y_%H:%M:%S): copied Subsonic install files from public folder" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
			else
				echo "There was a problem downloading  Subsonic from the official download link, " >> $SYNOPKG_TEMP_LOGFILE
				echo "which was ${DOWNLOAD_URL_STANDARD}" >> $SYNOPKG_TEMP_LOGFILE
				echo "Alternatively, you may download this file manually and place it in the 'public' shared folder. and name it Subsonic.tgz" >> $SYNOPKG_TEMP_LOGFILE
				exit 1
			fi

		fi
		tar xzf ${SYNOPKG_PKGDEST}/Subsonic.tgz -C ${SYNOPKG_PKGDEST}
		echo "$(date +%d.%m.%y_%H:%M:%S): extracted Subsonic" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		rm ${SYNOPKG_PKGDEST}/Subsonic.tgz
		echo "$(date +%d.%m.%y_%H:%M:%S): deleted downloaded files" >> ${SYNOPKG_PKGDEST}/subsonic_package.log

	fi
	#delete the original subsonic.sh and use the edited file for Synology
	if [ -f ${SYNOPKG_PKGDEST}/subsonic.sh ]; then
		rm ${SYNOPKG_PKGDEST}/subsonic.sh
		echo "$(date +%d.%m.%y_%H:%M:%S): deleted original subsonic.sh file" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	fi

	if [ -f ${SYNOPKG_PKGDEST}/subsonic_synology.sh ]; then
		mv ${SYNOPKG_PKGDEST}/subsonic_synology.sh ${SYNOPKG_PKGDEST}/subsonic.sh
		echo "$(date +%d.%m.%y_%H:%M:%S): now using edited subsonic.sh file for Synology" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	fi

	#download and install ffmpeg binarys
	wget ${NATIVE_BINS_URL} --output-document=${SYNOPKG_PKGDEST}/ffmpeg.tgz
	if [ ! -f ${SYNOPKG_PKGDEST}/ffmpeg.tgz ]; then
		if [ -d ${PUBLIC_FOLDER} ] && [ -f ${PUBLIC_FOLDER}/ffmpeg.tgz ]; then
			cp ${PUBLIC_FOLDER}/ffmpeg.tgz ${SYNOPKG_PKGDEST}
			echo "$(date +%d.%m.%y_%H:%M:%S): copied ffmpeg files from public folder" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		else
			echo "There was a problem downloading  ffmpeg from the official download link, " >> $SYNOPKG_TEMP_LOGFILE
			echo "which was ${NATIVE_BINS_URL}" >> $SYNOPKG_TEMP_LOGFILE
			echo "Alternatively, you may download this file manually and place it in the 'public' shared folder and neme it ffmpeg.tgz" >> $SYNOPKG_TEMP_LOGFILE
			exit 1
		fi
	else
		echo "$(date +%d.%m.%y_%H:%M:%S): downloaded ffmpeg files from $NATIVE_BINS_URL" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	fi
	if [ ! -d  ${SYNOPKG_PKGDEST}/transcode ]; then
		mkdir ${SYNOPKG_PKGDEST}/transcode
		echo "$(date +%d.%m.%y_%H:%M:%S): created transcode directory" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	fi
	if [ ! -d  ${SYNOPKG_PKGDEST}/lib ]; then
		mkdir ${SYNOPKG_PKGDEST}/lib
		echo "$(date +%d.%m.%y_%H:%M:%S): created lib directory" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	fi

	tar xzvf ${SYNOPKG_PKGDEST}/ffmpeg.tgz -C ${SYNOPKG_PKGDEST}/transcode
	cp -r ${SYNOPKG_PKGDEST}/transcode/lib* ${SYNOPKG_PKGDEST}/lib/
	rm -r ${SYNOPKG_PKGDEST}/transcode/lib*
	rm ${SYNOPKG_PKGDEST}/ffmpeg.tgz
	echo "$(date +%d.%m.%y_%H:%M:%S): copied ffmpeg file and libraries" >> ${SYNOPKG_PKGDEST}/subsonic_package.log

	#########################################
	##start Subsonic
	#fix file permissions
	chmod +x ${SYNOPKG_PKGDEST}/subsonic.sh
	chmod 775 ${SYNOPKG_PKGDEST}/subsonic-booter-jar-with-dependencies.jar
	chmod 775 ${SYNOPKG_PKGDEST}/subsonic.war
	chown -R subsonic:users ${SYNOPKG_PKGDEST}
	echo "$(date +%d.%m.%y_%H:%M:%S): start Subsonic for first initialisation" >> ${SYNOPKG_PKGDEST}/subsonic_package.log

	#set up symlink for the DSM GUI
	ln -s ${SYNOPKG_PKGDEST}/ /usr/syno/synoman/webman/3rdparty/Subsonic

	#create custom temp folder so temp files can be bigger
	if [ ! -d ${SYNOPKG_PKGDEST}/../../@tmp/subsonic ]; then
		mkdir ${SYNOPKG_PKGDEST}/../../@tmp/subsonic
		chown -R subsonic ${SYNOPKG_PKGDEST}/../../@tmp/subsonic
	fi
	#create symlink to the created directory
	if [ ! -L /tmp/subsonic ]; then
		ln -s ${SYNOPKG_PKGDEST}/../../@tmp/subsonic /tmp/
	fi

	#start subsonic as subsonic user
	su - subsonic -s /bin/sh -c /usr/syno/synoman/webman/3rdparty/Subsonic/subsonic.sh

	sleep 5

	subsonic_get_pid
	if [ ! -z $PID ]; then
		echo "$(date +%d.%m.%y_%H:%M:%S): started Subsonic successfully. PID is: $PID" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	else
		echo "Error: Can not start Subsonic during install" >> $SYNOPKG_TEMP_LOGFILE
		echo "$(date +%d.%m.%y_%H:%M:%S): Error: Can not start Subsonic during install" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		exit 1
	fi

	#give it some time to start up
	sleep 90

	#stop subsonic

	kill $PID
	sleep 5
	echo "$(date +%d.%m.%y_%H:%M:%S): Stopped Subsonic" >> ${SYNOPKG_PKGDEST}/subsonic_package.log

	####################################
	##download and install additional features
	echo "$(date +%d.%m.%y_%H:%M:%S): Download and install additional Features" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	#Subtunes
	if [ ! -z ${subtunes_install} ]; then
		wget ${DOWNLOAD_URL_SUBTUNES}  --output-document=${SYNOPKG_PKGDEST}/Subtunes.zip
		if [ -f ${SYNOPKG_PKGDEST}/Subtunes.zip ]; then
			echo "$(date +%d.%m.%y_%H:%M:%S): Downloaded Subtunes" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
			unzip ${SYNOPKG_PKGDEST}/Subtunes.zip -d ${SYNOPKG_PKGDEST}/Subtunes/
			echo "$(date +%d.%m.%y_%H:%M:%S): extracted Subtunes" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		else
			echo "$(date +%d.%m.%y_%H:%M:%S): Error: Subtunes could not be downloaded" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
			echo "$(date +%d.%m.%y_%H:%M:%S): Please check the internet connection of your Diskstation" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
			echo "Error: Subtunes could not be downloaded" > $SYNOPKG_TEMP_LOGFILE
			echo "Please check the internet connection of your Diskstation" >> $SYNOPKG_TEMP_LOGFILE
			exit 1
		fi

		cp -r ${SYNOPKG_PKGDEST}/Subtunes /usr/syno/synoman/webman/3rdparty/Subsonic/jetty/*/webapp/
		rm -r ${SYNOPKG_PKGDEST}/Subtunes
		rm ${SYNOPKG_PKGDEST}/Subtunes.zip

		echo "$(date +%d.%m.%y_%H:%M:%S): copied Subtunes and deleted downloaded files" >> ${SYNOPKG_PKGDEST}/subsonic_package.log

		#Subtuneslink
		if [ -d ${SYNOPKG_PKGDEST}/Subtuneslink ]; then
			cp ${SYNOPKG_PKGDEST}/Subtuneslink/* /usr/syno/synoman/webman/3rdparty/Subsonic/jetty/*/webapp/mini/
		fi

	fi
	rm -r ${SYNOPKG_PKGDEST}/Subtuneslink

	#MiniSub Update
	if [ ! -z ${minisub_install} ]; then
		wget ${DOWNLOAD_URL_MINISUB} --no-check-certificate --output-document=${SYNOPKG_PKGDEST}/MiniSub.tgz
		if [ -f ${SYNOPKG_PKGDEST}/MiniSub.tgz ]; then
			echo "$(date +%d.%m.%y_%H:%M:%S): Downloaded MiniSub" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
			tar xzf ${SYNOPKG_PKGDEST}/MiniSub.tgz -C ${SYNOPKG_PKGDEST}/MiniSub
			echo "$(date +%d.%m.%y_%H:%M:%S): extracted MiniSub" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		else
			echo "$(date +%d.%m.%y_%H:%M:%S): Error: MiniSub could not be downloaded" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
			echo "$(date +%d.%m.%y_%H:%M:%S): Please check the internet connection of your Diskstation" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
			echo "Error: MiniSub could not be downloaded" > $SYNOPKG_TEMP_LOGFILE
			echo "Please check the internet connection of your Diskstation" >> $SYNOPKG_TEMP_LOGFILE
			exit 1
		fi
		if [ -d /usr/syno/synoman/webman/3rdparty/Subsonic/jetty/*/webapp/mini/ ]; then
			rm -r /usr/syno/synoman/webman/3rdparty/Subsonic/jetty/*/webapp/mini/*
			cp -r ${SYNOPKG_PKGDEST}/MiniSub/* /usr/syno/synoman/webman/3rdparty/Subsonic/jetty/*/webapp/mini/
		else
			echo "$(date +%d.%m.%y_%H:%M:%S): Error: Can't find the MiniSub directory -> MiniSub will not be updated " >> ${SYNOPKG_PKGDEST}/subsonic_package.log
			echo "Error: Can't find the MiniSub directory -> MiniSub will not be updated " >> ${SYNOPKG_PKGDEST}/subsonic_package.log >> $SYNOPKG_TEMP_LOGFILE
			exit 1
		fi
		rm -r ${SYNOPKG_PKGDEST}/MiniSub
		rm ${SYNOPKG_PKGDEST}/MiniSub.tgz
		echo "$(date +%d.%m.%y_%H:%M:%S): copied MiniSub and deleted downloaded files" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	fi

	#MiniSub Link
	echo "$(date +%d.%m.%y_%H:%M:%S): create MiniSub DSM link" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	if [ -d ${SYNOPKG_PKGDEST}/MiniSublink/ ]; then
		cp ${SYNOPKG_PKGDEST}/MiniSublink/* /usr/syno/synoman/webman/3rdparty/Subsonic/jetty/*/webapp/mini/
	fi
	rm -r ${SYNOPKG_PKGDEST}/MiniSublink
	####################################

	#delete symlink
	rm /usr/syno/synoman/webman/3rdparty/Subsonic
	#delete temp files
	if [ -d ${SYNOPKG_PKGDEST}/../../@tmp/subsonic ]; then
		rm -r ${SYNOPKG_PKGDEST}/../../@tmp/subsonic
	fi

	#check Podcast folder for right permissions
	if [ -d /volume1/music/Podcast ]; then
		echo "$(date +%d.%m.%y_%H:%M:%S): reset permissions of Podcast folder (subsonic user has new uid)" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		chown -R admin:users /volume1/music/Podcast
		chmod -R 775 /volume1/music/Podcast
	fi

	#########################################
	#install user backup from public folder

	if [ ! -z ${install_restore} ]; then
		echo "$(date +%d.%m.%y_%H:%M:%S): restore previously made backup fron public folder" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		#copy files
		cp -r ${PUBLIC_FOLDER}/Subsonic/* ${SYNOPKG_PKGDEST}/

		#new files might not be owned by subsonic user
		chown -R subsonic ${SYNOPKG_PKGDEST}/

		#make the Subsonic start script executable
		chmod +x ${SYNOPKG_PKGDEST}/subsonic.sh
	fi
	echo "$(date +%d.%m.%y_%H:%M:%S): ----installation complete----" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	exit 0
}

preuninst ()
{
	##############################################
	stop Subsonic if it is running

	subsonic_get_pid
	if [ -z $PID ]; then
		sleep 1
	else
		echo "$(date +%d.%m.%y_%H:%M:%S): stopping Subsonic" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		kill $PID
		sleep 2
		if [ -L /usr/syno/synoman/webman/3rdparty/Subsonic ]; then
			rm /usr/syno/synoman/webman/3rdparty/Subsonic
		fi

		if [ -d ${SYNOPKG_PKGDEST}/../../@tmp/subsonic ]; then
			rm -r ${SYNOPKG_PKGDEST}/../../@tmp/subsonic
		fi
	fi

	##############################################
	# create a backup in public folder in public folder
	if [ ! -z ${uninstall_backup} ]; then
		echo "$(date +%d.%m.%y_%H:%M:%S): Create a backup of Subsonic in public folder" >> ${SYNOPKG_PKGDEST}/subsonic_package.log

		if [ ! -d ${PUBLIC_FOLDER}/Subsonic ]; then
			mkdir ${PUBLIC_FOLDER}/Subsonic
		fi

		cp ${SYNOPKG_PKGDEST}/subsonic.properties *.index ${PUBLIC_FOLDER}/Subsonic
		cp -r ${SYNOPKG_PKGDEST}/db ${PUBLIC_FOLDER}/Subsonic
		cp -r ${SYNOPKG_PKGDEST}/lucene ${PUBLIC_FOLDER}/Subsonic
		cp -r ${SYNOPKG_PKGDEST}/thumbs ${PUBLIC_FOLDER}/Subsonic
	fi

	exit 0
}

postuninst ()
{
	synouser --del subsonic

	#remove DSM icon symlink
	if [ -L /usr/syno/synoman/webman/3rdparty/Subsonic ]; then
		rm /usr/syno/synoman/webman/3rdparty/Subsonic
	fi

	#remove temp symlink
	rm /tmp/subsonic

	exit 0
}

preupgrade ()
{
	###########################
	#stop Subsonic if it is runing

	subsonic_get_pid
	if [ ! -z $PID ]; then
		echo "$(date +%d.%m.%y_%H:%M:%S): stopping subsonic" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		kill $PID
		sleep 2
	fi

	if [ -d ${SYNOPKG_PKGDEST}/../../@tmp/subsonic ]; then
		rm -r ${SYNOPKG_PKGDEST}/../../@tmp/subsonic
	fi

	###########################
	#backup subsonic.properties and db Folder

	if [ -z ${install_restore} ]; then
		echo "$(date +%d.%m.%y_%H:%M:%S): create backup of Subsonic db in temporary backup dir" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		if [ ! -d ${SYNOPKG_PKGDEST}/../subsonic_update_backup ]; then
			mkdir ${SYNOPKG_PKGDEST}/../subsonic_update_backup
			cp ${SYNOPKG_PKGDEST}/subsonic.properties ${SYNOPKG_PKGDEST}*.index ${SYNOPKG_PKGDEST}/../subsonic_update_backup/
			cp -r ${SYNOPKG_PKGDEST}/db ${SYNOPKG_PKGDEST}/../subsonic_update_backup
			cp -r ${SYNOPKG_PKGDEST}/lucene ${SYNOPKG_PKGDEST}/../subsonic_update_backup
			cp -r ${SYNOPKG_PKGDEST}/thumbs ${SYNOPKG_PKGDEST}/../subsonic_update_backup
		fi
	fi

	exit 0
}

postupgrade ()
{

	###############################
	#restore subsonic db index and settings
	if [ ! -z ${install_update} ]; then
		echo "$(date +%d.%m.%y_%H:%M:%S): restore from temporary backup dir" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		cp -r ${SYNOPKG_PKGDEST}/../subsonic_update_backup/* ${SYNOPKG_PKGDEST}/
	fi

	#remove backup folder
	#remove the next lines to keep a backup in the @appstore folder
	if [ -d ${SYNOPKG_PKGDEST}/../subsonic_update_backup ]; then
		echo "$(date +%d.%m.%y_%H:%M:%S): remove temporary backup dir" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		rm -r ${SYNOPKG_PKGDEST}/../subsonic_update_backup
	fi

	#subsonic may not own all new files
	chown -R subsonic ${SYNOPKG_PKGDEST}/

	#make the Subsonic start script executable
	chmod +x ${SYNOPKG_PKGDEST}/subsonic.sh

	echo "$(date +%d.%m.%y_%H:%M:%S): ----update complete----" >> ${SYNOPKG_PKGDEST}/subsonic_package.log

	exit 0
}

start-stop-status

#!/bin/sh

#--------Subsonic start-stop-status script
#--------package maintained at eg-blog.de

##############################################
#function to get the process id of Subsonic
PID=""
subsonic_get_pid ()
{
	PID=`ps | grep java | grep subsonic | awk '{print $1}'`
}
get_time()
{
	TIME=$(date +%d.%m.%y_%H:%M:%S)
}

case "$1" in
   start)
	  ###---copied from patters start-stop-status.sh of his crashplan proe package---
	  DAEMON_ID="${SYNOPKG_PKGNAME} daemon user"
	  DAEMON_HOME="`cat /etc/passwd | grep "${DAEMON_ID}" | cut -f6 -d':'`"

	  #set the current timezone for Java so that log timestamps are accurate
	  #we need to use the modern timezone names so that Java can figure out DST
	  SYNO_TZ=`cat /etc/synoinfo.conf | grep timezone | cut -f2 -d'"'`
	  SYNO_TZ=`grep "^${SYNO_TZ}" /usr/share/zoneinfo/Timezone/tzname | sed -e "s/^.*= //"`
	  grep "^export TZ" ${DAEMON_HOME}/.profile > /dev/null \
	  && sed -i "s%^export TZ=.*$%export TZ='${SYNO_TZ}'%" ${DAEMON_HOME}/.profile \
	  ###---end of copy---------------------------------------------------------------

	  #set up symlinks for the DSM GUI icon
	  #Subsonic main
	  if [ -d /usr/syno/synoman/webman/3rdparty ]; then
		ln -s ${SYNOPKG_PKGDEST}/ /usr/syno/synoman/webman/3rdparty/Subsonic
		echo "$(date +%d.%m.%y_%H:%M:%S): Subsonic DSM link created" >> ${SYNOPKG_PKGDEST}/subsonic_package.log

		#MiniSub
		if [ -d ${SYNOPKG_PKGDEST}/jetty/*/webapp/mini ]; then
			ln -s ${SYNOPKG_PKGDEST}/jetty/*/webapp/mini /usr/syno/synoman/webman/3rdparty/Subsonic_MiniSub
			echo "$(date +%d.%m.%y_%H:%M:%S): MiniSub DSM link created" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		fi
		#Subtunes
		if [ -d ${SYNOPKG_PKGDEST}/jetty/*/webapp/Subtunes ]; then
			ln -s ${SYNOPKG_PKGDEST}/jetty/*/webapp/Subtunes /usr/syno/synoman/webman/3rdparty/Subsonic_Subtunes
			echo "$(date +%d.%m.%y_%H:%M:%S): Subtunes DSM link created" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		fi
	  else
		echo "$(date +%d.%m.%y_%H:%M:%S) : Error: Directory for Subsonic DSM link was not found" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	  fi
      #create custom temp folder so temp files can be bigger
	  if [ ! -d ${SYNOPKG_PKGDEST}/../../@tmp/subsonic ]; then
		mkdir ${SYNOPKG_PKGDEST}/../../@tmp/subsonic
		chown -R subsonic ${SYNOPKG_PKGDEST}/../../@tmp/subsonic
		echo "$(date +%d.%m.%y_%H:%M:%S): Temp directory created" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	  fi
	  #create symlink to the created directory
	  if [ ! -L /tmp/subsonic ]; then
		ln -s ${SYNOPKG_PKGDEST}/../../@tmp/subsonic /tmp/
		echo "$(date +%d.%m.%y_%H:%M:%S): Temp directory link created" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	  fi
	  # starting subsonic as subsonic daemon user
	  echo "$(date +%d.%m.%y_%H:%M:%S): starting Subsonic as subsonic daemon user" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
      su - subsonic -s /bin/sh -c /usr/syno/synoman/webman/3rdparty/Subsonic/subsonic.sh
      sleep 10
	  echo "$(date +%d.%m.%y_%H:%M:%S): started Subsonic as subsonic daemon user" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	  subsonic_get_pid
	  if [ ! -z $PID ]; then
		echo "$(date +%d.%m.%y_%H:%M:%S): started Subsonic successfully. PID is: $PID" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		echo "$(date +%d.%m.%y_%H:%M:%S): ----subsonic is running----" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	  else
		echo "$(date +%d.%m.%y_%H:%M:%S): Error: Can not start Subsonic" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
		exit 1
	  fi

	  exit 0
   ;;
   stop)
      #stop subsonic
	  subsonic_get_pid
      kill $PID
	  echo "$(date +%d.%m.%y_%H:%M:%S) : killed Subsonic PID: $PID" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
      sleep 2
	  #delete Symlinks and DSM icon
	  if [ -L /usr/syno/synoman/webman/3rdparty/Subsonic ]; then
		rm /usr/syno/synoman/webman/3rdparty/Subsonic
		echo "$(date +%d.%m.%y_%H:%M:%S): Subsonic DSM link deleted" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	  fi
	  if [ -L /usr/syno/synoman/webman/3rdparty/Subsonic_MiniSub ]; then
		rm /usr/syno/synoman/webman/3rdparty/Subsonic_MiniSub
		echo "$(date +%d.%m.%y_%H:%M:%S): MiniSub DSM link deleted" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	  fi
	  if [ -L /usr/syno/synoman/webman/3rdparty/Subsonic_Subtunes ]; then
		rm /usr/syno/synoman/webman/3rdparty/Subsonic_Subtunes
		echo "$(date +%d.%m.%y_%H:%M:%S): Subtunes DSM link deleted" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	  fi
	  if [ -d ${SYNOPKG_PKGDEST}/../../@tmp/subsonic ]; then
		rm -r ${SYNOPKG_PKGDEST}/../../@tmp/subsonic
		echo "$(date +%d.%m.%y_%H:%M:%S): Temp files deleted" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	  fi
	  if [ -L /tmp/subsonic ]; then
		rm /tmp/subsonic
		echo "$(date +%d.%m.%y_%H:%M:%S): Temp link deleted" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	  fi
	  echo "$(date +%d.%m.%y_%H:%M:%S): ----subsonic is stopped----" >> ${SYNOPKG_PKGDEST}/subsonic_package.log
	  exit 0
   ;;
   status)
      subsonic_get_pid
      if [ -z  $PID ]; then
	  #Subsonic is not running
		exit 1
	  else
	  #subsonic is running
		exit 0
      fi
   ;;
   log)
	  echo "${SYNOPKG_PKGDEST}/subsonic_package.log"
	  exit 0
   ;;
esac

40 Kommentare zu Subsonic 4.7-028 package for Synology

  1. Hi Eric,

    I install your new subsonic package on my DS213+ this w-e.

    When I try to play H264 encoded video I received the error “video not found or access denied: /subsonic/stream?path”.

    It seems that transcoding didn’t work (ffmpeg ?).

    Have you a solution for that ?

    Antworten
  2. I have a failed to start … on a clean install
    :(

    Antworten
    • I need a little bit more info to help you…
      DS typ, CPU architecture, DSM version, subsonic_package.log, subsonic.sh.log…

      Antworten
  3. For me :
    DS213+
    PPC Qoriq
    DSM 4.1

    subsonic_package.log:
    04.11.12_20:58:44: create subsonic daemon user
    04.11.12_20:58:44: download and install MashupMod
    04.11.12_21:04:04: downloaded MashupMod from http://uploaded.net/file/6kzehtl6/from/zryfjb
    04.11.12_21:04:05: extracted MashupMod
    04.11.12_21:04:05: deleted downloaded files
    04.11.12_21:04:05: deleted original subsonic.sh file
    04.11.12_21:04:05: now using edited subsonic.sh file for Synology
    04.11.12_21:04:53: downloaded ffmpeg files from http://eg-blog.de/download/serviio-native-ppc.tgz
    04.11.12_21:04:53: created transcode directory
    04.11.12_21:04:53: created lib directory
    04.11.12_21:04:53: copied ffmpeg file and libraries
    04.11.12_21:04:53: start Subsonic for first initialisation
    04.11.12_21:04:58: started Subsonic successfully. PID is: 32024
    04.11.12_21:06:33: Stopped Subsonic
    04.11.12_21:06:33: Download and install additional Features
    04.11.12_21:06:41: Downloaded Subtunes
    04.11.12_21:06:42: extracted Subtunes
    04.11.12_21:06:43: copied Subtunes and deleted downloaded files
    04.11.12_21:06:45: Downloaded MiniSub
    04.11.12_21:06:45: extracted MiniSub
    04.11.12_21:06:45: copied MiniSub and deleted downloaded files
    04.11.12_21:06:45: create MiniSub DSM link
    04.11.12_21:06:45: —-installation complete—-
    04.11.12_21:06:45: Subsonic DSM link created
    04.11.12_21:06:45: MiniSub DSM link created
    04.11.12_21:06:45: Subtunes DSM link created
    04.11.12_21:06:45: Temp directory created
    04.11.12_21:06:45: starting Subsonic as subsonic daemon user
    04.11.12_21:06:55: started Subsonic as subsonic daemon user
    04.11.12_21:06:55: started Subsonic successfully. PID is: 7135
    04.11.12_21:06:55: —-subsonic is running—-
    05.11.12_07:23:54 : killed Subsonic PID: 7135
    05.11.12_07:23:56: Subsonic DSM link deleted
    05.11.12_07:23:56: MiniSub DSM link deleted
    05.11.12_07:23:56: Subtunes DSM link deleted
    05.11.12_07:23:56: Temp files deleted
    05.11.12_07:23:56: Temp link deleted
    05.11.12_07:23:56: —-subsonic is stopped—-
    05.11.12_07:23:59: Subsonic DSM link created
    05.11.12_07:23:59: MiniSub DSM link created
    05.11.12_07:23:59: Subtunes DSM link created
    05.11.12_07:23:59: Temp directory created
    05.11.12_07:23:59: Temp directory link created
    05.11.12_07:23:59: starting Subsonic as subsonic daemon user
    05.11.12_07:24:09: started Subsonic as subsonic daemon user
    05.11.12_07:24:10: started Subsonic successfully. PID is: 3171
    05.11.12_07:24:10: —-subsonic is running—-

    subsonci_sh.log :
    126 [main] INFO org.springframework.context.support.ClassPathXmlApplicationContext – Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@ae8542: display name [org.springframework.context.support.ClassPathXmlApplicationContext@ae8542]; startup date [Mon Nov 05 20:15:17 GMT+01:00 2012]; root of context hierarchy
    [GC 2175K->881K(7808K), 0.0215720 secs]
    437 [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader – Loading XML bean definitions from class path resource [applicationContext-deployer.xml]
    [GC 3057K->1392K(7808K), 0.0191990 secs]
    [GC 3568K->1843K(7808K), 0.0204160 secs]
    [GC 4017K->2353K(7808K), 0.0113050 secs]
    [GC 4529K->3013K(7808K), 0.0245060 secs]
    2104 [main] INFO org.springframework.context.support.ClassPathXmlApplicationContext – Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@ae8542]: org.springframework.beans.factory.support.DefaultListableBeanFactory@61ee1b
    2161 [main] INFO org.springframework.beans.factory.support.DefaultListableBeanFactory – Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@61ee1b: defining beans [service,org.springframework.remoting.rmi.RmiServiceExporter#0]; root of factory hierarchy
    2261 [main] INFO org.mortbay.log – Logging to org.slf4j.impl.SimpleLogger(org.mortbay.log) via org.mortbay.log.Slf4jLog
    [GC 5186K->3584K(7808K), 0.0170270 secs]
    Using WAR file: /volume1/@appstore/Subsonic/subsonic.war
    Extracting webapp to /usr/syno/synoman/webman/3rdparty/Subsonic/jetty/3158SE
    Using WAR file: /volume1/@appstore/Subsonic/subsonic.war
    2494 [main] INFO org.mortbay.log – jetty-6.1.x
    [GC 5760K->4037K(7808K), 0.0139350 secs]
    [GC 6213K->4445K(7808K), 0.0140370 secs]
    [GC 6619K->4449K(7808K), 0.0069980 secs]
    [GC 6615K->4456K(7808K), 0.0029290 secs]
    [GC 6630K->4500K(7808K), 0.0023890 secs]
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/volume1/@appstore/Subsonic/subsonic-booter-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/volume1/@appstore/Subsonic/jetty/3158SE/webapp/WEB-INF/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    [GC 6676K->4869K(7808K), 0.0072310 secs]
    [GC 7045K->4928K(7808K), 0.0090040 secs]
    [GC 7104K->4844K(7808K), 0.0066950 secs]
    [GC 7020K->4845K(7808K), 0.0046580 secs]
    [GC 7021K->4853K(7808K), 0.0031090 secs]
    [GC 7029K->5009K(7808K), 0.0077810 secs]
    [GC 7185K->5365K(7808K), 0.0092880 secs]
    4355 [main] INFO / – Initializing Spring root WebApplicationContext
    4355 [main] INFO org.springframework.web.context.ContextLoader – Root WebApplicationContext: initialization started
    4471 [main] INFO org.springframework.web.context.support.XmlWebApplicationContext – Refreshing org.springframework.web.context.support.XmlWebApplicationContext@9a90b9: display name [Root WebApplicationContext]; startup date [Mon Nov 05 20:15:22 GMT+01:00 2012]; root of context hierarchy
    [GC 7528K->5706K(7936K), 0.0092310 secs]
    [Full GC 5706K->2880K(7936K), 0.1132840 secs]
    [GC 5120K->3142K(7872K), 0.0053440 secs]
    4812 [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader – Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext-service.xml]
    [GC 5382K->3330K(7872K), 0.0067710 secs]
    5187 [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader – Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext-security.xml]
    5335 [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader – Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext-cache.xml]
    [GC 5570K->3458K(7872K), 0.0077010 secs]
    5411 [main] INFO org.springframework.web.context.support.XmlWebApplicationContext – Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@9a90b9]: org.springframework.beans.factory.support.DefaultListableBeanFactory@37df1c
    [GC 5698K->3453K(7872K), 0.0073070 secs]
    [GC 5693K->3650K(7872K), 0.0072430 secs]
    5827 [main] INFO org.springframework.beans.factory.support.DefaultListableBeanFactory – Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@37df1c: defining beans [playerDao,mediaFileDao,artistDao,albumDao,playlistDao,internetRadioDao,musicFileInfoDao,hotDao,musicFolderDao,userDao,transcodingDao,podcastDao,avatarDao,shareDao,daoHelper,mediaFileService,securityService,settingsService,mediaScannerService,searchService,networkService,playerService,playlistService,versionService,statusService,musicInfoService,hotService,musicIndexService,audioScrobblerService,transcodingService,shareService,podcastService,jukeboxService,metaDataParserFactory,ajaxMultiService,ajaxNowPlayingService,ajaxPlayQueueService,ajaxPlaylistService,ajaxLyricsService,ajaxCoverArtService,ajaxStarService,ajaxTagService,ajaxTransferService,ajaxChatService,MediaFileComparator,filterChainProxy,httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,basicProcessingFilter,restRequestParameterProcessingFilter,basicProcessingFilterEntryPoint,securityContextHolderAwareRequestFilter,rememberMeProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,basicExceptionTranslationFilter,filterInvocationInterceptor,accessDecisionManager,rememberMeServices,authenticationManager,daoAuthenticationProvider,userCacheWrapper,ldapAuthenticationProvider,bindAuthenticator,userDetailsServiceBasedAuthoritiesPopulator,ajaxServiceInterceptor,ajaxTagServiceSecure,ajaxTransferServiceSecure,cacheFactory,userCache,mediaFileMemoryCache,musicFileMemoryCache]; root of factory hierarchy
    5978 [main] INFO org.springframework.jdbc.datasource.DriverManagerDataSource – Loaded JDBC driver: org.hsqldb.jdbcDriver
    [GC 5890K->3646K(7872K), 0.0129310 secs]
    [GC 5847K->4327K(7872K), 0.0131830 secs]
    [GC 6567K->5151K(7872K), 0.0128310 secs]
    [GC 7222K->6163K(8512K), 0.0160780 secs]
    [Full GC 6163K->4200K(8512K), 0.1889540 secs]
    [GC 7144K->5100K(10268K), 0.0091430 secs]
    [GC 8044K->5247K(10268K), 0.0052360 secs]
    [GC 8191K->5805K(10268K), 0.0128720 secs]
    [GC 8749K->7333K(10396K), 0.0301550 secs]
    [Full GC 7333K->6981K(10396K), 0.2247040 secs]
    [GC 11717K->7307K(16952K), 0.0094550 secs]
    [GC 12043K->7929K(16952K), 0.0235110 secs]
    [GC 12665K->8347K(16952K), 0.0184520 secs]
    [GC 13083K->8757K(16952K), 0.0214250 secs]
    [GC 13493K->9011K(16952K), 0.0252910 secs]
    [GC 13747K->9599K(16952K), 0.0308350 secs]
    11257 [main] INFO org.acegisecurity.intercept.AbstractSecurityInterceptor – Validated configuration attributes
    [GC 14335K->10148K(16952K), 0.0255520 secs]
    11351 [main] INFO org.acegisecurity.intercept.method.MethodDefinitionMap – Adding secure method [public net.sourceforge.subsonic.ajax.UploadInfo net.sourceforge.subsonic.ajax.TransferService.getUploadInfo()] with attributes [[ROLE_UPLOAD]]
    11351 [main] INFO org.acegisecurity.intercept.method.MethodDefinitionMap – Adding secure method [public java.lang.String net.sourceforge.subsonic.ajax.TagService.setTags(int,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)] with attributes [[ROLE_COVERART]]
    11352 [main] INFO org.acegisecurity.intercept.AbstractSecurityInterceptor – Validated configuration attributes
    11513 [main] INFO org.springframework.web.context.ContextLoader – Root WebApplicationContext: initialization completed in 7157 ms
    [GC 14884K->10704K(16952K), 0.0215790 secs]
    11778 [main] INFO / – Initializing Spring FrameworkServlet ‘subsonic’
    11779 [main] INFO org.springframework.web.servlet.DispatcherServlet – FrameworkServlet ‘subsonic’: initialization started
    11781 [main] INFO org.springframework.web.context.support.XmlWebApplicationContext – Refreshing org.springframework.web.context.support.XmlWebApplicationContext@a8b94e: display name [WebApplicationContext for namespace 'subsonic-servlet']; startup date [Mon Nov 05 20:15:29 GMT+01:00 2012]; parent: org.springframework.web.context.support.XmlWebApplicationContext@9a90b9
    11783 [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader – Loading XML bean definitions from ServletContext resource [/WEB-INF/subsonic-servlet.xml]
    [GC 15440K->11306K(16952K), 0.0316000 secs]
    12265 [main] INFO org.springframework.web.context.support.XmlWebApplicationContext – Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@a8b94e]: org.springframework.beans.factory.support.DefaultListableBeanFactory@19a60c6
    [GC 16042K->11623K(16952K), 0.0205710 secs]
    12683 [main] INFO org.springframework.beans.factory.support.DefaultListableBeanFactory – Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@19a60c6: defining beans [leftController,rightController,chatController,statusController,mainController,playlistController,importPlaylistController,topController,helpController,LogController,moreController,moreeController,uploadController,upwinController,statisticsController,lyricsController,allmusicController,podcastController,podcastReceiverController,podcastReceiverAdminController,setMediaFileController,setMusicFileInfoController,shareManagementController,setRatingController,setHotController,randomPlayQueueController,loadPlaylistController,changeCoverArtController,nowPlayingController,starredController,searchController,settingsController,playerSettingsController,shareSettingsController,musicFolderSettingsController,networkSettingsController,transcodingSettingsController,internetRadioSettingsController,podcastSettingsController,generalSettingsController,advancedSettingsController,personalSettingsController,avatarUploadController,userSettingsController,passwordSettingsController,homeController,editTagsController,radioController,genresController,playQueueController,coverArtController,avatarController,proxyController,statusChartController,userChartController,m3uController,streamController,hlsController,videoPlayerController,externalPlayerController,downloadController,donateController,MadsonicController,multiController,wapController,restController,dbController,donateValidator,userSettingsValidator,passwordSettingsValidator,urlMapping,messageSource,themeSource,localeResolver,themeResolver,viewResolver]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory@37df1c
    [GC 16359K->11565K(16952K), 0.0111310 secs]
    [GC 16301K->11703K(16952K), 0.0095680 secs]
    [GC 16439K->11786K(16952K), 0.0106540 secs]
    [GC 16522K->11947K(16952K), 0.0126890 secs]
    [GC 16683K->12028K(17080K), 0.0114070 secs]
    [Full GC 12028K->9974K(17080K), 0.4136540 secs]
    [GC 16758K->10188K(24244K), 0.0085310 secs]
    [GC 16972K->10355K(24244K), 0.0170760 secs]
    [GC 17139K->10541K(24244K), 0.0116990 secs]
    [GC 17325K->10932K(24244K), 0.0153420 secs]
    [GC 17716K->11049K(24244K), 0.0177540 secs]
    16311 [main] INFO org.springframework.web.servlet.DispatcherServlet – FrameworkServlet ‘subsonic’: initialization completed in 4532 ms
    16363 [main] INFO org.mortbay.log – Started SelectChannelConnector@0.0.0.0:4040
    16912 [main] INFO org.mortbay.log – Started SslSocketConnector@0.0.0.0:4041
    Subsonic running on: http://localhost:4040/
    and: https://localhost:4041/
    17056 [main] INFO org.springframework.remoting.rmi.RmiServiceExporter – Looking for RMI registry at port ’9412′
    17090 [main] INFO org.springframework.remoting.rmi.RmiServiceExporter – Could not detect RMI registry – creating new one
    [GC 17833K->12536K(24244K), 0.0368630 secs]
    17260 [main] INFO org.springframework.remoting.rmi.RmiServiceExporter – Binding service ‘SubsonicDeployerService’ to RMI registry: RegistryImpl[UnicastServerRef [liveRef: [endpoint:[X.X.X.X:9412](local),objID:[0:0:0, 0]]]]
    [GC 19320K->13895K(24244K), 0.0526910 secs]

    Antworten
  4. Hello Eric,

    I do have a lot of issues with the latest package you created.
    I tried to update then started from a fresh install; same issue.

    The system say it is unable to start but Subsonic is running anyway.
    The problem is I’m unable to stop it or restart it without rebooting the server ;o(

    My Synology is a 1511+.

    This is very strange and I would like to have it corrected because if the server restart, I need to start it again manually.

    If you need, I can provide you a SSH access to my server ;o)
    Any idea why this append ?

    Please help…

    PS I just install the “simple” Subsonic server (no mashupmod)

    Antworten
    • And I would like to inform you the transcoding is not working neither. I tried the previous trick but same result ;o(
      argh !

      Antworten
      • Rollback to previous version with correction of the FFMPEG for my x86.
        At least it work ;o)
        Hope you will find a fix for the latest.
        And… Thanks again for your tremendous work !!!!!!
        Note easy to rewrite everything and make it working at the first shoot ;o)

        Antworten
  5. Same issu as MoBo on a 411+

    Antworten
  6. Damn, seems to be a general Problem, I don’t have any of these issues on my DS211+
    Can you give me the package log from the package center?

    My biggest Problem is, that I don’t have any free time to care about this until 19th of November…

    I will try to fix it tomorrow night until I fall to sleep ;)

    btw You can stop Subsonic by killing the PID via ssh… e.g. type kill 6454 (if PID is 6454…)

    Antworten
  7. Same over here :

    I do have a lot of issues with the latest package you created. I tried to update then started from a fresh install; same issue.

    The system say it is unable to start but Subsonic is running anyway.
    The problem is I’m unable to stop it or restart it without rebooting the server. When the server is rebooted i must manually start Subsonic.

    My Synology is a 411+II

    Antworten
  8. MoBo / stan / Guido:
    Can anyone of you give me the subsonic_package.log from package center and the subsonic.

    The only errors I found (and fixed) so far are that MiniSub and Subtunes are not running…

    Antworten
  9. 07.11.12_21:59:14: Subsonic DSM link created
    07.11.12_21:59:14: MiniSub DSM link created
    07.11.12_21:59:14: Temp directory created
    07.11.12_21:59:14: Temp directory link created
    07.11.12_21:59:14: starting Subsonic as subsonic daemon user
    07.11.12_21:59:24: started Subsonic as subsonic daemon user
    07.11.12_21:59:24: Error: Can not start Subsonic

    Antworten
  10. 121 [main] INFO org.springframework.context.support.ClassPathXmlApplicationContext – Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@26d4f1: display name [org.springframework.context.support.ClassPathXmlApplicationContext@26d4f1]; startup date [Wed Nov 07 21:59:15 GMT+01:00 2012]; root of context hierarchy
    307 [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader – Loading XML bean definitions from class path resource [applicationContext-deployer.xml]
    [GC 4288K->297K(15424K), 0.0127310 secs]
    [GC 4585K->502K(15424K), 0.0094450 secs]
    1539 [main] INFO org.springframework.context.support.ClassPathXmlApplicationContext – Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@26d4f1]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1eb2c1b
    1579 [main] INFO org.springframework.beans.factory.support.DefaultListableBeanFactory – Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1eb2c1b: defining beans [service,org.springframework.remoting.rmi.RmiServiceExporter#0]; root of factory hierarchy
    1655 [main] INFO org.mortbay.log – Logging to org.slf4j.impl.SimpleLogger(org.mortbay.log) via org.mortbay.log.Slf4jLog
    Using WAR file: /volume1/@appstore/Subsonic/subsonic.war
    Extracting webapp to /usr/syno/synoman/webman/3rdparty/Subsonic/jetty/3158SE
    Using WAR file: /volume1/@appstore/Subsonic/subsonic.war
    1811 [main] INFO org.mortbay.log – jetty-6.1.x
    [GC 4790K->445K(15424K), 0.0113520 secs]
    [GC 4724K->771K(15424K), 0.0074880 secs]
    [GC 5059K->771K(15424K), 0.0047410 secs]
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/volume1/@appstore/Subsonic/subsonic-booter-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/volume1/@appstore/Subsonic/jetty/3158SE/webapp/WEB-INF/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    [GC 5059K->878K(15424K), 0.0049950 secs]
    [GC 5166K->915K(15424K), 0.0035210 secs]
    3294 [main] INFO / – Initializing Spring root WebApplicationContext
    3294 [main] INFO org.springframework.web.context.ContextLoader – Root WebApplicationContext: initialization started
    3374 [main] INFO org.springframework.web.context.support.XmlWebApplicationContext – Refreshing org.springframework.web.context.support.XmlWebApplicationContext@922804: display name [Root WebApplicationContext]; startup date [Wed Nov 07 21:59:18 GMT+01:00 2012]; root of context hierarchy
    [GC 5203K->1126K(15424K), 0.0059770 secs]
    3516 [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader – Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext-service.xml]
    3756 [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader – Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext-security.xml]
    4047 [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader – Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext-cache.xml]
    [GC 5414K->1339K(15424K), 0.0084680 secs]
    4116 [main] INFO org.springframework.web.context.support.XmlWebApplicationContext – Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@922804]: org.springframework.beans.factory.support.DefaultListableBeanFactory@9ff0a8
    4827 [main] INFO org.springframework.beans.factory.support.DefaultListableBeanFactory – Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@9ff0a8: defining beans [playerDao,mediaFileDao,artistDao,albumDao,playlistDao,internetRadioDao,musicFileInfoDao,hotDao,musicFolderDao,userDao,transcodingDao,podcastDao,avatarDao,shareDao,daoHelper,mediaFileService,securityService,settingsService,mediaScannerService,searchService,networkService,playerService,playlistService,versionService,statusService,musicInfoService,hotService,musicIndexService,audioScrobblerService,transcodingService,shareService,podcastService,jukeboxService,metaDataParserFactory,ajaxMultiService,ajaxNowPlayingService,ajaxPlayQueueService,ajaxPlaylistService,ajaxLyricsService,ajaxCoverArtService,ajaxStarService,ajaxTagService,ajaxTransferService,ajaxChatService,MediaFileComparator,filterChainProxy,httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,basicProcessingFilter,restRequestParameterProcessingFilter,basicProcessingFilterEntryPoint,securityContextHolderAwareRequestFilter,rememberMeProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,basicExceptionTranslationFilter,filterInvocationInterceptor,accessDecisionManager,rememberMeServices,authenticationManager,daoAuthenticationProvider,userCacheWrapper,ldapAuthenticationProvider,bindAuthenticator,userDetailsServiceBasedAuthoritiesPopulator,ajaxServiceInterceptor,ajaxTagServiceSecure,ajaxTransferServiceSecure,cacheFactory,userCache,mediaFileMemoryCache,musicFileMemoryCache]; root of factory hierarchy
    [GC 5627K->1113K(15424K), 0.0075790 secs]
    5185 [main] INFO org.springframework.jdbc.datasource.DriverManagerDataSource – Loaded JDBC driver: org.hsqldb.jdbcDriver
    [GC 5390K->2216K(15424K), 0.0096390 secs]
    [GC 6481K->3806K(15424K), 0.0115830 secs]
    [GC 8094K->3904K(15424K), 0.0083910 secs]
    [GC 8192K->5848K(15424K), 0.0228840 secs]
    [GC 10136K->7890K(15424K), 0.0297660 secs]
    [GC 12178K->8229K(15424K), 0.0154220 secs]
    [GC 12517K->8493K(15424K), 0.0117240 secs]
    [GC 12781K->8660K(15424K), 0.0140530 secs]
    [GC 12948K->9102K(15424K), 0.0157880 secs]
    [GC 13390K->9836K(15424K), 0.0151460 secs]
    [Full GC 11757K->9921K(15424K), 0.2198220 secs]
    9262 [main] INFO org.acegisecurity.intercept.AbstractSecurityInterceptor – Validated configuration attributes
    9295 [main] INFO org.acegisecurity.intercept.method.MethodDefinitionMap – Adding secure method [public net.sourceforge.subsonic.ajax.UploadInfo net.sourceforge.subsonic.ajax.TransferService.getUploadInfo()] with attributes [[ROLE_UPLOAD]]
    9295 [main] INFO org.acegisecurity.intercept.method.MethodDefinitionMap – Adding secure method [public java.lang.String net.sourceforge.subsonic.ajax.TagService.setTags(int,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)] with attributes [[ROLE_COVERART]]
    9296 [main] INFO org.acegisecurity.intercept.AbstractSecurityInterceptor – Validated configuration attributes
    9384 [main] INFO org.springframework.web.context.ContextLoader – Root WebApplicationContext: initialization completed in 6090 ms
    [GC 16577K->10135K(24024K), 0.0111650 secs]
    9641 [main] INFO / – Initializing Spring FrameworkServlet ‘subsonic’
    9641 [main] INFO org.springframework.web.servlet.DispatcherServlet – FrameworkServlet ‘subsonic’: initialization started
    9645 [main] INFO org.springframework.web.context.support.XmlWebApplicationContext – Refreshing org.springframework.web.context.support.XmlWebApplicationContext@1f1e39b: display name [WebApplicationContext for namespace 'subsonic-servlet']; startup date [Wed Nov 07 21:59:25 GMT+01:00 2012]; parent: org.springframework.web.context.support.XmlWebApplicationContext@922804
    9648 [main] INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader – Loading XML bean definitions from ServletContext resource [/WEB-INF/subsonic-servlet.xml]
    9923 [main] INFO org.springframework.web.context.support.XmlWebApplicationContext – Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@1f1e39b]: org.springframework.beans.factory.support.DefaultListableBeanFactory@128594c
    [GC 16791K->11149K(24024K), 0.0130990 secs]
    10478 [main] INFO org.springframework.beans.factory.support.DefaultListableBeanFactory – Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@128594c: defining beans [leftController,rightController,chatController,statusController,mainController,playlistController,importPlaylistController,topController,helpController,LogController,moreController,moreeController,uploadController,upwinController,statisticsController,lyricsController,allmusicController,podcastController,podcastReceiverController,podcastReceiverAdminController,setMediaFileController,setMusicFileInfoController,shareManagementController,setRatingController,setHotController,randomPlayQueueController,loadPlaylistController,changeCoverArtController,nowPlayingController,starredController,searchController,settingsController,playerSettingsController,shareSettingsController,musicFolderSettingsController,networkSettingsController,transcodingSettingsController,internetRadioSettingsController,podcastSettingsController,generalSettingsController,advancedSettingsController,personalSettingsController,avatarUploadController,userSettingsController,passwordSettingsController,homeController,editTagsController,radioController,genresController,playQueueController,coverArtController,avatarController,proxyController,statusChartController,userChartController,m3uController,streamController,hlsController,videoPlayerController,externalPlayerController,downloadController,donateController,MadsonicController,multiController,wapController,restController,dbController,donateValidator,userSettingsValidator,passwordSettingsValidator,urlMapping,messageSource,themeSource,localeResolver,themeResolver,viewResolver]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory@9ff0a8
    [GC 17805K->11459K(24024K), 0.0111010 secs]
    [GC 18115K->11759K(24024K), 0.0115070 secs]
    [GC 18415K->11967K(24024K), 0.0123960 secs]
    [GC 18623K->12263K(24024K), 0.0121810 secs]
    [GC 18919K->12498K(24024K), 0.0108620 secs]
    [GC 19154K->12597K(24024K), 0.0095180 secs]
    [GC 19253K->12700K(24024K), 0.0069950 secs]
    [GC 19356K->12743K(24024K), 0.0070690 secs]
    [GC 19399K->12814K(24024K), 0.0055260 secs]
    [GC 19470K->13025K(24024K), 0.0076310 secs]
    [GC 19681K->13090K(24024K), 0.0084680 secs]
    14946 [main] INFO org.springframework.web.servlet.DispatcherServlet – FrameworkServlet ‘subsonic’: initialization completed in 5305 ms
    14986 [main] INFO org.mortbay.log – Started SelectChannelConnector@0.0.0.0:4040
    Subsonic running on: http://localhost:4040/
    15095 [main] INFO org.springframework.remoting.rmi.RmiServiceExporter – Looking for RMI registry at port ’9412′
    15125 [main] INFO org.springframework.remoting.rmi.RmiServiceExporter – Could not detect RMI registry – creating new one
    [GC 19741K->13232K(24024K), 0.0138630 secs]
    15395 [main] INFO org.springframework.remoting.rmi.RmiServiceExporter – Binding service ‘SubsonicDeployerService’ to RMI registry: RegistryImpl[UnicastServerRef [liveRef: [endpoint:[192.168.0.50:9412](local),objID:[0:0:0, 0]]]]

    Antworten
  11. And for transcoding have you à solution ?

    Antworten
    • Sorry thats not my priority at the moment. First I have to get it running at the ppc and x86 machines again.

      Antworten
  12. Will Subsonic run on my Synology DS413j ? By the wy my Synology is connected to the internet.

    Antworten
  13. Ok it seems that my detection of the PID (process ID) is not working properly.
    Can one of you give me the output of the following string when Subsonic is running?

    ps | grep java | grep subsonic | awk ‘{print $1}’

    it should be just one number like 8945…
    Thanks.

    Subsonic has the ability to ave the PID in a file on startup, I will try to use this method…

    What surprises me is that exact the same start and detection string is working during install several times.

    Antworten
  14. awk: cmd. line:1: Unexpected token

    Antworten
  15. DiskStation> ps | grep java | grep subsonic | awk ‘{print $1}’
    11740
    11743
    11744
    11747
    11748
    11749
    11750
    11751
    11752
    11755
    11826
    11844
    11847
    11848
    11850
    11851
    11955
    11958
    11959
    11960
    12245
    13297
    14089
    24143
    24164
    24177
    24178
    24180
    26599
    DiskStation>

    Antworten
    • ouch you can kill them all by typing kill
      please kill them all or reboot before testing my new package

      Antworten
  16. I uploaded a new package into my beta folder
    https://www.dropbox.com/sh/y9lcl2xsznvve80/31mcnc5gpE

    Subsonic4.7-029-test.spk

    it contains the changes PID detection string
    Now Subsonic creates a file called PID.log which contains just the PID number. The scripts read this file now instead of using the process view (ps)

    I hope this will work
    (it also contains the fixes of Subtunes and MiniSub)

    Antworten
  17. Did reboot the NAS, uninstall the packaged because is was screwed anyway. Also manually remove the directories /homes/subsonic and /usr/syno/etc/packages/subsonic

    After that again rebooted the NAS and did a compleet fresh install. No errors during install and no errors after rebooting the nas. Subsonic is now starting without any error ( Synology DS 411+II )

    Here is the output now with ps.

    DiskStation> ps | grep java | grep subsonic | awk ‘{print $1}’
    11062
    11104
    11105
    11112
    11113
    11114
    11165
    11166
    11167
    11245
    11246
    11249
    11252
    11253
    11255
    11284
    11412
    11413
    11414
    11415
    11509
    11510
    11630
    11632
    11633
    11634
    11650
    11651
    DiskStation>

    THX for this first working patch, if i can test more please let me know ! I let some friends test the music stream now.

    Antworten
  18. DiskStation> ps | grep java | grep subsonic
    11086 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11090 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11091 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11098 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11099 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11100 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11146 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11147 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11148 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11230 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11232 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11379 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11380 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11381 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11382 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11383 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11385 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11386 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11387 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11388 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11389 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11390 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11444 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11445 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11447 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11448 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11451 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11453 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11454 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11455 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    11456 subsonic 643m S /volume1/@appstore/java6/jre/bin/java -Xmx384m -Dsubsonic.home=/usr/syno/synoman/webman/3rdparty/Subsonic -Dsubsonic.host=0.0.0.0 -Dsubsonic.port=4040 -Dsubsonic.httpsPort=0 -Dsubsonic.contextPath=/ -Dsubsoni
    DiskStation>

    Antworten
    • I let Guido answer all the question for 2 mains reason, better to start with 1 report and I wasn’t connected for some time.
      Since I rollback and would like to avoid issue, I’m waiting for your report.
      Eric, does the new package is working ?
      If yes, I guess you will issue a “-30″ version, don’t you ?

      Can you add a simple way to extract all user’s information and playlist ?
      -> this is very useful if the new install crash !

      At the moment, I’m using these 3 on the db request (working fine but without playlist – I would like to be able to automatically extract these info ans backup once a week):

      select ‘insert into user_settings(USERNAME, LOCALE, THEME_ID, FINAL_VERSION_NOTIFICATION, BETA_VERSION_NOTIFICATION, MAIN_CAPTION_CUTOFF, MAIN_TRACK_NUMBER, MAIN_ARTIST, MAIN_ALBUM, MAIN_GENRE, MAIN_YEAR, MAIN_BIT_RATE, MAIN_DURATION, MAIN_FORMAT, MAIN_FILE_SIZE, PLAYLIST_CAPTION_CUTOFF, PLAYLIST_TRACK_NUMBER, PLAYLIST_ARTIST, PLAYLIST_ALBUM, PLAYLIST_GENRE, PLAYLIST_YEAR, PLAYLIST_BIT_RATE, PLAYLIST_DURATION, PLAYLIST_FORMAT, PLAYLIST_FILE_SIZE, LAST_FM_ENABLED, LAST_FM_USERNAME, LAST_FM_PASSWORD, TRANSCODE_SCHEME, SHOW_NOW_PLAYING, SELECTED_MUSIC_FOLDER_ID, PARTY_MODE_ENABLED, NOW_PLAYING_ALLOWED, WEB_PLAYER_DEFAULT, AVATAR_SCHEME, SYSTEM_AVATAR_ID, CHANGED, SHOW_CHAT) values (”’ + USERNAME + ”’,’ + ifnull(”” +LOCALE+””, ‘NULL’) +’,’ + ifnull(”” +THEME_ID+””, ‘NULL’) +’,’ + ifnull(”” +FINAL_VERSION_NOTIFICATION+””, ‘NULL’) +’,’ + ifnull(”” +BETA_VERSION_NOTIFICATION+””, ‘NULL’) +’,’ + ifnull(”” +MAIN_CAPTION_CUTOFF+””, ‘NULL’) +’,’ + ifnull(”” +MAIN_TRACK_NUMBER+””, ‘NULL’) +’,’ + ifnull(”” +MAIN_ARTIST+””, ‘NULL’) +’,’ + ifnull(”” +MAIN_ALBUM+””, ‘NULL’) +’,’ + ifnull(”” +MAIN_GENRE+””, ‘NULL’) +’,’ + ifnull(”” +MAIN_YEAR+””, ‘NULL’) +’,’ + ifnull(”” +MAIN_BIT_RATE+””, ‘NULL’) +’,’ + ifnull(”” +MAIN_DURATION+””, ‘NULL’) +’,’ + ifnull(”” +MAIN_FORMAT+””, ‘NULL’) +’,’ + ifnull(”” +MAIN_FILE_SIZE+””, ‘NULL’) +’,’ + ifnull(”” +PLAYLIST_CAPTION_CUTOFF+””, ‘NULL’) +’,’ + ifnull(”” +PLAYLIST_TRACK_NUMBER+””, ‘NULL’) +’,’ + ifnull(”” +PLAYLIST_ARTIST+””, ‘NULL’) +’,’ + ifnull(”” +PLAYLIST_ALBUM+””, ‘NULL’) +’,’ + ifnull(”” +PLAYLIST_GENRE+””, ‘NULL’) +’,’ + ifnull(”” +PLAYLIST_YEAR+””, ‘NULL’) +’,’ + ifnull(”” +PLAYLIST_BIT_RATE+””, ‘NULL’) +’,’ + ifnull(”” +PLAYLIST_DURATION+””, ‘NULL’) +’,’ + ifnull(”” +PLAYLIST_FORMAT+””, ‘NULL’) +’,’ + ifnull(”” +PLAYLIST_FILE_SIZE+””, ‘NULL’) +’,’ + ifnull(”” +LAST_FM_ENABLED+””, ‘NULL’) +’,’ + ifnull(”” +LAST_FM_USERNAME+””, ‘NULL’) +’,’ + ifnull(”” +LAST_FM_PASSWORD+””, ‘NULL’) +’,’ + ifnull(”” +TRANSCODE_SCHEME+””, ‘NULL’) +’,’ + ifnull(”” +SHOW_NOW_PLAYING+””, ‘NULL’) +’,’ + ifnull(”” +SELECTED_MUSIC_FOLDER_ID+””, ‘NULL’) +’,’ + ifnull(”” +PARTY_MODE_ENABLED+””, ‘NULL’) +’,’ + ifnull(”” +NOW_PLAYING_ALLOWED+””, ‘NULL’) +’,’ + ifnull(”” +WEB_PLAYER_DEFAULT+””, ‘NULL’) +’,’ + ifnull(”” +AVATAR_SCHEME+””, ‘NULL’) +’,’ + ifnull(”” +SYSTEM_AVATAR_ID+””, ‘NULL’) +’,’ + ifnull(”” +CHANGED+””, ‘NULL’) +’,’ + ifnull(”” +SHOW_CHAT+””, ‘NULL’) +’);’ from user_settings where username != ‘admin’

      select ‘insert into user_role(username, role_id) values (”’ + username + ”’,”’ + role_id + ”’);’ from user_role where username != ‘admin’

      select ‘insert into user(username, password, bytes_streamed, bytes_downloaded, bytes_uploaded, ldap_authenticated, email) values (”’ + username + ”’,”’ + password + ”’,”’ + bytes_streamed + ”’,”’ + bytes_downloaded + ”’,”’ + bytes_uploaded + ”’,”’ + ldap_authenticated + ”’,”’ + email + ”’);’ from user where username != ‘admin’

      Antworten
  19. The NAS did poweroff off ( goto sleep ) at 1AM and started again at 7AM. Subsonic did start automatically with it ;) above is the requested line.

    Antworten
  20. very strange why is Subsonic running so multiple times?

    I am offline during the Weekend and back at Monday morgning

    Antworten
  21. Eric, I have a folder called “Sorted” in that folder I have 27 sorted maps called :

    A1 /volume1/music/Sorted/A
    B1 /volume1/music/Sorted/B
    C1 /volume1/music/Sorted/C

    etc.

    3,820 artists
    8,864 albums
    69,473 songs
    569.32 GB (~ 4,812 hours)

    Maybe that’s the reason it runs so many times ?

    Antworten
    • That May be the reason, but if it runs fine now I wouldn’t bother about it.

      Antworten
      • It still runs fine, if the NAS is rebooted Subsonic starts automatically. There are some weird issues with the user interface but that’s a behavior by design and hopefully solved in the newer versions.

        Antworten
  22. Eric, if you compile a new (test) version can you add the latest Mashup Mod in it.

    Gido.

    Antworten
    • For now I will stick to whatever the newest 4.7SE (java 6 compatible) version is and switch to 4.8 beta1 when the standard beta is released.

      Antworten
  23. 2012-11-13 at 16:36 Seth Feinberg

    Boy, really wish i’d had the foresight to check this sight before I updated the subsonic package through the package center. I got a failed to install when updating from backup. I have tried to uninstall and reinstall with reboots in between multiple times and each time the install goes fine but when I try to Run the package I get a “Failed to Run Package Service” error message. If anyone could give me some advice on rolling back to the previous version but I anxiously await the new, working package. P.S. eric, i’m not complaining at all, thanks so much for all your hard work on this…

    Antworten

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>