User Tools

Site Tools


1 The Easy Way

1. Locate the correct version of JRE Here and download to the Public share

2. Download and install the JRE 6 QPKG for ARM or x86 from the link provided below.

ARM x19: Download Here
x86: Download Here

3. Once installed, enable it from the admin backend and that's it. You can now run any types of Java apps on your NAS now but expect the performance degrades as it is NAS and not a server/pc.

4. Download and install the Serviio QPKG.

Download Here

2 The Hard Way

If you make smallest error and nothing will work after bootup and you have to go through all config again and reboot (which takes like 5-10 minutes).

The biggest issues is that basically you can't change any base config in for example/etc/init.d/ folders and whatnot, cause the QNAP NAS will overwrite most of it with its built-in settings (probably wise to avoid support issues where people have bricked their NAS or something by scewing up the OS )

1. Start by installing IPKG Optware from the appliaction services/qpkg plugins page (also make sure to enable it) from the QNAP web administration frontend.

2. Also set up the web server and install the serviio web frontend (i used v, some things dont work, like setting what categories to show.

3. use for eample putty and login to the server.

4. make a tmp dir in /opt/tmp

mkdir /opt/tmp

5. From Here get the Java embedded runtime.

6. Put the file somewhere on your NAS and copy it to the temp folder

cp /share/MyStuff/Filenameyoujustdownloaded /opt/tmp

7. Download some required files in this new folder

cd /opt/tmp

8. Extract all the .tar.gz files in this folder with the command

tar xvzf filename.tar.gz

9. Install some required components through the Optware package manager, also install nano since its a better text editor than vi

ipkg install optware-devel
ipkg install lame
ipkg install nano

10. Put some stuff in better places

mv serviio-0.5.2 /opt/serviio
mkdir /opt/java
mv ejre1.6.0_21 /opt/java/

11. Now its time to compile ffmpeg, i had to edit the config file to be able to run it on my QNAP NAS, there was some command that constantly failed (mktemp), I used the suggestion in this thread to resolve it … ure-script

nano /opt/tmp/ffmpeg/configure

and make the neccesary changes according to the thread above, and incase it dies, change the line

if ! check_cmd type mktemp; then


if true; then

after you done that, its time to compile ffmpeg

cd /opt/tmp/ffmpeg
./configure --arch=arm --enable-armv5te --prefix=/opt --extra-cflags='-I/opt/include' --extra-ldflags='-L/opt/lib' --enable-
static --disable-shared --disable-ffplay --disable-ffserver --enable-libmp3lame
make install

Note that both configure and make take a long time to complete (like several minutes for configure and up to 20-30 minutes for make), make also shows some warnings, but its nothing to worry about, just sloppy coders

12. When that is done, you should be able to test if ffmpeg is correctly installed:

cd /opt/bin

this should hopefully generate an error that could not be found (atleast it did for me), we will resolve this shortly.
You could also try to move out of the folder /opt/bin and run ffmpeg, this should hopefully launch the old ffmpeg included on the NAS for twonkymedia. You can see that the old ones build date/time is not just today (since you just compiled the new one). The text –enable-libmp3lame should also not be present in what ffmpeg prints out when you run it if it is the old one already on the NAS.

13. Now its time for some configuration

nano /opt/

find the line below

# adding Ipkg apps into system path ...

and replace the two lines just below it with the following

/bin/cat /etc/profile | /bin/grep "PATH" | /bin/grep "/opt/bin" 1>>/dev/null 2>>/dev/null
[ $? -ne 0 ] && /bin/echo "export PATH=/opt/bin:/opt/sbin:/opt/java/ejre1.6.0_21/bin:\$PATH" >> /etc/profile

This is to resolve a bug where the paths are added in the wrong order, refer to … .2Fprofile for an explanation of why. as you can see above, we also add the path to java above, so it is not exactly the same as in the link.

Also add the init script execution fix from the wiki link just below the two changed lines:

# Patch per

/bin/echo "Run Optware/ipkg /opt/etc/init.d/*"
   source /etc/profile
      # Start all init scripts in /opt/etc/init.d
 # executing them in numerical order.
 for i in /opt/etc/init.d/S??* ;do
     # Ignore dangling symlinks (if any).
         #[ ! -f "$i" ] && continue
          case "$i" in
             # Source shell script for speed.
            trap - INT QUIT TSTP
       set start
            . $i
            # No sh extension, so fork subprocess.
            $i start
# End patch

14. Make a few config files in /opt/etc/init.d for serviio and ffmpeg (stupid names, i have no idea if the Sxx makes any difference whatsoever, but mine are named that and they are working so..)

nano /opt/etc/init.d/

add the following to the file

ldconfig /opt/lib
export JAVA_HOME=/opt/java/ejre1.6.0_21

The ldconfig is so ffmpeg can find later on, i also try in vain to create a environment variable for JAVA_HOME, but that will not work, dont worry though, its not needed.

Create the serviio daemon script

nano /opt/etc/init.d/

add the following to the file


case "$1" in

      echo "Stop Serviio..."
      "/opt/serviio/bin/ -stop" > /dev/null 2>&1 &

      # start Serviio in background mode
      "/opt/serviio/bin/" > /dev/null 2>&1 &
      echo "Start Serviio..."

      $0 stop
      sleep 1
      $0 start

      echo "usage: $0 { start | stop | restart}" >&2
      exit 1


Also make both files executable

chmod +x /opt/etc/init.d/
chmod +x /opt/etc/init.d/

15. Almost there now. Edit the serviio start file

nano /opt/serviio/bin/

Just before the last line of that file (that start the server), add the following

export LANG

I had to place that there, even tho the system has utf8 already set, serviio would ignore that and use US-ASCII anyways, if you put it there, serviio will run on UTF8 and hopefully be able to handle special characters (mine did atleast)

Also, on the very last line of this file, there is the actual command to start the server, at the end of this line, add a space and the character & so it reads something like below

"$JAVA" -Xmx384M $JAVA_OPTS -classpath "$SERVIIO_CLASS_PATH" org.serviio.MediaServer "$@" &

That will make serviio actually run in the background on startup should you ever want to start it manually instead of on system start (the start script in /opt/init.d *should* already take care of this during system startup)

16. Reboot the system


17. Now hopefully everything should work, once the NAS is up, try logging in to with with putty and run ps, it should generate a list of processes with a line similar to the one below in there somewhere (the actual numbers will vary ofcourse)

Code: 4168 admin     56036 S   java -Xmx384M 

This means serviio is running, you should be able to check the configuration fromtend by surfing to wherever you put that in step 2

also, try to run ffmpeg, the output should be something similar to below:

[/opt/etc/init.d] # ffmpeg

FFmpeg version UNKNOWN, Copyright (c) 2000-2011 the FFmpeg developers
built on Apr 13 2011 20:14:18 with gcc 4.2.3
configuration: --arch=arm --enable-armv5te --prefix=/opt --extra-cflags=-I/opt/include --extra-ldflags=-L/opt/lib --enable-
static --disable-shared --disable-ffplay --disable-ffserver --enable-libmp3lame
libavutil     50.36. 0 / 50.36. 0
libavcore      0.16. 0 /  0.16. 0
libavcodec    52.108. 0 / 52.108. 0
libavformat   52.92. 0 / 52.92. 0
libavdevice   52. 2. 3 / 52. 2. 3
libavfilter    1.72. 0 /  1.72. 0
libswscale     0.12. 0 /  0.12. 0
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Use -h to get full help or, even better, run 'man ffmpeg'
When ffmpeg is running (like when serviio adds files to the library and extracts metadata), it is almost impossible to change any settings through the configuration frontend cause it eats almost all cpu power. So if you get errors when you change something just after you have added a new folder to the library, dont worry, when serviio is done adding, you cna change config again You can also ofcourse keep trying and hope to be lucky. Also as of v of the php frontend, you cant change anything on the presentation tab, it just reverts back to the default values. I am not sure where the error lies since there is no error reported to the frontend from serviio.
I also have not tried transcoding (i have it disabled) since I always just reencode any movie that my samsung PS50C7705 cant play (which is very few to be honest).
install_qnap.txt · Last modified: 2012/02/25 17:57 by cerberus