There are ~100 Knowledge Base Articles (KBAs) in the Bluetooth section of the forum on a diverse range of sub-topics. We know they are sometimes challenging to find, especially when you don't know what exists (and therefore you don't search for it).
To simplify this task we have created a Bluetooth Knowledge Base Article List which has all the KBAs divided into sub-topics. This list only contains KBAs which are meaningful today, so you won't find anything related with SDK 1.x, BGScript or anything else which has been deprecated. Most of those KBAs are still here but their title has been marked with a "[Deprecated]" prefix and a Note pointing for a more updated KBA where applicable. This is to avoid confusing our customers into reading material which is no longer applicable.
It would be great to hear if you find this list useful and any thoughts you might have on how to improve it.
Additionally please check out our Bluetooth training page -> https://www.silabs.com/support/training/bluetooth
Some mobile devices may have connection problems after updating BGX13 to 1.2.2045.0.
SIlicon Labs recently updated the firmware for BGX13 to version 1.2.2045.0.
This version has some feature improvements, but these improvements required that we make some changes to the GATT attributes. Because of this, some phones may experience connection problems after the BGX13 firmware is updated.
Some mobile devices remember the GATT attributes of devices that have been paired or bonded in the past. When the GATT attributes are changed after the 1.2 update, the mobile device cached GATT information is misaligned between the two devices. This causes invalid handles to bluetooth services and characteristics. As a result attempts to connect to the device may no longer work, or some feature may not work such as sending or receiving data between a phone and the specific BGX for which this invalid bonding exists.
Invalid/misaligned bonding data must be cleared and then the bond should be re-established using the correct GATT attributes.
The problem may manifest in the following ways.
On iOS, you may see a message on the device details screen reading "SOME_OTHER_MODE".
On either Android or iOS, you may also see a password dialog appear at an inappropriate time or when no password has been set. You might also see that data is not being sent from the phone to the BGX or from the BGX to the phone.
To solve this problem, perform the following operations:
1. Clarify to yourself what the specific issue is.
2. Apply basic troubleshooting:
3. Consult the datasheets and reference manuals. Sources include:
4. Search to see if someone has asked the same question already.
5. Include the relevant parts of your development setup in the problem description. Examples include:
6. Include steps to reproduce the problem or specific conditions the problem occurs in.
7. Be patient and avoid making duplicates of your question.
For general community usage please refer to the Silicon Labs Community Guidelines.
Hi, i'm making a project with NCP mode with a BGM13P32F512GA
I'm started from your application note : KBA_BT_1602
I would like like to use IAR at IDE. I selected the IAR toolchain and generate a project (from empty_ncp_targert)
Compile and deploy with simplicity studio 4.
All work fine (can dialog with the host--> stm32 mcu)
Now, keep the same files and just compile and deploy with IAR workbench IDE 8.40.2 (with the IAR project created by simplicity studio)
Build without error, the SoC advertise it's name but i can't connect to it !
From host side i can see that it continue to open and close the connection (from appHandleEvents)
Do you an idea where is the mistake please ?
Hi, I'm working on a custom board using a bgm210p032ja module.
Everything on my firmware work fine, but when I try to update it using Silicon Lab OTA DFU it's stop working.
The bootloader I flashed is the "bootloader-storage-internal-single" for 1 Mb flash device, using the procedure : my product->new projects->gecko bootloader 1.10.3 example, the generate , build and flash.
Whith the ota-dfu.exe , the connection start, the module reset itself and seem to enter in dfu mode, but instead it freeze consuming 3mA and nothing happen.
How to resolve this?
I am using EFM32GG11 as MCU host with bluetooth interface via UART.
To Configure I have installed Simplicity Studio V4 with Gecko SDk (Gecko SDK Suite v2.4.1: MCU 126.96.36.199, Micrium OS Kernel).
1.To program BGX13p in bgapi mode what software I need ??
2.Should I need to install Bluetooth SDK??
3. I have installed BGtool to program module(Is this correct)
4.How to configure BGX13p(SLEX 8027) in ncp mode.can I get any example Code
I am trying to compile and upload the SOC-Thunderboard example onto Thunderboard BG22 board. The example compiles but does not work. I mean there is even no PRINTF output to the external terminal console. I cannot even debug it - all debug controls in Simplicity Studio are grayed out. I did not change anything in the example code. I use SDK 7.2.13 with all currently available upgrades.
It seems that the problem is in the debug adapter. I can download the pre-compiled SOC-Thunderboard app and it works fine - I can see PRINTF outputs ad connect to the device. However, that is what I see in the Launcher mode. "No adapter firmware directory specified" message does not appear with my other boards. Is it OK?
Also, when I attempt to download my compiled code I see the following:
After clicking on the link firmware download becomes available, but the app does not work. Please advise how to fix that.
We have the EFR32BG13 (BRD4104A Rev A02) housed on a Wireless Starter Kit (PCB4001 Rev 03), and are having problems -
We are getting an unexpected part mixup and not sure why. When creating a new project for this, the board 'BRD4104A Rev A02' is not recognized in Simplicity Studio so we select the part 'EFR32BG13P632F512GM48' instead¹. This returns the following error report during a debug session attempt -
Hmmm, interesting. Ok, perhaps its right lets try the identified EFR32BG1B232F256GM48 it thinks it saw. With this selected we get -
What? We have the BGM111-A, BGM121 & EFR32BG modules also and they work as expected, what is wrong with this module?
I have BLED112 USB dongle that is connected to a Windows 7 / 10 PC and an Android application that I am using to connect to this dongle.
I am able to connect to the dongle using standard procedure, where the dongle starts advertising, the user scans for Bluetooth devices from Android application and connect successfully after discovering the Bluetooth dongle.
Now my question, is it possible to connect to BLED dongle by encoding the required information in a barcode, and then connect to dongle by scanning the barcode from Android application? If yes, can someone suggest how this can be achieved?
On our card with a STM32L4 we use a BGM13P32 for the BLE. For the moment we use a Soc architecture. To be more flexible and for the update we plan to use now NCP mode for the BGM13.
For that i have followed this good article : https://www.silabs.com/community/wireless/bluetooth/knowledge-base.entry.html/2018/01/18/ncp_host_implementat-PEsT
I have integrated the BGLIB into our STM32 projet (we use stm32IDE), and programmed the BGM13P from NCP target empty example.
This works, but only if i didn't optimize the compiltaion optimization to -Og, see picture under
If i use the -Og option (for our file bluetoothCom.cpp), the bglib functions like gecko_cmd_le_gap_set_advertise_timing() don't appear in the map file (didn't linked). The project build without warning or error but i didn't have the com with the BGM13 !
For information our project is in C++. Join to this post our C++ class for bluetooth com in host side.
Do you have an idea why ?
How can i solve this ?
I was planning to implement a LED driver that blinks LED with music tempo. Seems soft timer would make LED blinking out of sync with music tempo after playing back for a couple minutes.
Is there any more accurate timer I can use instead of soft timer?
Hi, i'm working on a project in which we are using two BGM121 to send data via BLE. We have been exploring the capabilities of your network analyzer, including the files that can be exported from it. Regarding the .txt file with all of the events (such as the one attached to this post), how can we know how many packets were lost/retransmitted? Is there any error code we should be looking for?
We need this information for an analysis regarding the packet transmission between the two devices. Is there any other metric besides packet loss and RSSI that you would recommend that can be extracted with the network analyzer.
Using BLE (BGM13P32) connections between devices of a system, I have timeouts that I would like to solve.
The system contains 8 boards. Each board is made of a Renesas MCU and a BGP13P32 chip (ncp mode).
Each board have internal parameters (A zone number and a device index in the zone).
Finally, the boards are "organized in zones" (Please see below - 8 boards organized in 4 zones).
And see the board_map in attachment.
Zone 1 :
- Board with index 1
- Board with index 2
Zone 2 :
- Board with index 2
- Board with index 3
Zone 3 :
- Board with index 3
- Board with index 4
Zone 4 :
- Board with index 4
- Board with index 1
Using the BGM13P and the BLE protocol, each board is a BLE scanner and a BLE advertizer.
Every 5 minutes, each board enters a scan mode (duration = 10s). In this mode, a device scan the other advertizers and builds 2 lists.
A whitelist (with usefull boards) and a blacklist with (not usefull boards).
For each board, the whitelist contains the other board of the zone and the board of another zone having the same index as it. Concerning the boards in whitelist, a connection is opened and never closed. The other boards are all in blacklist.
Concerning the boards in blacklist, a connection is opened, but when the zone number and the index of the board are obtained, the connection is closed.
For example :
The (Zone1, index 1) board has in its whitelist the two boards :
- Zone 1, index 2
- Zone 4, index 1
The other boards are in blacklist. ( 5 boards in blacklist).
The (Zone 1, index2) board has in its whitelist the two boards:
- Zone 1, index 1
- Zone 2, index 3 The other boards are in blacklist. (5 boards in blacklist).
The problem is the following :
Periodically, each board tries to read "again" the zone number and the index of anoter board. This is done every 15s for boards of its whitelist and every 60 seconds for boards of its blacklist.
So, for the boards of the whitelist, a read_characteristic command is done in order to read the zone number and the index of a distant board.
And, for the boards of the blacklist, a connection is opened, a read_characteristic command is done in order to read the zone number and the index, and the connection is closed.
Because, the 8 devices of the system are doing the same thing, the BLE traffic is to big and a lot of timeouts can be observed.
When a board tries to connect to another board (in blacklist), I have sometimes to wait for more than 10 secondes before the connection is opened. And sometimes, a timeout happen.
Do you think it is normal ?
In this system, is there a way to improve to connectivity (the time in order to open a connection) and suppress timeouts ?
The connection parameters are the following (Min_interval = 6, Max_interval = 14). Do you think these parameters can be improved and how ?
Do you think I have to keep the connection with boards in blacklist opened in order to improve the connectivity?