Releases: h2zero/NimBLE-Arduino
Releases · h2zero/NimBLE-Arduino
Release list
2.5.1
Fixed
- Scan response timer causing crash on reinit cycle.
- Arduino 3.3.11 build/crash with esp32 c5/c6 variants.
- Clarified NimBLEAddress(uint8_t[6], type) byte order in docs.
NimBLEEddystoneTLMbyte-order mismatch between getters and setters.NimBLEAttValue- preserve capacity after realloc failure.- whiteListRemove use-after-free — loop continues on invalidated iterator causing a crash.
- Infinite recursion bug for ticks to ms conversion.
2.5.0
Fixed
NimBLEClientconnection state tracking.- Calling disconnect will no longer return false if the HCI response is "Unknown ID".
- Remote descriptors not found when characteristic vector handles out of order.
setValuewith char inputs now calculates the data length correctly.
Added
NimBLEServer::sendServiceChangedIndicationSends the service changed indication to peers so they refresh their database.NimBLEScanuser configuarable scan response timer added to prevent unreported devices on long duration scans.NimBLEClientConnection retry on connection establishment failure, retry count configurable by app, default 2.- ANCS Example
l2CapDisconnect API
2.4.0
Fixed
- GATT attribute handles are now assigned from the registration callback so duplicate UUID attributes are identified correctly.
- Dynamic service changes now properly remove characteristics/descriptors and reset the GATT database when advertising starts.
- Missing notification/indication payload data when the value spans multiple mbufs, such as values larger than 255 bytes with small ACL buffers.
NimBLEDevice::createServerwill longer crash when called before the stack is initialized.- Re-pairing after deleting all bonds now works by unpairing each stored bond instead of only deleting NVS data.
- Whitelist bounds checks.
NimBLEDevice::getBondedAddressindex bounds validation.- ESP32 linker error when both central and peripheral roles are disabled.
- Compiler warnings when bonds are disabled.
Added
NimBLEStream,NimBLEStreamClient, andNimBLEStreamServerclasses and examples.NimBLECppVersion.hwith compile-time version macros.NimBLEDevice::getVersionruntime version string helper.- Matching passkey callbacks for both roles:
NimBLEServerCallbacks::onPassKeyEntryandNimBLEClientCallbacks::onPassKeyDisplay. - Bond migration helpers to convert bond storage between v1 and current formats while preserving existing bonds.
NimBLEUUIDconstructor overload forble_uuid_t*.- Optional
indexparameter forNimBLECharacteristic::getDescriptorByUUIDto access multiple descriptors with the same UUID.
Changed
NimBLEService::startis deprecated; services are now added when the server starts.NimBLEHIDDevice::startServices()is deprecated; services are now added when the server starts.
2.3.9
2.3.8
Fixed
- Crash on init with esp32 devices with Arduino core 3.3.7 and later.
- Crash on deinit with esp32c6/c5/c2/h2.
- Memory leak on init/deinit with esp32c6/c5/c2/h2 when NimBLE is enabled in the Arduino core.
- Multiple definition compilation errors with esp32c2 when using an Arduino core with NimBLE enabled.
2.3.7
Fixed
- Server created client instance will now receive notifications/indications from the peer.
- Improper HCI delay when ACL buffers are full (esp32)
NimBLEClientdisconnect event not triggered if the peer address doesn't match a connection.- Attribute value sizes now correctly calculated for types larger than 8 bits.
NimBLERemoteCharacteristic::retrieveDescriptorswill now use the handle range of the characteristic.
Added
NimBLECharacteristicCallbacks::onStatusoverload that takes aNimBLEConnInfo¶meter to indicate which client the status is for.
Changed
NimBLEDevice::setCustomGapHandleradded a void pointer parameter to allow passing user data to the custom handler.