Introduction
Silicon Labs is a leading vendor in Bluetooth hardware and software technologies, used in products such as sports and fitness, consumer electronics, beacons, and smart home applications. The core SDK is an advanced Bluetooth 5-compliant stack that provides all of the core functionality along with multiple API to simplify development. The core functionality offers both standalone mode allowing a developer to create and run their application directly on the SoC, or in NCP mode allowing for the use of an external host MCU.
Extensions to the SDK include Bluetooth Mesh and Apple® HomeKit® for customers seeking the additional capabilities.
SDK Versions Covered:
- 2.12.4.0 released on November 8, 2019
- 2.12.3.0 released on September 13, 2019
- 2.12.2.0 released on August 16, 2019
- 2.12.1.0 released on July 19, 2019
- 2.12.0.0 released on June 7, 2019
Key Features
- Support for BG21 and MG21 modules:
- BGM210P, MGM210P
- BGM210L, MGM210L
- Support for:
- EFR32[B|M]G13 Rev D
- EFR32BG12 QFN68 I-Grade
- Bluetooth 5.0: Advertising packet chaining
Compatibility and Use Notices
If you are new to the Silicon Labs Bluetooth SDK, see Using This Release.
Compatible Compilers:
- IAR Embedded Workbench for ARM (IAR-EWARM) version 8.30.1
- Using wine to build with the IARBuild.exe command line utility or IAR Embedded Workbench GUI on macOS or Linux could result in incorrect files being used due to collisions in wine's hashing algorithm for generating short file names.
- Customers on macOS or Linux are advised not to build with IAR outside of Simplicity Studio. Customers who do should carefully verify that the correct files are being used.
- GCC (The GNU Compiler Collection) version 7.2.1, provided with Simplicity Studio.
1 New Items
Gecko Platform release notes are now available through Simplicity Studio's Launcher Perspective, under SDK Documentation > Bluetooth SDK 2.12.n.n > Release Notes. The Gecko Platform code provides functionality that supports protocol plugins and APIs in the form of drivers and other lower layer features that interact directly with Silicon Labs chips and modules. Gecko Platform components include EMLIB, EMDRV, RAIL Library, NVM3, and mbedTLS.
1.1 New Features
Added in release 2.12.2.0
PHY settings on a Bluetooth connection
This feature allows the application to set preferred PHYs the stack should take into account in PHY selection, and the PHYs the stack can accept when the remote device initiates a PHY update.
Added in release 2.12.0.0
Advertising packet chaining
With this feature, the total amount of advertising data in an advertising packet can be up to 1650 bytes in extended advertising.
1.2 New APIs
For additional documentation and command descriptions please refer to the Bluetooth Software API Reference Manual.
Added in release 2.12.2.0
- cmd_le_gap_set_conn_phy
- cmd_le_connection_set_preferred_phy
Added in release 2.12.0.0
- cmd_gatt_server_set_max_mtu
- cmd_le_connection_set_timing_parameters
- cmd_le_gap_set_conn_timing_parameters
- cmd_le_gap_set_long_advertising_data
- cmd_sm_set_minimum_key_size
- cmd_system_data_buffer_write
- cmd_system_data_buffer_clear
2 Improvements
2.1 Changed APIs
Changed in release 2.12.4.0
evt_cte_receiver_iq_report
Event counter and several other parameters are added into this event.
Changed in release 2.12.0.0
- cmd_le_gap_bt5_set_adv_data: Removed the 191 bytes advertising data limitation for extended advertising.
- cmd_le_gap_set_adv_data: Removed the 191 bytes advertising data limitation for extended advertising.
- evt_le_gap_extended_scan_response: Added new value in packet_type parameter for data incomplete status.
- evt_le_gap_scan_response: Added new value in packet_type parameter for data incomplete status.
- evt_sync_data: Added new value in data_status parameter for data incomplete status.
3 Fixed Issues
Fixed in release 2.12.4.0
ID # | Description |
---|---|
429536 | Documented that maximum 191 bytes of advertisement data can be set for connectable extended advertising. |
437725 | To improve IOP with legacy devices, the stack doesn't set the bit for Channel Selection Algorithm #2 in CONNECT_IND packets when opening connection to a device which doesn't support Channel Selection Algorithm #2. |
Fixed in release 2.12.3.0
ID # | Description |
---|---|
404249 | Fix an issue that radio may get stuck in RX state with low RSSI signals, which causes the Bluetooth stack becoming unresponsive. |
415812 | Fix an IOP problem with some smartphones that connection requests from these phones are often not received, which causes connections taking too long to establish. |
430101 | Fix an issue that setting TX Power between -13 and 0 dBm results in much lower transmit power. This issue can cause a noticeable performance degradation in RF polluted environments. |
430225 | Fix PS Key CTUNE control for EFR32xG21 parts. |
431563 | Fix poor OTA performance. |
431657 | Fix a memory leak when the stack opened a connection but connection failed to establish after 6 connection intervals. |
Fixed in release 2.12.2.0
ID # | Description |
---|---|
376747 | Fix the voice_over_ble Thunderboard example to dynamically perform GATT service discovery for using correct handles to read characteristic values. |
402234 | More fixes for the disconnection issue caused by connection updates with certain parameters. |
420208 | Fix NCP wake-up pin polarity handling (NCP_WAKEUP_POLARITY), so that the defined polarity is taken into account. |
420807 | Fix the usage of HFXO calibration values for xGM210 modules to avoid reading incorrect calibration values at initialization time. |
Fixed in release 2.12.1.0
ID # | Description |
---|---|
384097 | Fix unstable connection issue while the master device has multiple simultaneous connections and is performing scanning. |
384144 | Fix an issue that the stack may return the link layer procedure response timeout error when closing a Bluetooth connection. |
391346 | After advertising is started the stack will send the first advertisement straight away. Previously it might send it after the first advertisement interval has elapsed. |
402234 | Fix disconnection issue when performing connection update with slave latency and specific interval parameters. |
403819 | Apploader can now write images right up to the NVM start address. |
406537 | Fix missing ADI field in chained advertisement packets. |
406691 | The stack can now handle 255 bytes data in cmd_system_data_buffer_write command. |
406977 | Periodic advertising data can now be set in stack when the periodic advertising has not been started. Previously this command returns an error. |
407673 | The stack now blocks the example LTK in Bluetooth specification if sent by the other device. This security improvement addresses vulnerability CVE-2019-2102. |
407871 | Fix default RF antenna pin selection for EFR32xG21 parts, radio boards and xGM210 modules. |
411446 | If advertising single event at a time, the stack does not check anymore if packet length would exceed advertising interval. Previously packet_too_long error would have been returned. |
Fixed in release 2.12.0.0
ID # | Description |
---|---|
412625 | The stack ensures that the GATT database hash value is calculated when it is first read by command gecko_cmd_gatt_server_read_attribute_value. Previously an incorrect value might be returned in this case. Additionally the fix also prevents from overwriting the hash value with gecko_cmd_gatt_server_write_attribute_value. |
412725 | A change was introduced in version 2.12.0 which caused compatibility issues with TB Sense mobile app. This change was reversed to fix those issues and it will be reintroduced when board detection gets improved on the TB Sense mobile app side. |
397063 | In Bluetooth SDK 2.11.4 and 2.11.5, occasionally the stack is unable to receive all GATT write without response or characteristic value notification PDUs. |
337089 | Deleting the bonding of a device while the device is still connected causes the stack using outdated bonding data on the connection. This has been fixed so that the connection is also closed after the bonding has been deleted. |
384093 | The application cannot configure the maximum ATT MTU if GATT client is excluded. This has been fixed by adding a new equivalent API in GATT server class. |
387745 | When Bluetooth runs in RTOS, the stack initialization may cause assertions. |
391345 | Advertising could not be restarted if a timeout has been set previously. |
396352 | Increasing security on a connection with previously bonded devices may fail. |
398948 | The stack does not correctly inform the application about ATT MTU size change if the remote device first denies the stack's ATT MTU exchange request and then initiates another ATT MTU exchange request. |
4 Known Issues in the Current Release
Issues in bold were added since the previous release.
ID # | Description | Workaround |
---|---|---|
243009 | With certain events, GCC breakpoints cannot be set. | Change optimization level to none in project settings |
335894 | Command gecko_cmd_gatt_discover_primary_services_by_uuid returns success in case of incomplete parameters. | None |
337467 | MGM12P has poor signal strength when doing OTA with Apploader. | None |
360313 | Default RAIL assertion (RAILCb_AssertFailed) enters an infinite loop causing the stack not responsive. | Override RAIL assertion function in application space following these instructions. |
361592 | The sync_data event does not report TX power. | None |
368798 | Example project soc-thunderboard_sense_2 does not print float values correctly. | In project C/C++ settings, enable the printf float option. |
396308 | In NCP, BGAPI may be out of sync between the host and target when the target is reset in the middle of sending a BGAPI message to host. The out of sync issue could cause the host unable to communicate with the target. | In NCP target, add a delay to flush NCP Tx queue after a system reset command is received. |
415583 | The stack returns wrong state instead of out of memory error if application sends a characteristic notification to all connections in low memory situation. | In application, treat this condition as low memory. |
420866 | With iPhone6, the stack could become unresponsive if it is sending lots of data using characteristic notifications to the phone. | In application, do not use a loop waiting for the success of sending characteristic notification operation. When an out of memory error is received from this operation, a timer should be used to retry the operation later. |
431452 | When the requested TX Power is above 0 dBm, the actual transmit power may deviate randomly. | None |
436243 | The soc-dtm example does not correctly timeout incoming data due to incorrect HW initialization. | On EFR32xG1 devices, initialize CRYOTIMER to 32768 Hz ticks. No workaround for EFR32xG21 devices. |
5 Deprecated Items
Deprecated in release 2.12.2.0
Deprecated APIs
- cmd_le_connection_set_phy
- The replacement is cmd_le_connection_set_preferred_phy.
Deprecated in release 2.12.1.0
Deprecated item: EFR32BG14 Part Support
Reason: The EFR32BG14 is EOL.
End-of-Service (EoS) Date: June 2020. As of this EoS date, EFR32BG14 part support will no longer be available in the then current and future GSDK releases, and EFR32BG14 parts will no longer be supported in any GSDK releases.
Maintenance Period: From now until the EoS date, only critical bug fixes and security patches may be made available on currently supported GSDK releases.
Replacement: EFR32BG13.
Deprecated in release 2.12.0.0
As of June 2019 Simplicity Studio 3.0 is being deprecated. All access will be removed from Silicon Labs' website at the end of 2019.
Deprecated APIs
- cmd_le_gap_set_conn_parameters
- The replacement is cmd_le_gap_set_conn_timing_parameters.
- cmd_le_connection_set_parameters
- The replacement is cmd_le_connection_set_timing_parameters.
6 Removed Items
None
7 Using This Release
This release contains the following:
- Silicon Labs Bluetooth stack library
- Bluetooth sample applications
For more information about the Bluetooth SDK see QSG139: Getting Started with Bluetooth® Software Development. If you are new to Bluetooth see UG103.14: Bluetooth LE Fundamentals.
7.1 Installation and Use
A registered account at Silicon Labs is required in order to download the Silicon Labs Bluetooth SDK. You can register at https://siliconlabs.force.com/apex/SL_CommunitiesSelfReg?form=short.
Stack installation instruction are covered in QSG139: Getting Started with Bluetooth® Software Development.
Use the Bluetooth SDK with the Silicon Labs Simplicity Studio V4 development platform. Simplicity Studio ensures that most software and tool compatibilities are managed correctly. Install software and board firmware updates promptly when you are notified.
Documentation specific to the SDK version is installed with the SDK. Additional information can often be found in the knowledge base articles (KBAs). API references and other information about this and earlier releases is available on https://docs.silabs.com/.
7.2 Support
Development Kit customers are eligible for training and technical support. You can use the Silicon Labs Bluetooth LE web page to obtain information about all Silicon Labs Bluetooth products and services, and to sign up for product support.
You can contact Silicon Laboratories support at http://www.silabs.com/support.
8 Legal
8.1 Disclaimer
Silicon Labs intends to provide customers with the latest, accurate, and in-depth documentation of all peripherals and modules available for system and software implementers using or intending to use the Silicon Labs products. Characterization data, available modules and peripherals, memory sizes and memory addresses refer to each specific device, and "Typical" parameters provided can and do vary in different applications.
Application examples described herein are for illustrative purposes only.
Silicon Labs reserves the right to make changes without further notice and limitation to product information, specifications, and descriptions herein, and does not give warranties as to the accuracy or completeness of the included information. Silicon Labs shall have no liability for the consequences of use of the information supplied herein. This document does not imply or express copyright licenses granted hereunder to design or fabricate any integrated circuits. The products are not designed or authorized to be used within any Life Support System. A "Life Support System" is any product or system intended to support or sustain life and/or health, which, if it fails, can be reasonably expected to result in significant personal injury or death. Silicon Labs products are not designed or authorized for military applications. Silicon Labs products shall under no circumstances be used in weapons of mass destruction including (but not limited to) nuclear, biological or chemical weapons, or missiles capable of delivering such weapons.
8.2 Trademark Information
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® and the Silicon Labs logo®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember®, Energy Micro, Energy Micro logo and combinations thereof, "the world's most energy friendly microcontrollers", Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Micrium, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY®, Telegesis, the Telegesis Logo®, USBXpress®, Zentri, Z-Wave and others are trademarks or registered trademarks of Silicon Labs.
ARM, CORTEX, Cortex-M3 and THUMB are trademarks or registered trademarks of ARM Holdings.
Keil is a registered trademark of ARM Limited.
Apple and HomeKit are registered trademarks of Apple Inc. All other products or brand names mentioned herein are trademarks of their respective holders.