0.9-update40, new Windows installers, new launcher (April 10th 2021) #

Fixed stability issues. New launcher #

This update addresses stability issues over time (server crashing, becoming unresponsive, memory leaks) caused by server restarts which happens on:

  • web interface ‘Restart’ button trigger
  • automatic or manual updates
  • networking changes (network interface appearance or disappearance)

An updated BubbleUPnPServerLauncher.jar addresses this issue. On existing installs, it cannot be automatically updated. To update to this new launcher you can either do a full reinstall of BubbleUPnP Server for your platform or attempt to manually update your existing install with one of these methods:

  • if possible, manually update the existing BubbleUPnPServerLauncher.jar file with these generic instructions:
  1. stop BubbleUPnP Server
  2. download updated BubbleUPnPServerLauncher.jar
  3. replace the existing BubbleUPnPServerLauncher.jar file in the BubbleUPnP Server installation directory with the new one
  4. start BubbleUPnP Server

with the official Docker container it can be done this way:

sudo docker stop bubbleupnpserver
sudo docker cp BubbleUPnPServerLauncher.jar bubbleupnpserver:/opt/bubbleupnpserver
rm BubbleUPnPServerLauncher.jar
sudo docker start bubbleupnpserver
  • alternatively, only on non-Windows platforms:
  1. First update BubbleUPnP Server to 0.9update-40 (if necessary: web Interface > Settings > Check for updates > Apply)
  2. once BubbleUPnP Server is updated to 0.9update-40 (Status tab), go to ‘web Interface > Settings > Check for updates’, and apply the new update found (this is the update for BubbleUPnPServerLauncher.jar)
  3. Fully restart BubbleUPnP Server so it starts with the new launcher. This cannot be done via the ‘Status > Restart’ button, you must fully restart BubbleUPnP Server from the system running it

The new launcher generates its own BubbleUPnPServerLauncher.log log file.

improved Windows installers #

Both the Windows single user and service installers are updated. To benefit from the improvements, you will have to perform a new installation using the updated installer.


  • The installer now downloads its own Java 11 JRE from and BubbleUPnP Server runs under that private JRE (stored in the installation folder). It does not depend anymore on an Oracle JRE or other JRE being installed on the system
  • install 32-bit or 64-bit FFmpeg binaries depending on host Windows (previously, 32-bit ffmpeg binaries working on all versions of Windows were always used). The 64-bit FFmpeg binaries are the new v4.4 provided by
  • run BubbleUPnP Server using the client JRE, which uses less memory. Max memory use is capped at 256MB

Service installer:

  • updated to WinRun4J 0.4.5
  • install 32-bit or 64-bit version of service executable, depending on host Windows (previously was always 32-bit)
  • not tied to Java 8 32-bit Oracle anymore

improved macOS installer #

The macOS installer shell script now downloads its own Java 11 JRE from and BubbleUPnP Server runs under that private JRE (stored in the installation folder).

BubbleUPnP Server 0.9-update40 #

There are the changes for BubbleUPnPServer.jar:

  • improved shutdown to avoid issues on restart
  • check for updates of BubbleUPnPServerLauncher.jar on non-Windows platforms
  • check for updates of Windows 64-bit ffmpeg binaries
  • web interface: updated restart UI reload wait time from 10s to 20s
  • fixed a few rare crashes mainly happening in Android version

BubbleUPnP Server Android APK 1.2.2 #

  • fixed failure to extract subtitles

0.9-update39 (March 18th 2021) #

General #

  • improved site. Removed some old info that was no longer valid
  • official Docker images for Linux x86_64, x86 (32-bit), aarch64, armv7. Images include up-to-date ffmpeg binaries and Java 11
  • revamped Ubuntu/Debian package, not hosted in a PPA repo anymore. Package now properly installs ffmpeg binaries for supported architectures (amd64, i386, arm64, armhf, armel). BubbleUPnP Server now runs under the unprivileged ‘bubbleupnp’ user and group (instead of ‘root’ in the old package). If you are using the PPA package, it is recommended to uninstall it replace it with this one, as explained in link above
  • this version can now run on Android (prior to it, it was stuck to update33 due to a technical problem), alongside the updated Android BubbleUPnP Server APK (details below)

FFmpeg #

  • updated custom built Linux v4.3.2 ffmpeg/ffprobe binaries for x86_64 and x86 (32-bit) compiled with support for NVIDIA, Intel QSV and VA-API hardware transcoding. This ffmpeg binary includes ffprobe functionality in the same executable, thus only the ffmpeg binary is required with ffprobe simply being a symbolic link to it, reducing install size.
    Updated other ffmpeg/ffprobe binaries for Windows (from, macOS (from, Linux amd64/armhf/armel (from, Android (custom built). All these binaries are used on new installs and should be updated automatically by BubbleUPnP Server on existing installs. They can also be manually be downloaded here and placed in the installation directory (on Linux / macOS, make sure to chmod +x the executables).
  • on Synology NAS, use the FFmpeg community package if installed
  • do not auto-update (if enabled) ffmpeg/ffprobe binaries in installation directory if they are symbolic links
  • custom ffmpeg/ffprobe binaries placed in the “custom_ffmpeg” subfolder of the installation folder (the folder were BubbleUPnPServer.jar is found) are automatically picked up by BubbleUPnP Server on startup. This should not be necessary as provided binaries should do the job
  • optware-ng binaries are not detected anymore as they are obsolete and should not be used. QNAP users, see instructions to install new FFmpeg binaries.

Chromecast Transcoding #

  • added VA-API hardware transcoding support (Linux Only)
  • improved Intel QSV transcoding efficiency
  • added ability in web UI Settings/Chromecast transcode tab to set GPU transcoding method: Auto, NVIDIA, Intel QSV, VA-API. The default is “Auto” which will use the first one in that list that is usable (if any)
  • Added -GPUTranscodingMethod command-line param
  • fixed profile 4.1 max 1920x1080 restriction not enforced for sofware h264 transcoding, resulting in videos with width > 1920p not playing
  • fixed rare case of software h264 transcoding failing
  • updated NVIDIA cuvid hwaccel to cuda hwaccel (same functionality, just different name)
  • fixed failure to seek in some TS streams

Misc #

  • fixed OpenHome FFmpeg decoding not taking into account -useSoxResampler parameter (to disable SoX)
  • fixed remote transcoding failure to encode Vorbis 64kbps transcode with input samplerates > 48 kHz
  • better determination of default network route on Linux
  • discard unusable -lanIp parameter value (or from configuration.xml) if the ip address is not associated to a network interface
  • updated to jMDNS 3.5.6 (Google Cast discovery)
  • other obscure fixes

Android APK (v1.2.1) #

IMPORTANT: you need to run this version with 0.9-update39. Go to the web interface to check the version and if necessary manually update in the Settings/Update tab.

  • runs on Android 5+ (Lollipop)
  • compatible with Android 10+
  • supports v0.9-update39
  • updated icon (adaptive)
  • APK now includes ffmpeg binaries for all supported CPU architectures, explaining the larger APK size. This is needed for Android 10+ compatibility

0.9-update38 (Jul 20th 2020) #

IMPORTANT: if you use Java 8, for working Qobuz support you will need a recent Java 8 revision that includes up to date TLS certificates. At this time, the latest Java 8 version is 8u261 (revision 261). Revisions greater than 200 are expected to work. You can check what version you have with java -version in a command shell.

General #

  • fixed CallStranger vulnerability. Not that this was really problematic, unless running BubbleUPnP Server on a machine directly facing the Internet (eg not behind a router)
  • supports applying track ReplayGain for TIDAL/Qobuz tracks played by Android BubbleUPnP to UPnP AV renderers when BubbleUPnP Server is used for FFmpeg audio decoding
  • updated to FFmpeg 4.3 for Windows (7 and higher) and macOS (10.10 and higher)
  • various obscure fixes

OpenHome #

  • supports applying track ReplayGain when playing TIDAL/Qobuz tracks when ReplayGain is enabled (track or album) in settings page of OpenHome renderer
  • added ability to specify convolution filter and complex audio filters ([documentation] (/docs/config_media_renderers.html#audio_filters))
  • improved compatibility with ‘Bose Home Speaker’ renderers
  • do not transcode SHOUTCast streams played to some Philips renderers
  • do not transcode FLAC for Yamaha, B&W and NAD renderers
  • fixed some Cambridge Audio renderers failing to play some audio formats
  • fixed tracks with # in title not playing to Melco Music Player (workaround for renderer bug)
  • workaround for ‘Freebox Player’ renderer resetting volume after each track

Chromecast transcoding #

  • fixed playing to Chromecast v1 a video with PCM 24-bit audio not playing properly (white noise)
  • fixed Radio Paradise Ogg-FLAC SHOUTcast streams not playing
  • fixed h264 videos whose profile is >= 5.0 not playing on Chromecast models other than Chromecast Ultra
  • fixed seeking in h265 transcodes not working

0.9-update37 (Nov 10th 2019) #

  • requires Java 8 (previously: Java 7)
  • added support for Chromecast transcoding with Android app Yatse (website)

0.9-update33 (July 17th 2019) #

0.9-update32 (July 16th 2019) #

  • fixed issue causing thread exhaustion, resulting in server crash after a while
  • reduced thread count resulting in reduced memory usage
  • fixed some rare UPnP devices that are simultaneously a renderer and a media server but that were only detected as a renderer
  • fixed links in UI to updated documentation
  • fixed rare crash when using Chromecast devices as DLNA or OpenHome renderer
  • fixed “convert 16bit to 24-bit” not working for DSD
  • fixed transcoding DSD to FLAC resulting in a displayed bitdepth of 1-bit in Android BubbleUPnP (instead of 16 or 24)
  • Chromecast transcoding: in Android BubbleUPnP, if “Preserve multi-channel” is enabled and “AC-3 Passtrough” or “E-AC-3 Passthrough” are enabled, transcode multichannel audio to AC-3 or E-AC-3 (instead of Opus 5.1)
  • increased default image transcoding JPEG quality to 90 (previously: 80)

0.9-update31 (December 22th 2018) #

  • fixed FFmpeg decoding not working (failing to play) for OpenHome’d Chromecast

  • do not force Chromecast v1 and v2 transcoding for h264 profiles level > 4.1 as these are now supported by the firmware

  • fixed Linn Kazoo process using 100% of 1 CPU core and consuming huge amount of memory when adding a huge number of tracks (> 800) to the Playlist of an OpenHome renderer. This fix may also make Android BubbleUPnP load OpenHome Playlist updates faster when the Playlist is updated from another OpenHome Control Point (Kazoo, another BubbleUPnP instance, …)

  • added ability to specify FFmpeg audio filters for equalizing, normalizing, etc, in ‘Media Renderers tab > Audio decoding to PCM section > Audio Filters’. This applies to OpenHome renderers only. Any sound processing can be performed with filters as long as it does not change audio size and duration

  • added ‘Settings > Advanced tab > Transcode Audio’ to return at browse time in Control Points transcoded streams with these possible choices:

    • source audio greater than 96 kHz => transcode to either 96 or 88.2 khz
    • source audio greater than 48 kHz => transcode to either 48 or 44.1 khz
    • optionally convert 24-bit source audio to 16-bit
  • fixed applying ReplayGain (for OpenHome renderers) not working at all due to setting FFmpeg parameters wrong

  • fixed cloud media links extraction not working with OpenHome renderers

  • fixed XXE vulnerability

  • fixed Web UI not showing scrollbars when needed

  • updated communication from server to web browser (UI) with something more reliable

  • updated GWT to 2.8.2, JmDNS to 3.5.5

0.9-update30 (March 15th 2018) #

  • fixed Chromecast discovery removing devices after a while by mistake, requiring a server restart to have them listed again
  • fixed legit Chromecast disappearance notifications not handled properly (on power cable or network cable unplug, device reboot). On such events, Chromecast is removed from the list at most 2 minutes after the event
  • updated jMDNS to 3.5.4-SNAPSHOT (used for Chromecast discovery)
  • fixed DLNA or OpenHome Chromecast producing white noise in some specific cases or not playing at all (in particular playing with foobar2000 using foo_out_upnp)
  • added support for separate Chromecast transcoding E-AC-3 passthrough setting in Android BubbleUPnP 2.9.3
  • FFmpeg PCM decoding for OpenHome renderer is possible only if a local ffprobe binary is available (not the case by default on Synology NAS)
  • fixed setting discoveryMaintenanceInterval to 0 in configuration.xml crashing BubbleUPnP Server on startup
  • added -transcodeAudioSeekableMaxTrackDurationSec (default 600 seconds = 10 min) used to control max duration of track for which to generate a seekbable transcode when -transcodeAudioSeekable is enabled or in Android BubbleUPnP when ‘Settings > Internet access with BubbleUPnP Server > Seeekable tracks’ is enabled. The higher this value and the input track duration are, the longer it will take Android BubbleUPnP to start playing the track. CPU speed also determinates how long it takes (generally a few seconds on a fast CPU).
  • on startup, load file if present in install directory to further configure logging for specific troubleshooting

0.9-update29 (February 23th 2018) #

  • fixed GPU transcode test ‘No Internet connectivity’ error on some setups, preventing GPU transcoding for Chromecast to possibly work

0.9-update28 (February 18th 2018) #

  • added FFmpeg PCM audio decoding ability to OpenHome renderers for playing audio formats/codecs not natively supported by the underlying UPNP AV renderer, and/or to apply some renderer specific constraints (Max supported samplerate, bitdepth conversion, stereo conversion), and/or to apply ReplayGain. This can be configured in the web configuration page of each renderer
  • BubbleUPnP Server can offload FFmpeg PCM audio decoding for Android BubbleUPnP. Can be enabled/disabled in Android BubbleUPnP 2.9.2+, in Settings > UPnP Tweaks > BubbleUPnP Server FFmpeg decoding (default: enabled).
  • fixed Chromecast with name containing Emoji or possibly other special unicode characters not being listed in Renderers
  • Chromecast transcoding: supports ReplayGain when enabled in Android BubbleUPnP in Now Playing > 3-dot menu
  • Chromecast transcoding: support E-AC-3 passthrough setting of Android BubbleUPnP
  • fixed ffmpeg possibly getting stuck on subtitle extraction (Chromecast)
  • improved how BubbleUPnP Server updates itself
  • fixed Denon HEOS renderers listed twice
  • updated Apache HttpClient/HttpCore to 4.5.5 / 4.4.9 (from 4.1.1), httpmime to 4.5.5 (from 4.2.2)
  • updated from to jMDNS 3.5.3 (from 3.5.1)