Skip to content

meshcore bluetooth connection from Linux is not working. #33

@takov751

Description

@takov751

MESHCORE v1.10 firmware
meshcore_py v2.2.1

I have installed meshcore-py on rpi4 and fedora desktop. When trying to connect via bluetooth. The first connection starts fine pairing finishes, then bluez disconnects. using exemple ble_infos script:

First attempt on rpi4 pairing fine and connection started comes back with looping :

EBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX): ['org.bluez.Device1', {'Paired': <dbus_fast.signature.Variant ('b', True)>}, []] INFO:meshcore:BLE pairing successful DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0028/char0029): ['org.bluez.GattCharacteristic1', {'Notifying': <dbus_fast.signature.Variant ('b', True)>}, []] INFO:meshcore:BLE Connection started DEBUG:bleak.backends.bluezdbus.client:retrying characteristic WriteValue due to InProgress DEBUG:bleak.backends.bluezdbus.client:retrying characteristic WriteValue due to InProgress DEBUG:bleak.backends.bluezdbus.client:retrying characteristic WriteValue due to InProgress DEBUG:bleak.backends.bluezdbus.client:retrying characteristic WriteValue due to InProgress DEBUG:bleak.backends.bluezdbus.client:retrying characteristic WriteValue due to InProgress DEBUG:bleak.backends.bluezdbus.client:retrying characteristic WriteValue due to InProgress DEBUG:bleak.backends.bluezdbus.client:retrying characteristic WriteValue due to InProgress DEBUG:bleak.backends.bluezdbus.client:retrying characteristic WriteValue due to InProgress DEBUG:bleak.backends.bluezdbus.client:retrying characteristic WriteValue due to InProgress DEBUG:bleak.backends.bluezdbus.client:retrying characteristic WriteValue due to InProgress DEBUG:bleak.backends.bluezdbus.client:retrying characteristic WriteValue due to InProgress 

on fedora it comes back with:

EBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX): ['org.bluez.Device1', {'ServicesResolved': <dbus_fast.signature.Variant ('b', False)>}, []] DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX): ['org.bluez.Device1', {'Connected': <dbus_fast.signature.Variant ('b', False)>}, []] DEBUG:bleak.backends.bluezdbus.client:Device disconnected (/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX) DEBUG:bleak.backends.bluezdbus.client:_cleanup_all(/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX) DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0028/char0029): ['org.bluez.GattCharacteristic1', {'Notifying': <dbus_fast.signature.Variant ('b', False)>}, []] Traceback (most recent call last): File "/home/Anonymous/meshcore/meshy.py", line 18, in <module> asyncio.run(main()) ~~~~~~~~~~~^^^^^^^^ File "/usr/lib64/python3.13/asyncio/runners.py", line 195, in run return runner.run(main) ~~~~~~~~~~^^^^^^ File "/usr/lib64/python3.13/asyncio/runners.py", line 118, in run return self._loop.run_until_complete(task) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ File "/usr/lib64/python3.13/asyncio/base_events.py", line 725, in run_until_complete return future.result() ~~~~~~~~~~~~~^^ File "/home/Anonymous/meshcore/meshy.py", line 11, in main mc = await MeshCore.create_ble(ADDRESS, pin=PIN, default_timeout=1,auto_reconnect=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/meshcore/meshcore.py", line 161, in create_ble await mc.connect() File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/meshcore/meshcore.py", line 170, in connect return await self.commands.send_appstart() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/meshcore/commands/device.py", line 15, in send_appstart return await self.send(b1, [EventType.SELF_INFO]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/meshcore/commands/base.py", line 157, in send await self._sender_func(data) File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/meshcore/commands/base.py", line 69, in sender await connection.send(data) File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/meshcore/connection_manager.py", line 165, in send return await self.connection.send(data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/meshcore/ble_cx.py", line 165, in send await self.client.write_gatt_char(self.rx_char, bytes(data), response=True) File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/bleak/__init__.py", line 737, in write_gatt_char await self._backend.write_gatt_char(characteristic, data, response) File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/bleak/backends/bluezdbus/client.py", line 830, in write_gatt_char reply = await self._bus.call( ^^^^^^^^^^^^^^^^^^^^^ ...<11 lines>... ) ^ File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/dbus_fast/aio/message_bus.py", line 409, in call await future File "src/dbus_fast/aio/message_reader.py", line 25, in dbus_fast.aio.message_reader._message_reader File "src/dbus_fast/_private/unmarshaller.py", line 870, in dbus_fast._private.unmarshaller.Unmarshaller._unmarshall File "src/dbus_fast/_private/unmarshaller.py", line 734, in dbus_fast._private.unmarshaller.Unmarshaller._read_header File "src/dbus_fast/_private/unmarshaller.py", line 455, in dbus_fast._private.unmarshaller.Unmarshaller._read_to_pos File "src/dbus_fast/_private/unmarshaller.py", line 395, in dbus_fast._private.unmarshaller.Unmarshaller._read_sock_with_fds EOFError 

On the second attempt when device is already paired this is the output of the example ble infos script with debugging enabled:

DEBUG:asyncio:Using selector: EpollSelector DEBUG:bleak.backends.bluezdbus.client:Connecting to device @ XX:XX:XX:XX:XX:XX DEBUG:bleak.backends.bluezdbus.manager:initial properties: {'/org/bluez': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.AgentManager1': {}, 'org.bluez.ProfileManager1': {}}, '/org/bluez/hci0': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.Adapter1': {'Address': 'E8:48:B8:C8:20:00', 'AddressType': 'public', 'Name': 'nobi', 'Alias': 'nobi', 'Class': 8126724, 'Connectable': False, 'Powered': True, 'PowerState': 'on', 'Discoverable': False, 'DiscoverableTimeout': 180, 'Pairable': True, 'PairableTimeout': 0, 'Discovering': False, 'UUIDs': ['00001133-0000-1000-8000-00805f9b34fb', '0000110e-0000-1000-8000-00805f9b34fb', '03b80e5a-ede8-4b33-a751-6ce34ec4c700', '00001105-0000-1000-8000-00805f9b34fb', '00001132-0000-1000-8000-00805f9b34fb', '00001200-0000-1000-8000-00805f9b34fb', '00001104-0000-1000-8000-00805f9b34fb', '00005005-0000-1000-8000-0002ee000001', '0000110c-0000-1000-8000-00805f9b34fb', '00001801-0000-1000-8000-00805f9b34fb', '0000112f-0000-1000-8000-00805f9b34fb', '0000110b-0000-1000-8000-00805f9b34fb', '0000180a-0000-1000-8000-00805f9b34fb', '00001800-0000-1000-8000-00805f9b34fb', '0000112e-0000-1000-8000-00805f9b34fb', '0000111f-0000-1000-8000-00805f9b34fb', '0000110a-0000-1000-8000-00805f9b34fb', '185f3df4-3268-4e3f-9fca-d4d5059915bd', '00001106-0000-1000-8000-00805f9b34fb', '0000111e-0000-1000-8000-00805f9b34fb'], 'Modalias': 'usb:v1D6Bp0246d0554', 'Roles': ['central', 'peripheral'], 'Manufacturer': 93, 'Version': 10}, 'org.freedesktop.DBus.Properties': {}, 'org.bluez.BatteryProviderManager1': {}, 'org.bluez.GattManager1': {}, 'org.bluez.Media1': {'SupportedUUIDs': ['0000110a-0000-1000-8000-00805f9b34fb', '0000110b-0000-1000-8000-00805f9b34fb'], 'SupportedFeatures': ['tx-timestamping']}, 'org.bluez.NetworkServer1': {}, 'org.bluez.LEAdvertisingManager1': {'ActiveInstances': 0, 'SupportedInstances': 4, 'SupportedIncludes': ['tx-power', 'appearance', 'local-name'], 'SupportedSecondaryChannels': ['1M', '2M', 'Coded'], 'SupportedFeatures': ['CanSetTxPower', 'HardwareOffload'], 'SupportedCapabilities': {'MinTxPower': -19, 'MaxTxPower': 23, 'MaxAdvLen': 251, 'MaxScnRspLen': 251}}}, '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.Device1': {'Address': 'XX:XX:XX:XX:XX:XX', 'AddressType': 'public', 'Name': 'Anonymous', 'Alias': 'Anonymous', 'Paired': True, 'Bonded': True, 'Trusted': True, 'Blocked': False, 'LegacyPairing': False, 'CablePairing': False, 'Connected': False, 'UUIDs': ['00001800-0000-1000-8000-00805f9b34fb', '00001801-0000-1000-8000-00805f9b34fb', '6e400001-b5a3-f393-e0a9-e50e24dcca9e'], 'Adapter': '/org/bluez/hci0', 'ServicesResolved': False, 'AdvertisingFlags': b'\x06'}, 'org.freedesktop.DBus.Properties': {}, 'org.bluez.Bearer.LE1': {}}, '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0028': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.GattService1': {'Handle': 40, 'UUID': '6e400001-b5a3-f393-e0a9-e50e24dcca9e', 'Device': '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX', 'Primary': True, 'Includes': []}, 'org.freedesktop.DBus.Properties': {}}, '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0028/char002c': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.GattCharacteristic1': {'Handle': 44, 'UUID': '6e400002-b5a3-f393-e0a9-e50e24dcca9e', 'Service': '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0028', 'Value': b'', 'Flags': ['write']}, 'org.freedesktop.DBus.Properties': {}}, '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0028/char0029': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.GattCharacteristic1': {'Handle': 41, 'UUID': '6e400003-b5a3-f393-e0a9-e50e24dcca9e', 'Service': '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0028', 'Value': b'', 'Notifying': False, 'Flags': ['read', 'notify'], 'NotifyAcquired': False}, 'org.freedesktop.DBus.Properties': {}}, '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0028/char0029/desc002b': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.GattDescriptor1': {'Handle': 43, 'UUID': '00002902-0000-1000-8000-00805f9b34fb', 'Characteristic': '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0028/char0029', 'Value': b''}, 'org.freedesktop.DBus.Properties': {}}, '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0014': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.GattService1': {'Handle': 20, 'UUID': '00001800-0000-1000-8000-00805f9b34fb', 'Device': '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX', 'Primary': True, 'Includes': []}, 'org.freedesktop.DBus.Properties': {}}, '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0014/char0019': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.GattCharacteristic1': {'Handle': 25, 'UUID': '00002aa6-0000-1000-8000-00805f9b34fb', 'Service': '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0014', 'Value': b'', 'Flags': ['read']}, 'org.freedesktop.DBus.Properties': {}}, '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0014/char0017': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.GattCharacteristic1': {'Handle': 23, 'UUID': '00002a01-0000-1000-8000-00805f9b34fb', 'Service': '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0014', 'Value': b'', 'Flags': ['read']}, 'org.freedesktop.DBus.Properties': {}}, '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0014/char0015': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.GattCharacteristic1': {'Handle': 21, 'UUID': '00002a00-0000-1000-8000-00805f9b34fb', 'Service': '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0014', 'Value': b'', 'Flags': ['read']}, 'org.freedesktop.DBus.Properties': {}}, '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0001': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.GattService1': {'Handle': 1, 'UUID': '00001801-0000-1000-8000-00805f9b34fb', 'Device': '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX', 'Primary': True, 'Includes': []}, 'org.freedesktop.DBus.Properties': {}}, '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0001/char0002': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.GattCharacteristic1': {'Handle': 2, 'UUID': '00002a05-0000-1000-8000-00805f9b34fb', 'Service': '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0001', 'Value': b'', 'Notifying': False, 'Flags': ['indicate']}, 'org.freedesktop.DBus.Properties': {}}, '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0001/char0002/desc0004': {'org.freedesktop.DBus.Introspectable': {}, 'org.bluez.GattDescriptor1': {'Handle': 4, 'UUID': '00002902-0000-1000-8000-00805f9b34fb', 'Characteristic': '/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX/service0001/char0002', 'Value': b''}, 'org.freedesktop.DBus.Properties': {}}] DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0): ['org.bluez.Adapter1', {'Discovering': <dbus_fast.signature.Variant ('b', True)>}, []] DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX): ['org.bluez.Device1', {'RSSI': <dbus_fast.signature.Variant ('n', -40)>, 'TxPower': <dbus_fast.signature.Variant ('n', 9)>}, []] DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX): ['org.bluez.Device1', {}, ['TxPower', 'RSSI']] DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0): ['org.bluez.Adapter1', {'Discovering': <dbus_fast.signature.Variant ('b', False)>}, []] DEBUG:bleak.backends.bluezdbus.client:Connecting to BlueZ path /org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX): ['org.bluez.Device1', {'Connected': <dbus_fast.signature.Variant ('b', True)>}, []] DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX): ['org.bluez.Device1', {'Connected': <dbus_fast.signature.Variant ('b', False)>}, []] DEBUG:bleak.backends.bluezdbus.client:Device disconnected (/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX) DEBUG:bleak.backends.bluezdbus.client:_cleanup_all(/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX) DEBUG:bleak.backends.bluezdbus.client:_cleanup_all(/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX) DEBUG:bleak.backends.bluezdbus.client:already disconnected (/org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX) Traceback (most recent call last): File "/home/Anonymous/meshcore/meshy.py", line 18, in <module> asyncio.run(main()) ~~~~~~~~~~~^^^^^^^^ File "/usr/lib64/python3.13/asyncio/runners.py", line 195, in run return runner.run(main) ~~~~~~~~~~^^^^^^ File "/usr/lib64/python3.13/asyncio/runners.py", line 118, in run return self._loop.run_until_complete(task) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ File "/usr/lib64/python3.13/asyncio/base_events.py", line 725, in run_until_complete return future.result() ~~~~~~~~~~~~~^^ File "/home/Anonymous/meshcore/meshy.py", line 11, in main mc = await MeshCore.create_ble(ADDRESS, pin=PIN, default_timeout=1,auto_reconnect=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/meshcore/meshcore.py", line 161, in create_ble await mc.connect() File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/meshcore/meshcore.py", line 166, in connect result = await self.connection_manager.connect() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/meshcore/connection_manager.py", line 59, in connect result = await self.connection.connect() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/meshcore/ble_cx.py", line 97, in connect await self.client.connect() File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/bleak/__init__.py", line 580, in connect await self._backend.connect(self._pair_before_connect, **kwargs) File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/bleak/backends/bluezdbus/client.py", line 355, in connect await self._get_services( dangerous_use_bleak_cache=dangerous_use_bleak_cache ) File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/bleak/backends/bluezdbus/client.py", line 713, in _get_services self.services = await manager.get_services( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ self._device_path, dangerous_use_bleak_cache, self._requested_services ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/bleak/backends/bluezdbus/manager.py", line 687, in get_services await self._wait_for_services_discovery(device_path) File "/home/Anonymous/meshcore/.venv/lib64/python3.13/site-packages/bleak/backends/bluezdbus/manager.py", line 857, in _wait_for_services_discovery raise BleakError("failed to discover services, device disconnected") bleak.exc.BleakError: failed to discover services, device disconnected 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions