Upgrade BlueZ on Ubuntu for use with Home Assistant Bluetooth

I recently tried to add Bluetooth support to Home Assistant Container using the new Bluetooth integration. It should have been relatively easy, but I ran into an annoying error message.

Failed to start BlueTooth: [org.bluez.Error.InvalidArguments] Invalid arguments in method call

Luckily I came across a GitHub issue that seemed similar and suggested that the version of BlueZ (which is required by the Bluetooth integration) on my system might be old and incompatible.

This turned out to be true, the version installed on my Ubuntu server was 5.37, compared to the latest version which was 5.64

Ubuntu BlueZ version 5.37

Here are the steps I took to upgrade BlueZ to the new version on my Ubuntu system. You’ll need to SSH into the Ubuntu server to run these commands.

First, uninstall the old verison of BlueZ

sudo apt-get remove bluez

I then had to install some dependencies that were not available on my system.

sudo apt install glib2.0 dbus-1-dbg build-essential libdbus-glib-1-dev libgirepository1.0-dev libudev-dev libical-dev libreadline-dev python-docutils

Then I was able to download and extract the newest version of BlueZ onto my system (Version 5.64 at the time of posting)

wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.64.tar.xz
tar xf bluez-5.64.tar.xz

Then you need to change to the extracted directory and build the new version of BlueZ

cd bluez-5.64
./configure
make

Once it’s built, you can install it with

sudo make install

For some reason this broke my Bluetooth service, and made it masked (whatever that is). I fixed this by running

sudo systemctl unmask bluetooth

Then I was able to restart the Bluetooth services

sudo systemctl daemon-reload
sudo systemctl restart dbus bluetooth

If that all worked properly, you should be able to remove and re-add the Bluetooth integration in Home Assistant, and it should work as expected.