Skip to content

Latest commit

 

History

History
1090 lines (859 loc) · 42.1 KB

CHANGELOG.rst

File metadata and controls

1090 lines (859 loc) · 42.1 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.22.3 (2024-10-05)

Changed

  • Don't change ctypes' global state bleak.backends.winrt.util.
  • Improved performance of BlueZ backend when there are many adapters.
  • Added support for Python 3.13.

0.22.2 (2024-06-01)

Changed

  • Retrieve the BLE address required by BleakClientWinRT from scan response if advertising is None (WinRT).
  • Changed type hint for adv attribute of bleak.backends.winrt.scanner._RawAdvData.
  • BleakGATTCharacteristic.max_write_without_response_size is now dynamic.

Fixed

  • Fixed discovered_devices_and_advertisement_data returning devices that should be filtered out by service UUIDs. Fixes #1576.
  • Fixed a Descriptor None was not found! exception occurring in start_notify() on Android. Fixes #823.
  • Fixed exception raised when starting BleakScanner while running in a Windows GUI app.

0.22.1 (2024-05-07)

Added

  • Added bleak.backends.winrt.util.allow_sta() method to allow integration with graphical user interfaces on Windows. Fixes #1565.

0.22.0 (2024-05-04)

Added

  • Added BleakCharacteristicNotFoundError which is raised if a device does not support a characteristic.
  • Added utility function to work around pywin32 setting threading model to STA on Windows.

Changed

  • Updated PyObjC dependency on macOS to v10.x.
  • Updated missing Bluetooth SIG characteristics and service UUIDs.
  • Updated BlueZManager to remove empty interfaces from _properties during InterfacesRemoved message.
  • Updated PyWinRT dependency to v2. Fixes #1529.
  • Raise exception when trying to scan while in a single-treaded apartment (STA) on Windows. Fixes #1132.

Fixed

  • Fixed BlueZ version in passive scanning error message. Fixes #1433.
  • Fixed mypy requiring Unpack[ExtraArgs] that were intended to be optional. Fixes #1487.
  • Fixed KeyError in BlueZ is_connected() and get_global_bluez_manager() when device is not present. Fixes #1507.
  • Fixed BlueZ _wait_removed completion on invalid object path. Fixes #1489.
  • Fixed rare unhandled exception when scanning on macOS when using use_bdaddr. Fixes #1523.
  • Fixed scanning silently failing on Windows when Bluetooth is off. Fixes #1535.
  • Fixed using wrong value for tx_power in Android backend. Fixes #1532.
  • Fixed 4-character UUIDs not working on BleakClient.*_gatt_char methods. Fixes #1498.
  • Fixed race condition with getting max PDU size on Windows. Fixes #1497. [REVERTED in v0.22.2]
  • Fixed filtering advertisement data by service UUID when multiple apps are scanning. Fixes #1534.

0.21.1 (2023-09-08)

Changed

  • Changed dbus-fast dependency to include v2.x. Fixes #1412.

0.21.0 (2023-09-02)

Added

  • Added bleak.uuids.normalize_uuid_16() function.
  • Added bleak.uuids.normalize_uuid_32() function.
  • Added advertisement_data() async iterator method to BleakScanner. Merged #1361.
  • Added type hints for kwargs on BleakScanner class methods.
  • Added support for Python 3.12.

Changed

  • Improved error messages when failing to get services in WinRT backend.
  • Improved error messages with enum values in WinRT backend. Fixes #1284.
  • Scanner backends modified to allow multiple advertisement callbacks. Merged #1367.
  • Changed default handling of the response argument in BleakClient.write_gatt_char. Fixes #909.
  • Bleak recipe now automatically installs bleak from GitHub release in Kivy example.
  • Changed BlueZManager methods to raise BleakError when device is not in BlueZ.
  • Optimized BlueZ backend device watchers and condition callbacks to avoid linear searches.
  • Changed type hint for buffer protocol to collections.abc.Buffer.

Fixed

  • Fixed handling all access denied errors when enumerating characteristics on Windows. Fixes #1291.
  • Added support for 32bit UUIDs. Fixes #1314.
  • Fixed typing for BaseBleakScanner detection callback.
  • Fixed possible crash in _stopped_handler() in WinRT backend. Fixes #1330.
  • Reduced expensive logging in the BlueZ backend. Merged #1376.
  • Fixed race condition with "InterfaceRemoved" when getting services in BlueZ backend.
  • Fixed missing permissions and requirements in android Kivy example. Fixes #1184.
  • Fixed WinRT backend sometimes hanging forever when a device goes out of range during connection. Fixes #1359.

Removed

Dropped support for Python 3.7.

0.20.2 (2023-04-19)

Fixed

  • Fixed org.bluez.Error.InProgress in characteristic and descriptor read and write methods in BlueZ backend.
  • Fixed OSError: [WinError -2147483629] The object has been closed when connecting on Windows. Fixes #1280.

0.20.1 (2023-03-24)

Fixed

  • Fixed possible garbage collection of running async callback from BleakClient.start_notify().
  • Fixed possible garbage collection of running async callback from BleakScanner(detection_callback=).
  • Fixed possible garbage collection of disconnect monitor in BlueZ backend. Fixed #1258.

0.20.0 (2023-03-17)

Added

  • Added BLEAK_DBUS_AUTH_UID environment variable for hardcoding D-Bus UID. Merged #1182.
  • Added return type None to some scanner methods.
  • Added optional hack to use Bluetooth address instead of UUID on macOS. Merged #1073.
  • Added BleakScanner.find_device_by_name() class method.
  • Added optional command line argument to use debug log level to all applicable examples.
  • Added bleak.uuids.normalize_uuid_str() function.
  • Added optional services argument to BleakClient() to filter services. Merged #654.
  • Added automatic retry on le-connection-abort-by-local in BlueZ backend. Fixes #1220.

Changed

  • Dropped async-timeout dependency on Python >= 3.11.
  • Deprecated BLEDevice.rssi and BLEDevice.metadata. Fixes #1025.
  • BLEDevice now uses __slots__ to reduce memory usage. Merged #1117.
  • BaseBleakClient.services is now None instead of empty service collection until services are discovered.
  • Include thread name in BLEAK_LOGGING output. Merged #1144.
  • Updated PyObjC dependency on macOS to v9.x.

Fixed

  • Fixed invalid UTF-8 in uuids.uuid16_dict.
  • Fixed AttributeError in _ensure_success in WinRT backend.
  • Fixed BleakScanner.stop() can raise BleakDBusError with org.bluez.Error.NotReady in BlueZ backend.
  • Fixed BleakScanner.stop() hanging in WinRT backend when Bluetooth is disabled.
  • Fixed leaking services when get_services() is cancelled in WinRT backend.
  • Fixed disconnect monitor task not always cancelled on the BlueZ client. Merged #1159.
  • Fixed WinRT scanner never calling detection_callback when a device does not send a scan response. Fixes #1211.
  • Fixed BLEDevice name sometimes incorrectly None.
  • Fixed unhandled exception in CentralManagerDelegate destructor on macOS. Fixes #1219.
  • Fixed object passed to disconnected_callback is not BleakClient. Fixes #1200.

0.19.5 (2022-11-19)

Fixed

  • Fixed more issues with getting services in WinRT backend.

0.19.4 (2022-11-06)

Fixed

  • Fixed TypeError in WinRT backend introduced in v0.19.3.

0.19.3 (2022-11-06)

Fixed

  • Fixed TimeoutError when connecting to certain devices with WinRT backend. Fixes #604.

0.19.2 (2022-11-06)

Fixed

  • Fixed crash when getting services in WinRT backend in Python 3.11. Fixes #1112.
  • Fixed cache mode when retrying get services in WinRT backend. Merged #1102.
  • Fixed KeyError crash in BlueZ backend when removing non-existent property. Fixes #1107.

0.19.1 (2022-10-29)

Fixed

  • Fixed crash in Android backend introduced in v0.19.0. Fixes #1085.
  • Fixed service discovery blocking forever if device disconnects in BlueZ backend. Merged #1092.
  • Fixed AttributeError crash when scanning on Windows builds < 19041. Fixes #1094.

0.19.0 (2022-10-13)

Added

  • Added support for Python 3.11. Merged #990.
  • Added better error message for Bluetooth not authorized on macOS. Merged #1033.
  • Added BleakDeviceNotFoundError which should is raised if a device can not be found by connect, pair and unpair. Merged #1022.
  • Added rssi attribute to AdvertisementData. Merged #1047.
  • Added BleakScanner.discovered_devices_and_advertisement_data property. Merged #1047.
  • Added return_adv argument to BleakScanner.discover method. Merged #1047.
  • Added BleakClient.unpair() implementation for BlueZ backend. Merged #1067.

Changed

  • Changed AdvertisementData to a named tuple. Merged #1047.
  • A faster unpack_variants is now provided by dbus-fast. Merged #1055.

Fixed

  • On BlueZ, support creating additional instances running on a different event loops (i.e. multiple pytest-asyncio cases). Merged #1034.
  • Fixed unhandled exception in max_pdu_size_changed_handler in WinRT backend. Fixes #1039.
  • Fixed stale services in WinRT backend causing WinError -2147483629. Fixes #1061.

Removed

Removed bleak.__version__. Use importlib.metadata.version('bleak') instead.

0.18.1 (2022-09-25)

Fixed

  • Reverted unintentional breaking parameter name changes. Fixes #1028.

0.18.0 (2022-09-23)

Changed

  • Relaxed async-timeout dependency version to support different installations. Merged #1009.
  • BleakClient.unpair() in WinRT backend can be called without being connected first. Merged #1012.
  • Use relative imports internally. Merged #1007.
  • BleakScanner and BleakClient are now concrete classes. Fixes #582.
  • Deprecated BleakScanner.register_detection_callback().
  • Deprecated BleakScanner.set_scanning_filter().
  • Deprecated BleakClient.set_disconnected_callback().
  • Deprecated BleakClient.get_services().
  • Refactored common code in BleakClient.start_notify().
  • (BREAKING) Changed notification callback argument from int to BleakGattCharacteristic. Fixes #759.

Fixed

  • Fixed tx_power not included in AdvertisementData.__repr__ when 0. Merged #1017.

0.17.0 (2022-09-12)

Added

  • AdvertisementData class now has an attribute tx_power. Merged #987.

Changed

  • BleakClient methods now raise BleakError if called when not connected in WinRT backend. Merged #973.
  • Extended disconnect timeout to 120 seconds in WinRT backend. Fixes #807.
  • Changed version check for BlueZ battery workaround to exclude versions >= 5.55. Merged #976.
  • Use Poetry for build system and dependencies. Merged #978.
  • The BlueZ D-Bus backend implements a services cache between connections to significancy improve reconnect performance. To use the cache, call connect and get_services with the dangerous_use_bleak_cache argument to avoid services being resolved again. Merged #923.
  • The BlueZ D-Bus backend now uses dbus-fast package instead of dbus-next which significantly improves performance. Merged #988.
  • The BlueZ D-Bus backend will not avoid trying to connect to devices that are already connected. Fixes #992.
  • Updated logging to lazy version and replaced format by f-string for BleakClientWinRT. #1000.
  • Added deprecation warning to discover() method. Merged #1005.
  • BlueZ adapter is chosen dynamically if not provided, instead of using hardcoded "hci0". Fixes #513.

Fixed

  • Fixed wrong error message for BlueZ "Operation failed with ATT error". Merged #975.
  • Fixed possible AttributeError when enabling notifications for battery service in BlueZ backend. Merged #976.
  • Fixed use of wrong enum in unpair function of WinRT backend. Merged #986.
  • Fixed inconsistent return types for properties and descriptors properties of BleakGATTCharacteristic. Merged #989.
  • Handle device being removed before GetManagedObjects returns in BlueZ backend. Fixes #996.
  • Fixed crash in max_pdu_size_changed_handler in WinRT backend. Fixes #998.
  • Fixes a race in the BlueZ D-Bus backend where the disconnect monitor would be removed before it could be awaited. Merged #999.

Removed

  • Removed BLEDeviceCoreBluetooth type from CoreBluetooth backend. Merged #977.

0.16.0 (2022-08-31)

Added

  • Added BleakGattCharacteristic.max_write_without_response_size property. Fixes #738.

Fixed

  • Fixed regression in v0.15 where devices removed from BlueZ while scanning were still listed in BleakScanner.discovered_devices. Fixes #942.
  • Fixed possible bad connection state in BlueZ backend. Fixes #951.

Changed

  • Made BlueZ D-Bus signal callback logging lazy to improve performance. Merged #912.
  • Switch to using async_timeout instead of asyncio.wait_for for performance. Merged #916.
  • Improved performance of BlueZManager.get_services(). Fixes #927.

Removed

  • Removed explicit inheritance from object in class declarations. Merged #922.
  • Removed first seen filter in BleakScanner detection callbacks on BlueZ backend. Merged #964.

0.15.1 (2022-08-03)

Fixed

  • The global BlueZ manager now disconnects correctly on exception. Merged #918.
  • Handle the race in the BlueZ D-Bus backend where the device disconnects during the connection process which presented as Failed to cancel connection. Merged #919.
  • Ensure the BlueZ D-Bus scanner can reconnect after DBus disconnection. Merged #920.
  • Adjust default timeout for read_gatt_char() with CoreBluetooth to 20s. Fixes #926.

0.15.0 (2022-07-29)

Added

  • Added new assigned_numbers module and AdvertisementDataType enum.
  • Added new bluez kwarg to BleakScanner in BlueZ backend.
  • Added support for passive scanning in the BlueZ backend. Fixes #606.
  • Added option to use cached services, characteristics and descriptors in WinRT backend. Fixes #686.
  • Added PendingDeprecationWarning to use of address_type as keyword argument. It will be moved into the winrt keyword instead according to #623.
  • Added better error message when adapter is not present in BlueZ backend. Fixes #889.

Changed

  • Add py.typed file so mypy discovers Bleak's type annotations.
  • UUID descriptions updated to 2022-03-16 assigned numbers document.
  • Replace use of deprecated asyncio.get_event_loop() in Android backend.
  • Adjust default timeout for read_gatt_char() with CoreBluetooth to 10s. Merged #891.
  • BleakScanner() args detection_callback and service_uuids are no longer keyword-only.
  • BleakScanner() arg scanning_mode is no longer Windows-only and is no longer keyword-only.
  • All BleakScanner() instances in BlueZ backend now use common D-Bus object manager.
  • Deprecated filters kwarg in BleakScanner in BlueZ backend.
  • BlueZ version is now checked on first connection instead of import to avoid import side effects. Merged #907.

Fixed

  • Documentation fixes.
  • On empty characteristic description from WinRT, use the lookup table instead of returning empty string.
  • Fixed detection of first advertisement in BlueZ backend. Merged #903.
  • Fixed performance issues in BlueZ backend caused by calling "GetManagedObjects" each time a BleakScanner scans or BleakClient is connected. Fixes #500.
  • Fixed not handling "InterfacesRemoved" in BleakClient in BlueZ backend. Fixes #882.
  • Fixed leaking D-Bus socket file descriptors in BlueZ backend. Fixes #805.

Removed

  • Removed fallback to call "ConnectDevice" when "Connect" fails in Bluez backend. Fixes #806.

0.14.3 (2022-04-29)

Changed

  • Suppress macOS 12 scanner bug error message for macOS 12.3 and higher. Fixes #720.
  • Added filters Discoverable and Pattern to BlueZ D-Bus scanner. Fixes #790.

Fixed

  • Fixed reading the battery level returns a zero-filled bytearray on BlueZ >= 5.48. Fixes #750.
  • Fixed unpairing does not work on windows with WinRT. Fixes #699
  • Fixed leak of _disconnect_futures in CentralManagerDelegate.
  • Fixed callback not removed from _disconnect_callbacks on disconnect in CentralManagerDelegate.

0.14.2 (2022-01-26)

Changed

  • Updated bleak-winrt dependency to v1.1.1. Fixes #741.

Fixed

  • Fixed name is 'Unknown' in WinRT backend. Fixes #736.

0.14.1 (2022-01-12)

Fixed

  • Fixed AttributeError when passing BLEDevice to BleakClient constructor on WinRT backend. Fixes #731.

0.14.0 (2022-01-10)

Added

  • Added service_uuids kwarg to BleakScanner. This can be used to work around issue of scanning not working on macOS 12. Fixes #230. Works around #635.
  • Added UUIDs for LEGO Powered Up Smart Hubs.

Changed

  • Changed WinRT backend to use GATT session status instead of actual device connection status.
  • Changed handling of scan response data on WinRT backend. Advertising data and scan response data is now combined in callbacks like other platforms.
  • Updated bleak-winrt dependency to v1.1.0. Fixes #698.

Fixed

  • Fixed InvalidStateError in CoreBluetooth backend when read and notification of the same characteristic are used. Fixes #675.
  • Fixed reading a characteristic on CoreBluetooth backend also triggers notification callback.
  • Fixed in Linux, scanner callback not setting metadata parameters. Merged #715.

0.13.0 (2021-10-20)

Added

  • Allow 16-bit UUID string arguments to get_service() and get_characteristic().
  • Added register_uuids() to augment the uuid-to-description mapping.
  • Added support for Python 3.10.
  • Added force_indicate keyword argument for WinRT backend client's start_notify method. Fixes #526.
  • Added python-for-android backend.

Changed

  • Changed from winrt dependency to bleak-winrt.
  • Improved error when connecting to device fails in WinRT backend. Fixes #647.
  • Changed examples to use asyncio.run().
  • Changed the default notify method for the WinRT backend from Indicate to Notify.
  • Refactored GATT error handling in WinRT backend.
  • Changed Windows Bluetooth packet capture instructions. Fixes #653.
  • Replaced usage of deprecated @abc.abstractproperty.
  • Use asyncio.get_running_loop() instead of asyncio.get_event_loop().
  • Changed "service is already present" exception to logged error in BlueZ backend. Merged #622.

Removed

  • Removed dotnet backend.
  • Dropped support for Python 3.6.
  • Removed use_cached kwarg from BleakClient connect() and get_services() methods. Fixes #646.

Fixed

  • Fixed unused timeout in the implementation of BleakScanner's find_device_by_address() function.
  • Fixed BleakClient ignoring the adapter kwarg. Fixes #607.
  • Fixed writing descriptors in WinRT backend. Fixes #615.
  • Fixed race on disconnect and cleanup of BlueZ matches when device disconnects early. Fixes #603.
  • Fixed memory leaks on Windows.
  • Fixed protocol error code descriptions on WinRT backend. Fixes #532.
  • Fixed race condition hitting assentation in BlueZ disconnect() method. Fixes #641.
  • Fixed enumerating services on a device with HID service on WinRT backend. Fixes #599.
  • Fixed subprocess running to check BlueZ version each time a client is created. Fixes #602.
  • Fixed exception when discovering services after reconnecting in CoreBluetooth backend.

0.12.1 (2021-07-07)

Changed

  • Changed minimum winrt package version to 1.0.21033.1. Fixes #589.

Fixed

  • Fixed unawaited future when writing without response on CoreBluetooth backend. Fixes #586.

0.12.0 (2021-06-19)

Added

  • Added mtu_size property for clients.
  • Added WinRT backend.
  • Added BleakScanner.discovered_devices property.
  • Added an event to await when stopping scanners in WinRT and pythonnet backends. Fixes #556.
  • Added BleakScanner.find_device_by_filter static method.
  • Added scanner_byname.py example.
  • Added optional command line argument to specify device to all applicable examples.

Changed

  • Added Programming Language :: Python :: 3.9 classifier in setup.py.
  • Deprecated BleakScanner.get_discovered_devices() async method.
  • Added capability to handle async functions as detection callbacks in BleakScanner.
  • Added error description in addition to error name when BleakDBusError is converted to string.
  • Change typing of data parameter in write methods to Union[bytes, bytearray, memoryview].
  • Improved type hints in CoreBluetooth backend.
  • Use delegate callbacks for get_rssi() on CoreBluetooth backend.
  • Use @objc.python_method where possible in PeripheralDelegate class.
  • Using ObjC key-value observer to wait for BleakScanner.start() and stop() in CoreBluetooth backend.

Fixed

  • Fixed KeyError when trying to connect to BLEDevice from advertising data callback on macOS. Fixes #448.
  • Handling of undetected devices in connect_by_bledevice.py example. Fixes #487.
  • Added Optional typehint for BleakScanner.find_device_by_address.
  • Fixed linux_autodoc_mock_import in docs/conf.py.
  • Minor fix for disconnection event handling in BlueZ backend. Fixes #491.
  • Corrections for the Philips Hue lamp example. Merged #505.
  • Fixed BleakClientBlueZDBus.pair() method always returning True. Fixes #503.
  • Fixed waiting for notification start/stop to complete in CoreBluetooth backend.
  • Fixed write without response on BlueZ < 5.51.
  • Fixed error propagation for CoreBluetooth events.
  • Fixed failed import on CI server when BlueZ is not installed.
  • Fixed notification value should be bytearray on CoreBluetooth. Fixes #560.
  • Fixed crash when cancelling connection when Python runtime shuts down on CoreBluetooth backend. Fixes #538.
  • Fixed connecting to multiple devices using a single BleakScanner on CoreBluetooth backend.
  • Fixed deadlock in CoreBluetooth backend when device disconnects while callbacks are pending. Fixes #535.
  • Fixed deadlock when using more than one service, characteristic or descriptor with the same UUID on CoreBluetooth backend.
  • Fixed exception raised when calling BleakScanner.stop() when already stopped in CoreBluetooth backend.

0.11.0 (2021-03-17)

Added

  • Updated dotnet.client.BleakClientDotNet connect method docstring.
  • Added AdvertisementServiceData in BLEDevice in macOS devices
  • Protection levels (encryption) in Windows backend pairing. Solves #405.
  • Philips Hue lamp example script. Relates to #405.
  • Keyword arguments to get_services method on BleakClient.
  • Keyword argument use_cached on .NET backend, to enable uncached reading of services, characteristics and descriptors in Windows.
  • Documentation on troubleshooting OS level caches for services.
  • New example added: Async callbacks with a queue and external consumer
  • handle property on BleakGATTService objects
  • service_handle property on BleakGATTCharacteristic objects
  • Added more specific type hints for BleakGATTServiceCollection properties.
  • Added asyncio task to disconnect devices on event loop crash in BlueZ backend.
  • Added filtering on advertisement data callbacks on BlueZ backend so that callbacks only occur when advertising data changes like on macOS backend.
  • Added fallback to try org.bluez.Adapter1.ConnectDevice when trying to connect a device in BlueZ backend.
  • Added UART service example.

Fixed

  • Fixed wrong OS write method called in write_gatt_descriptor() in Windows backend. Merged #403.
  • Fixed BaseBleakClient.services_resolved not reset on disconnect on BlueZ backend. Merged #401.
  • Fixed RSSI missing in discovered devices on macOS backend. Merged #400.
  • Fixed scan result shows 'Unknown' name of the BLEDevice. Fixes #371.
  • Fixed a broken check for the correct adapter in BleakClientBlueZDBus.
  • Fixed #445 and #362 for Windows.

Changed

  • Using handles to identify the services. Added handle abstract property to BleakGATTService and storing the services by handle instead of UUID.
  • Changed BleakScanner.set_scanning_filter() from async method to normal method.
  • Changed BlueZ backend to use dbus-next instead of txdbus.
  • Changed BleakClient.is_connected from async method to property.
  • Consolidated D-Bus signal debug messages in BlueZ backend.

Removed

  • Removed all __str__ methods from backend service, characteristic and descriptor implementations in favour of those in the abstract base classes.

0.10.0 (2020-12-11)

Added

  • Added AdvertisementData class used with detection callbacks across all supported platforms. Merged #334.
  • Added BleakError raised during import on unsupported platforms.
  • Added rssi parameter to BLEDevice constructor.
  • Added detection_callback kwarg to BleakScanner constructor.

Changed

  • Updated minimum PyObjC version to 7.0.1.
  • Consolidated implementation of BleakScanner.register_detection_callback(). All platforms now take callback with BLEDevice and AdvertisementData arguments.
  • Consolidated BleakScanner.find_device_by_address() implementations.
  • Renamed "device" kwarg to "adapter" in BleakClient and BleakScanner. Fixes #381.

Fixed

  • Fixed use of bare exceptions.
  • Fixed BleakClientBlueZDBus.start_notify() misses initial notifications with fast Bluetooth devices. Fixed #374.
  • Fix event callbacks on Windows not running in asyncio event loop thread.
  • Fixed BleakScanner.discover() on older versions of macOS. Fixes #331.
  • Fixed disconnect callback on BlueZ backend.
  • Fixed calling BleakClient.is_connected() on Mac before connection.
  • Fixed kwargs ignored in BleakScanner.find_device_by_address() in BlueZ backend. Fixes #360.

Removed

  • Removed duplicate definition of BLEDevice in BlueZ backend.
  • Removed unused imports.
  • Removed separate implementation of global discover method.

0.9.1 (2020-10-22)

Added

  • Added new attribute _device_info on BleakClientBlueZDBus. Merges #347.
  • Added Pull Request Template.

Changed

  • Updated instructions on how to contribute, file issues and make PRs.
  • Updated AUTHORS.rst file with development team.

Fixed

  • Fix well-known services not converted to UUIDs in BLEDevice.metadata in CoreBluetooth backend. Fixes #342.
  • Fix advertising data replaced instead of merged in scanner in CoreBluetooth backend. Merged #343.
  • Fix CBCentralManager not properly waited for during initialization in some cases.
  • Fix AttributeError in CoreBluetooth when using BLEDeviceCoreBluetooth object.

0.9.0 (2020-10-20)

Added

  • Timeout for BlueZ backend connect call to avoid potential infinite hanging. Merged #306.
  • Added Interfaces API docs again.
  • Troubleshooting documentation.
  • noqa flags added to BleakBridge imports.
  • Adding a timeout on OSX so that the connect cannot hang forever. Merge #336.

Changed

  • BleakCharacteristic.description() on .NET now returns the same value as other platforms.
  • Changed all adding and removal of .NET event handler from +=/-= syntax to calling add_ and remove_ methods instead. This allows for proper removal of event handlers in .NET backend.
  • All code dependence on the BleakBridge is now removed. It is only imported to allow for access to UWP namespaces.
  • Removing internal method _start_notify in the .NET backend.
  • GattSession object now manages lifetime of .NET BleakClient connection.
  • BleakClient in .NET backend will reuse previous device information when reconnecting so that it doesn't have to scan/discover again.

Fixed

  • UUID property bug fixed in BlueZ backend. Merged #307.
  • Fix for broken RTD documentation.
  • Fix UUID string arguments should not be case sensitive.
  • Fix BleakGATTService.get_characteristic() method overridden with NotImplementedError in BlueZ backend.
  • Fix AttributeError when trying to connect using CoreBluetooth backend. Merged #323.
  • Fix disconnect callback called multiple times in .NET backend. Fixes #312.
  • Fix BleakClient.disconnect() method failing when called multiple times in .NET backend. Fixes #313.
  • Fix BleakClient.disconnect() method failing when called multiple times in Core Bluetooth backend. Merge #333.
  • Catch RemoteError in is_connected in BlueZ backend. Fixes #310,
  • Prevent overwriting address in constructor of BleakClient in BlueZ backend. Merge #311.
  • Fix nordic uart UUID. Merge #339.

0.8.0 (2020-09-22)

Added

  • Implemented set_disconnected_callback in the .NET backend BleakClient implementation.
  • Added find_device_by_address method to the BleakScanner interface, for stopping scanning when a desired address is found.
  • Implemented find_device_by_address in the .NET backend BleakScanner implementation and switched its BleakClient implementation to use that method in connect.
  • Implemented find_device_by_address in the BlueZ backend BleakScanner implementation and switched its BleakClient implementation to use that method in connect.
  • Implemented find_device_by_address in the Core Bluetooth backend BleakScanner implementation and switched its BleakClient implementation to use that method in connect.
  • Added text representations of Protocol Errors that are visible in the .NET backend. Added these texts to errors raised.
  • Added pairing method in BleakClient interface.
  • Implemented pairing method in .NET backend.
  • Implemented pairing method in the BlueZ backend.
  • Added stumps and NotImplementedError on pairing in macOS backend.
  • Added the possibility to connect using BLEDevice instead of a string address. This allows for skipping the discovery call when connecting.

Removed

  • Support for Python 3.5.

Changed

  • BREAKING CHANGE All notifications now have the characteristic's integer handle instead of its UUID as a string as the first argument sender sent to notification callbacks. This provides the uniqueness of sender in notifications as well.
  • Renamed BleakClient argument address to address_or_ble_device.
  • Version 0.5.0 of BleakUWPBridge, with some modified methods and implementing IDisposable.
  • Merged #224. All storing and passing of event loops in bleak is removed.
  • Removed Objective C delegate compliance checks. Merged #253.
  • Made context managers for .NET DataReader and DataWriter.

Fixed

  • .NET backend loop handling bug entered by #224 fixed.
  • Removed default DEBUG level set to bleak logger. Fixes #251.
  • More coherency in logger uses over all backends. Fixes #258
  • Attempted fix of #255 and #133: cleanups, disposing of objects and creating new BleakBridge instances each disconnect.
  • Fixed some type hints and docstrings.
  • Modified the connected_peripheral_delegate handling in macOS backend to fix #213 and #116.
  • Merged #270, fixing a critical bug in get_services method in Core Bluetooth backend.
  • Improved handling of disconnections and is_connected in BlueZ backend to fix #259.
  • Fix for set_disconnected_callback on Core Bluetooth. Fixes #276.
  • Safer Core Bluetooth presence check. Merged #280.

0.7.1 (2020-07-02)

Changed

  • Improved, more explanatory error on BlueZ backend when BleakClient cannot find the desired device when trying to connect. (#238)
  • Better-than-nothing documentation about scanning filters added (#230).
  • Ran black on code which was forgotten in 0.7.0. Large diffs due to that.
  • Re-adding Python 3.8 CI "tests" on Windows again.

Fixed

  • Fix when characteristic updates value faster than asyncio schedule (#240 & #241)
  • Incorrect MANIFEST.in corrected. (#244)

0.7.0 (2020-06-30)

Added

  • Better feedback of communication errors to user in .NET backend and implementing error details proposed in #174.
  • Two devices example file to use for e.g. debugging.
  • Detection/discovery callbacks in Core Bluetooth backend Scanner implemented.
  • Characteristic handle printout in service_explorer.py.
  • Added scanning filters to .NET backend's discover method.

Changed

  • Replace NSRunLoop with dispatch queue in Core Bluetooth backend. This causes callbacks to be dispatched on a background thread instead of on the main dispatch queue on the main thread. call_soon_threadsafe() is used to synchronize the events with the event loop where the central manager was created. Fixes #111.
  • The Central Manager is no longer global in the Core Bluetooth backend. A new one is created for each BleakClient and BleakScanner. Fixes #206 and #105.
  • Merged #167 and reworked characteristics handling in Bleak. Implemented in all backends; bleak now uses the characteristics' handle to identify and keep track of them. Fixes #139 and #159 and allows connection for devices with multiple instances of the same characteristic UUIDs.
  • In requirements.txt and Pipfile, the requirement on pythonnet was bumped to version 2.5.1, which seems to solve issues described in #217 and #225.
  • Renamed HISTORY.rst to CHANGELOG.rst and adopted the Keep a Changelog format.
  • Python 3.5 support from macOS is officially removed since pyobjc>6 requires 3.6+
  • Pin pyobjc dependencies to use at least version 6.2. (PR #194)
  • Pin development requirement on bump2version to version 1.0.0
  • Added .pyup.yml for Pyup
  • Using CBManagerState constants from pyobj instead of integers.

Removed

  • Removed documentation note about not using new event loops in Linux. This was fixed by #143.
  • _central_manager_delegate_ready was removed in macOS backend.
  • Removed the bleak.backends.bluez.utils.get_gatt_service_path method. It is not used by bleak and possibly generates errors.

Fixed

  • Improved handling of the txdbus connection to avoid hanging of disconnection clients in BlueZ backend. Fixes #216, #219 & #221.
  • #150 hints at the device path not being possible to create as is done in the get_device_object_path method. Now, we try to get it from BlueZ first. Otherwise, use the old fallback.
  • Minor documentation errors corrected.
  • CBManagerStatePoweredOn is now properly handled in Core Bluetooth.
  • Device enumeration in discover``and ``Scanner corrected. Fixes #211
  • Updated documentation about scanning filters.
  • Added workaround for isScanning attribute added in macOS 10.13. Fixes #234.

0.6.4 (2020-05-20)

Fixed

  • Fix for bumpversion usage

0.6.3 (2020-05-20)

Added

  • Building and releasing from Github Actions

Removed

  • Building and releasing on Azure Pipelines

0.6.2 (2020-05-15)

Added

  • Added disconnection_callback functionality for Core Bluetooth (#184 & #186)
  • Added requirements.txt

Fixed

  • Better cleanup of Bluez notifications (#154)
  • Fix for read_gatt_char in Core Bluetooth (#177)
  • Fix for is_disconnected in Core Bluetooth (#187 & #185)
  • Documentation fixes

0.6.1 (2020-03-09)

Fixed

  • Including #156, lost notifications on macOS backend, which was accidentally missed on previous release.

0.6.0 (2020-03-09)

  • New Scanner object to allow for async device scanning.
  • Updated txdbus requirement to version 1.1.1 (Merged #122)
  • Implemented write_gatt_descriptor for Bluez backend.
  • Large change in Bluez backend handling of Twisted reactors. Fixes #143
  • Modified set_disconnected_callback to actually call the callback as a callback. Fixes #108.
  • Added another required parameter to disconnect callbacks.
  • Added Discovery filter option in BlueZ backend (Merged #124)
  • Merge #138: comments about Bluez version check.
  • Improved scanning data for macOS backend. Merge #126.
  • Merges #141, a critical fix for macOS.
  • Fix for #114, write with response on macOS.
  • Fix for #87, DIctionary changes size on .NET backend.
  • Fix for #127, uuid or str on macOS.
  • Handles str/uuid for characteristics better.
  • Merge #148, Run .NET backend notifications on event loop instead of main loop.
  • Merge #146, adapt characteristic write log to account for WriteWithoutResponse on macOS.
  • Fix for #145, Error in cleanup on Bluez backend.
  • Fix for #151, only subscribe to BlueZ messages on DBus. Merge #152.
  • Fix for #142, Merge #144, Improved scanning for macOS backend.
  • Fix for #155, Merge #156, lost notifications on macOS backend.
  • Improved type hints
  • Improved error handling for .NET backend.
  • Documentation fixes.

0.5.1 (2019-10-09)

  • Active Scanning on Windows, #99 potentially solving #95
  • Longer timeout in service discovery on BlueZ
  • Added timeout to constructors and connect methods
  • Fix for get_services on macOS. Relates to #101
  • Fixes for disconnect callback on BlueZ, #86 and #83
  • Fixed reading of device name in BlueZ. It is not readable as regular characteristic. #104
  • Removed logger feedback in BlueZ discovery method.
  • More verbose exceptions on macOS, #117 and #107

0.5.0 (2019-08-02)

  • macOS support added (thanks to @kevincar)
  • Merged #90 which fixed #89: Leaking callbacks in BlueZ
  • Merged #92 which fixed #91, Prevent leaking of DBus connections on discovery
  • Merged #96: Regex patterns
  • Merged #86 which fixed #83 and #82
  • Recovered old .NET discovery method to try for #95
  • Merged #80: macOS development

0.4.3 (2019-06-30)

  • Fix for #76
  • Fix for #69
  • Fix for #74
  • Fix for #68
  • Fix for #70
  • Merged #66

0.4.2 (2019-05-17)

  • Fix for missed part of PR #61.

0.4.1 (2019-05-17)

  • Merging of PR #61, improvements and fixes for multiple issues for BlueZ backend
  • Implementation of issue #57
  • Fixing issue #59
  • Documentation fixes.

0.4.0 (2019-04-10)

  • Transferred code from the BleakUWPBridge C# support project to pythonnet code
  • Fixed BlueZ >= 5.48 issues regarding Battery Service
  • Fix for issue #55

0.3.0 (2019-03-18)

  • Fix for issue #53: Windows and Python 3.7 error
  • Azure Pipelines used for CI

0.2.4 (2018-11-30)

  • Fix for issue #52: Timing issue getting characteristics
  • Additional fix for issue #51.
  • Bugfix for string method for BLEDevice.

0.2.3 (2018-11-28)

  • Fix for issue #51: dpkg-query not found on all Linux systems

0.2.2 (2018-11-08)

  • Made it compliant with Python 3.5 by removing f-strings

0.2.1 (2018-06-28)

  • Improved logging on .NET discover method
  • Some type annotation fixes in .NET code

0.2.0 (2018-04-26)

  • Project added to Github
  • First version on PyPI.
  • Working Linux (BlueZ DBus API) backend.
  • Working Windows (UWP Bluetooth API) backend.

0.1.0 (2017-10-23)

  • Bleak created.