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