Report issues, get support and leave feedback in this XDA forums thread.
BubbleUPnP Server provides new services on top of your existing UPnP/DLNA devices:
BUBBLEUPNP SERVER IS NOT AN UPNP AV MEDIA SERVER
- secure Internet access to your UPnP/DLNA Media Servers content with Android BubbleUPnP and foobar2000 on Windows (or Wine).
- stream and download your music, video, photos with your Android device from a mobile or WiFi connection with optional transcoding to reduce bandwidth.
- no need to sync, to upload to the cloud, to register to an online service, ... You're in control!
- create OpenHome Media Renderers from any UPnP AV renderer (provides on-device playlist, multiple Control Point access to the same renderer)
- fix issues of UPnP/DLNA Media Servers (discovery issues, broken data, add some audio DLNA compliance) by creating a proxy Media Server
- access your Media Servers across different networks
It requires at least one working UPnP AV Media Server (Windows Media Player, Twonky, Asset UPnP, ...) or Media Renderer to do something useful.
Internet streaming and downloading
BubbleUPnP Server makes your LAN Media Servers available to Android BubbleUPnP, for streaming over mobile (3G/4G) and WiFi connections, with the following advantages:
This functionality can also be used on a regular LAN, for example to bypass regular UPnP SSDP device discovery in the rare cases it is not available for whatever reason
(blocked by a firewall, UDP multicast disabled at the router level, ...).
- Easy to setup: you do not have to modify your Media Servers configuration in any way
- Secure: all communication between Android BubbleUPnP and your Media Servers go through BubbleUPnP Server and is password protected. HTTPS is supported.
- Network bandwidth efficient: bandwidth is greatly optimized between Android BubbleUPnP and your Media Servers, reducing loading times over mobile networks
- Transcoding: BubbleUPnP Server can transcode audio on the fly to MP3, video to H264, and images, to adapt to lower bandwidth usually available on mobile networks
- Transcoded downloads: you can download a transcoded version of your tracks for playback on your Android device with any audio player. Useful to download an MP3 version of your FLAC or lossless albums stored on your NAS.
Using Android BubbleUPnP or BubbleUPnP Tether client, you can make your Media Servers from your home local network visible on another LAN to any UPnP AV devices of this LAN (TV, Control Points, ...).
To illustrate this functionality consider this scenario:
Suppose you have a Twonky server at home (replace Twonky with your favorite Media Server) and you go visit a friend who has a brand new UPnP/DLNA device
connected to his stereo and a Windows 7 PC with Window Media Player. Using your Android device and BubbleUPnP you can push music from your Twonky Server to his stereo.
With UPnP tethering you can do the same using the "Play to" functionality of Windows Media Player. In short, your Android device makes your home Twonky server visible to
Windows Media Player on your friend's network. This is UPnP tethering.
LAN Media Server proxying
Many Media Servers have bugs and sometimes return incorrect data which can prevent them from working fully with some UPnP Software.
BubbleUPnP Server can create a "proxy" Media Server (associated to a real Media Server on your LAN), that will attempt to convert incorrect data
into correct data. Data is always reformatted in a more compact format with the benefit of speeding up browsing on slower devices.
Except for this difference, the proxy Media Server acts exactly as the real Media Server it is linked to.
Another possible use of proxying is to solve potential Media Servers discovery issues in your network with some UPnP software.
As long as BubbleUPnP Server is able to discover your Media Server, it can create a proxy Media Server which in turn has more chance to be discovered by UPnP software.
Video showing that feature (courtesy of Stephen Philips)
When operating an UPnP AV Renderer, the playlist of audio tracks resides on the Control Point which must remain running
for playlist track advance to happen. It has 2 main drawbacks:
- keeping a Control Point app running isn't the best solution, in particular on mobile devices as it consumes battery.
- two or more Control Points cannot control the same UPnP AV Renderer and share the same playlist. For example, you cannot create a playlist on your smartphone Control Point
and later modify it on your PC or tablet Control Point
To tackle these issues, the OpenHome Playlist specification addresses the deficiencies of UPnP AV, adding
the ability for an OpenHome Renderer to store and manage its playlist. It can advance playback by itself without requiring a Control Point to be running.
Several OpenHome enabled Control Points can be connected to the renderer, sharing the same playlist. Any playlist change on one Control Point is immediately
reflected on the others.
BubbleUPnP Server makes it easy to create an OpenHome renderer from any exisiting UPnP AV Renderer (WMP for example). Refer to this section for more information on how
to create and control an OpenHome Renderer with Android BubbleUPnP or other OpenHome Control Points.
BubbleUPnP Server can run on any platform where Java 1.6 or higher is available. This includes:
- Windows XP/Vista/Seven
- MacOS X
- Any NAS or device on which Java 1.6+ is available
IMPORTANT: if after install you cannot connect to the web interface, refer to the troubleshooting section.
On Windows, the easiest way to get started is to download the installer.
Run the installer. If Java 1.6 32 bits or higher is not installed on your system, the installer will launch the Java 1.7 32 bits installer before installing BubbleUPnP Server.
At the end of the installation process, BubbleUPnP Server should be running as a Windows service. The installer will launch your Web Browser to configure it.
You can also connect to it pointing your Web Browser to http://localhost:58050 or launch the Desktop shortcut.
If the Web Browser cannot connect to BubbleUPnP Server, refer to the troubleshooting section.
You will find shortcuts in the Windows Start menu to stop/start the service and launch the configuration interface in your web browser.
If you do not want to run BubbleUPnP Server as a Windows service you can download the archive for other platforms.
Ubuntu packages are provided in a PPA repository for easy updates.
The server is managed as a regular upstart job.
First you must ensure that Java 6 or 7 is installed:
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
If Java is not installed, the easiest way is to install the Oracle Java 7 JRE:
$sudo add-apt-repository ppa:webupd8team/java
$sudo apt-get update
$sudo apt-get install oracle-java7-installer
Although the Oracle JRE is preferred, the OpenJDK 6 or 7 should also work:
$sudo apt-get install openjdk-7-jre-headless
Once Java is available, enter theses comands to install the BubbleUPnP Server Ubuntu package from the BubbleUPnP Server PPA:
$sudo add-apt-repository ppa:bubbleguuum/bubbleupnpserver
$sudo apt-get update
$sudo apt-get install bubbleupnpserver
After install the server should be running. Connect to it with your web browser:
http://localhost:58050 (from your Ubuntu machine) or http://<server LAN ip>:58050 (from another machine on the LAN).
Download RPM package
- the package installs a ffmpeg static binary to provide audio/video transcoding out of the box
- the user running the BubbleUPnP Server as well as the http ports can be easily changed in /etc/default/bubbleupnpserver (needs a server restart).
- data files (configuration, log files, playlists, ...) are stored in the .bubbleupnpserver subdirectory of the home directory of the user running the server. For root this is /root/.bubbleupnpserver.
- to start BubbleUnP Server:
- to stop BubbleUnP Server:
$rpm -i <rpm file>
If you need to adapt or rebuild the package you will need the spec file.
Download the package from the AUR and extract it to a temporary directory.
Alternatively, use a tool such as cower to download and extract the package automatically:
$cower -d bubbleupnpserver
Change to the temporary directory:
Run makepkg to download, build, and install the package:
Follow the prompts and onscreen instructions to begin using BubbleUPnP Server.
NOTE: the source of the package is available on github
You can install one of these packages and read detailed instructions here
You can find additional instruction to compile ffmpeg (if needed) here.
Alternatively you can follow the "Other Java platforms" section below for manual install.
- Install Java. See this guide for a manual installation or this one for an automated installation
- Download the Synology package and save it to you hard disk (SPK file)
- Load up DSM and Open Package Center
- Select Install/Update and choose file (select the SPK you just downloaded)
- Click install
- Wait 1-2 minutes after installation for BubbleUPnP Server to start up
- Click BubbleUPnP Server on the applications menu on DSM
Alternatively you can follow the "Other Java platforms" section below for manual install.
Download BubbleUPnP Server
BubbleUPnP Server is distributed as an archive containing a jar file.
If you want transcoding support you will need to install ffmpeg on your system.
- unpack the archive in a directory
- on unix platforms make launch.sh executable: chmod +x launch.sh
- on unix platforms run launch.sh, on Windows run launch.bat. Java 1.6 must be installed and the "java" executable must be in your PATH
- point your Web Browser to http://localhost:58050 to show the configuration interface
- for Internet access with Android BubbleUPnP, configure your firewall / Router NAT to allow access to TCP port 58050 (see server configuration below)
Alternatively you can run the server with:
java -jar BubbleUPnPServer.jar
IMPORTANT: There is a known JRE crash with some versions of OpenJDK on the ARM platform. It can be workarounded
starting the server with:
java -XX:+PrintCommandLineFlags -jar BubbleUPnPServer.jar
See this indepth article written by Stephen Phillips
for additional setup information on the Pi and instructions for making the Pi an OpenHome renderer.
The core of BubbleUPnP Server is a Web Server running on port 58050 by default for HTTP and on port 58051 for HTTPS.
The server must be accessible from the Internet on this port (LAN proxying functionality does not require this).
The Windows Installer will try to auto-detect network settings so the server is usable straight away adding the required firewall and NAT rules, but
this might not work in all network setups.
The configuration front-end is divided into 6 tabs:
This page displays a summary of the server operational status and has all information required to configure Android BubbleUPnP:
If "Server is reachable from Internet" is displayed, everything is fine and BubbleUPnP Server is ready to use for remote access.
- the server's status when connecting from the Internet
- the server's public IP Address and hostname
- the server's public HTTP and HTTPS Port
- the server's LAN IP Address
- the Internet connection test for both HTTP and HTTPS
- the server's version and expiration date if any
- the server's support for audio, video and image transcoding
Otherwise something is preventing the Internet to connect on the HTTP or HTTPS port.
This will likely be a NAT or firewall issue. For example, if the public HTTP port is 58050 and the LAN IP Address displayed is 192.168.1.10
- Add a rule on your router to redirect connection on TCP port 58050 to LAN IP Address 192.168.1.10 on port 58050. You must use the same port for the redirection
- Add a rule on your firewall to allow incoming traffic on TCP port 58050 on the 192.168.1.10 machine
- For HTTPS access repeat the 2 steps above with the HTTPS port (58051 by default)
IMPORTANT: if you use HTTPS access, the HTTP port must still be open as it is still used for media streaming requests only.
In this page you can set the login and password that you will use to connect to the server:
- in Android BubbleUPnP
- in foobar2000
- to access the configuration interface when connecting from the Internet (if "Allow to access server from the Internet" is enabled)
If you are using a dynamic DNS service because your ISP changes your IP address at regular interval, you can change the public hostname to your stable dynamic DNS hostname.
If option "Allow to access server from the Internet" is disabled, the server will deny all Internet connections.
If you plan to use BubbleUPnP Server with Android BubbleUPnP, you must enable this setting.
If option "Allow to configure the server from the Internet" is enabled, these credentials are also used to connect to the configuration web interface from the Internet.
By default this option is disabled and the configuration web interface is only accessible on the LAN.
If option "Enable media access log file" is enabled, all media streaming connections will be logged to the access_log.txt file found in the installation directory.
This page displays the list of Media Servers detected on your local network.
For each Media Server you can configure:
When a proxy Media Server is created, a new Media Server with the same name will appear on your LAN with "[proxy]" appended to the name.
For example if you have a Media Server named "Awesome" then a new one called "Awesome [proxy]" will appear.
You can connect to it with any UPnP software like you would connect to "Awesome".
- if this Media Server should be made available to Android BubbleUPnP when it connects
- if a proxy of this Media Server should be created on the LAN
This page displays the list of UPnP AV Media Renderers detected on your local network.
For each UPnP AV Renderer you can create a playlist aware OpenHome Renderer that you can control with either Android BubbleUPnP or other OpenHome Control Points.
An OpenHome Renderer has the following advantages over a regular UPnP AV renderer:
- each OpenHome renderer has its own playlist
- gapless playback is supported when the underlying UPNP AV renderer supports it
- no need to leave the Control Point running for playlist track advance to happen
- several OpenHome Control Points (Android BubbleUPnP, Linn Kinsky) can be connected to the same renderer simultaneously, showing the same playlist and playback state
- create a playing playlist on a device and pick it up later on another device
For example, consider this scenario:
- with BubbleUPnP Server you create an OpenHome renderer from WMP
- in Android BubbleUPnP on your phone you select this renderer and make a playing playlist and start playback
- you exit BubbleUPnP. Playlist track advance is still performed by BubbleUPnP Server
- sometimes later you launch BubbleUPnP on your tablet (or phone) and select the WMP OpenHome renderer. The initial playlist is displayed
To create an OpenHome Renderer from the selected UPnP AV Renderer just check "Create an OpenHome renderer".
A new UPnP Device will appear on the network named after the UPnP AV Renderer's name with "(OpenHome)" appended.
For example if you select a Windows Media Player Renderer called "bob (MYPCNAME: Windows Media Player)", then
the newly created OpenHome Renderer will appear as "bob (MYPCNAME: Windows Media Player) (OpenHome)" in Android BubbleUPnP.
An OpenHome renderer has two optional parameters that you can modify:
Room and Name are ignored by Android BubbleUPnP. However they are used by other OpenHome Control Points such as Linn Kinsky
to get the full name of the renderer which will usually be "Room: Name".
- Room: the physical room where your renderer is located. Limited to 20 characters
- Name: the name of the renderer within the room. Limited to 20 characters
- Gapless playback: enable music gapless playback (see below)
OpenHome Gapless playback
Enabling gapless playback has several benefits:
- the obvious one is to be able to play gaplessly gapless albums like "Dark side of the moon"
- a less obvious one is to reduce gaps between non-gapless tracks streamed from the cloud (Dropbox, Google Music, etc).
The next track to be played is buffered in advance making possibly long buffering unnoticeable on next track transition
Gapless playback can only be enabled on renderers on which it may work.
Enabling it is not a guarantee that it will work. If gapless playback works in Android BubbleUPnP with the regular UPnP AV renderer, it should work
with the OpenHome renderer managed by BubbleUPnP Server.
Non-exhaustive list of renderers tested working:
- Denon DNP-F109 (and possible variants)
- Cambridge Audio Stream Magic 6 (with latest firmware)
- Simaudio Moon Mind 180D
- Electrocompaniet ECI-6DS
- foobar2000 (with foo_upnp)
- JRiver Media Center (playlist track reordering is buggy)
If gapless playback does not work or if track advance fails, disable this setting.
NOTE: Changing this setting takes effect when next track is played.
Controlling OpenHome renderers
To control an OpenHome renderer you cannot use a regular UPnP AV Control Point. You need an OpenHome Control Point:
Untested Control Points: ChorusDS (iOS, MAC), Konductor (iOS), PlugPlayer (iOS), SongBook DS (iOS), SongBook Mac.
Linn Kinsky and Android BubbleUPnP both showing the same playlist and status, playing to foobar2000 as an OpenHome Renderer:
This page contains additional settings.
- Transcode high-res audio to 44.1/16 or 48/16 FLAC: force transcoding of audio > 48Khz to either 44.1/16 or 48/16 FLAC. This can be useful
for streaming on networks where bandwidth is sufficient for 44.1/16 or 48/16 FLAC but not higher (for example 4G/LTE on mobile)
- Video encoding quality: Set video encoding quality for H264 transcoding. Higher quality requires more CPU power
- Log to file: logging to file. Enabled by default. Disable to prevent hard drive spinning on some NAS when in power saving mode
foobar2000 remote access
These settings are used when connecting with foobar2000.
Once BubbleUPnP Server is up and running you can configure BubbleUPnP to connect to it
and start streaming your media.
- Go into Settings > Networks and settings, select an unused Network and set the connection parameters (left screenshot)
- Use the Test button to test the connection
- Use the Apply button to connect to BubbleUPnP Server and have the remote Media Servers listed in the Devices tab of the app (right screenshot)
This is the name used to identify the remote BubbleUPnP Server network. You can choose any name you want.
It is used to identify Media Servers from different networks. For example if your home Media Server is named
"My Media Server" and you set Name to "Home", this Media Server will be listed as "My Media Server [Home]" in the Library tab (as shown in the right screenshot).
This is the public connection URL to BubbleUPnP Server. The information used to set this field is displayed in the Status tab of BubbleUPnP Server.
For example if the Status tab shows:
Public IP Address: 184.108.40.206
Public HTTP Port: 58050
Public HTTPS Port: 58051
Public host name: my.host.org
To connect through HTTP, you must set "Server Address" to either http://220.127.116.11:58050 or http://my.host.org:58050
To connect through HTTPS, you must set "Server Address" to either https://18.104.22.168:58051 or https://my.host.org:58051
Use the login that you defined in the Security tab.
Use the password that you defined in the Security tab.
Active on connection
This setting allow you to set when BubbleUPnP should automatically connect to this remote network to make the
associated Media Servers available in the Devices tab of the app.
For example you may want to connect to this network only when your Android device uses a Mobile data connection.
In that case you would set this setting to "Mobile". Now every time your Android device switches to a mobile connection,
BubbleUPnP will connect to BubbleUPnP server to make your Media Server available in the Devices tab.
And if you switch from a mobile connection to WiFi, it will disconnect and remove them from the Devices tab.
The possible choices are:
- Disabled: never connect to this network
- Mobile: connect to this network on mobile connections
- WiFi /Ethernet: connect to this network on WiFi or Ethernet connections
- Mobile / WiFi / Ethernet: connect to this network on mobile or WiFi or Ethernet connections
Advertise on LAN
This setting if enabled will make all Media Servers of this remote network (those listed in the right screenshot) visible on the target LAN on which your Android device
is currently connected. This only work if your Android device uses a WiFi or Ethernet connection.
It means that your UPnP devices on the target LAN (a PS3, a DNLA TV, etc) should be able to see and browse your remote Media Servers.
This is UPnP tethering.
For example a PS3 accessing to your home Media Server follows this path when issuing commands (browsing, searching, etc):
PS3 -> Android device (BubbleUPnP) -> Internet -> BubbleUPnP Server -> Your Media Server.
For streaming audio or retrieving album art the PS3 talks directly to BubbleUPnP Server without Android BubbleUPnP in the middle:
PS3 -> Internet -> BubbleUPnP Server -> Your Media Server.
BubbleUPnP Server can optionnaly transcode audio (to MP3) and video (to H264/MP3) for playback on the Android device itself (using the local renderer).
No transcoding is ever performed if streaming to an external renderer, as it may have a faster connection to BubbleUPnP Server than your Android device.
Separate transcode settings are also available for downloaded files.
For transcoding to work, BubbleUPnP Server must report that audio and/or video transcoding are supported in its Status tab.
In Android BubbleUPnP, you can configure how BubbleUPnP Server should perform the transcoding in Settings > Networks and settings.
There are separate settings for Audio, Video, Images, and for each connection type.
SD Card mobile music caching
Android BubbleUPnP can optionally cache to SD Card music accessed through BubbleUPnP Server, when using a mobile data
network connection. This reduces mobile data usage when playing tracks that have been previously played.
This section allows to configure caching settings:
- Cache folder: select folder for storing cached tracks.
By default this is <internal sd card root>/BubbleUPnP/cache/media.
You can specifiy any folder you want, including a high capacity additional external SD Card. The cached data is preserved across app reinstalls.
- Max cache size: Max size in MB to allocate to cached tracks.
When max size is reached, older cached tracks are deleted to make room for newer tracks.
Set to 0 to disable caching.
- Clear cache: delete all tracks from the cache folder
- Add to Android Library: when a track is cached, it is added to the Android Music Library, thus visible to other music players
Music playback transcoding
- Mobile Max Bitrate: on a mobile connection, BubbleUPnP Server will transcode to the specified bitrate all audio whose bitrate is higher than this bitrate
- WiFi / Eth Max Bitrate: on a WiFi / Eth connection, BubbleUPnP Server will transcode to the specified bitrate all audio whose bitrate is higher than this bitrate
- Lossless only: enabling this setting will ensure that only lossless tracks will be possibly affected by the transcode settings. This is to prevent
lossy->lossy transcodes which should be avoided if possible are they are bad for audio quality (unless the source is 320Kbps in which case it might be acceptable)
- Seekable tracks (since BubbleUPnP 1.7.7): request BubbleUPnP Server to generate seekable transcoded music tracks (see below)
Seekable transcoded music tracks
BubbleUPnP Server 0.7 introduces the ability to generate seekable transcoded music tracks (disabled by default)
for tracks for which duration can be determined and whose duration is lower than 10 minutes.
It can be enabled with "Settings > Network and Settings > Seekable tracks" in Android BubbleUPnP 1.7.7+,
or forced on the server side with the -transcodeAudioSeekable command line argument or related parameter in the configuration.xml file.
When enabled, BubbleUPnP Server will transcode a track fully before serving it for playback to the client.
This introduces a variable delay depending on CPU speed and track duration before the track can be played.
On a standard PC, it should not exceed a few seconds.
That's why it is not recommended to enable it if BubbleUPnP Server is running on a slow CPU (such as some NASes).
This delay only happens the first time a seekable track is generated as it is cached to disk for subsequent plays.
When enabling this feature, it is recommended to also enable Settings > Local renderer > Gapless playback, in Android BubbleUPnP.
Gapless playback will trigger transcoding of the next track before current track finishes and make the delay discussed above unoticeable in most cases.
Only playback of the first track may be delayed.
Here you can specify which profile should be used for video transcoding:
All profiles will transcode to H264 for video and MP3 for audio, into an MPEG-TS container (for technical reasons it cannot be MP4).
Aspect ratio is preserved.
The transcoded video may not be playable by the standard Android video player and requires a third party video player app
such as MX Player or BS Player and probably many others.
The recommended player is MX Player.
- No transcoding
- 720p / 128Kbps audio
- 480p / 128Kbps audio
- 360p / 128Kbps audio
- 240p / 128Kbps audio
- 240p / 64Kbps audio
- 120p / 64Kbps audio
- Mobile transcoding: profile to be used on a mobile connection
- Wifi / Eth transcoding: profile to be used on a WiFi / Eth connection
Image transcoding to local renderer
- Optimize bandwidth: reduce the size of image by resizing and recompressing. Necessary for viewing large size photos over mobile networks.
- Image quality: 0-100 jpeg compression quality. Higher is better quality and higher size.
File downloads transcoding
Here you will find specific transcode settings applied to downloaded files:
- Lossless audio bitrate: downloaded lossless audio files will be transcoded by BubbleUPnP Server as MP3 of the specified bitrate
- Video transcoding: downloaded videos will be transcoded to MKV with the specified quality
This feature allows you for example to stream to your work PC your music and videos from your home Media Server.
Playing videos requires foo_upnp 0.99.45+.
NOTE: foobar2000 is a Windows program but it can run on other plaftorms through Wine.
On Mac OS X, the easiest way to install foobar2000 is through Wineskin.
Connecting with foobar2000
First you must make sure the status page of BubbleUPnP Server shows that it is accessible from the Internet.
You can access your Media Server from the Internet for streaming music and videos on Windows, using the foobar2000 music player as the client.
After installation, in the View menu of foobar2000 select "UPnP Browser".
The UPnP Browser window displays all your discovered LAN Media Server allowing browsing an playing music as shown in the left screenshot.
In the view Menu, select "Add remote Internet UPnP Server..." and enter BubbleUPnP Server connection settings (left screenshot):
- the public hostname of BubbleUPnP Server with the protocol (http or https) and port. For example: http://22.214.171.124:5081 or https://126.96.36.199:5081.
It is recommended that you use https whenever possible
- the login and password you defined in the "Network and Security tab" of BubbleUPnP Server
- If you are behind a HTTP proxy, you must set it before connecting with "Configure http proxy settings..." or in File > Preferences > Tools > UPnP > Browser
TIP: If you are on a corporate network only allowing outgoing HTTP traffic on port 80, you can setup BubbleUPnP Server to run on port 80 (provided you have no other web server using this port).
For HTTPS, use port 443.
After clicking OK and if the connection to BubbleUPnP Server is successful, the UPnP Browser tree will show a new Media Server named "BubbleUPnP Server (<Remote PC Network name>) [Internet]",
as shown in the right screenshot.
This "Super" Media Server lists all your Media Servers on your remote LAN for which the setting "Make this Media Server available in Android BubbleUPnP and foobar2000 for Internet access"
is enabled in BubbleUPnP Server (in the Media Servers tab).
To disconnect or remove the BubbleUPnP Server "Super" Media Server from the UPnP Browser, right click its root node and select "Remove server" in the context menu.
Note that you can integrate the "UPnP Browser" as a panel in the main foobar2000 window to avoid having a separate floating window.
Here are basic instructions to do so:
- make sure the standalone "UPnP Browser" window is closed
- enter layout editing mode: View > Layout > Enable layout editing mode
- right click in an existing panel
- select "Replace UI Elements..."
- select a splitter in the list
- right click again in the new created area and select "Replace UI Elements..." again
- in the list select "UPnP Browser"
- exit layout editing mode: untick View > Layout > Enable layout editing mode
Transcoding audio to mp3
As with Android BubbleUPnP as a client, it is possible to transcode audio on the fly when accessing your Media Servers with foobar2000.
Unlike Android BubbleUPnP, the transcoding settings are configured in BubbleUPnP Server, in the "Settings / foobar2000 remote access" tab.
- Max audio bitrate: all files whose bitrate is greater than the specified bitrate will be transcoded to the specified bitrate. If bitrate is unknown, transcoding is performed.
Set to "None" to disable all transcoding.
- Apply Max audio bitrate only to lossless audio: if enabled, only lossless files (FLAC, ALAC, ...) are applied the Max audio bitrate rule so only lossless files will possibly be transcoded. This prevents any lossy->lossy
transcoding which should be avoided if possible, if audio sound quality is important.
Transcoded files will not be seekable in foobar2000.
Changing these settings will only take effect in foobar2000 when browsing folders that were not previously browsed. To apply changes on browsed
folders, you must disconnect/reconnect the BubbleUPnP Server "Super" Media Server.
NEW: Since foo_upnp 0.99.45 it is possible to override server transcode settings (only lossless audio) in foobar2000, in Files -> Preferences > Tools > UPnP > Browser > Remote Internet Servers:
foo_upnp 0.99.45 also now makes it possible to play videos from BubbleUPnP Server. To play a video:
Download BubbleUPnP Tether Client v0.9.1
- Browse to the video folder using the UPnP Browser
- In the "UPnP Browser Selection" playlist, double-click the video. Then select a video player app (VLC, ...) to start playback. You can
alternatively open the video with context menu > UPnP Controller > Open ...
- Starting with BubbleUPnP Server 0.6.4, it is possible to set video transcoding in foo_upnp settings in Files -> Preferences > Tools > UPnP > Browser > Remote Internet Servers > Video transcoding
BubbleUPnP Tether client is a simple Java command-line program that will make available on the LAN it is running Media Servers managed by BubbleUPnP Server on another LAN, with optional audio and video transcoding (UPnP Tethering).
It is only meaningful to run this client on a different LAN than BubbleUPnP Server.
Start it from the command-line with a BubbleUPnP Server connection URL specified with -connect and the login specified with -login. For example, on Windows (launsh.sh on unix):
launch.bat -connect https://myhostname.org:58051 -login mylogin
[it will ask for BubbleUPnP Server password here]
Once started, you should be able to access tethered media servers from any UPnP program or device on the LAN the client is running.
By default, a tethered media server network name is appended "[tether]" to be differentiated from regular UPnP devices.
Several options can be specified on the command line and in particular transcoding options:
BubbleUPnP Server connection URL (eg, http://hostname:port or https://hostname:port)
Suffix appended to tethered UPnP device network names (default: "tether"). Allows to differentiate tethered devices from regular devices
Show command line help
log level, one of: OFF, ALL, FINEST, FINER, FINE, CONFIG, INFO, WARNING, SEVERE
Enable logging to file
Login for BubbleUPnP Server
Password for BubbleUPnP Server. If unspecified it will be prompted interactively
Set this option to transcode only lossless audio to the bitrate specified by -transcodeAudioMaxBitrate
Set this option to transcode to mp3, audio files whose original bitrate is higher than the specified bitrate. Valid values: 128, 192, 256, 320
Video container format used for transcoded videos (default: "mpegts"). Valid values: "mpegts" for MPEG-TS and "matroska" for MKV. Use MKV to
preserve embedded subtitles in transcoded video. MKV requires BubbleUPnP Server 0.6.5+
Transcode videos as a MPEG-TS stream of to the specified height in pixels. Audio is transcoded to MP3 128 Kbps. For example, to transcode
videos to 480p, set this value to 480. Valid values: [120...1200]
You can leave a message in the XDA forums thread.
To change the HTTP or HTTPS port used by the server you must edit the configuration file and restart the server.
The configuration file is named configuration.xml. It is located in the installation directory.
Open it with your favorite editor and modify the field httpPort (or httpsPort). If you set a port < 1024 on unix you will need to start the
server as root otherwise you will get a permission error on startup.
To restart the server:
- on Windows: use the "Stop BubbleUPnP Server Service" then "Start BubbleUPnP Server Service" found in the "BubbleUPnP Server" sub-menu of the Windows Start Menu
- on other platforms: kill and restart the BubbleUPnP Server java process
You can connect to BubbleUPnP Server using either HTTP or HTTPS.
HTTP/HTTPS requests from outside the LAN (Internet) are authenticated using Digest Authentication.
Note that for technical reasons, media stream requests are neither authenticated nor use HTTPS.
That's why even if you connect through HTTPS, the HTTP port must still be available.
However, the HTTP stream URLs are constructed in a way that they cannot be "guessed" or "forged". They can only
be obtained by browsing the server, whose access is always authenticated.
If the HTTPS connection test fails while the HTTP test is successful on the Status page:
- on your Router make sure that port 58051 is redirected to port 58051 on the target machine running the server
- if using the OpenJDK JRE, try using an Oracle JRE instead. On Ubuntu Linux you can add this repository to install the
Oracle JRE with apt
Connecting through a VPN is not really necessary in most cases, as connecting through HTTPS over the Internet is more flexible.
If you want to connect through a VPN you can still do it, with the following limitations due to UPnP device discovery not being available on VPNs:
- The connecting client (Android BubbleUPnP or foobar2000) will only be able to play media to itself (the local renderer in Android BubbleUPnP)
- In Android BubbleUPnP, UPnP Tethering will be inoperant
To connect to a VPN in either Android BubbleUPnP or foobar2000, simply connect to BubbleUPnP Server using its LAN ip address instead of its public IP address,
the same as if you were connecting to it on a LAN only.
This is the symptom of the network bandwidth being insufficient, especially over a mobile connection.
Try lowering the max bitrate setting in the Remote Network settings.
On Windows, ffmpeg is bundled in the Windows Installer so transcoding will work out of the box.
Transcoding support is enabled if the ffmpeg executable can be found in the PATH. ffmpeg
must be compiled with libmp3lame support.
To check that libmp3lame is supported the command below should return this output:
$ffmpeg -codecs | grep libmp3lame
EA libmp3lame libmp3lame MP3 (MPEG audio layer 3)
If ffmpeg doesn't recognize the -codecs option then ffmpeg is too old and cannot be used.
Make sure you are using ffmpeg 0.6 or later (0.7+ recommended).
On other platforms, ffmpeg must be installed:
- Linux (debian and derivatives): apt-get install ffmpeg
- Linux (most distros): Download ffmpeg static binary. Unzip in the server's installation directory
- MacOS X: you can install ffmpeg from MacPorts: sudo port install ffmpeg
- Windows: ffmpeg binaries can be found here
On Windows, ffmpeg bundled in the Windows Installer supports video transcoding out of the box.
A prerequesite for video transcoding is that MP3 audio transcoding is working (see paragraph above).
Additionaly you will need ffmpeg with libx264 present as well and the scale filter.
To check if libx264 is supported the command below should return this output:
$ffmpeg -codecs | grep libx264
EV libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
To check if the scale filter is available the command below should return this output:
$ffmpeg -filters | grep scale
scale Scale the input video to width:height size and/or convert the image format.
BubbleUPnP Server uses a preset file named libx264-current.ffpreset in the installation directory, containing common H264 encoding parameters.
These parameters are used for all video profiles that you can set in Android BubbleUPnP (these profiles only change video size and audio quality).
You can tweak this file provided that you do not set parameters that change video size or audio codec. Some presets are included in the ffpresets subfolder.
On NASes with less CPU power it can be interesting to use an alternate preset file which favours encoding speed over image quality.
Tested on QNAP TS-419p+ with ARM CPU, but should work the same way for others.
Install “Optware (IPKG)” qpkg from http://www.qnap.com/qpkg.asp
In case the “ipkg update” fails, try to adjust the following two config files:
[/opt/etc/ipkg] # more tsx19-kmod.conf
src/gz cs08q1armel http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable
[/opt/etc/ipkg] # more tsx19.conf
src/gz cs08q1armel http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable
ipkg install optware-devel
ipkg install git
ipkg install yasm
ipkg install lame
git clone git://git.videolan.org/ffmpeg.git
./configure --enable-ssse3 --prefix=/opt --extra-cflags='-I/opt/include' --extra-ldflags='-L/opt/lib' --enable-static --disable-shared --disable-ffplay --disable-ffserver --enable-libmp3lame
replace built-in ffmpeg with link to new version
ln -s /opt/bin/ffmpeg /usr/bin
A number of issues may prevent BubbleUPnP Server to start. Most of them are network related.
First, make sure the version of Java is 1.6 or higher. BubbleUPnP Server will not work with older versions.
You can find the execution log file named BubbleUPnPServer.log.0 in the installation directory (by default on Windows: C:\Program Files (x86)\BubbleUPnP Server).
You can check this file for startup error messages:
org.teleal.cling.transport.spi.InitializationException: Could not discover any bindable network interfaces and/or addresses
On startup, usable network interfaces are enumerated. This error happens if none is found.
A network interface is usable if:
- it is up (connected)
- it has at least one assigned ip address
- it is not a VMWare or Parallels virtual interface
- it is not a PPP interface
- it is not a loopback interface
Furthermore, at least one network interface must have an IPv4 address that is neither a loopback address (127.0.0.1) nor a link-local address (169.254.xxx.xxx).
MultiException[java.net.BindException: Address already in use, java.net.BindException: Address already in use]
The port (58050 by default) used by BubbleUPnP Server is currently used by another application (or BubbleUPnP Server is already running).
You can check which ports are used with the netstat command.
Configure a different port or kill the application using the current port.
org.teleal.cling.transport.spi.InitializationException: Could not initialize MulticastReceiverImpl: java.net.BindException: Address already in use
Some other program is bound to SSDP port 1900. You can check which ports are used with the netstat command.
org.teleal.cling.transport.spi.InitializationException: Could not initialize StreamServerImpl: java.net.SocketException: Permission denied: listen
Check that your firewall or other security software is not blocking Java
MultiException[java.net.BindException: Permission denied, java.net.BindException: Permission denied]
If you set a HTTP port < 1024, make sure you are running BubbleUPnP Server as root (on unix).
java.lang.RuntimeException: java.io.IOException: No route to host at org.fourthline.cling.transport.impl.DatagramIOImpl.send(SourceFile:159)
If you get this error on MacOS X and you are using a software called "Peer Guardian", go into Peer Guardian's settings and select the "Disable Filters" option.
Could not initialize StreamServerImpl: java.io.IOException: Unable to establish loopback connection
It seems this error is related to the Comodo firewall. Try disabling Comodo or adding a rule to allow BubbleUPnPServer.exe.
java.io.IOException: Cannot run program "netstat": error=2, No such file or directory
On non-Windows machines, the netstat command must be available and in the PATH.
[info] vmarg.3=-Djava.class.path=C:\Program Files (x86)\BubbleUPnP Server\BubbleUPnPServer.jar [info] Main Class: com/bubblesoft/bubbleupnpserver/server/Main Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object
This error may happen only on Windows when running BubbleUPnP Server as a service, if the Java JRE is not correclty installed or incomplete.
Generally, reinstalling the latest version or the 32 bits Windows JRE (x86) fixes it:
Oracle JRE Download page
I/O exception (java.net.SocketException) caught when processing request: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.DefaultSSLContextImpl)
This error may happen in the log and will cause the HTTPS connectivity test to fail. See this faq entry
0.8.1 (Mar 4th 2014)
- support seek in transcodes
- support for embedded subtitles
- support transcoding to a max bitrate
- support transcoding with a specified x264 profile
- support transcoding a specified audio and video track
- transcode mp4 if it contains unsupported codecs (eg xvid in mp4)
- fixed failure to transcode non-seekable streams such as live TV
- fixed failure to transcode FLAC with embedded album art
- fixed very high CPU usage when transcoding 1080p videos
- do not reencode vorbis to mp3 in videos
- fixed recent failure to determine the public ip address
- fixed web configuration showing a blank page in rare case
0.8 (Feb 19th 2014)
- Chromcast transcoding support for use with Android BubbleUPnP 1.8.0
- Windows: prevent computer from going to sleep if currently streaming
- fixed Rygel media server not available when connecting to BubbleUPnPS Server with Android BubbleUPnP
0.7 (Jan 3rd 2014)
- gapless playback for OpenHome renderers if the underlying UPnP AV renderer supports gapless (disabled by default, must be enabled in the "Renderers" page for each OpenHome renderer)
- seekable transcodes of music tracks
- higher quality downscaling of images whenever possible (enough memory). When updating from a previous version, clear manually the "cache" directory to regenerate images
- attempt to automatically open http and https ports with iptables on Unix systems
- added ability to set transcoded video H264 quality (Settings > Advanced > Video encoding quality)
- added ability to force transcoding of high-res audio to either 44.1/16 or 48/16 FLAC (Settings > Advanced > Transcode high-res audio to 44.1/16 or 48/16 FLAC)
- added ability to set logging level (Settings > Advanced > Log to file)
- fixed OpenHome failure to seek FLAC and WAV for some renderers
- fixed OpenHome failure to play next cloud stream in some cases
- fixed transcoding LPCM streams not working
- fixed transcoding TS stream with dvb_teletext subs failing
- other obscure fixes
- web: updated to GWT 2.5.1 (may work better with recent versions of IE)
- Windows installer: updated java installer to 7u45
- Windows installer: updated bundled ffmpeg to v2.1.1
0.6.5 (May 1st 2013)
- added support for transcoding videos to MKV instead of MPEG-TS in a number of cases. MKV is automatically used when embedded subtitles must be preserved, and
for transcoded video downloads (both require Android BubbleUPnP 1.6.8+). ffmpeg must have been compiled with MKV support
- fixed proxy media servers not discovered by Windows Media Player
- added option -useNumericIpInStreamURL to force the server to return numeric ip stream URLs instead of a hostname.
This may be required for some specific renderers to accept to stream from a media server via tethering. This setting is forced if the browsing
client is a Samsung TV, which requires it
- fixed small CPU spike every 30s on slow NASes
- fixed stream URLs becoming invalid if browsing large number of items (more than 3000)
- fixed Sony SA-NS310 renderer recognized as a media server instead of a renderer
- fixed proxies not carrying the X_MS_MediaReceiverRegistrar service
- libshine is used for mp3 transcoding if compiled in ffmpeg (useful on slow NASes as it uses way less CPU than libmp3lame)
- added missing Standby action support for OpenHome renderers (simply stops playback)
- fixed transcoded images rarely failing to load due to low read timeout
- Windows installer: updated ffmpeg to 1.2, added ffprobe, updated Java installer to 7u21
0.6.4 (January 18th 2013)
- transcoded videos now use MPEG-TS as container instead of AVI:
- compatible with more video players on Android
- fixes bogus video duration reported in most Android video players (duration is 00:00 as the stream is not seekable)
- necessary change for these streams to play on a PC with foobar2000 as the client, with optional transcoding (see here), to a video player such as VLC
- transcoded audio streams <= 64Kps use Ogg Vorbis for codec if ffmpeg supports it (compiled with libvorbis). This improves audio quality at low bitrates.
Works with Android BubbleUPnP and foo_upnp.
- new command line option -webContextPath allows to change the root of all generated URLs by the server.
For example if webContextPath is set to /myprefix, all URLs will be of the form http://:/myprefix/...
The server's web interface will be found at http://:/myprefix.
This URL must also be used as the Server connection URL in both
Android BubbleUPnP (requires v1.6.5) or foo_upnp.
This setting allows accessing BubbleUPnP Server through advanced proxies like LemonLDAP.
- fixed proxy devices possibly not discovered by other UPnP software, when proxies are started before (in particular, software based on Platinum UPnP: XBMC, foo_upnp and many others)
- fixed several OpenHome'd Xbox 360 issues
- fixed slow retrieving of the WAN IP on startup when the primary server is not responding
- fixed server remaining stuck on crash instead of exiting process
- fixed server returning unplayable stream URLs if Internet connectivity appears after the server is started
- fixed "Invalid pad bytes!" error (or similar message) preventing server startup on some exotic Java platforms (Solaris in particular)
- fixed blinking popups in web configuration with Chrome 24
0.6.3 (November 15th 2012)
- added subtitle support (including transcoded videos)
- fixed certain XBMC and PS3 Media Server folders not browsable (due to invalid mime-types returned by these servers)
- fixed rare issue on UPnP device disappearance
- fixed sometimes wrong LAN IP detected in presence of a VPN
- OpenHome room and name can be more than 20 characters
0.6.2 (September 12th 2012)
- Ubuntu package in PPA repository. Downloadable ffmpeg static binary for Linux
- Synology NAS: updated package scripts. Fixed image transcoding filling temp directory
- fixed adding port forwarding rules using UPnP IGD not working anymore
- fixed FLAC transcoding to MP3 not working if FLAC contains embedded album art, with newer versions of ffmpeg
- on Java 7, modifying configuration.xml restarts the server automatically to take into account the changes
- added advanced options in configuration.xml:
- openHomeUseEventing: if true, the OpenHome renderer uses eventing instead of polling to get renderer state
- openHomeTimeTaskPollingIntervalMs: polling interval in ms. Use higher values with problematic renderers (Pioneer)
- thumbnailWidth: width of generated thumbnails in pixels (default: 160). Set to 0 to disable
0.6.1 (August 19th 2012)
- fixed CPU and memory inefficient serving of transcoded images, now generated once and cached on disk
- fixed rare issue were a Media Server discovered during BubbleUPnP Server initialization would not return correct streaming URLs
- fixed browsing some Media Servers (PS3 Media Server, XBMC) failing due to invalid mime-types returned
- removed minimserver removal of ">> Hide Contents" folder
- removed -disableThumbnailTranscoding option not needed anymore
- if no network interface is found on startup, make 3 new attempts at 10s interval. May help on Windows if service is started before network is fully up
- added -Xss256k JVM parameter to launch.sh and launch.bat to prevent "java.lang.OutOfMemoryError: unable to create new native thread" on some systems
0.6 (August 13th 2012)
- new demo server of BubbleUPnP Server to test without installing,
with either Android BubbleUPnP or foobar2000+foo_upnp. Contains sample music, photos, videos.
To connect use: host: https://bubblesoftapps.com:58051, login: demo, password: demo
- Faster web host for BubbleUPnP Server downloads (http://www.bubblesoftapps.com/bubbleupnpserver)
- Synology NAS package available (created by winxi. Thanks!)
- Improved Media Servers proxies:
- add some *audio only* DLNA compatibility to non compliant Media Servers
- add a LPCM/44.1/16 stream resource playable by any DLNA device for audio items. Example: minimserver able to play FLAC on a PS3
- simplify streaming URLs to not contain any special URL encoded characters. Add file extension to stream URL path to make it look like a file (some rare renderers need this)
- support for transcoding images for BubbleUPnP 1.5.0+ to optimize bandwith for mobile. This makes viewing large photos on a mobile connection practical
- support for rotating transcoded photos if necessary based on EXIF info
- support for recent versions of ffmpeg not working anymore to transcode video (now uses -preset <preset> instead of -fpre <preset file>).
The <preset> value can be set in configuration.xml (tag x264preset, valid values: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, verylow, placebo)
If the -preset option fails, -fpre will be used as a fallback to still work on older versions of ffmpeg
- updated ffmpeg executable bundled in Windows installer
- log files are now rotated and limited to 10Mb. reduced error spam in log for devices having issues. improved logging (device details, ffmpeg error output).
- the server can be restarted from the web configuration in the Status page. Useful if the list of devices listed in the Media Renderer or Media Server tabs is not correct
- fixed possible issues with device alive maintenance
- fixed Server returning very low res album art for full covers
- fixed transcoding images failing on some specific headless non-Windows installs
- fixed OpenHome playlists not saved on server shutdown
- fixed proxy Media Servers sometimes not discovered by other UPnP sofware on the LAN
- fixed some obscure UPnP devices not discovered due to device bugs
- fixed changing Repeat not working on OpenHome renderer in some cases
- fixed audio not synced with video when transcoding some streams (IPTV)
- if the server cannot initialize HTTPS, show an explicit error message in the Status page
- added command line options -logFileMaxSize, -nologfile, -nologstdout
- added <disableAudioVideoTranscoding> config file option to disable all audio/video transcoding even if ffmpeg is installed
- added <disableImageTranscoding> config file option to disable all images resizing / rotating (do not disable for viewing photos over mobile!)
- added <disableThumbnailTranscoding> config file option to disable thumbnail generation
- added LICENSE.txt to distribution, shown by Windows Installer
- Windows installer propose to install java 7u5 if Java 6 or 7 is not already installed
0.5.5.1 (June 9th 2012)
- OpenHome playlists are now saved (on renderer network disappearance or server shutdown) and restored for each managed renderer (on network appearance)
- BubbleUPnP Server can now be started without Internet connection. Limited to LAN-only functionality in that case (OpenHome, Media Server proxy)
- support playing transcoded videos from starting position for resuming playback (requires Android BubbleUPnP 1.4.3+)
- added fallback methods to find WAN IP Address
- fixed mute notification not working on OpenHome'd WDTV Live
- fixed ushare Media Server not discovered (ushare bug)
- fixed Multicast2Unicast Server not being browsable (Multicast2Unicast bug)
0.5.4 (April 15th 2012)
- added HTTPS support for connecting. Default https port is 58051. Works with Android BubbleUPnP 1.3.3+ and foo_upnp 0.99.37+
- added support for sending compressed data to foo_upnp 0.99.37+ to save bandwidth
- added support for logging media streams connections, in the NCSA common file format
Media streams logs are added to file access_log.txt found in the installation directory. Can be enabled/disabled in the "Network and Security" tab. Disabled by default
- fixed obscure startup crash on some Windows installs
- fixed new version check notification not working since v0.5
- updated documentation (https)
0.5.3 (April 6th 2012)
- added support for Internet music streaming on Windows using foobar2000 + foo_upnp as client. Updated documentation
- foo_upnp 0.99.36 can now control OpenHome renderers created by BubbleUPnP Server
0.5.2 (Mar 22th 2012)
- fixed video transcoding possibly not working on non-Windows installs
- video transcoding can be customized with preset file libx264-current.ffpreset. The content of this file can be modified or replaced with one of the presets found in the ffpresets sub-directory to control transcoding parameters
- fixed server sometimes not starting on boot as a Windows Service
- fixed seeking not working in Linn Kinsky when operating an OpenHome Renderer
- various fixes
0.5.1 (Mar 1st 2012)
- added ability to create an OpenHome renderer from any UPnP AV Media Renderer. Provides persistent server-side playlist for playback, with shuffle and repeat support
- added video transcoding support with Android BubbleUPnP (requires BubbleUPnP 1.3.2 or higher)
- added "Allow to access server from the Internet" setting in the Network tab. If disabled, all remote (non LAN) connections will be denied
- fixed issue with stopping the Windows Service
- fixed issue with bad XML encoding in some cases, on Windows
- updated documentation
0.4 (Feb 1st 2012)
- fixed 100% usage of 1 CPU core when serving files
- fixed proxy devices not browsable by some Control Points
- fixed PS3 Media Server not browsable beyond its root folder
- remove unresponding Media Servers from list that failed to notify their disappearance (can be disabled with discoveryMaintenanceInterval=0 in conf file)
- increased timeouts for WMP
0.3.2 (Jan 8th 2012)
- increased heap from 16Mb to 24Mb on Windows when running as a service (prevents possible out of memory)
- fixed 2 rare crashes on startup
- fixed rare crash on Media Server disappearance
- fixed network issue possibly leading server to prompt for login/password when connecting from LAN
- discard link-local network interfaces
- do not discard network interfaces that do not report they are multicast capable (may prevent a few undue "Could not discover any bindable network interfaces and/or addresses" errors on startup)
- validate public IP Address returned by whatsmyip.org on startup
- added "troubleshooting server startup"" section to documentation
0.3 (Dec 2nd 2011)
- fixed Media Servers possibly disappearing/reappearing after some time
- added the ability to specify manually public hostname, for networks using dynamic DNS
- detect and use network interface connected to the Internet instead of the first network interface found (overridable with -lanIp)
- improved reliability of streaming and downloading (fixed tracks possibly truncated before the end)
- updated documentation and FAQ
0.2 (Nov 24th 2011)
- optimize album art size for faster download speed over mobile connections
- kill ffmpeg process when client stops playback
- reduced exception spam in log
- various fixes
- updated documentation
- fixed crash preventing web server to start with some network interfaces