Serviio 1.4.1.2 package for Synology NAS

Serviio 1.4 in DSM Package Center

Many people are using the Synology packages I created for Serviio and Java, and most of them will have installed from my package repository making the upgrade possible with just one click.

This new version updates Serviio to version 1.4.1.2 (release notes). The Media Browser has been redesigned (Pro version feature), and is designed to allow direct playback of media on tablet devices without the need for dedicated apps. Please note that Apple iOS devices require video in H.264 and audio in stereo AAC format when streaming. Most Synology NAS models lack the CPU power to transcode video into H.264 and furthermore, licensing restrictions prevent distribution of an FFmpeg binary with libfdk_aac support. As a result, realtime AAC audio transcoding on older ARMv5 NAS models (which lack an FPU) is also out of reach, even if the source video is already H.264.

Renderers that do not natively support subtitles via DLNA can have them burned into the video during transcoding, but in general a NAS lacks the CPU power to do this (more info here). Please comment if this works nicely on the Intel or ARMv7 models. ARMv5 and PowerPC are confirmed to be too slow. If you absolutely need hard subs for a particular film, you could start playback on your device then stop it and Serviio will continue transcoding. Then you will be able to try again in a few hours since it will play from the transcode cache folder.

For burning subtitles into video streams the package downloads the free DejaVu font family from SourceForge during installation, since DSM does not include any fonts. Non-Latin character encodings should be supported as long as fonts with support are provided. The DejaVu font does not include support for Chinese glyphs for instance. You will need to copy new fonts to the folder /volume1/@appstore/Serviio/lib/dejavu-fonts-ttf-2.33/ttf.

I was able to compile FFmpeg 2.1 for all four supported architectures with libx264 and libass support (and dependent libraries) while using the libs included within DSM as far as possible. Only the Intel CPU will be of any practical use transcoding to H.264, since the other CPUs lack vector support (no AltiVec in QorIQ/PowerQUICC, and no NEON in Armada 370/XP).

As with the last few versions of the package, there is no Web UI included so I recommend that you manage Serviio using Serviio 1.4 Console installed on another computer. Integrating a Web UI into the package can be tricky because they do introduce problems of their own (bugs, browser incompatibilities), their development tends to lag behind the Serviio releases which can significantly delay my releases, and this also means I have to re-package as they get updated. Maintaining the CSS was also a lot of work. For the relatively small benefit the WebUI brings, it doesn’t really justify the effort. It only takes a few minutes to set up a remote console.

 

Instructions

The package can be installed on an unmodified NAS – no hacking is required.

  • Firstly, in the DSM User control panel enable the User Home service.
  • Open the DSM Package Center. In Settings -> Package Sources add my package repository URL which is http://packages.pcloadletter.co.uk
  • Install either one of my Java SE Embedded Synology packages (Java 6 or Java 7). Only Marvell Kirkwood, Marvell Armada 370/XP, Intel, and Freescale QorIQ PowerPC CPUs are supported, or PowerQUICC running DSM 5.0 or later, so please check which CPU your NAS has.
  • Install Serviio using DSM’s Package Center.
  • Download any Serviio online content plugins that you require and leave the .groovy files in your NAS’s /volume1/public/serviio/plugins folder (where /volume1 is you primary storage volume). This folder is created automatically by the package installer.
  • Download and install Serviio on another computer (selecting only the Console when prompted) and configure it to connect to your NAS:
    For Mac OS find Serviio-Console, right-click, then Show Package Contents. Use TextEdit to open Contents/info.plist and add this towards the end of the file after the last key and string entries (Properties section):
    <key>serviio.remoteHost</key>
    <string>192.168.1.100</string>

    ..replacing that IP with the IP of your NAS obviously. Then save, navigate back the Serviio folder and launch Serviio-Console again.
    On Windows, use Notepad to open ServiioConsole.exe.vmoptions (in the Serviio/bin folder) and add the line:
    -Dserviio.remoteHost=192.168.1.100
    On a Linux client, add this same parameter to the JAVA_OPTS in Serviio/bin/serviio-console.sh
    Do not make this change on the NAS – only on the computer that runs the console.
  • Since this console binding uses a static address you should reserve this particular IP address for your NAS (most home broadband routers will let you do this in the DHCP options), or use a static IP address. This will also prevent Serviio appearing multiple times in the menus of your renderer devices.
  • Once the remote console is connected be aware that everything it indicates relates to the NAS, *not* to the Serviio installation on your computer.
 

Notes

  • In the console disable ‘Generate thumbnails for local videos’ in the Metadata tab. Failure to do this will make adding videos to your library very slow. With this disabled Serviio will still fetch thumbnail images automatically from the online databases.
  • Don’t alter the transcoded files location on the Transcoding tab, it’s already set to a sensible location. This particular folder is deleted each time your NAS restarts, and Serviio cleans up its temp files automatically in any case.
  • When adding folders to the media library use the Add Path button (not Add Local). You will need to specify the folder path in the NAS’s Linux notation, for example /volume1/public/videos
  • Don’t forget to use the Users control panel in DSM to grant permission for the Serviio user to read your files (if they’re not in the public share).
  • When closing the Console, notice that ‘Exit Serviio’ quits the Console and also stops Serviio running on the NAS. To only quit the Console, be sure to select ‘Exit Serviio Console’ instead.
  • The package will allow future upgrades while preserving the media database, as long as Serviio itself is ok with that.
  • If you’re upgrading from a previous Serviio version you should update your online content plugins.
  • You can see Serviio’s log by clicking More in the Package Center.
  • The URL of the MediaBrowser is also displayed there (http://IPofYourNAS:23424/mediabrowser). If you want to use the MediaBrowser from a remote location you would need to either port forward 23424 on your router, or use SSH tunnelling. You can also manage Serviio remotely by SSH tunnelling port 23423 which the console uses.
  • If you have upgraded your DSM version and have lost unicode character support in Serviio, you will need to remove and reinstall the Java package which will fix the system locale support (DSM updates break this unfortunately).
  • Package Center installs the application to /volume1/@appstore/Serviio though from what I understand, on multi-volume systems the user is prompted for a destination volume. If you need to edit device profiles or enable debug logging then that’s where you’ll find the files. You will need to use an SSH session to access this folder – it’s not browsable in DSM’s File Station. The simplest way to edit these files if you’re not really confident with Linux is to install Merty’s Config File Editor package, which requires the official Synology Perl package to be installed too (since DSM 4.2). Load Config File Editor, then in the dropdown menu edit Config File Editor’s own config (it’s the last in the list) and add the lines:
    /volume1/@appstore/Serviio/config/profiles.xml,Serviio-profiles
    /volume1/@appstore/Serviio/config/log4j.xml,Serviio-logging

    Make sure to add an extra blank line underneath, save, then relaunch CFE and you’ll have an entry for Serviio in the dropdown. You’ll need to restart the Serviio package for any changes to take effect.
  • Bear in mind that a NAS, even an Intel Atom powered one, is unlikely to have sufficient CPU power to manage realtime video transcoding (e.g. from DivX to MPEG2), though it will manage remuxing MKV to M2TS and realtime audio transcoding. If you have a DLNA renderer with good format support then this isn’t an issue.
  • Unfortunately for this same reason the MediaBrowser is probably of limited value if you run Serviio on a NAS, since it uses realtime video transcoding, but I have nonetheless taken several steps to mitigate this. I have modified the FlowPlayer application profile to play AAC audio natively (you will only get the L+R channels from a multichannel file), and I have been able to integrate the integer maths libshine MP3 encoder into my build of FFmpeg for ARM CPUs, which allows you to listen to FLAC music transcoded to MP3 in realtime (useful for wifi music players for instance). I used a wrapper script to force libshine’s encoding bitrate to 320Kbps at all times since it didn’t increase the load, and it hides this simple encoder’s slight lack of quality. Source code for libshine is available here.
  • I have left the FFmpeg wrapper script in the package even when not in use (in the Serviio/bin folder), because it’s still useful for people trying to test a particular workaround or encoder setting. The wrapper was a really tricky script to get working due to variable expansion precedence issues and quote handling. If you need it, just change the ffmpeg.location system property in /volume1/@appstore/Serviio/bin/serviio.sh (changing the location to /volume1/@appstore/Serviio/bin/ffmpeg-wrapper.sh).
 

Package scripts

For information, here are the package scripts so you can see what it’s going to do. You can get more information about how packages work by reading the Synology Package wiki.

installer.sh

#!/bin/sh

#--------SERVIIO installer script
#--------package maintained at pcloadletter.co.uk

DOWNLOAD_PATH="http://download.serviio.org/releases"
DOWNLOAD_FILE="serviio-1.4.1.2-linux.tar.gz"
EXTRACTED_FOLDER="serviio-1.4.1.2"
DOWNLOAD_URL="${DOWNLOAD_PATH}/${DOWNLOAD_FILE}"
DAEMON_USER="`echo ${SYNOPKG_PKGNAME} | awk {'print tolower($_)'}`"
DAEMON_PASS="`openssl rand 12 -base64 2>/dev/null`"
DAEMON_ID="${SYNOPKG_PKGNAME} daemon user"
SYNO_CPU_ARCH="`uname -m`"
[ "${SYNO_CPU_ARCH}" == "x86_64" ] && SYNO_CPU_ARCH="i686"
NATIVE_BINS_URL="http://packages.pcloadletter.co.uk/downloads/serviio1.4-native-${SYNO_CPU_ARCH}.tgz"   
NATIVE_BINS_FILE="`echo ${NATIVE_BINS_URL} | sed -r "s%^.*/(.*)%\1%"`"
FONTS_URL="http://sourceforge.net/projects/dejavu/files/dejavu/2.33/dejavu-fonts-ttf-2.33.tar.bz2"
FONTS_FILE="`echo ${FONTS_URL} | sed -r "s%^.*/(.*)%\1%"`"
INSTALL_FILES="${DOWNLOAD_URL} ${NATIVE_BINS_URL} ${FONTS_URL}"

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/'`"
PLUGINS_PATH="/`echo $TEMP_FOLDER | cut -f2 -d'/'`/public/serviio"



preinst ()
{
  if [ -z ${JAVA_HOME} ]; then
    echo "Java is not installed or not properly configured. JAVA_HOME is not defined. "
    echo "Download and install the Java Synology package from http://wp.me/pVshC-z5"
    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. "
    echo "Download and install the Java Synology package from http://wp.me/pVshC-z5"
    exit 1
  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
  #remove home directory (needed since DSM 4.1)
  [ -e /var/services/homes/userhometest ] && rm -r /var/services/homes/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."
    exit 1
  fi
    
  cd ${TEMP_FOLDER}
  for WGET_URL in ${INSTALL_FILES}
  do
    WGET_FILENAME="`echo ${WGET_URL} | sed -r "s%^.*/(.*)%\1%"`"
    [ -f ${TEMP_FOLDER}/${WGET_FILENAME} ] && rm ${TEMP_FOLDER}/${WGET_FILENAME}
    wget ${WGET_URL}
    if [[ $? != 0 ]]; then
      if [ -d ${PUBLIC_FOLDER} ] && [ -f ${PUBLIC_FOLDER}/${WGET_FILENAME} ]; then
        cp ${PUBLIC_FOLDER}/${WGET_FILENAME} ${TEMP_FOLDER}
      else     
        echo "There was a problem downloading ${WGET_FILENAME} from the official download link, "
        echo "which was \"${WGET_URL}\" "
        echo "Alternatively, you may download this file manually and place it in the 'public' shared folder. "
        exit 1
      fi
    fi
  done

  exit 0
}


postinst ()
{
  #create serviio daemon user
  synouser --add ${DAEMON_USER} ${DAEMON_PASS} "${DAEMON_ID}" 0 "" ""
  
  #determine the serviio 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
  DAEMON_HOME="`cat /etc/passwd | grep "${DAEMON_ID}" | cut -f6 -d':'`"
  su - ${DAEMON_USER} -s /bin/sh -c "echo export HOME=\'${DAEMON_HOME}\' >> .profile"
  
  #fontconfig configuration which is needed for libass subtitles
  su - ${DAEMON_USER} -s /bin/sh -c "echo export FONTCONFIG_FILE=fonts.conf >> .profile"
  su - ${DAEMON_USER} -s /bin/sh -c "echo export FONTCONFIG_PATH=${SYNOPKG_PKGDEST}/config/fonts >> .profile"

  #extract the downloaded Serviio archive
  cd ${TEMP_FOLDER}
  tar xzf ${TEMP_FOLDER}/${DOWNLOAD_FILE}
  rm ${TEMP_FOLDER}/${DOWNLOAD_FILE}
  cp -R ${TEMP_FOLDER}/${EXTRACTED_FOLDER}/* ${SYNOPKG_PKGDEST}
  if [ ! -z "${EXTRACTED_FOLDER}" ]; then
    rm -r ${TEMP_FOLDER}/${EXTRACTED_FOLDER}
  fi
  if [ ! -d "${PLUGINS_PATH}/plugins" ]; then
    mkdir -p ${PLUGINS_PATH}/plugins
  fi
  
  #extract CPU-specific additional binaries
  cd ${SYNOPKG_PKGDEST}/lib
  tar xzf ${TEMP_FOLDER}/${NATIVE_BINS_FILE} && rm ${TEMP_FOLDER}/${NATIVE_BINS_FILE}
  mv ${SYNOPKG_PKGDEST}/lib/ffmpeg ${SYNOPKG_PKGDEST}/bin
  ${SYNOPKG_PKGDEST}/bin/ffmpeg -version > /dev/null 2>&1 || (
    #this system is running an older DSM with missing dependencies, fetch more libs
    NATIVE_BINS_URL=`echo ${NATIVE_BINS_URL} | sed -e "s/.tgz/-oldDSM.tgz/"`
    NATIVE_BINS_FILE="`echo ${NATIVE_BINS_URL} | sed -r "s%^.*/(.*)%\1%"`"
    wget ${NATIVE_BINS_URL}
    tar xzf ${NATIVE_BINS_FILE} && rm ${NATIVE_BINS_FILE}
  )
  
  #extract open source font package for subtitle support during transcoding
  tar xjf ${TEMP_FOLDER}/${FONTS_FILE} && rm ${TEMP_FOLDER}/${FONTS_FILE}
  sed -i "s|WINDOWSFONTDIR|${SYNOPKG_PKGDEST}/lib/dejavu-fonts-ttf-2.33/ttf|" ${SYNOPKG_PKGDEST}/config/fonts/fonts.conf
  sed -i "s|WINDOWSTEMPDIR_FONTCONFIG_CACHE|~/.fontconfig.cache|" ${SYNOPKG_PKGDEST}/config/fonts/fonts.conf
   
  #wrapper script can be useful for testing different encoder options
  if [ "${SYNO_CPU_ARCH}" == "armv5tel" ]; then
    #we need to use the wrapper to make FFmpeg use libshine instead of libmp3lame on ARM systems
    FFMPEG_PATH="\$SERVIIO_HOME/bin/ffmpeg-wrapper.sh"
  else
    FFMPEG_PATH="\$SERVIIO_HOME/bin/ffmpeg"
  fi

  #modification to natively play AAC audio in Media Browser, minimizing transcoding
  mv ${SYNOPKG_PKGDEST}/application-profiles.xml ${SYNOPKG_PKGDEST}/config
  
  #set some additional Serviio system properties (temp folder, FFmpeg path, plugins folder)
  #http://www.serviio.org/index.php?option=com_content&view=article&id=43
  EXTRA_OPTS="-Dserviio\.defaultTranscodeFolder=${TEMP_FOLDER} -Dffmpeg\.location=${FFMPEG_PATH} -Dplugins\.location=${PLUGINS_PATH}"
  #fix Java prefs checking which was preventing NAS hibernation http://forum.serviio.org/viewtopic.php?f=5&t=6878
  EXTRA_OPTS="${EXTRA_OPTS} -Djava.util.prefs.syncInterval=86400"
  if [ "${SYNO_CPU_ARCH}" == "armv5tel" ]; then
    #use integer math (not floating point) Dolby AC-3 encoder for better performance on ARM CPUs
    #http://ffmpeg.org/ffmpeg.html#ac3-and-ac3_005ffixed
    EXTRA_OPTS="${EXTRA_OPTS} -Dserviio\.fixedPointEncoders"
  fi
  sed -r -i "s%^(JAVA_OPTS=.*)\"$%\1 ${EXTRA_OPTS}\"%" ${SYNOPKG_PKGDEST}/bin/serviio.sh
  
  #change owner of Serviio folder tree
  chown -R ${DAEMON_USER} ${SYNOPKG_PKGDEST}
    
  #reset ownership on any pre-existing transcoding temp folder
  if [ -d ${TEMP_FOLDER}/Serviio ]; then
    chown -R ${DAEMON_USER} ${TEMP_FOLDER}/Serviio
  fi
  
  exit 0
}


preuninst ()
{
  #make sure that daemon is stopped
  su - ${DAEMON_USER} -s /bin/sh -c "${SYNOPKG_PKGDEST}/bin/serviio-wrapper.sh -stop"
  sleep 6
  
  exit 0
}


postuninst ()
{
  #remove daemon user
  synouser --del ${DAEMON_USER}
  
  #remove daemon user's home directory (needed since DSM 4.1)
  [ -e /var/services/homes/${DAEMON_USER} ] && rm -r /var/services/homes/${DAEMON_USER}
  
  exit 0
}


preupgrade ()
{
  #make sure that daemon is stopped
  su - ${DAEMON_USER} -s /bin/sh -c "${SYNOPKG_PKGDEST}/bin/serviio-wrapper.sh -stop"
  sleep 6
  
  #if a media database exists we need to preserve it
  if [ -d ${SYNOPKG_PKGDEST}/library/db ]; then
    mkdir ${SYNOPKG_PKGDEST}/../${DAEMON_USER}_db_migration
    mv ${SYNOPKG_PKGDEST}/library/db ${SYNOPKG_PKGDEST}/../${DAEMON_USER}_db_migration
  fi
  
  exit 0
}


postupgrade ()
{
  #use the backed up media database from the previous version
  if [ -d ${SYNOPKG_PKGDEST}/../${DAEMON_USER}_db_migration/db ]; then
    mv ${SYNOPKG_PKGDEST}/../${DAEMON_USER}_db_migration/db ${SYNOPKG_PKGDEST}/library
    rmdir ${SYNOPKG_PKGDEST}/../${DAEMON_USER}_db_migration
    
    #daemon user has been deleted and recreated so we need to reset ownership (new UID)
    chown -R ${DAEMON_USER} ${SYNOPKG_PKGDEST}/library/db
  fi
  	
  #reset ownership on transcoding temp folder
  if [ -d ${TEMP_FOLDER}/Serviio ]; then
    chown -R ${DAEMON_USER} ${TEMP_FOLDER}/Serviio
  fi
  
  exit 0
}
 

start-stop-status.sh

#!/bin/sh

#--------SERVIIO start-stop-status script
#--------package maintained at pcloadletter.co.uk

DAEMON_USER="`echo ${SYNOPKG_PKGNAME} | awk {'print tolower($_)'}`"
DAEMON_ID="${SYNOPKG_PKGNAME} daemon user"
ENGINE_CFG="serviio.sh"
ENGINE_SCRIPT="serviio.sh"


daemon_status ()
{
  ps | grep "^ *[0-9]* ${DAEMON_USER} .*java" > /dev/null
}


case $1 in
  start)
    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 \
     || echo export TZ=\'${SYNO_TZ}\' >> ${DAEMON_HOME}/.profile
    
    #set appropriate Java max heap size
    RAM=$((`free | grep Mem: | sed -e "s/^ *Mem: *\([0-9]*\).*$/\1/"`/1024))
    if [ $RAM -le 128 ]; then
      JAVA_MAX_HEAP=80
    elif [ $RAM -le 256 ]; then
      JAVA_MAX_HEAP=192
    elif [ $RAM -le 512 ]; then
      JAVA_MAX_HEAP=384
    #Serviio's default max heap is 512MB
    elif [ $RAM -gt 512 ]; then
      JAVA_MAX_HEAP=512
    fi
    sed -i -r "s/(^..JAVA.) -Xmx[0-9]+[mM] (.*$)/\1 -Xmx${JAVA_MAX_HEAP}m \2/" "${SYNOPKG_PKGDEST}/bin/${ENGINE_CFG}"
    su - ${DAEMON_USER} -s /bin/sh -c "${SYNOPKG_PKGDEST}/bin/${ENGINE_SCRIPT} &"
    exit 0
  ;;

  stop)
    su - ${DAEMON_USER} -s /bin/sh -c "${SYNOPKG_PKGDEST}/bin/${ENGINE_SCRIPT} -stop"
    sleep 6
    exit 0
  ;;

  status)
    if daemon_status ; then
      exit 0
    else
      exit 1
    fi
  ;;

  log)
    echo "${SYNOPKG_PKGDEST}/log/serviio.log"
    exit 0
  ;;

esac
 

ffmpeg-wrapper.sh

#!/bin/sh

#FFmpeg wrapper script to use libshine fixed point maths MP3 encoder on ARM CPUs
#as originally posted here: http://forum.serviio.org/viewtopic.php?f=7&t=6458

PARAMS=""
FFMPEG_BIN="ffmpeg"
INPUT=0
for PARAM in "$@"; do
  if [ ${INPUT} = 1 ]; then
    #the FFmpeg input filename/URL needs quotes adding back on
    #because it may contain spaces, and the shell has removed them
    PARAMS="${PARAMS} \"${PARAM}\""    
    INPUT=0
  else
    PARAMS="${PARAMS} ${PARAM}"
  fi
  if [ "${PARAM}" == "-i" ]; then
    #this loop is the -i parameter, the next loop will be the input filename/URL
    INPUT=1
  fi
done

#make libshine encoder substitution, 320kbps since it's no more expensive
if [ "${PARAMS}" != "${PARAMS/libmp3lame/}" ] || [ "${PARAMS}" != "${PARAMS/-f mp3/}" ]; then
  PARAMS="`echo ${PARAMS} | sed -r "s|libmp3lame|libshine|;s|-b:a [0-9]+k|-b:a 320k|"`"
fi

#make libfdk_aac encoder substitution, 128Kbps since we're usually transcoding to AAC stereo only
#if [ "${PARAMS}" != "${PARAMS/-c:a aac/}" ]; then
#  PARAMS="`echo ${PARAMS} | sed -r "s| aac -strict experimental | libfdk_aac |;s|-b:a [0-9]+k|-b:a 128k|"`"
#fi

#invoke FFmpeg
FOLDER="`dirname $0`"
echo "${FOLDER}/${FFMPEG_BIN} ${PARAMS}" > ${FOLDER}/../log/ffmpeg-wrapper.log
#need to use eval here otherwise the quotes aren't handled properly
#http://fvue.nl/wiki/Bash:_Why_use_eval_with_variable_expansion%3F
eval ${FOLDER}/${FFMPEG_BIN} ${PARAMS}

#return FFmpeg status
exit $?
 

Changelog:

  • 1.4.1.2-0026 Updated to Serviio 1.4.1.2
  • 1.4.1.1-0025 Updated to Serviio 1.4.1.1
  • 1.4.0-0024 Updated to Serviio 1.4
  • 1.3.1-0023 Updated to FFmpeg 2.1 stable release
  • 1.3.1-0022 Added support for Intel Atom Evansport and Armada XP CPUs in new DSx14 products
  • 1.3.1-0021 Fixed zlib linking issue in QorIQ and Intel builds of FFmpeg
  • 1.3.1-0020 Updated to Serviio 1.3.1
  • 1.2.1-0019 Added support for Armada370 SoC used in DS213j (ARMv7 CPU with FPU)
  • 1.2.1-0018 Updated to Serviio 1.2.1, recompiled FFmpeg to use the libRTMP source code from serviio.org for consistency
  • 1.2.0-0017 Updated to Serviio 1.2
  • 1.1.0-0016 Fixes for DSM 4.2
  • 1.1.0-015 Updated to Serviio 1.1, fixed garbled ac3 encoding issue on ARM CPUs by compiling FFmpeg natively, rather than cross compiling. Remember to update your computer’s Serviio Console to 1.1 before connecting to manage.
  • 1.0-014 Added support for Freescale QorIQ PowerPC CPUs used in some Synology x13 series products, switched to shared library compile of FFmpeg with some minor changes, ARM build now uses libshine encoder which allows realtime audio transcoding to MP3, edited FlowPlayer config to play AAC audio natively to make Media Browser more usable with online feed items.
  • 1.0-013 fixed a bug in the plugins folder creation, fixed deletion of home directories after user deletion (DSM 4.1)
  • 1.0-012 reduced Java prefs checking interval to once every 24 hours to allow the NAS to hibernate (was 30 seconds by default – remember to increase the time between library refreshes if you want hibernation)
  • 1.0-011 updated Serviio to 1.0.1, slightly altered how the plugins folder path is determined
  • 1.0-010 updated to Serviio 1.0, removed WebUI, FFmpeg wrapper no longer needed on ARM, plugins folder moved to /volume1/public/serviio/plugins to make adding/updating plugins easier
  • 0.6.2-009 installation fails unless User Home service is enabled, unified the installer scripts, merged ARM and Intel packages into one which downloads the FFmpeg binary separately, used integer maths Dolby AC-3 encoder on ARM systems (no floating point)
  • 0.6.2-008 fixed DST timezone support, installer no longer assumes /volume1 is primary storage volume
  • 0.6.2-007 updated Serviio to 0.6.2, kairoh’s WebUI to 0.6.2c, changed package to download Serviio from the official website during installation, temp path is set by default to /volume1/@tmp on first run, and finally some CSS improvements
  • 0.6.1-006 switched to kairoh’s Java WebUI, added timezone support, removed DSM icon when Serviio is not running, adjusted Java max heap size for systems with low RAM, specified FFmpeg path directly rather than creating a symlink in /bin so as not to interfere with other packages which may use different versions of FFmpeg
  • 0.6.0.1-005 added Web Station dependency, EULA dialog, and links for Web UI and user forum in More Info
  • 0.6.0.1-004 test for package repo to allow update notification
  • 0.6.0.1 v3 hopefully fixed an issue with the Serviio DSM icon in DSM 3.2 on NAS units without Optware installed
  • 0.6.0.1 v2 inclusion of a modified version of the PHP Web UI
  • 0.6.0.1 v1 new minor Serviio release with some updated international translations – will upgrade 0.6 preserving the media library
  • 0.6 v1 first public release
  • 0.6b4 v2 fixed permissions on transcode temporary folder following upgrade, avoiding the need for a reboot
  • 0.6b4 v1 added upgrade scripts to allow media database migration (install future packages over the top of this one – database is preserved)
  • 0.6b3c v2 fixed HOME env var for serviio user (to fix librtmp issues with BBC iPlayer) and removed the need to edit the passwd file to change the shell (safer)
  • 0.6b3c v1 initial spk test release

 
 
About these ads

882 thoughts on “Serviio 1.4.1.2 package for Synology NAS

  1. jacobacci

    Got it,
    Reinstalled Java according to patters’ instructions.
    Found Serviio in the package center under ‘community’ heading.
    Now seems to run ok.
    Question: Is the Synology supplied Java SE not suitable for Serviio?

    Reply
  2. steinom

    Hi, I have a new DS1815+, Intel Atom C2538, and running DS; 5.1-5004, cant find serviio in package center. where or how can i get it? Tried Java SE 6 ,7 and 8 still nothing showing.

    Reply
      1. Nafets

        Where did you get the SPK-Package? I have the same problem and i find nothing to download the package.

  3. Seb

    Hi, i plan to upgrade DSM 5 to DSM 5.1, but how can i backup configuration of Serviio ? After each DSM upgrade, i need to reinstall java and i’m lost the directory setup of my Library, and other main features (eg : localisation). There’s a way to quick restore a config file to set back Serviio in his previous running state ?
    Thanks.

    Reply
    1. patters Post author

      You can stop Serviio and copy the whole /volume1/@appstore/Serviio/library folder to keep it safe.
      However, the more recent versions of my Java packages will preserve the locale settings after DSM updates now, and a DSM update will not touch the Serviio folder.

      I would recommend stopping Serviio, updating the Java package (have to remove and reinstall), then updating to DSM 5.1. Then Serviio should just work as usual with no special steps required.

      Reply
  4. hrmax

    Having an issue installing serviio since I updated to DSM 5.1. Says that the package does not contain a digital signature. I’m guessing that synology made some changes to their package framework.

    Reply
  5. Nicolai

    Hi :) After updating to DSM5.1 Serviio stutters/loads constantly. I tried uninstalling JAVA 8 and Serviio, but to no avail. Any ideas?
    Thanks and great job by the way!!

    Reply
    1. jacobacci

      Since I have updated my Synology DS411+ii to DSM5.1, serviio is not updating the library any more. If I force it to refresh, the red dot goes green for a few seconds, then back to red.
      I have posted a debug log on the serviio forum several days ago, but I have not had any response so far

      Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s