Skip to content

Releases: simpleble/simpleble

SimpleBLE v0.10.3

24 Jun 21:38

Choose a tag to compare

[0.10.3] - 2025-06-24

Changed

  • (SimpleDBus) Interface creation is now done via a registry.

Fixed

  • (Python) Fixed GIL issues introduced in v0.10.2.

SimpleBLE v0.10.2

21 Jun 04:45

Choose a tag to compare

[0.10.2] - 2025-06-20

Changed

  • (Windows) Experimental option to skip reinitializing the WinRT apartment on the main thread. Default is now to not reinitialize.

Fixed

  • (Python) Fixed several deadlocks in the Python bindings related to new WinRT threading model.

SimpleBLE v0.10.1

31 May 00:26

Choose a tag to compare

[0.10.1] - 2025-05-30

Notes

  • The Rust bindings have undergone a major rewrite of their API, towards a more idiomatic Rust style and stream-based API.
  • iOS and Android do not support powering on and off the adapter. Calling these methods will not have any effect on the adapter.
  • Linux does have support for powering on and off the adapter, but further architecture changes are needed to properly expose this.
  • Callbacks for power on and off events are currently only supported on Windows.
  • Retrieving connected peripherals is currently only supported on Windows. More backends coming soon.

Added

  • Functions for powering adapters on, off and querying their power state.
  • Callbacks to monitor adapter power on and off events.
  • (Windows) Added support for powering adapters on and off.
  • (Windows) Added support for retrieving paired peripherals.
  • (Windows) Added support for retrieving connected peripherals.
  • (Python) Exposed the Adapter::power_on(), Adapter::power_off() and Adapter::is_powered() methods.
  • (Android) Calls to Java methods are now checked for exceptions.
  • (Java) Calls to Java methods are now checked for exceptions.
  • (Android) Added support for requesting a specific connection priority via configuration. (Thanks Nicole S.!)
  • (MacOS) Added support for powering adapters on and off.
  • (Linux) Added configurable connection and disconnection timeouts. (Thanks Kober Engineering!)

Changed

  • (Windows) Calls to the WinRT backend are now executed in a separate MTA apartment by default.
  • (Android) Migrated to using the simplejni library for JNI bindings.
  • API CHANGE: (Rust) Migrated to streams for scan and connection events.
  • API CHANGE: (Rust) Migrated to streams for peripheral notifications and indications.

Fixed

  • (Android) Fixed a bug where the GATT object would not be closed if a connection was lost. (Thanks Nicole S.!)
  • (Rust) Fixed a race condition in the Rust bindings that would cause a crash if the adapter was deleted while a callback was in progress.
  • Added missing operating system definitions for utils.
  • (Linux) Use steady_clock instead of system_clock for timeout calculations. (Thanks Kober Engineering!)

Removed

  • Source code of the simpleble-bridge project in favor of simpledroidbridge.

SimpleBLE v0.9.1

25 Apr 07:12

Choose a tag to compare

[0.9.1] - 2025-04-24

Important:

  • In the near future we will deprecate the simpleble-c target in favor of simplecble, which will be a drop-in replacement for the existing C bindings.
  • The simpleble-bridge project has been renamed to simpledroidbridge and can be found in the root directory of the repository.

Added

  • (Android) Implemented the following API functions:
    • Adapter::scan_get_results()
    • Adapter::get_paired_peripherals()
    • Peripheral::rssi()
    • Peripheral::tx_power()
    • Peripheral::is_connectable()
    • Peripheral::is_paired()
    • Peripheral::manufacturer_data()
    • Peripheral::advertised_services()
  • (Java) Early preview of Java bindings.
  • Configuration class to control the behavior of SimpleBLE internals as well as experimental features.
  • SimpleCBLE: Moved SimpleBLE C bindings into a separate library.

Changed

  • Adapter::identifier() method is non-const, as underlying const conditions can't be guaranteed.
  • (Android) Callback functions are not handled on a separate, dedicated thread.
  • (Windows) (Experimental) Calls to the WinRT backend can now be executed in a separate MTA apartment via feature flag.
  • (Android) The simpleble-bridge project has been renamed to simpledroidbridge.
  • Upgraded fmt dependency to version 11.1.4 and vendorized into the repository.

Fixed

  • (Android) Some potential race conditions in the Android backend.
  • (Android) Fixed handling of null objects.
  • (Android) Peripheral::address_type() and Peripheral::unpair() had to be removed due to API level limitations.
  • (Android) Potential duplicate callback invocations on builds with newer Android API levels.

SimpleBLE v0.9.0

19 Jan 23:27

Choose a tag to compare

[0.9.0] - 2025-01-20

Important: License has changed, please review the new license terms.

Changed

  • Removed unnecessary log print in MacOS backend. (Thanks will-tm!)
  • Remove builders in favor of templated approach. (Thanks jcarrano!)
  • Refactor code to use abstract classes and PIMPL idiom. (Thanks jcarrano!)

SimpleBLE v0.8.1

05 Nov 23:24

Choose a tag to compare

[0.8.1] - 2024-11-05

Added

  • (Android) Alpha preview of Android support.
  • (SimpleDBus) Added templated version of creation and getter functions for Holder class. (Thanks lorsi96!)

Changed

  • Implemented standalone ByteArray class derived from kvn::bytearray. (Thanks tlifschitz!)
  • API CHANGE: Notify and Indicate callback in C bindings now receive the peripheral handle as the first argument.

Fixed

  • (SimpleBluez) Fixed improper handling of non org.Bluez.Service1 objects within a org.bluez.Device1 object. (Thanks Kober Engineering!)
  • (MacOS) Fixed incorrect storage and retrieval with standard Bluetooth UUIDs inside the peripheral class. (Thanks TellowKrinkle!)
  • (Python) Fixed incorrect handling of the GIL in certain functions. (Thanks nomenquis and Medra AI!)

SimpleBLE v0.7.3

23 Mar 17:17

Choose a tag to compare

[0.7.3] - 2024-03-23

Updated the licensing documentation.

Ported over from v0.7.0

Added

  • Function to query the version of SimpleBLE at runtime.
  • (Python) Missing API from SimpleBLE::Characteristic.

Changed

  • (MacOS) Main adapter address is now hardcoded to allow caching based on adapter address. (Thanks BlissChapman!)
  • (Python) Release GIL when calling Peripheral.write_request and Peripheral.write_command.
  • (MacOS) Rewrote the entire backend.
  • (MacOS) OperationFailed exception now contains the error message provided by the OS.

Fixed

  • (MacOS) Remove unnecessary timeout during service discovery. (Thanks BlissChapman!)
  • (MacOS) Return correct list of devices when scanning. (Thanks roozmahdavian!)
  • (MacOS) Remove unnecessary timeout during characteristic notification. (Thanks BlissChapman!)
  • (MacOS) Remove unnecessary timeout during operations on characteristics.
  • (Windows) Failed connection attempt would not trigger an exception. (Thanks eriklins!)
  • (Linux) Use correct UUIDs for advertized services. (Thanks Symbitic!)

SimpleBLE v0.7.1

17 Feb 00:53

Choose a tag to compare

[0.7.1] - 2024-02-16

Bumped version to fix missing new license information in the Python and Rust packages.

Ported over from v0.7.0

Added

  • Function to query the version of SimpleBLE at runtime.
  • (Python) Missing API from SimpleBLE::Characteristic.

Changed

  • (MacOS) Main adapter address is now hardcoded to allow caching based on adapter address. (Thanks BlissChapman!)
  • (Python) Release GIL when calling Peripheral.write_request and Peripheral.write_command.
  • (MacOS) Rewrote the entire backend.
  • (MacOS) OperationFailed exception now contains the error message provided by the OS.

Fixed

  • (MacOS) Remove unnecessary timeout during service discovery. (Thanks BlissChapman!)
  • (MacOS) Return correct list of devices when scanning. (Thanks roozmahdavian!)
  • (MacOS) Remove unnecessary timeout during characteristic notification. (Thanks BlissChapman!)
  • (MacOS) Remove unnecessary timeout during operations on characteristics.
  • (Windows) Failed connection attempt would not trigger an exception. (Thanks eriklins!)
  • (Linux) Use correct UUIDs for advertized services. (Thanks Symbitic!)

SimpleBLE v0.7.0

16 Feb 19:46

Choose a tag to compare

[0.7.0] - 2024-02-15

IMPORTANT: LICENSE TERMS HAVE CHANGED.

Added

  • Function to query the version of SimpleBLE at runtime.
  • (Python) Missing API from SimpleBLE::Characteristic.

Changed

  • (MacOS) Main adapter address is now hardcoded to allow caching based on adapter address. (Thanks BlissChapman!)
  • (Python) Release GIL when calling Peripheral.write_request and Peripheral.write_command.
  • (MacOS) Rewrote the entire backend.
  • (MacOS) OperationFailed exception now contains the error message provided by the OS.

Fixed

  • (MacOS) Remove unnecessary timeout during service discovery. (Thanks BlissChapman!)
  • (MacOS) Return correct list of devices when scanning. (Thanks roozmahdavian!)
  • (MacOS) Remove unnecessary timeout during characteristic notification. (Thanks BlissChapman!)
  • (MacOS) Remove unnecessary timeout during operations on characteristics.
  • (Windows) Failed connection attempt would not trigger an exception. (Thanks eriklins!)
  • (Linux) Use correct UUIDs for advertized services. (Thanks Symbitic!)

SimpleBLE v0.6.1

14 Mar 17:12

Choose a tag to compare

[0.6.1] - 2023-03-14

Added

  • (Python) Generate source distribution packages.
  • (SimpleDBus) Proxy objects keep track of their existence on the DBus object tree.

Changed

  • Bluetooth enabled check was moved into the frontend modules. (Thanks felixdollack!)
  • (Windows) Use the standard C++ exception handling model. (Thanks TheFrankyJoe!)

Fixed

  • CI artifacts for non-standard architectures are now properly built.
  • (SimpleBluez) Fixed incorrect handling of invalidated children objects.

New Contributors

Full Changelog: v0.6.0...v0.6.1