diff --git a/bleak/backends/bluezdbus/client.py b/bleak/backends/bluezdbus/client.py index 127a7f941..7e94bea2a 100644 --- a/bleak/backends/bluezdbus/client.py +++ b/bleak/backends/bluezdbus/client.py @@ -30,7 +30,7 @@ from .characteristic import BleakGATTCharacteristicBlueZDBus from .manager import get_global_bluez_manager from .scanner import BleakScannerBlueZDBus -from .utils import assert_reply, get_dbus_authenticator +from .utils import assert_reply, get_dbus_authenticator, should_negotiate_unix_fd from .version import BlueZFeatures logger = logging.getLogger(__name__) @@ -144,7 +144,7 @@ async def connect(self, dangerous_use_bleak_cache: bool = False, **kwargs) -> bo # BlueZ quirk where notifications are automatically enabled on reconnect. self._bus = await MessageBus( bus_type=BusType.SYSTEM, - negotiate_unix_fd=True, + negotiate_unix_fd=should_negotiate_unix_fd(), auth=get_dbus_authenticator(), ).connect() diff --git a/bleak/backends/bluezdbus/utils.py b/bleak/backends/bluezdbus/utils.py index 5b0eeeb83..281a36de3 100644 --- a/bleak/backends/bluezdbus/utils.py +++ b/bleak/backends/bluezdbus/utils.py @@ -2,7 +2,7 @@ import os import re -from dbus_fast.auth import AuthExternal +from dbus_fast.auth import AuthExternal, AuthAnnonymous from dbus_fast.constants import MessageType from dbus_fast.message import Message @@ -57,5 +57,14 @@ def get_dbus_authenticator(): auth = None if uid is not None: auth = AuthExternal(uid=uid) + + if 'tcp' in os.environ.get('DBUS_SYSTEM_BUS_ADDRESS', None): + auth=AuthAnnonymous() return auth + +def should_negotiate_unix_fd(): + if 'tcp' in os.environ.get('DBUS_SYSTEM_BUS_ADDRESS', None): + return False + else: + return True