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:
- secure Internet access to your UPnP/DLNA Media Servers content with BubbleUPnP for Android 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). Works with BubbleUPnP for Android.
- fix issues of UPnP/DLNA Media Servers (discovery issues, broken data, add some audio DLNA compliance) by creating a proxy Media Server
BUBBLEUPNP SERVER IS NOT AN UPNP AV MEDIA SERVER
It requires at least one working UPnP AV Media Server (Windows Media Player, Twonky, Asset UPnP, ...) or Media Renderer to do something useful.
At this time, the following features are supported:
Internet streaming and downloading
BubbleUPnP Server makes your LAN Media Servers available to BubbleUPnP for Android, for streaming over mobile (3G/4G) and WiFi connections, with the following advantages:
- Easy to setup: you do not have to modify your Media Servers configuration in any way
- Secure: all communication between BubbleUPnP for Android 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.
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, ...).
Internet UPnP tethering
Using BubbleUPnP for Android, 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 BubbleUPnP for Android or other OpenHome Control Points.
Requirements
BubbleUPnP Server can run on any platform where Java 1.6 or higher is available. This includes:
- Windows XP/Vista/Seven
- MacOS X
- Linux
- 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.
Windows XP/Vista/Seven
On Windows, the easiest way to get started is to download the installer below.
Download the Windows 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
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).
NOTES:
- 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:
$start bubbleupnpserver
- to stop BubbleUnP Server:
$stop bubbleupnpserver
Download RPM package
To install:
$rpm -i <rpm file>
NOTES:
If you need to adapt or rebuild the package you will need this file and
this one.
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:
$cd /tmp/bubbleupnpserver
Run makepkg to download, build, and install the package:
$makepkg -si
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.
- 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)
If you want transcoding support you will need to install ffmpeg on your system.
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
The core of BubbleUPnP Server is 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 BubbleUPnP for Android:
- 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
If "Server is reachable from Internet" is displayed, everything is fine and BubbleUPnP Server is ready to use for remote access.
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 BubbleUPnP for Android
- 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 BubbleUPnP for Android, 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:
- if this Media Server should be made available to BubbleUPnP for Android when it connects
- if a proxy of this Media Server should be created on the LAN
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".
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 BubbleUPnP for Android (requires 1.3.3+)
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
- no need to leave the Control Point running for playlist track advance to happen
- several OpenHome Control Points (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 BubbleUPnP for Android 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 BubbleUPnP for Android.
An OpenHome renderer has two optional parameters that you can modify:
- 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
Room and Name are ignored by BubbleUPnP for Android. 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".
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.
Here are screenshots of both Linn Kinsky (left, PC) and BubbleUPnP for Android showing the same playlist for the Windows Media Player renderer as an OpenHome Renderer:
Help
This page. The FAQ section will be updated over time.
Once BubbleUPnP Server is up and running you can configure BubbleUPnP to connect to it
and start streaming music.
In BubbleUPnP:
- 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)
Name
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).
Server address
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: 1.2.3.4
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://1.2.3.4:58050 or http://my.host.org:58050
To connect through HTTPS, you must set "Server Address" to either https://1.2.3.4:58051 or https://my.host.org:58051
Login
Use the login that you defined in the Security tab.
Password
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 BubbleUPnP for Android, 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.
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)
Video playback transcoding
Here you can specify which profile should be used for video transcoding:
- No transcoding
- 720p / 128Kbps audio
- 480p / 128Kbps audio
- 360p / 128Kbps audio
- 240p / 128Kbps audio
- 240p / 64Kbps audio
- 120p / 64Kbps audio
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.
- Mobile transcoding: profile to be used on a mobile connection
- Wifi / Eth transcoding: profile to be used on a WiFi / Eth connection
Image transcoding
- 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.
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