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.
Unreleased
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 ofbleak.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 instart_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 BlueZis_connected()
andget_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 toBleakScanner
. 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 inBleakClient.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 toBleakClient()
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
andBLEDevice.metadata
. Fixes #1025.BLEDevice
now uses__slots__
to reduce memory usage. Merged #1117.BaseBleakClient.services
is nowNone
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 raiseBleakDBusError
withorg.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 incorrectlyNone
.Fixed unhandled exception in
CentralManagerDelegate
destructor on macOS. Fixes #1219.Fixed object passed to
disconnected_callback
is notBleakClient
. 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 byconnect
,pair
andunpair
. Merged #1022.Added
rssi
attribute toAdvertisementData
. Merged #1047.Added
BleakScanner.discovered_devices_and_advertisement_data
property. Merged #1047.Added
return_adv
argument toBleakScanner.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
andBleakClient
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
toBleakGattCharacteristic
. Fixes #759.
Fixed
Fixed
tx_power
not included inAdvertisementData.__repr__
when 0. Merged #1017.
0.17.0 (2022-09-12)
Added
AdvertisementData
class now has an attributetx_power
. Merged #987.
Changed
BleakClient
methods now raiseBleakError
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
andget_services
with thedangerous_use_bleak_cache
argument to avoid services being resolved again. Merged #923.The BlueZ D-Bus backend now uses
dbus-fast
package instead ofdbus-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
anddescriptors
properties ofBleakGATTCharacteristic
. 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 ofasyncio.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 andAdvertisementDataType
enum.Added new
bluez
kwarg toBleakScanner
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 ofaddress_type
as keyword argument. It will be moved into thewinrt
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()
argsdetection_callback
andservice_uuids
are no longer keyword-only.BleakScanner()
argscanning_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 inBleakScanner
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 orBleakClient
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
andPattern
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
inCentralManagerDelegate
.Fixed callback not removed from
_disconnect_callbacks
on disconnect inCentralManagerDelegate
.
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 passingBLEDevice
toBleakClient
constructor on WinRT backend. Fixes #731.
0.14.0 (2022-01-10)
Added
Added
service_uuids
kwarg toBleakScanner
. 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()
andget_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’sstart_notify
method. Fixes #526.Added python-for-android backend.
Changed
Changed from
winrt
dependency tobleak-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
toNotify
.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 ofasyncio.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 fromBleakClient
connect()
andget_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 insetup.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 inPeripheralDelegate
class.Using ObjC key-value observer to wait for
BleakScanner.start()
andstop()
in CoreBluetooth backend.
Fixed
Fixed
KeyError
when trying to connect toBLEDevice
from advertising data callback on macOS. Fixes #448.Handling of undetected devices in
connect_by_bledevice.py
example. Fixes #487.Added
Optional
typehint forBleakScanner.find_device_by_address
.Fixed
linux_autodoc_mock_import
indocs/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 returningTrue
. 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 bebytearray
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 devicesProtection levels (encryption) in Windows backend pairing. Solves #405.
Philips Hue lamp example script. Relates to #405.
Keyword arguments to
get_services
method onBleakClient
.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 onBleakGATTService
objectsservice_handle
property onBleakGATTCharacteristic
objectsAdded 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 oftxdbus
.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 toBLEDevice
constructor.Added
detection_callback
kwarg toBleakScanner
constructor.
Changed
Updated minimum PyObjC version to 7.0.1.
Consolidated implementation of
BleakScanner.register_detection_callback()
. All platforms now take callback withBLEDevice
andAdvertisementData
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
onBleakClientBlueZDBus
. 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 callingadd_
andremove_
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 .NETBleakClient
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 withNotImplementedError
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 backendBleakClient
implementation.Added
find_device_by_address
method to theBleakScanner
interface, for stopping scanning when a desired address is found.Implemented
find_device_by_address
in the .NET backendBleakScanner
implementation and switched itsBleakClient
implementation to use that method inconnect
.Implemented
find_device_by_address
in the BlueZ backendBleakScanner
implementation and switched itsBleakClient
implementation to use that method inconnect
.Implemented
find_device_by_address
in the Core Bluetooth backendBleakScanner
implementation and switched itsBleakClient
implementation to use that method inconnect
.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
argumentaddress
toaddress_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
andDataWriter
.
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
andBleakScanner
. 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
andPipfile
, the requirement onpythonnet
was bumped to version 2.5.1, which seems to solve issues described in #217 and #225.Renamed
HISTORY.rst
toCHANGELOG.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 PyupUsing 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 #211Updated 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 methodsFix for
get_services
on macOS. Relates to #101Fixes 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.