Install Subsonic media streaming server on a Raspberry Pi

Edit: There are also instructions for building a Subsonic Raspberry Pi using Java 8 here. The main benefits of that method are a faster UI, better performance and the ability to use the Jukebox mode of Subsonic to play music through the headphone jack of the Pi itself rather than through the web interface.

Subsonic is great. It can play music and video of most formats through a web interface and there are apps available for most mobile platforms so you can take all your media with you anywhere.

I wanted to install Subsonic on a Raspberry Pi as it would give a low-cost and low power platform for my media streaming. Ideal!

Searching around the web there are a few mentions of Subsonic and Raspberry Pi but no clear instructions and certainly nothing that mentions some of the issues I found.

I started off with a clean Raspbian install on an 8GB SD card. If you want instructions for how to set this up, take a look at the Raspberry Pi wiki here. (At the time of writing the latest Raspbian image was dated 2012-08-16).

Once I’d booted the fresh Raspberry Pi and used ssh to log on my first step was to create a new user. This user will be running the Subsonic process so for security purposes I didn’t grant root access.

sudo adduser [subsonic_user]

Subsonic needs Java to run so I installed that next (these next few steps are detailed on the Subsonic website).

sudo apt-get install openjdk-6-jre

I then downloaded the subsonic .deb package with wget and installed it. I downloaded the latest beta version which at the time of writing was 4.7.beta3 but you can find the latest stable version or the latest beta version on the Subsonic download page. Make sure you follow the download links to SourceForge  until you see a ‘Direct Link’. Right click that link and select ‘Copy Link’. You can then right-click the ssh window to paste the URL there.

wget [right-click paste url] -O subsonic.deb
sudo dpkg -i subsonic.x.x.deb [downloaded file]

As the Subsonic page says, the user for the subsonic process should be changed for security.

sudo nano /etc/default/subsonic

Edit the SUBSONIC_USER line at the bottom.

SUBSONIC_USER=[subsonic_user we created earlier]

Save the file and restart the Subsonic process to make the changes.

sudo service subsonic restart

 

This is where I found my first issue.

I have a lot of music that is in FLAC format. In order to play music through the web interface, Subsonic transcodes the files from FLAC to mp3. To do this it uses a program called ffmpeg. The ffmpeg version which Subsonic installs by default doesn’t work correctly on the ARM architecture processor of the Raspberry Pi so in order for transcoding to work properly, I found that I needed to replace ffmpeg with an ARM compiled version.

Luckily this is really straight forward.

sudo apt-get install ffmpeg

This installs ffmpeg to the /usr/bin folder but Subsonic can’t use it from there so we need to copy it to the correct folder.

sudo rm /var/subsonic/transcode/ffmpeg
sudo cp /usr/bin/ffmpeg /var/subsonic/transcode

I repeated the above steps for the lame transcoder which Subsonic also uses. Just repeat the install, remove and copy steps but replace ‘ffmpeg’ with ‘lame’.

Edit: I recently had some trouble with the transcoding failing every now and again. Checking the ‘Transcoding’ section of the Subsonic settings revealed that some of the enabled transcodings were set to use ‘Audioffmpeg’.

I changed these to refer to ‘ffmpeg’ and the transcoding worked again.

You should now find that transcoding works properly on Subsonic. You can fire up Subsonic by opening a web browser and typing in http://[ip address of Raspberry Pi]:4040. If you log in and go to Settings>Network you can ask Subsonic to configure your router and give you a subsonic.org sub-domain so you can get access to your Raspberry Pi Subsonic server from anywhere.

I’d also recommend using the donate function as this is a great piece of software.

45 thoughts on “Install Subsonic media streaming server on a Raspberry Pi”

  1. Nice, comprehensive guide – I just installed subsonic server to my raspbmc installation yesterday following the installation instructions on the subsonic site and was wondering how your installation is working performance wise?

    When I access the web interface of subsonic from my local network, it really takes a long time to switch between different views and menus. I only have one album and two mixtapes added so far for testing so this shouldn’t be the issues (all mp3 files). Was wondering if I am asking to much from my little pi or if i messed up something (java memory heap is set to 200 – should be enough i guess since 150 is the default). Thanks in advance!

    1. Thanks for the comment Wei.
      My Subsonic Pi works well with a few flaky moments. I find that occasionally when it first boots up the subsonic process eats up 80-90% of the RAM but if I leave it for five minutes or so it settles down and works as expected.
      The Subsonic interface isn’t as zippy as when I was using a VPS but given the resources available on the Pi I’m more than happy with the performance.
      It’s worth mentioning that the Pi is a dedicated subsonic server. There is very little else running on there, especially not a desktop session. I have about five users who use both the web interface and the android app to connect to it through an external URL and find both to be OK. Also worth a mention that this Pi is one of the batch with 256MB RAM. I’m waiting to get a new Pi with 512MB as I would expect a good performance boost with that and certainly not any of the runaway process issues I have seen.
      All my media is on an external hard drive so I wonder if your performance issues are due to media being accessed on your SD Card? (I’m making assumptions about your set up here.)

      1. Thanks for the quick reply 🙂

        You’re right about my setup, hehe – 16gb SD Card – haven’t finalized my thoughts on what external storage solution i should use. But i think the SD card is always faster than a hard drive connection via usb 2.0, isn’t it? I have the 512mb ram version though. Seeing that you don’t have a desktop session, i guess thats the biggest issue with my setup. Raspbmc always boots to the xbmc ui which already takes some ressources i guess – so it gets a bit crowded in those 512 mb of ram (and cpu power) 😀

        Anyway i found this forum thread on the subsonic forum, which discusses subsonic on the pi. Already read some posts about performance problems – might try some alternatives they are mentioning, since i’d like to use my pi as my home media player as well and after all it’s all about experimenting ! 😛

        http://forum.subsonic.org/forum/viewtopic.php?f=5&t=8374&start=15

          1. Hi Tim, I’ve just recently re-activated my pi but i couldn’t find the time to try out subsonic again. My plans are to try it on the new distribution of raspbian, which already includes the Oracle JDK and see how that works out 🙂 I’ll keep you updated here, if I find anything – could be a while though. Hopefully during the holidays some day 🙂

  2. Terrific guide for installing Subsonic on the Pi. Works great for playing music remotely through iSub or the browser interface. I don’t seem able to get music to play via Jukebox or directly on the Pi. Any ideas on that front? I have confirmed that music can be played by other means through the speaker jack but it isn’t working through the Raspberry Pi.

    1. Thanks for the kind words Ross.
      I haven’t really investigated the jukebox mode but, having tried this morning, am unable to get it working either.
      From a quick search it looks like others are having trouble with the same thing.

      this post on the Raspberry Pi forum looks promising but I don’t know enough of the structure of Subsonic to know where to find that code snippet or even if it uses it at all.
      http://www.raspberrypi.org/phpBB3/viewtopic.php?f=28&t=30316&p=264596&hilit=audio+java#p264596

      I may take a look a bit later as jukebox would be a good addition to the setup. If I get anywhere I’ll let you know. In the meantime, did you try both the audio jack and the HDMI output?

  3. no joy on HDMI either. I can easily get sound out of both the speaker jack and HDMI by using MPG321 or aplay but still none from Subsonic. I get no error or warnings in the subsonic.log file. Just the expected (I believe) messages as ffmpeg fires up and strarts to stream the requested file. Based on a quick look it appears that ffmpeg is using the same options as are working when Jukebox is used on my Puppy Linux on x86 incarnation of Subsonic. Here is a snippet of the log.

    [2013-02-15 01:06:18,971] DEBUG TranscodeInputStream – Starting transcoder: [/var/subsonic/transcode/ffmpeg] [-ss] [0] [-i] [/home/pi/myServer4/music/Adele/21/10 Lovesong.mp3] [-v] [0] [-f] [au] [-]

    [2013-02-15 01:06:20,076] DEBUG InputStreamReaderThread – (/var/subsonic/transcode/ffmpeg) Stream mapping:

    [2013-02-15 01:06:20,084] DEBUG InputStreamReaderThread – (/var/subsonic/transcode/ffmpeg) Stream #0.0 -> #0.0

    [2013-02-15 01:06:20,086] DEBUG InputStreamReaderThread – (/var/subsonic/transcode/ffmpeg) Press ctrl-c to stop encoding

    [2013-02-15 01:06:21,576] DEBUG JukeboxService – Opened line org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine@be0446

    [2013-02-15 01:06:21,614] INFO JukeboxService – admin starting jukebox for “21/10 Lovesong.mp3”

    [2013-02-15 01:06:21,744] DEBUG InputStreamReaderThread – (/var/subsonic/transcode/ffmpeg) size= 99kB time=0.57 bitrate=1411.5kbits/s

  4. Victory! The missing piece was just adding the id that subsonic is running under (SUBSONIC_USER in /etc/default/subsonic) to the audio group (command is usermod -a -G audio subsonic). In my case I was running subsonic under the id subsonic. Now I just need to do a full rebuild from scratch to document the required steps. I think the only additions to your instructions are to java what sound card to use and adding the user to the audio group. I will confirm this after doing the full rebuild in the next day or so.

    1. That’s fantastic Ross! Great when determination wins through!
      I look forward to your update and I’ll give what you have a go later on.
      Thanks for replying back here.

    2. Oh man, please tell me you have the steps to make this work. Having a Raspberry Pi based Subsonic jukebox will open the door to several different projects I want to complete and I cannot get the sound to work but from what it sounds like, you did it! Hopefully you have the instructions soon!

  5. The suspense on this is killing me. I have spent 2 days working with this and I cannot get it to work. I have tried 3 different new installations of Raspbian, one with desktop environment, and 2 that are purely command line only (through SSH).

    Every time I get Subsonic installed and working fine in “normal” mode, but “jukebox” mode will not play audio through the Raspberry itself. I found a couple of posts online that give instructions on how to compile and run a Java script that shows you all of your audio ports. When I do this, I only get:

    Available mixers:
    PulseAudio Mixer
    ALSA [default]
    ALSA [plughw:0,0]
    Port ALSA [hw:0]

    Then I edit the /usr/bin/subsonic file and add the -Djavax line per the instructions, to no avail. I made sure my ‘subsonic’ user is a member of the audio group using the command ‘usermod -a -G audio subsonic’. I install alsautils and can play back a WAV file using aplay with no problems, but no matter what I do, I cannot get Subsonic to play anything through the audio port.

    I have scoured Google, subsonic’s forums, the raspberry pi forums, along with several other sites looking for help with this, and the only info I find about jukebox mode in a Linux environment is for dedicated Linux machines, and not the raspberry. This thread is literally the only thread I have found that mentions anyone getting this to work on a Raspberry Pi.

    Please tell me that its possible!!!

  6. I still haven’t had time to do the instructions but here is something from my notes that I don’t think has been mentioned in the blog yet…
    enter the following command in a console session
    amixer -c 0 cset numid=3 ?
    where ? is 1 for speaker jack, 2 for HDMI and 0 for default. Didn’t work on 0 I think. And here is the Djavax command I entered in /usr/bin/subsonic
    ‘-Djavax.sound.sampled.SourceDataLine=#ALSA [plughw:0,0]’ \
    I put the new line in between the last -Dsubsonic line and the -Djava.awt line

  7. I tried everything you suggested. As a matter of fact, that Djavax is exactly what I already had and it simply doesn’t work. After spending several more hours working on this last night, I ended up giving up, and reloaded Raspbian on my SD card and tried using Music Player Daemon (MPD) and it worked perfectly. I use Client175 as my webclient and although its not as flashy and nice looking as Subsonic, it works perfectly and is a HECK of a lot faster. I think I will be using this for my music playing needs.

    For anyone stumbling on this, good luck, getting Subsonic working in jukebox mode is not easy. I ended up having better luck with MPD and I can control it with both my PC through a webclient and through my Android smartphone using MPDroid.

  8. Here are my more detailed instructions for Subsonic on the Pi. I found that the Oracle JRE gives FAR better performance but a slightly more complicated install. Note that the Soft-float image is needed to run Oracle JRE. Worth the effort though!

    – load up your pi with the Soft-float Debian Wheezy image and do basic config
    – do not plug in your wifi dongle yet if you plan on using one
    – update packages so that wifi will work
    sudo apt-get update
    sudo apt-get upgrade (takes a LONG time ~4 hours)
    – upgrade raspi-config through menu to pick up overclock menu item
    – wifi dongle will now work. Needs setup not covered here.
    – add a user for subsonic. I added the user named subsonic
    sudo adduser subsonic
    – add subsonic to the audio group
    sudo adduser subsonic audio
    – Install Oracle Java by following this excellent doc
    http://www.savagehomeautomation.com/projects/raspberry-pi-installing-oracle-java-runtime-environment-jre.html
    – download subsonic .deb package
    – go to the subsonic download page on http://www.subsonic.org
    – click on Debian download, then right click on direct link address and copy the address
    wget -O subsonic.deb [right click paste url here]
    – do the dpkg thing to install the code
    sudo dpkg -i subsonic.deb
    – update the id that subsonic runs under
    sudo nano /etc/default/subsonic
    change last line to SUBSONIC_USER=subsonic
    – get correct versions of ffmpeg and lame and set up symbolic links
    sudo apt-get install ffmpeg
    sudo apt-get install lame
    sudo ln -fs /usr/bin/ffmpeg /var/subsonic/transcode
    sudo ln -fs /usr/bin/lame /var/subsonic/transcode
    – set the default sound card in Java
    sudo nano /usr/bin/subsonic
    add the following line before the -verbose:gc \ line
    ‘-Djavax.sound.sampled.SourceDataLine=#ALSA [default]’ \
    – tell the Pi where to send the sound (?=1 for speaker jack, 2 for HDMI, 0 for default)
    sudo amixer -c 0 cset numid=3 ?
    – you are done! restart the Pi
    sudo reboot
    – once you set up Subsonic with a media library you should be able to get sound directly from the Pi or via jukebox

    1. That’s absolutely brilliant, thanks Ross.
      I’ll give these instructions a go later on and incorporate them into the blog post too if that’s OK with you?

    2. Nothing happened at first and I got “Error: Could not find or load main class [default]” in my /var/subsonic/subsonic_sh.log – so I removed [default]‘ and made

      ‘-Djavax.sound.sampled.SourceDataLine=#ALSA \

      Subsonic now runs, though I can’t access it yet. Getting there. So many thanks for taking the time to put this up here – truly appreciated.

  9. First of all Cheers for this walk though I am know Linux Guru just a network engineer and this guide was perfect.

    Second I came across this, which seems to suggest that Java8 is coming from oracle. there is a JRE build on the download page that I thought you may be intrested in taking a look at?

    https://blogs.oracle.com/hinkmond/entry/quickie_guide_getting_hard_float
    https://blogs.oracle.com/hinkmond/entry/rpi_and_java_embedded_hard
    http://jdk8.java.net/download.html

    Any way once again thank you for the guide. have it up and running fine, just pity about the video trandscoding speed

  10. Thanks for the pointer to Java 8! I downloaded it last night and built a fresh system from the ground up using the Raspbian Wheezy (hard float), Java 8 and Subsonic. Works great and fixes up the performance issue I had with WMA->MP3 transcoding not staying ahead of the streaming and causing pausing. Between that and a cheap USB sound card this thing is working great! Oh yah, and feel free to use the instructions any way you want. I’ve pretty much put together revised doc for this build that I can post here if you like.

    1. Thanks Ross and DevilWAH. I’ve just changed jobs so haven’t had a proper chance to experiment with any of your suggestions.
      When I get a spare moment I will do a rebuild and then write up any new instructions.

      I’ve also had a thought about using the MPI system used in the University of Southampton Raspberry Pi super computer to spread the processing of Subsonic across multiple Pis
      I like the idea of the system getting more and more powerful as you add more jukeboxes in other rooms. Whether it will work like that or not remains to be seen, but it’s going to be fun finding out (if I ever get a chance!)

    2. In terms of installing java 8, I assume subsonic uses jre but I really have no idea about how java is implemented. If you could post how you installed java 8 for subsonic I would be really interested.

      Cheers

  11. I used the same instructions as for Java7 as found here
    http://www.savagehomeautomation.com/projects/raspberry-pi-installing-oracle-java-runtime-environment-jre.html
    but just substituted the Java8 download. I’m not sure if the simpler instructions in the Java8 link would work but I went the extra mile and did the update-alternatives steps as laid out in the link. It all worked great and my Pi has been up for about a week in this config without a glitch.

  12. I am having problems getting juke box mode working still, I followed the detailed instructions above but when ever I try and use jukebox mode i get…

    [2013-03-17 23:32:19,616] INFO MediaScannerService – Automatic media library scanning scheduled to run every 1 day(s), starting at Mon Mar 18 03:00:00 UTC 2013
    [2013-03-17 23:32:20,563] INFO PodcastService – Automatic Podcast update scheduled to run every 24 hour(s), starting at Sun Mar 17 23:37:20 UTC 2013
    [2013-03-17 23:33:04,117] DEBUG TranscodeInputStream – Starting transcoder: [/var/subsonic/transcode/ffmpeg] [-ss] [0] [-i] [/mnt/nickcw/d/000 music ok/000 NEW NEW 04 acid house/Last Step – 1961 2008/02 61 Disco.mp3] [-v] [0] [-f] [au] [-]
    [2013-03-17 23:33:07,025] DEBUG InputStreamReaderThread – (/var/subsonic/transcode/ffmpeg) Stream mapping:
    [2013-03-17 23:33:07,028] DEBUG InputStreamReaderThread – (/var/subsonic/transcode/ffmpeg) Stream #0.0 -> #0.0
    [2013-03-17 23:33:07,032] DEBUG InputStreamReaderThread – (/var/subsonic/transcode/ffmpeg) Press ctrl-c to stop encoding
    [2013-03-17 23:33:07,210] ERROR JukeboxService – Error in jukebox: java.lang.IllegalArgumentException: No line matching interface SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, big-endian is supported.
    java.lang.IllegalArgumentException: No line matching interface SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, big-endian is supported.
    at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:476)
    at javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:604)
    at net.sourceforge.subsonic.service.jukebox.AudioPlayer.(AudioPlayer.java:60)
    at net.sourceforge.subsonic.service.JukeboxService.play(JukeboxService.java:112)
    at net.sourceforge.subsonic.service.JukeboxService.updateJukebox(JukeboxService.java:80)
    at net.sourceforge.subsonic.ajax.PlayQueueService.convert(PlayQueueService.java:361)
    at net.sourceforge.subsonic.ajax.PlayQueueService.doSkip(PlayQueueService.java:108)
    at net.sourceforge.subsonic.controller.RESTController.jukeboxControl(RESTController.java:598)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:473)
    at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:410)
    at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
    at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
    at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
    at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
    at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
    at net.sourceforge.subsonic.security.RESTRequestParameterProcessingFilter.doFilter(RESTRequestParameterProcessingFilter.java:110)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
    at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:173)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
    at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
    at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
    at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at net.sourceforge.subsonic.filter.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:43)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at net.sourceforge.subsonic.filter.RESTFilter.doFilter(RESTFilter.java:51)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at net.sourceforge.subsonic.filter.ParameterDecodingFilter.doFilter(ParameterDecodingFilter.java:54)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at net.sourceforge.subsonic.filter.BootstrapVerificationFilter.doFilter(BootstrapVerificationFilter.java:54)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    at org.mortbay.jetty.Server.handle(Server.java:313)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
    at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)

    [2013-03-17 23:34:33,706] WARN NetworkService – No UPnP router found.
    [2013-03-17 23:36:56,650] INFO VersionService – Resolved latest Subsonic final version to: 4.7
    [2013-03-17 23:36:56,687] INFO VersionService – Resolved latest Subsonic beta version to: 4.7.beta3

    Any iideas what I am doing wrong.

    1. Morning Nick. Thanks for the comment and sorry the instructions aren’t working for you. I’m not entirely sure what us going wrong for you but I have been able to get jukebox mode working on my Pi. I’m in the process if writing up a combination of Ross’ instructions and my own into a new blog post. Hopefully that will solve your issue.

      1. I will look forward to seeing the blog post.

        Can you add one more piece of info, The user subsonic that is created should this be created with a password or should the password be left blank?

  13. It works!

    To make it work I started from scratch used the hard float version and java 8.

    I now have audio and video:
    – 1x pi running raspxmbc
    – 1x pi running subsonic

    Thanks for this info so pleased to have it working.

  14. Hi MJ2P,

    Firstly thanks for all the fantastic info!!

    I’ve followed your second set of instructions and everything is working fine except for jukebox mode. I’ve played around with the amixer settings a fair bit, as well as trying the java option [plughw:0,0] instead of default with no success.

    I can play music through the jack plug if i use mpg123, and changes to the volume via amixer work while it’s playing. This is with mp123 running under the subsonic user.

    Any suggestions of what else I can try?

    Regards

    George

  15. Hi,

    I have recently installed subsonic on my 512Mb raspberry pi and it works perfectly unless for the transcoding. I don’t have any FLACs in my collection but have some OGGs and AACs and both fail on transcoding. CPU usage goes easily to 100% when I try this. I thought using an external player would be the solution for that since I could disable transcoding for a specific player and the raspberry could stream those files to an external player which is capable of handling this format.

    I only use Linux at the desktop either and could not make external players work with subsonic. I tried both mplayer and VLC. Both appear on the web page but do not play the files or show any errors.

    Have you tried transcoding those formats with success. Any ideas of what it might be?

    Thanks a lot.

  16. Hello all,
    I am kinda new at the whole Raspberry Pi thing, but getting there…. I have installed Raspbmc and attempting to follow these instructions.
    All has worked well from what I can see, however I cannot access the web interface. I am prompted with a user name and password. I have tried all combinations of what I think they could be with no luck.
    Any ideas?

    1. I apologize, the IP address which I assigned the PI when entering that into the browser I ended up accessing the IP for remote access to the XBMC… I have no idea how to access the PI…

      1. Noticed this when installing SubSonic:

        Unpacking replacement subsonic …
        update-rc.d: using dependency based boot sequencing
        insserv: warning: script ‘cron’ missing LSB tags and overrides
        insserv: warning: script ‘avahi-daemon’ missing LSB tags and overrides
        insserv: warning: script ‘udev’ missing LSB tags and overrides
        insserv: warning: script ‘console-setup’ missing LSB tags and overrides
        insserv: warning: script ‘xinetd’ missing LSB tags and overrides
        insserv: warning: script ‘dbus’ missing LSB tags and overrides
        insserv: warning: script ‘xbmc’ missing LSB tags and overrides
        insserv: warning: script ‘winbind’ missing LSB tags and overrides
        Setting up subsonic (4.8) …
        update-rc.d: using dependency based boot sequencing
        insserv: warning: script ‘cron’ missing LSB tags and overrides
        insserv: warning: script ‘avahi-daemon’ missing LSB tags and overrides
        insserv: warning: script ‘udev’ missing LSB tags and overrides
        insserv: warning: script ‘console-setup’ missing LSB tags and overrides
        insserv: warning: script ‘xinetd’ missing LSB tags and overrides
        insserv: warning: script ‘dbus’ missing LSB tags and overrides
        insserv: warning: script ‘xbmc’ missing LSB tags and overrides
        insserv: warning: script ‘winbind’ missing LSB tags and overrides
        Started Subsonic [PID 1669, /var/subsonic/subsonic_sh.log]
        pi@raspbmc:~$

        1. Sorry for all the posts here with my issue.
          Every thing has been followed with the exception of the errors listed above.
          I am using my windows box to attempt to access subsonic on the Pi. I cannot seem to connect to the web interface with the IP. Not sure what is going on!

          I would appreciate your assistance. 😉
          Thank you all..!!!

          1. GOT IT WORKING… but…
            I have access to the web server, it was due to me having a console open! Not sure why it would cause an issue, but its working now.

            However, now it will not find the folder which I have on an external USB HDD attached to the Pi… Case is correct and structure is correct. HAHA… One thing after another. I am going to bed.

          2. Hi James,

            Sorry for the delay in replying and glad you got it working in the end. Feels good to have it done under your own steam I bet. Not sure if you’re still having trouble with your USB hard drive? If you are still stuck post back here and I’ll see if I can help.

  17. Hi, I have subsonic up and running great on my pi, however, I’ve recently added a USB DAC and can’t seem to get the sound through it. I know it works because I can do the following from the pi command line:

    sudo mplayer -ao alsa:device=hw=0.0 somemp3file.mp3

    Plays perfect through my DAC.

    But when I try to play through Subsonic, I get nothing through the DAC but sounds fine through the 3.5 Jack of the PI? Seems that Subsonic does not want to “recognize” the USB DAC, but plays fine through the Jukebox player. Is there possibly a problem with the Java 8 player in subsonic playing through the USB? Just wondering. Any help would be great.

  18. Such a great resource – I’d have never got my Pi running without it, thank you!

    Thought you might like to know that there’s now an easy way to get Subsonic running on your pi, by using DietPi: http://fuzon.co.uk/phpbb/viewtopic.php?f=8&t=6

    The installer app now has an option that automatically downloads and installs Java and Subsonic (as well as having options to configure your soundcard, so if you’re using one of the new snazzy i2s cards it’s just an option selection to get it running).

    I’ve got mine with an i2s card and it works fantastically (both streaming over the web and in jukebox mode)

    Gowan, try it. You might like it 😉

Leave a Reply

Your email address will not be published. Required fields are marked *