EFR Connect Mobile App
Silicon Labs EFR Connect is a generic mobile app for testing and debugging Bluetooth® Low Energy (BLE) applications. It can help developers to create and troubleshoot BLE applications running on Silicon Labs’ development boards. With EFR Connect, you can quickly troubleshoot your BLE embedded application code, Over-the-Air (OTA) firmware update, data throughput, interoperability, and many other features, with Android and iOS mobiles. You can use the EFR Connect app with all Silicon Labs Bluetooth development kits, System-on-Chips (SoCs), and modules.
This application has five main functional areas:
By default, the app opens in the Scan view. Use the bottom tab bar to move between views.
The EFR Connect mobile application source code for both iOS and Android is available on GitHub under the Apache 2.0 license.
This version of the document refers to the version 2.6.0 for both the iOS and Android app. Because the apps have the same UI for most features, this document utilizes screenshots from the Android app. If a UI feature differs depending on platform, the differences are explained.
The Scan view contains a collection of tools for BLE firmware application developers. It consists of three sub-views: Scanner, RSSI Graph and Active Connections. Together they form a feature-rich set of tools to scan, connect, and interact with BLE devices.
Scanner is the default view. It is a powerful tool to explore the BLE devices around you. Key features include the following:
- Scan for BLE devices
- Sort the list by the RSSI
- Filter devices to narrow down the scan results
- Label favorite devices to place them on the top of the list
- Inspect advertising data
- Connect to a specific device
Start and Stop Scanning
You can control when scanning starts and stops. The application does this automatically in only four situations:
- Opening Scanner view starts scanning
- Connecting to a device stops scanning
- Refreshing the list automatically starts scanning if it was stopped
- Locking the screen automatically stops scanning
Scanning will continue indefinitely until you tap Stop Scanning at the bottom right or exit Scan View. Start/Stop action does not clear the list of devices. This means that, if scanning resumes with an existing device list, new devices will be added to the end. Exiting Scan view as well as pulling down and releasing the device list causes the list to refresh. As mentioned above, pulling down also automatically starts scanning if it was stopped before.
Each device discovered by the app is represented by a card containing information about that device. The image below shows the main elements of the device card.
Scanner Device Card
- Device name, if it's part of the advertisement, either through AD type Complete Local Name (0x09) or Shortened Local Name (0x08). If the device name is not part of the advertisement packet or the scan response packet, the app displays "N/A".
- Bluetooth address. Note: On iOS the Bluetooth address is not accessible by the application.
- Connect button if the advertisement is of connectable type.
- RSSI (Received Signal Strength Indicator).
- Advertising interval.
- Known beacon format (iBeacon, Eddystone or Altbeacon). If no beacon format is identified, it will be "Unspecified".
- Advertisement type (connectable or non-connectable).
- The star indicates whether the device has been marked as favorite (star is blue). This can be easily toggled by tapping the star, which changes between blue and gray.
- Bonding status. Note: Bonding status is not available on iOS due to system limitations.
- Expand view, to inspect advertising data.
The device card can be expanded to show the advertisement data details. Once expanded, each row shows one of the advertisement data types that are part of the advertisement packet.
Scanner Adv Details
If the advertisement has a known beacon format, the details are also parsed according to that specific beacon format. The image below shows the details from an iBeacon advertisement (Bluetooth - SoC iBeacon sample application running on an EFR32BG22 kit)
Scanner Adv Details iBeacon
EFR Connect also supports extended advertising. However, it must also be supported by the specific mobile device where the app is running. If the phone supports it and devices are sending extended advertising, that will be visible at the top of the advertisement details.
Scanner Extended Adv
The filter narrows down search results to a list of devices that fulfill a specific set of parameters. To reach the filter, tap the Filter icon in the top right corner.
The filter allows searching for devices with the following parameters:
- Device name, Bluetooth address, or raw advertising data. The Bluetooth address can be entered with or without colon. Note: EFR Connect for iOS only displays the device name because the iOS Bluetooth stack does not provide the Bluetooth address and raw advertising data to the application.
- RSSI above a given value so that you can limit results by signal strength threshold.
- Beacon type: iBeacon, Altbeacon, Eddystone or Unspecified (none of the other three).
- Only favorites
- Only connectable
- Only bonded. Note: This option is not available on iOS due to system limitations.
To apply the rules, tap Apply Filters. The filter is applied to the list of devices regardless of whether scanning is on-going or not. The X icon in the upper left corner closes the filter view without applying the new filtering rules. Tapping Reset clears all the filter parameters.
When a filter is active, the current filtering criteria are displayed on the top of the Scanner view.
The sort functionality does not have a dedicated view. Pressing Sort (located in the top right corner of the Scanner and RSSI Graph views) sorts the list of devices by the RSSI in descending order.
The UUID dictionary can be accessed via the dictionary icon on the top right corner of the Scanner view. It contains a list of all the 128-bit UUIDs that have been renamed by the user. Inside the UUID dictionary, you can further edit their names as well as delete them.
Scanner UUID Dictionary
Connect and Disconnect
You can connect and disconnect devices directly from the Scanner view.
Once the device is connected, the app jumps directly to the Device View. When the scan list is refreshed, connected devices are removed from the list unless they continue advertising during the connection.
The RSSI Graph shows a graphical representation of RSSI (Received Signal Strength Indicator) over time for all scanned devices. Features like sort and filter are analogous to the ones in Scanner. The RSSI Graph operates on the same data as Scanner, so the filter applied in the Scanner view is reflected on th RSSI Graph.
The main elements of the RSSI Graph view are:
- Export control – save scan data to .csv file
- Filter control
- Sort control
- Device list – horizontally scrollable
- Graph data – scrollable and scalable
- Scroll graph to the start time control (visible if not already at start time)
- Scroll graph to the actual time control (visible if not already at actual time)
- Start/Stop scanning control
A data line belonging to a specific device can be highlighted by selecting a device name in the device list section, as shown below.
RSSI Graph Specific Device
The Active Connections view lists all connected devices. It allows you to go to a specific connection view or disconnect from devices. All devices can be disconnected with the Disconnect all control at the bottom.
Once a connection with a device is established or you tap an existing connection in the Active Connections view, the app jumps to the Device view, where GATT databases for both the remote and local side are displayed.
Remote (Client) vs Local (Server)
At the bottom of the device view, you can switch between the GATT database of the remote device (where the mobile app acts as a client) or the GATT database of the local device (where the mobile app acts as a server). The UI representation of both GATT databases is the same. The local GATT database can be modified in the GATT Configurator view.
Each card represents a GATT service and contains the service name and UUID. A custom service (128-bit UUID) that has not been renamed by the user is displayed as Unknown service. Similarly, a custom characteristic that has not been renamed is displayed as Unknown characteristic. There are a few exceptions for that rule, for example some Silicon Labs custom services and their characteristics, which cannot be modified.
Tapping the down arrow expands the card to show a list of all the characteristics belonging to the service as well as supported properties. This will not automatically read the characteristics, which means that the data fields might be empty. Read has to be done explicitly by the user. If the characteristic has descriptors, they are listed underneath the characteristic UUID.
Device View Characteristics
If other properties are available, they will have additional associated icons. For characteristics without any specific data format, you can copy data to the clipboard with the copy icon on the right side of the characteristic data. Data is copied using the respective format (hex, ascii, or decimal).
Device View Characteristics
If the write property is available, tapping the write icon opens a dialog to write data to the characteristic. Within that dialog you can select the write method (write request or write command), depending on what is supported by the characteristic. If one is not supported, it will be grayed-out. You can also paste data from the clipboard by tapping the Paste icon on the right side. If the data is not correctly formatted, data validation will show a warning.
Device View Characteristics
The Activity Log button is located in the top right corner of the Device View. The log keeps a record of all the Bluetooth activity. It can be shared via email or other methods for later analysis.
The Connection Priority control is located in the top right corner of the Device View. It allows you to choose one of the predefined connection intervals:
- Low priority (100-125 ms)
- Balanced priority (30-100 ms)
- High priority (7,5-15 ms)
- The ranges are defined by the Android stack and are not a limitation imposed by EFR Connect mobile app.
- This option is not available on iOS due to system limitations.
The Request MTU control is located in the top right corner of the Device View. It allows you to request new MTU size in range 23 to 250 bytes.
Note: This option is not available on iOS due to system limitations.
OTA Firmware Update
OTA firmware update is a process of updating a device firmware image over a wireless connection (BLE in this case). There is a dedicated OTA firmware control located below the top right corner icons. Tapping that control opens the OTA dialog. If the Silicon Labs OTA service was not found in the GATT database a warning is displayed.
- OTA type
- Partial: Only the application is updated.
- Full: Both application and apploader are updated. This requires uploading two separate GBL files, one for the application and one for the apploader.
- OTA mode
- Reliability: Uses a write operation to send the GBL file data.
- Speed: Uses write without response operation to send the GBL data.
- Application/Apploader: The GBL file(s) to flash the device.
During the OTA process, the information about progress is displayed.
OTA In Progress
For additional guidance on the OTA process using EFR Connect, see Using EFR Connect Mobile App for OTA DFU.
The advertiser allows you to use the mobile phone as a BLE peripheral by creating and customizing advertisement sets, both in terms of their configurations as well as a payload. Advertiser additionally supports:
- Legacy and extended advertising
- Configurable advertisement interval, TX Power, primary/secondary PHYs
- Manual advertisement start/stop and stop based on a time/event limit
- Multiple AD types
This functionality comes in handy when you have a single Silicon Labs kit for a Bluetooth product, but you still want to test/evaluate/develop applications that leverage the Silicon Labs Bluetooth stack functionalities as a central device.
Create a New Advertisement Set
When entering the Advertiser for the first time, the app shows an empty list of advertisement sets because none have been created yet.
Tapping the Change device name icon in the top right corner brings up a dialog to change the device name. It is a global setting and cannot be set individually for each advertisement set.
Advertiser Device Name
The other icon in the top right corner can be used to switch all advertisers off.
The Create new control adds a new advertisement set that contains AD Type flags in its payload. The advertisement set is represented by a card, similar to the device representation in the Scanner view.
The image above shows the main elements of the advertiser card, which are as follows:
- Name of the advertisement set - User-defined name of the advertiser set. This is not the advertised device name.
- Enable/disable button - Enable/disable advertisement set.
- TX Power - Signal power in dBm.
- Advertisement interval - In milliseconds.
- Beacon type - Configured known beacon type (iBeacon, Eddystone, Altbeacon) or Unspecified.
- Advertisement type - Connectable or non-connectable.
- Edit - Edit view of the specific advertisement set.
- Copy - Clone the advertisement set and place at the end of the list.
- Delete - Delete the specific advertisement set.
- Expand/Collapse - Change the advertisement set to show more/fewer details.
Edit Advertisement Set
When you enter the edit view for a specific advertisement set, a list of customization options is displayed. Those options are divided into three areas:
- Advertising Type. Note: This section is not available on iOS due to system limitations.
- Advertising Data and Scan Response Data
- Advertising Parameters
The first text box at the top displays the user-defined name of the advertiser set. This is followed by the advertisement type, which can be selected between Legacy Advertising and Extended Advertising (introduced in Bluetooth 5.0 specification). Support for Extended Advertising depends on the underlying mobile phone and OS stack. If not supported, a note is displayed and the Extended Advertising option is grayed out.
The following Legacy Advertising types are supported:
- Connectable, scannable
- Non-connectable, scannable
- Non-connectable, non-scannable
Extended Advertising supports the following types:
- Connectable, non-scannable
- Non-connectable, scannable
- Non-connectable, non-scannable
TX power can be optionally included as part of extended advertising and, if the type is non-connectable, non-scannable, it can optionally be set as anonymous advertising. Depending on the selected advertisement type, the Advertising Data and Scan Response data will be available for editing. For example, a connectable, non-scannable type does not have a scan response so the Add Data Type control for Scan Response Data is grayed out. Data is added by tapping Add Data Type and selecting which data type to add.
The following advertising data types are currently supported:
- 0x09: Complete Local Name. Note: On iOS, this option is available only in Scan Response Data due to system limitation.
- 0x03: Complete List of 16-bit Service Class UUIDs. Note: On iOS, this option is available only in Advertising Data due to system limitation.
- 0x07: Complete List of 128-bit Service Class UUIDs. Note: On iOS, this option is available only in Advertising Data due to system limitation.
- 0x0A: TX Power Level. Note: This option is not available on iOS due to system limitations.
- 0xFF: Manufacturer Specific Data. Note: This option is not available on iOS due to system limitations.
If types 0x03 or 0x07 are chosen, each service has to be added individually by tapping Add 16-bit service or Add 128-bit service controls.
Services are added via a dialog box where you can input the service UUID or name. For 16-bit services (so called adopted services), an auto-complete functionality suggests services as they are being typed into the text box. Below the box, a link Bluetooth GATT Services takes you to the Bluetooth SIG Web page that lists all adopted services.
Multiple services can be added under the 0x03 and 0x07 AD Types and can be individually deleted by tapping the trash bin icon. If the trash bin icon for the AD type is tapped, all services are removed together with the AD Type. Advertising parameters are below the advertising data and scan response data options. These allow you to select the advertising PHYs, advertising interval, and TX Power. Note: These options are not available on iOS due to system limitation. Finally, an Advertising Time Limit can be selected for the advertising set, which automatically disables the advertising after a time period or a number of advertisement events.
The advertising PHYs options for the primary and secondary channel depend on support from the underlying smartphone and OS. They are only available if extended advertising is supported. The alternative PHYs are available in the respective drop-down menus.
The GATT Configurator is a powerful feature that allows you to create and modify the local GATT database on the mobile device where EFR Connect has been installed. Furthermore, it allows you to import and export the GATT database definition between GATT Configurator on EFR Connect mobile app and GATT Configurator in Simplicity Studio 5. This feature comes in handy when you are developing a Bluetooth device with GATT client feature, as you can quickly emulate the GATT server side with EFR Connect without having to write a single line of code.
Create a New GATT Server
When entering the GATT Configurator for the first time, the app shows an empty list of GATT servers and an option to create a new one. This creates a new empty GATT database, which is represented by a card with the following elements:
- GATT database name - User-defined name of the GATT server.
- Enable/disable switch - Enable/disable database (Note: Only one GATT database can be enabled at any given time. Enabling a new database automatically disables the existing one).
- Number of services - Number of services within the database.
- Edit - Edit view of a specific database.
- Copy - Clone the database and place at the end of the list.
- Delete - Delete the specific database.
- Expand/Collapse - Show more details about the database.
GATT Configurator Main
Import / Export
The buttons in the upper right corner serve as an import/export functionality.
Import allows bringing in a GATT database file from Simplicity Studio GATT Configurator, starting from GSDK 3.0 and newer. The file can be stored either on local or cloud storage. Before importing the file from Simplicity Studio, the extension must be changed from
Export allows converting one (or more) of the existing GATT databases into an xml file, which can be directly imported into the GATT Configurator in Simplicity Studio.
GATT Configurator Export
The xml filename is taken from the GATT database name. If more than one database is selected, they will be exported as individual xml files, and if there are duplicate GATT database names then the filename will be appended with a number.
Tapping the edit control on the GATT database takes you to the edit view where you can add services, characteristics and descriptors. A newly-created database will show an empty list of services and an option to start adding a service. This opens a dialog where both standard as well as custom services can be added.
GATT Configurator Server Edit
When typing a name, the auto-complete feature will match it against Bluetooth SIG standard service names. When a standard service is selected, there is an option to add all mandatory service requirements (mandatory characteristics and descriptors within that service). When adding a custom service, it is necessary to write both the service name and 128-bit UUID. The UUID is automatically formatted and capped to the right size as it gets typed-in. Once the service is added, it will be listed in the GATT server view. Tapping More Info expands the service to reveal its characteristics and descriptors.
GATT Configurator Service Details
At the service level, a service can be copied and deleted using the available controls. Editing a service is not possible. For characteristic and descriptor, copy, edit, and delete controls are all available. The allowed operations on each characteristic and descriptor (read, write, write without response, notify, indicate) are represented by the same icons as those used in the Device View.
An Add Characteristic control is available at the bottom of each service. Similarly, an Add Descriptor control is available at the bottom of each characteristic.
GATT Configurator Add Char
Tapping Add Characteristic opens a dialog where the characteristics parameters can be configured. Similarly to how services are added, there is an auto-complete feature for Bluetooth SIG standard characteristics, but also custom characteristics can be added with their unique 128-bit UUIDs.
GATT Configurator Add Char
Following the characteristic name and UUID are the properties and access parameters. Available access parameters may vary between Android and iOS platforms. The last option in the list can be used to set the initial value of the characteristic. The field can be left blank as well.
Adding a descriptor is similar to adding characteristic but with fewer properties available.
GATT Configurator Add Descriptor
Interoperability Test (IOP)
The Interoperability Test executes a sequence of BLE test cases against the Bluetooth - SoC Interoperability Test sample app running on selected EFR32 radio boards. It verifies the interoperability between the BLE hardware and the mobile device. Once the test sequence is finished, there's an option to share the results.
IOP Test Main IOP Test Start
More detailed information about IOP can be found in AN1346: Running the BLE Interoperability (IOP) Test Application Note and AN1309: Bluetooth Low Energy Interoperability Testing Report.
The demo view shows a selection of demos that can be used to easily test sample apps provided in Simplicity Studio. Each demo is described in the following sections.
This demo scans for devices that advertise the Health Thermometer service (UUID 0x1809). Once connected, it subscribes to indications from the Temperature Measurement characteristic (UUID 0x2A1C). As a result, the actual temperature value is displayed on the screen. You can switch between temperature units (Celsius and Fahrenheit).
Health Thermometer Searching
For more information, see the readme of the Bluetooth - SoC Thermometer sample application from Simplicity Studio or the Getting Started section of the Bluetooth documentation.
The Connected Lighting demo demonstrates the Dynamic Multiprotocol (DMP) capabilities of Silicon Labs' devices and software. It can control a DMP light node from a mobile and protocol-specific switch node (Zigbee, proprietary) while keeping the light status in sync across all devices. It requires two kits running dedicated sample apps which are documented in QSG155: Using the Silicon Labs Dynamic Multiprotocol Demonstration Applications in GSDK v2.x. Once launched, the demo scans for devices that are advertising themselves as a DMP node, running BLE and a second wireless protocol, for example Zigbee or Proprietary. Once the connection with the DMP node is established, the demo allows controlling the light on the DMP board by tapping the lightbulb icon. If you change the light status using the physical push button on the kits, the light status on the app is updated accordingly. Furthermore, the source of the last event is shown on the demo. For example, "Bluetooth" means the event was triggered by the mobile app while the "Proprietary" means that the light was toggled by the push button on the Switch board.
Connected Lightning Search
For more information, see the readme of the Bluetooth - SoC Light Standard DMP Micrium OS sample application from Simplicity Studio.
The Range Test demo can visualize the RSSI and other RF performance data on the mobile phone while running the Range Test sample application on two Silicon Labs radio boards. The mobile app is first used to set up the TX and RX node parameters. Then, it can present all the meaningful RF data during the test. Once launched, the demo scans for devices that are advertising themselves as a Range Test nodes. After the nodes start performing the range test, the mobile app displays the performance data from the RX node.
Range Test Search Range Test Tx Mode
For more information, see the readme of the Flex (RAIL) - Range Test DMP sample application from Simplicity Studio. The Range Test Demo is also documented in UG471: Flex SDK v3.x Range Test Demo User's Guide.
The Blinky demo is the "Hello World" of BLE. Once launched, the demo scans for devices advertising themselves as a Blinky Example or Thunderboard device. Once connected to a compatible device, you can control the dedicated LED and observe the current state of the button located on the Silicon Labs development kit.
For more information, refer to the readme file of the Bluetooth - SoC Blinky or Bluetooth - SoC Thunderboard sample application from Simplicity Studio.
The Throughput demo allows measuring throughput between compatible Silicon Labs Development Board and the mobile phone, in both directions. Once launched, the demo scans for devices that are advertising themselves as a Throughput Example. Once connected, you can visualize the data throughput between the devices, which includes receiving data from EFR32 (triggered by button press on the kit) or sending data to the kit (triggered from the demo view).
For more information, see the readme of the Bluetooth - SoC Throughput sample application from Simplicity Studio.
The Motion demo displays the accelerometer data in a user-friendly way. It shows the raw values of the Orientation and Acceleration data together with a nice animation of the board orientation. Once launched, the demo scans for Thunderboard devices.
For more information, see the readme of the Bluetooth - SoC Thunderboard sample application from Simplicity Studio.
The Environment demo displays a collection of sensor data read from a compatible Silicon Labs development kit. Once launched, the demo scans for Thunderboard devices. Once connected, the app presents readings from environmental sensors like:
- Ambient light
- UV index
- Air pressure
- Sound level
- Carbon dioxide
- Magnetic field
- Door state (hall sensor)
The list of tiles presented in the Environment demo depends on what is supported by the connected kit.
For more information, see the readme of the Bluetooth - SoC Thunderboard sample application from Simplicity Studio.
The Wi-Fi Commissioning demo displays a list of Wi-Fi access points scanned by the EVK board and allows connection to them once correct credentials are provided. The current state of the access point is displayed as a red/green dot for disconnected/connected state. For more information about setup, see Updating RS9116W Firmware and Getting Started with an EFx32 Host.
The Settings View contains useful links to:
- Silicon Labs support
- Application source code repository on GitHub
- EFR Connect User's Guide and Release Notes
- Bluetooth documentation
- All apps developed by Silicon Labs.
The current app version is also displayed at the bottom.