github erikwb/blueferry v0.9.1
BlueFerry 0.9.1

3 hours ago

BlueFerry 0.9.1 is a maintenance release focused on pairing, reconnect recovery, and diagnostics.

Fixes

  • Pairing continues when ANCS advertising fails. Message and contact setup can proceed when BlueZ rejects the notification advertisement, while notification configuration and retries remain enabled. The backend also stays available for pairing when a saved phone's bond is already missing at startup, instead of repeatedly exiting. Addresses the application failures in #299 and the first two symptoms in #300. (#302)
  • Bluetooth recovery resumes when BlueZ's power properties disagree. A failed controller power operation could leave BlueFerry waiting indefinitely with all phone services paused. Recovery now handles terminal power-state mismatches while retaining transition, rfkill, and controller-identity safeguards. (#303)
  • Doctor identifies missing incoming-message service registration. blueferry doctor now detects when obexd has not registered its local Message Notification Server. The troubleshooting guide explains the BlueZ workaround and its tradeoffs. (#301)
  • Plugin catalogues have an explicit nesting limit. Excessively nested JSON is rejected before decoding, independently of Python's stack limit, and bad downloads preserve a valid cached catalogue. This also resolves the four recurring Arch CI failures. (#304)

Install or upgrade

Download blueferry-backend and the clients you use from the assets below, and upgrade them together. The backend includes the terminal client.

System Packages
Arch, CachyOS, Omarchy .pkg.tar.zst: backend plus GTK, Qt and/or Quickshell
Debian 13, Ubuntu 26.04, PikaOS 4 .deb: backend plus GTK and/or Qt
Ubuntu 24.04, Mint 22, Pop!_OS 24.04 .deb: backend plus GTK; terminal included
Fedora 43 / 44 .fc43.noarch.rpm: backend plus GTK and/or Qt
Fedora 45 .fc45.noarch.rpm: backend plus GTK and/or Qt

Install with sudo pacman -U, sudo apt install, or sudo dnf install followed by the downloaded package filenames. Restart BlueFerry's backend and relaunch your clients after upgrading. On systemd desktops:

systemctl --user daemon-reload
systemctl --user restart blueferry.service

Arch and Fedora package upgrades briefly restart Bluetooth when it is running. Debian packages do not change or restart the system Bluetooth service. Existing settings and local data are preserved.

Installation guide · Changelog

Known issues

  • #298: encrypted local history authentication can fail after reboot on the reported Fedora/KDE setup. The cause remains under investigation; this release does not change history encryption or resolve that report.
  • #300: the underlying BlueZ advertisement rejection and reported spontaneous bond loss remain unresolved. This release fixes BlueFerry's handling of advertisement failure and an already-missing bond. The reporters' affected adapters have not been retested with this release.
  • #270: some explicit-pairing setups still time out after bonding when the phone drops its idle Classic connection.
  • #280: the new diagnostic helps identify the missing incoming-message service, but does not fix the underlying BlueZ service-registration problem. See the troubleshooting guide for the workaround.

Validation

Packages were built and tested locally on Arch, Debian 13, Fedora 43/45, and Ubuntu 24.04, with installed-package checks on the supported compatibility environments. The Arch suite passed 5,825 tests with 4 skips. After installing the final Arch packages and removing the temporary source override, real-phone checks confirmed sending, receiving, contact names, and recovery after turning Bluetooth off and back on without restarting BlueFerry.

SHA256SUMS covers the attached packages and build information. BUILD_INFO.json records the source tree and validation results. The plugin SDK is unchanged at 1.5.0.

Thanks to everyone who sent pairing reports, diagnostics, and helped test recovery.

Full changes: v0.9.0...v0.9.1

Don't miss a new blueferry release

NewReleases is sending notifications on new releases.