All installers always install the latest version unless stated otherwise.
Report issues, get support and leave feedback on XDA.
Unless BubbleUPnP Server is used only for use with Chromecast, it requires at least one working UPnP AV Media Server or Media Renderer to do something useful.
BubbleUPnP Server can:
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.
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.
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:
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.
IMPORTANT: if after install you cannot connect to the web interface, refer to the troubleshooting section.
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.
To install BubbleUPnP Server, start a Terminal window, paste the command below, and follow instructions (it will first ask for your admin password):
curl -s http://bubblesoftapps.com/bubbleupnpserver/mac_install.sh | sudo sh -If you wish to later uninstall BubbleUPnP Server, enter this command:
curl -s http://bubblesoftapps.com/bubbleupnpserver/mac_uninstall.sh | sudo sh -Once installation is complete, BubbleUPnP Server is running as a Launch Daemon process that is started on boot. You can configure it with the Launchpad icon or via any web browser pointing to the server.
Controlling the server
You can stop the server with:
sudo launchctl stop bubbleupnpserver
And start it with:
sudo launchctl start bubbleupnpserverIf you wish to disable the server (it will not start on boot):
sudo launchctl unload -w /Library/LaunchDaemons/bubbleupnpserver.plist
And to reenable it with:
sudo launchctl load -w /Library/LaunchDaemons/bubbleupnpserver.plist
You can also do all of the above graphically with LaunchControl. BubbleUPnP Server is found in the "Global Daemons" category.
Where is BubbleUPnP Server installed ?
First you must ensure that Java 7 or higher is installed:
$java -version java version "1.8.0_25" Java(TM) SE Runtime Environment (build 1.8.0_25-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)If Java is not installed, the easiest way is to install the Oracle Java 8 JRE via the webupd8team PPA:
$sudo add-apt-repository ppa:webupd8team/java $sudo apt-get update $sudo apt-get install oracle-java8-installerAlthough the Oracle JRE is preferred, the OpenJDK 7 or higher should also work:
$sudo apt-get install openjdk-7-jre-headlessTo install the BubbleUPnP Server PPA package only for Ubuntu Vivid, Lucid, Utopic, Trusty and Precise, enter theses comands:
$sudo add-apt-repository ppa:bubbleguuum/bubbleupnpserver $sudo apt-get update $sudo apt-get install bubbleupnpserverFor other Ubuntu versions, or if you prefer to install the package without using the PPA, enter theses comands
$wget https://launchpad.net/~bubbleguuum/+archive/bubbleupnpserver/+files/bubbleupnpserver_0.9-4_all.deb $sudo dpkg -i bubbleupnpserver_0.9-4_all.deb
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:
$start bubbleupnpserver
$stop bubbleupnpserver
$cower -d bubbleupnpserverChange to the temporary directory:
$cd /tmp/bubbleupnpserverRun makepkg to download, build, and install the package:
$makepkg -siFollow the prompts and onscreen instructions to begin using BubbleUPnP Server.
NOTE: the source of the package is available on github
If you get error "This package does not contain a digital signature" after selecting the .spk package, open Package Manager, click Settings. In 'General', set the Trust Level to 'Any Publisher'
If the server doesn't start, make sure 'User Home Services' is enabled (in DSM: Control Panel > User > Advance, 'Enable user home services')
Alternatively you can follow the "Other Java platforms" section below for manual install.
As BubbleUPnP Server is meant to run continuously, an Android device always plugged to power is necessary in most uses cases. Always prefer running BubbleUPnP Server on a PC if you can.
BubbleUPnP Server on Android has all the features of the PC/NAS version. The only limitation is that CPUs are less powerful on Android than on PC, which may be too slow for heavy video transcoding.
BubbleUPnP Server can run on any Android device running Android 4.1 or higher. The APK is a small launcher for the BubbleUPnP Server core whose latest version will be downloaded on first run.
As BubbleUPnP Server on Android is not distributed through Google Play, it will send a notification whenever a new updated APK is available. However, the BubbleUPnP Server core updates itself automatically by default, like the PC/NAS version.
IMPORTANT: if running BubbleUPnP Server for Android, make sure to stop any other BubbleUPnP Server instance on your network.
BubbleUPnP Server is distributed as an archive containing a jar file.
Alternatively you can run the server with:
java -jar BubbleUPnPServerLauncher.jar
If you are using BubbleUPnP Server only for Chromecast transcoding, go here.
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:
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
IMPORTANT: if you use HTTPS access, the HTTP port must still be open as it is still used for media streaming requests only.
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:
Audio and video is supported. Transcoding videos is not supported so only video natively suported by Google Cast will play.
Both renderer types support virtually all audio containers and codecs combinations. Combinations not natively supported and playable by Google Cast are transcoded to WAV, preserving samplerate (up to 96kHz for Chromecast Audio) and bitdepth.
Note that transcoding will currently not work (as of 1/27/15) with a Chromecast v1 due to this bug in its current firmware making it crash when playing a WAV. It will be likely fixed in the next firmware update.
The Nexus Player does not support playing any transcoded audio, as it stupidly refuses to play the transcode WAV stream for an unknown reason, unlike other Google Cast devices. So it can currently only play natively supported formats.
The created renderers do not support gapless playback because the underlying Google Cast devices do not support it. If this change at some point, it will be looked into. You can still play gapless using a gapless desktop music player that sends its audio output as a single PCM stream (eg foobar2000 with foo_out_upnp).
It is not recommended to create both a DLNA and OpenHome renderer at the same time. If you do so, make sure to not mix UPnP/DLNA and OpemHome Control Points at the same time as they will fight to control the same Google Cast device and the result will be unpredictable.
Google Cast device discovery can be disabled with the 'disableGoogleCastDiscovery' property in configuration.xml.
For each 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:
For example, consider this scenario:
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:
Enabling gapless playback has several benefits:
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:
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.
Android BubbleUPnP and Linn Kazoo on Windows both showing the same playlist and playback state, playing to foobar2000 as an OpenHome Renderer:
The easiest way is to install BubbleUPnP Server on a Windows PC or on Ubuntu Linux (PPA package). It includes everything you need for Chromecast transcoding straight away, without requiring to configure anything. Just install it and it will be ready for use.
On other platforms, you must check these additional requirements:
ffmpeg/ffprobe
A working ffmpeg binary is required. The ffmpeg version must not be too old (at least v1.0) and the more up to date it is, the better.
A working ffprobe binary is optional. If a local ffprobe binary is not found, ffprobe will be called from the cloud, requiring that BubbleUPnP Server is passing the connectivity test succesfully.
The downloaded ffmpeg/ffprobe binaries must be executable:
chmod +x ffmpeg chmod +x ffprobe
Whenever you update the ffmpeg/ffprobe binaries, you must restart BubbleUPnP Server for the change to take effect.
You can check what version of ffmpeg is used by looking at the BubbleUPnPServer.log.0 log file.
For full functionality, ffmpeg must include mp3 encoding support (libmp3lame), H264 support (libx264), Matroska support (libmatroska).
For transcoding media from Google Drive and more generally https streams, ffmpeg must be compiled with the https protocol (ffmpeg -protocols). That is often not the case with static builds of ffmpeg found online.
Android BubbleUPnP automatically detects BubbleUPnP Server on your network for Chromecast transcoding duties.
There is no need to manually enter connection settings (unless you want to transcode to Chromecast outside your local network).
When BubbleUPnP Server is detected, 'Settings > Chromecast > Current transcoding method' will state so and display BubbleUPnP Server's ip address.
Simply play any media to Chromecast normally. BubbleUPnP Server will perform transcoding in the background if and only if necessary. If the media cannot be transcoded or if there is any error, the original media will be forwarded as is to the Chromecast and might not play at all or partially (ex: video but no audio).
For best quality, BubbleUPnP Server only transcodes what is required: audio or video or both. For example, a MKV containing H264 video and DTS audio will be transcoded to a MKV containing the unmodified H264 video and the DTS audio track transcoded to MP3. In some cases, audio and video are both untouched and just remuxed in a different container.
Standalone audio (eg FLAC, WMA, ...) is always transcoded to WAV, with no loss of quality.
In that case, you must manually enter BubbleUPnP Server connection settings as explained here. When a remote BubbleUPnP Server is used, Settings > Chromecast > Version will show its ip address or hostname.
For technical reasons, only media reachable from the cloud can be transcoded by the remote BubbleUPnP Server. It includes:
Any media that resides on your Android device or your friend's local network cannot be transcoded by BubbleUPnP Server, because it cannot be reached.
Depending on the download bandwidth available on the target network and the upload bandwidth of your home network, you may have to decrease "Max video bitrate" substantially for the video to play smoothly (not stutter due to insufficient bandwidth).
First, it is important to understand that some videos have very high bitrates requiring too much network bandwidth that the Chromecast WiFi cannot handle, causing stutter.
And unlike wired networks such as Ethernet, WiFi is bad at sustaining stable bandwidth over time: it is usually very spiky and irregular.
For best performance and for media not stored on your Android device, make sure that the machine running your UPnP/DLNA Media Server managing your media use a wired (Ethernet) connection to your WiFi router. If that is a PC or a NAS, make sure that it is not connected through WiFi as this will degrade network performance for streaming significantly.
Videos causing stutter will be in most cases high definition videos such as 1080p.
Most cameras on current phones take 1080p videos at very high bitrates and enter in the problematic category.
Stuttering can start to apppear with video bitrates higher than 8000 Kbps (1000 KB/s) and maybe even lower depending on the WiFi
quality.
To reduce network bandwidth and eliminate stutter, BubbleUPnP can force transcode videos whose bitrate is higher
than a user configured bitrate (the "Max video bitrate" setting).
For example, suppose you play a 1080p h264 video whose bitrate is 16000 Kbps. If "Max video bitrate" is set to 8000 and "Enforce max bitrate"
is enabled, this will force a reencode to 8000 Kbps, because 16000 > 8000.
But transcoding a video to reduce network bandwidth can potentially cause stutter if the CPU is not fast enough to perform the transcoding. Transcoding a 1080p video requires a lot of CPU power and most current PCs are able to handle it. But if the CPU is not fast enough, video will stutter because it cannot be transcoded fast enough.
To troubleshoot stutter issues, follow these steps for a possible solution:
On the machine running BubbleUPnP Server, monitor the ffmpeg process CPU usage (using the task manager on Windows), while the stuttering video is playing:
The cause of stuttering is that the video bitrate is too high.
The cause of stuttering is that the video bitrate is too high.
The cause of stuttering is that the CPU is maxed out
There is a known issue with WMP. The symptom is that the Chromecast will show the video loading screen for a few seconds before reverting to the BubbleUPnP logo.
The cause is unclear and until there is a solution, it is suggested to use another Media Server such as Serviio.
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
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:
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.
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.
This section allows to configure caching settings:
Seekable transcoded music tracks
BubbleUPnP Server can 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", 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.