D-Bus is a message bus that lets processes communicate on a Linux system.
While originally born for the open Linux Desktop, D-Bus is now widely used across a variety of different environments including Desktop, Server and IoT.
On Ubuntu Desktop, it is used by every application to integrate with the desktop environment, or to communicate with system services such as connecting to Wi-Fi, mounting a USB drive, or adjusting the screen brightness.
Starting with Ubuntu 26.10, the default D-Bus implementation changes from dbus-daemon to dbus-broker. Both the system bus and the per-user session bus will be provided by dbus-broker.
Upgrades and fresh installs are both affected equally.
Why?
dbus-daemon is the reference implementation of D-Bus and has been the default on virtually every Linux distribution for over a decade. It’s stable and well-understood, but it was designed in a different era. Today, it struggles to keep up with the performance and reliability requirements of the new world.
dbus-broker is a newer implementation, built from scratch with an asynchronous, event-driven architecture targeting modern Linux. Compared to dbus-daemon it offers better accounting, reliability and scalability.
You may read more about it on the original presentation of dbus-broker: Rethinking the D-Bus Message Bus
What changes for users?
Nothing. dbus-broker is a drop-in replacement. Same protocol, same config files, same bus policies. Apps, desktop environments, snaps — everything keeps working as before.
Why did this take so long?
You might be aware that some other distributions made the switch over to dbus-broker years ago. The path for adoption in Ubuntu took longer, primarily for two reasons:
-
It is Ubuntu policy that two packages offering the same functionality shouldn’t both exist in main. So before dbus-broker could be promoted, every package in main had to stop depending on dbus-daemon so that it could get demoted.
The final holdout was GDM, the GNOME log-in manager: it relied ondbus-run-session, a tool provided bydbus-daemonused to launch an isolated bus for each greeter instance (for example, once locally and once in a remote-desktop connection). GDM was reworked in version 49 to drop this dependency, and thus the path was clear to demote dbus-daemon. -
Ubuntu also mediates D-Bus messages via AppArmor to restrict access to certain privileged interfaces, both for a subset of critical deb packages as well as for any snap. Integrating AppArmor in dbus-broker has been a long work-in-progress, and it was only recently that it gained feature-parity with dbus-daemon.
We are extremely grateful for the work that happened upstream in both GDM and dbus-broker, that now allows Ubuntu to switch over!
Implementation details
dbus-broker ships systemd units dbus-broker.service for both the system and user instances that shadow via an alias the dbus.service units from dbus-daemon.
On 26.10, dbus-broker moves to main and gets installed by default, overriding the dbus.service units and thus taking over as the bus implementation. dbus and dbus-daemon move to universe and becomes uninstallable, unless you have installed any dependency from universe that still explicitly depends on it, for example by requiring the dbus-run-session tool, often used to run integration tests.
Even if dbus-daemon remains installed on the system, dbus-broker will by default have priority, unless you manually disable it with systemctl disable dbus-broker and systemctl --user --global disable dbus-broker for the system and session bus respectively.
Try it today on Ubuntu 26.04 LTS
If you’re on 26.04 LTS, or on the development release 26.10, you can test dbus-broker now:
-
Install dbus-broker:
sudo apt install dbus-broker -
Reboot
-
Report any issues on Launchpad
The implementation remains largely unchanged between 26.04 LTS and 26.10.
Early testing helps — bug reports before 26.10 mean fewer surprises at release.
Revert back
In order to revert back to dbus-daemon:
- Ensure that dbus-daemon is installed:
sudo apt install dbus - Disable dbus-broker
sudo systemctl disable dbus-broker sudo systemctl --user --global disable dbus-broker - Reboot
- Optionally, uninstall dbus-broker:
sudo apt remove dbus-broker
Reporting problems
Please file bugs against dbus-broker on Launchpad. For other discussion, use Ubuntu Discourse.