Serviio 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 (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.



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
  • 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):

    ..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:
    On a Linux client, add this same parameter to the JAVA_OPTS in Serviio/bin/
    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.


  • 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:

    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/ (changing the location to /volume1/@appstore/Serviio/bin/

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.


#--------SERVIIO installer script
#--------package maintained at

DAEMON_USER="`echo ${SYNOPKG_PKGNAME} | awk {'print tolower($_)'}`"
DAEMON_PASS="`openssl rand 12 -base64 2>/dev/null`"
SYNO_CPU_ARCH="`uname -m`"
[ "${SYNO_CPU_ARCH}" == "x86_64" ] && SYNO_CPU_ARCH="i686"
NATIVE_BINS_FILE="`echo ${NATIVE_BINS_URL} | sed -r "s%^.*/(.*)%\1%"`"
FONTS_FILE="`echo ${FONTS_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/'`"
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"
    exit 1
  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"
    exit 1
  #is the User Home service enabled?
  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
  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
    WGET_FILENAME="`echo ${WGET_URL} | sed -r "s%^.*/(.*)%\1%"`"
    wget ${WGET_URL}
    if [[ $? != 0 ]]; then
      if [ -d ${PUBLIC_FOLDER} ] && [ -f ${PUBLIC_FOLDER}/${WGET_FILENAME} ]; then
        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

  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
  if [ ! -z "${EXTRACTED_FOLDER}" ]; then
  if [ ! -d "${PLUGINS_PATH}/plugins" ]; then
    mkdir -p ${PLUGINS_PATH}/plugins
  #extract CPU-specific additional binaries
  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
  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

  #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)
  EXTRA_OPTS="-Dserviio\.defaultTranscodeFolder=${TEMP_FOLDER} -Dffmpeg\.location=${FFMPEG_PATH} -Dplugins\.location=${PLUGINS_PATH}"
  #fix Java prefs checking which was preventing NAS hibernation
  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
    EXTRA_OPTS="${EXTRA_OPTS} -Dserviio\.fixedPointEncoders"
  sed -r -i "s%^(JAVA_OPTS=.*)\"$%\1 ${EXTRA_OPTS}\"%" ${SYNOPKG_PKGDEST}/bin/
  #change owner of Serviio folder tree
  #reset ownership on any pre-existing transcoding temp folder
  if [ -d ${TEMP_FOLDER}/Serviio ]; then
    chown -R ${DAEMON_USER} ${TEMP_FOLDER}/Serviio
  exit 0

preuninst ()
  #make sure that daemon is stopped
  su - ${DAEMON_USER} -s /bin/sh -c "${SYNOPKG_PKGDEST}/bin/ -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/ -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
  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
  #reset ownership on transcoding temp folder
  if [ -d ${TEMP_FOLDER}/Serviio ]; then
    chown -R ${DAEMON_USER} ${TEMP_FOLDER}/Serviio
  exit 0


#--------SERVIIO start-stop-status script
#--------package maintained at

DAEMON_USER="`echo ${SYNOPKG_PKGNAME} | awk {'print tolower($_)'}`"

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

case $1 in
    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
    elif [ $RAM -le 256 ]; then
    elif [ $RAM -le 512 ]; then
    #Serviio's default max heap is 512MB
    elif [ $RAM -gt 512 ]; then
    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

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

    if daemon_status ; then
      exit 0
      exit 1

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



#FFmpeg wrapper script to use libshine fixed point maths MP3 encoder on ARM CPUs
#as originally posted here:

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}\""    
  if [ "${PARAM}" == "-i" ]; then
    #this loop is the -i parameter, the next loop will be the input filename/URL

#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|"`"

#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|"`"

#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

#return FFmpeg status
exit $?


  • Updated to Serviio
  • Updated to Serviio
  • 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 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
  • added Web Station dependency, EULA dialog, and links for Web UI and user forum in More Info
  • test for package repo to allow update notification
  • v3 hopefully fixed an issue with the Serviio DSM icon in DSM 3.2 on NAS units without Optware installed
  • v2 inclusion of a modified version of the PHP Web UI
  • 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

966 thoughts on “Serviio 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?

  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.

      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 ?

    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.

      1. Ecko

        Hi, at first thanks for your job.

        Im having problems running Servio Console in my Windows or Mac pc. Installed Java 8 and Serviio in DS214+ like y said in the post but when i edit the archives in Serviio Console doesnt open, i put my NAS ip but dont open.

        I put a static ip to my NAS in the router, DS214+ have a dual LAN and try with both ips but dnt work anyways.. Any sugestions?

  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.

  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!!

    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

  6. Ramesh


    Will this still work on a Synology USB Station 2 which has DSM 3.2 as its last updated release?

    It doesn’t have a Package centre, but has an ipkg, from the NSLU2 repo. The CPU is a Marvel Kirkwood 88f6180.


    1. patters Post author

      I’ve just published an amended Java package for Armada 375. Can you check it works by ensuring you get the JVM and Hotspot versions displayed in the log section of the package? Once that’s confirmed working ok I can get support added to the other packages.

  7. Jon

    Can you give me instructions on how to install this on a dns 320l ? i have 1.3 but no one seems to have anything for updating it to

  8. John


    On the DS215j, Serviio and your Embedded Java do not appear in the package centre.

    Can you add support/modify the package arch info for this please?

    1. patters Post author

      I’ve just published an amended Java package for Armada 375. Can you check it works by ensuring you get the JVM and Hotspot versions displayed in the log section of the package? Once that’s confirmed working ok I can get support added to the other packages.

      1. patters Post author

        I’ve been trying to compile FFmpeg using the Armada 375 toolchain and I can’t get libx264 to compile with assembler code enabled. Since this CPU has a NEON vector unit, that will make a big difference to performance. I did produce a test version for the similar Comcerto 2000 CPU but now I remember that I had the same problem and I wasn’t able to resolve it. I’ll contact Synology and see if they have any suggestions.

  9. bodbodirish

    Hey, i finally figured out how to set up the folders in Serviio when it is installed on a NAS.
    For my personal example, I am using a Synology DS214+ and here is what I have entered in the settings : /Volume1/video
    No need to enter the IP address as it is installed directly on the NAS, it makes totally sense but when you read forums, it is never mentioned…
    I hope this will help some of you, enjoy !

    1. Radjesh

      Hi There,
      Can you help me please i have also a DS214+ and installed java 7 that’s works fine.
      and Serviio also but i can’t open ServiioConcole
      I have also did this

      Notepad to open ServiioConsole.exe.vmoptions (in the Serviio/bin folder) and add the line:
      If i click on ServiioConcole then i get error: Serviio is not runnen closing……
      But me PS3, Media players, I-Phone ect. can see Serviio

    1. patters Post author

      I’ve just published an amended Java package for Armada 375. Can you check it works by ensuring you get the JVM and Hotspot versions displayed in the log section of the package? Once that’s confirmed working ok I can get support added to the other packages.

      1. Paladin

        Yes, it looks like this:
        java version “1.8.0_06″
        Java(TM) SE Embedded Blah Blah Blah (build 1.8.0_06-b23)
        Blah …

      2. patters Post author

        Great, thanks. For Serviio I need you to try this build of FFmpeg.
        cd /volume1/@tmp
        mkdir ffmpeg
        cd ffmpeg
        tar xvJf serviio1.4-native-arma9neon.tar.xz

        Does it work? Can you post the result back here please.

      3. Paladin

        I get an error message:
        ./ffmpeg: /lib/ version `GLIBC_2.17′ not found (required by /volume1/@tmp/ffmpeg/
        ./ffmpeg: /lib/ version `GLIBC_2.17′ not found (required by /volume1/@tmp/ffmpeg/

      4. patters Post author

        Thanks. Unfortunately Synology are making things very difficult with all these new CPU architectures. The DS414j has a similar CPU (Mindspeed Comcerto 2000 with ARM Cortex-A9 cores with NEON vector unit), but its toolchain uses a very slightly newer glibc version. The Armada 375 toolchain is still on glibc 2.15. It looks like if I recompile FFmpeg for Cortex-A9 with NEON using the Armada 375 toolchain then it should work on both devices. I really don’t want to have to build FFmpeg more times. It’s already pretty crazy – at the latest count I have to build it for seven different architectures!

      5. castaway

        I really hope patters that this dont mean you drop support for DS215j. Please can you make this last one work? :) we all really approciate your work.

      6. patters Post author

        I will build it, but I’ll probably wait for Serviio 1.5 to be released (which is soon) so I know precisely which FFmpeg version to build. I don’t want to compile all the various binaries and find out that I need to do it again. It’s quite time consuming.

      7. castaway

        ok that is really enought to know. We dont want waste your time for sure so better wait. I just wanted to know cuz im buyng DS215j very soon and its one that match with my budget :) thank you a lot!

  10. Rich

    hi – cannot seem to download any install to my synology – java and serviio just fail with “cannot install serviio” or “cannot install java” – it gets to the agreement bit, you click accept and then you just get that error messsage. happens with everything i install from this site. is everything working or is it me?

    1. Pete

      Dittto to what Rich just said … Synology DS210J with DSM 5.1 will not install Serviio or any of the Java SE packages ….help :-(

  11. Nick

    I had Java 8 running on my DS413 without a problem, but kept getting an update available popup. When I checked Oracle, I had the latest version.

    I just installed DSM 5.1 attempted to install Java 8 but had a failure. Have installed version 7 update 71. What benefits are there with Java 8? Why couldn’t I install it? The file ejdk-8u6-fcs-b23-linux-ppc-e500v2-12_jun_2014.tar.gz is in the public folder. I’ve had to install ejre-7u71-fcs-b14-linux-ppc-e500v2-headless-26_sep_2014.tar.gz

    Haven’t tried Serviio since the update and will report back if issues present.

  12. SLL

    The package for my new DS1515+ doesn’t show up in repository. I suspect the reason is the new NAS processor (Intel Atom C2538). Is that the point? If so, what am I supposed to do?

  13. Istoran

    Will your DS215j Version also support Video transcoding? idk if there is enough cpu power, but i guess it could be possible because of NEON. I’m good at ignoring the licensing thing ;)

  14. brs


    Could you compile Serviio for avoton platform as you already compiled some other packages. I know that it’s possible to update info file, but it would be great to get better performance. Thecus N2560 running serviio is a bit underpowered for video transcoding, but avoton should be much better.

    Thanks in advance

    1. Samir Benalla

      Hi, just installed Java and Serviio. When trying to startup Serviio nothing happens, status remains ‘stopped’. I receive no errors.

      Can someone help me out?

      Thanks in advance.

  15. Petr

    Hi, from version DSM 5.1 Serviio block switching system into a deep sleep on 213+. Network light flashes continuously even when any device is not connected to the network. When I stop Serviio, DS goes to sleep. The problem is still in version DSM 5.1-5021 Update 2. Is it possible to somehow fix please?


  16. dsdsds

    I have a 215j NAS. I dont see the servioo package (althouth i added the link and can install other 3th party packages)

  17. Con7e


    That is probably because you have one of the new “avoton” CPUs. You have to download serviio from:

    The name should be “serviio1.4.1.2-merged-0026.spk”.

    Open the file with 7zip. Then, right click on “INFO” file and select “Open in Default Text Editor”. It will open it with notepad. Find this line:

    “arch=”88f6281 armada370 armadaxp x86 bromolow cedarview evansport qoriq ppc853x”

    And change it by adding “avoton” (no quotes of couse):

    “arch=”88f6281 armada370 armadaxp x86 bromolow cedarview evansport qoriq ppc853x avoton”

    The save the file in notepad and close it. 7zip will tell you that the archive has been change, you need to click “YES” to save the new archive. Now simply upload this .spk file into your synology and it will install with no problems!

    You’re welcome!

  18. stewart adam

    your work porting Serviio to the Synology has been such a help to myself to keep the Wife and Kids fully entertained with minimum effort/max control and has been fine for the last few years….

    The kids have discovered the Serviio Go app on their Android tabs…a problem as Serviio 1.4 allows this app to bypass the limited content control in Serviio allowing the kids access to all videos on the server….

    Are you in any position to issue a 1.5 Serviio package (alpha or beta if not final) that i can use to restore the protected content function please ?

  19. schreini99

    Serviio won’t start up on my Synology.

    – I installed Java via your package repository. Confirmed Installation by looking at the protocol.
    – DSM 5.1-5022
    – DS214Play
    – Protocol of Serviio Package is empty

    Are there other LogFiles I can check for errors to track down the Problem?

    1. schreini99

      Solved the Problem. I had Java 7 installed. After Uninstalling java 7, installing java 6 (as stated in the installation instructions for intel cpus) and reinstalling seriio it seems to work now.
      sorry for the noise

  20. David

    Am i the only person to get the “This package is not supported on the platform of DiskStation”. error! I added the avoton text as suggested then done a manual install and this error is what i am getting. Am i missing something? I have the latest DSM version, installed the Java 7 as requested and its a DS215J.


  21. David

    Solved the issue above, also needed to change the text armada370 to armada375 for my NAS. Hope it helps someone else

  22. Ivan

    Using DS-214 with DSM 5.1.
    Installation of Java SE Embedded 7 or 8 from your package failed: “Java binary bundle not found…”.
    I also tried with Java installed with Synology’s Java Manager. In this case, Java installation works (you just need to upload the file by yourself, which seems a more robust solution), but Serviio package fails upon installation.
    What do you propose to try now?

    1. Ivan

      OK, just figured out how your Java installer works, apologies for my previous question. But, But, shouldn’t the version for DS 214 be a hardfp one? All your Java installers look for softfp versions.
      There are other packages that depend on a full Java installation (not the embedded one). Is your Java SE Embedded installer compatible with Synology’s Java Manager (that installs JDK 7u60)?
      Anyway, both with Java SE Embedded 7 or 8, installed using your installer packages, Serviio fails upon installation without any useful information. Any clues?

      1. patters Post author

        1) It’s somewhat confusing. The hardware FPU can still be used when the toolchain targets the SoftFP ABI. I believe it means that it produces binaries that would still work on a system without the FPU. My understanding (confirmed through early testing) is that I have to follow whatever ABI was used in the toolchain that built that particular version of DSM.

        2) Yes, my packages with Java dependencies will work if you install the full Java SE runtime via the Synology Java Manager. They check that Java is installed by the existence (or not) of the $JAVA_HOME environment variable. You can’t install both Java SE and Java Embedded concurrently though.

        3) Not sure why Serviio would fail to install on your system though. Is there a Package Center error message in /var/log/messages when this happens?

    2. patters Post author

      More robust? My package also expects you to download the Java file from Oracle, for reasons explained in the error message. I even give you the hyperlink and the exact package you need to fetch in that error text.

      1. Ivan

        Yes, sorry forget my first question. I thought it was failing because it was trying to download the files from Oracle’s web site.

  23. Ivan

    Thank you, this is the latest trace in /var/log/messages, hopefully it’s related to the issue.

    Feb 17 11:48:41 DiskStation codesign.php: Signature file not found in archive.

    1. Ivan

      Found the issue, it’s the new Trust Level in DSM 5.1.
      Open the Package Manager then click on the Settings button. In General, set the Trust Level to Any Publisher and package installation worked.

      1. patters Post author

        The repo now pushes my public key, and the Java and CrashPlan packages are signed, so you can put the Trust setting on “Synology Inc. and trusted publishers”.

  24. Alex

    Hey guys,

    I tried to install serviio on my DS214play. Without any success :/
    First I istalled Java7 and Serviio on my DS, afterwards Serviio Console on my Win8 PC.
    Unfortunately the Console do not start (even though I change the vmoptions-file).
    Where could be the mistake? Can anybody help?

    Thank a lot!

  25. Willte

    Hi mate,

    I’m using Serviio for Synology DS214play and it works fine as for me. But recently got a notification that there is 1.5.1 was released. Do you have plans to upgrade Serviio for Synology up to this version? Just asking, not pushing :)


    1. patters Post author

      I do yes, unfortunately it’s been difficult to find time for it recently. It will happen, because Serviio is something I use, and my installation is currently broken while I was testing implementing 1.5 – so there’s a strong motivation for me to finish.

      1. Example

        Are your packages on GitHub? Might be able to help out with the 1.5 build if needed?

  26. ddfs

    I’ve managed to install linux version of the Serviio 1.5.1 on top of the existing synology 1.4.2 package installation. Just had to fix some permissions/owner. Also added new ffmpeg build. Intel cpu, Java 8. Everything works perfectly.

    1. mysteray

      Hey ddfs,

      could you elaborate a little how you managed to compile the new ffmpeg build? Which version did you use?


  27. Nafets

    Hello, i have changed my Synology DS412+ to a DS415+. I make a complete new installation (no migration). But if i stream .mkv files to my Sony TV (2011), the stream stops. I have java and Serviio reinstalled but i have the same problem.

    Someone have an idea?

    1. John

      Have you tried playback with different profiles? They may make the video stream more compatible for your particular TV.

      It may be possible that you have a corrupt file if it’s one particular one that keeps stopping.

      1. MattG

        As John says, check out the different profiles available. Serviio is usually quite good at auto detecting a device (e.g. a PS3) but sometimes it gets caught out with TVs and Blu Ray players.

        My Sony W905 TV and Sony Blu Ray players wouldn’t play certain files properly without the correct Bravia/Blu Ray player profile selected in the Serviio console for that device. HD MKV files now work fine for me. :o)

        Also if you are trying to stream via Wireless (at either end) expect problems with high def stuff. I switched to powerline adapters and it made a massive difference in that respect.

    2. Johnny Day

      If you’re sure it isn’t a problem with the file by testing several different files, then I’d try changing the device profiles because your device may work better with a simpler profile.

    3. Søren Didriksen

      Hello i had the same problem with my Sony TV and found out it was due to a to high bitrate. So i found the sweet spot for my Sony TV to be i total bitrate(audio+video) no higher then 11000 Kbps. To be more precise my audio is 640 Kbps and my video has a variable/overall bitrate of 10000 Kbps. I use a program call TX264 to convert my movies to my preferred bitrate.

  28. Sidhu

    Installed Java but can’t see Serviio in package center ???? DS214Play DSM 5.2-5565?
    Please advise?

  29. H Curtet

    Hello, I’m using Serviio for Synology DS214play and it works fine as for me. But recently i installed DSM 5.2 and it s no more working. Serviio for Synology is now not working. Serviio cannot access to the library … Are you aware about this king of problems ?
    Thanks in advance

    1. mysteray

      I cannot confirm that on a DS114. Updated to DSM 5.2 yesterday and Serviio is still working like before. What you are experiencing sounds like a rights management problem to me.

      1. MattG

        I’ve upgraded to DSM 5.2 on my DS412+ and Serviio still works fine for me too.

        Try stopping Serviio, uninstalling Java, reinstalling Java and then starting Serviio again. I reinstall Java after all DSM updates, as recommended by patters, and so far I’ve had no problems.

  30. Michal

    Hello, can you help me with adding right value to info.plist?? When I use as source to the mac os (10.10.3) connected network (from NAS synology 415 play) drives everything works properly. But as source used drives direct (for example…volume1/Music) from NAS (synology 415play) not connect. Maybe I have added bed value (or wrong position) to info.plist. Thanks Michal


Leave a Reply

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

You are commenting using your 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