EFR Connect Mobile App
The Silicon Labs EFR Connect app uses the Bluetooth adapter on your phone/tablet to scan, connect and interact with BLE devices. It is available for Android and iOS and provides Bluetooth firmware application developers with a tool that can help them test and troubleshoot their application across the entire development lifecycle.
It's a mobile application made by developers, for developers, with advanced features that allow you to easily search, connect and exchange data with your Bluetooth device, as well as perform OTA updates on Silicon Labs Bluetooth devices.
This application has two main functional areas, the demo and the develop view. By default, the app opens in the Develop view and the selection between them is achieved through the two icons on the bottom side of the app, as shown in the Demo view and Develop view sections.
The demo view lists a number of demos that are meant for quickly testing some of the sample apps in the Silicon Labs Bluetooth SDK. The currently supported demos are:
- Health Thermometer demo: Connects to an EFR32/BGM device running the soc-thermometer sample application from the Bluetooth SDK and displays the temperature read from the SI7021 sensor on the WSTK mainboard.
The Develop view contains features focused on helping developers create and troubleshoot their Bluetooth applications based on EFR32/BGM devices. The currently supported features are:
- Browser: This tool allows you to explore the BLE devices around you. Key features of the browser include:
- Scan results displaying details such as:
- Beacon type
- Advertisement interval
- Bluetooth address
- Advertisement details
- Ability to favorite devices on the scan list so that they surface to the top
- Advanced filtering options to quickly identify the devices you want
- Device name
- Raw advertisement data
- Beacon type (iBeacon, Eddystone, AltBeacon)
- Favorites only
- Connectable only
- Option to save filters for later use
- Support for multiple connections
- Support for Bluetooth 5 advertising extensions
- Ability to rename services/characteristics with 128-bit UUIDs (mappings dictionary)
- Over-the-air (OTA) device firmware upgrade (DFU) with both reliable and speed modes
- Configurable MTU and connection interval
- Support for all GATT operations
- Scan results displaying details such as:
The EFR Connect mobile application source code for both iOS and Android is available on GitHub under the Apache 2.0 license.
EFR Connect mobile app is under constant development with new demos and developer-focused features introduced over time, which will be added to this document.
This version of the document refers to the version 2.0.3 for both iOS and Android app. Because the apps have the same UI for most features, this document uses screen shots mostly from the Android app. For a UI feature that affects how the user interacts with the app, screen shots from both apps will be shown and an explanation will be provided for each separately.
Demo view shows a selection of demos that used for quick testing and demonstration of some of the sample apps in the Silicon Labs Bluetooth SDK.
This demo scans for devices that advertise the Health Thermometer service (UUID 0x1809) and, once connected, it will subscribe to indications from the Temperature Measurement characteristic (UUID 0x2A1C). Because the indications are received by the app, the temperature value is displayed.
Searching for Health Thermometer devices
Connected to a thermometer device and receiving data via indications
Use this demo with the soc-thermometer sample application from the Silicon Labs Bluetooth SDK. For more information, see the getting started section of the Bluetooth documentation.
From either Demo or Develop view you can access the Info screen through the icon on the upper right corner. The Info screen brings up a dialog with useful information about Silicon Labs products, links to the github repositories, app stores as well as Bluetooth documentation (including this User's Guide).
The develop view contains a collection of tools focused on Bluetooth firmware application developers. Currently, this consists only of the Bluetooth browser, which in itself contains a number of advanced features that will be covered in the subsequent sections.
The browser allows you to scan, connect and exchange data over GATT with Bluetooth LE devices around you. When you access the browser from the Develop view, it automatically starts scanning and populating the screen with cards that represent each of the scanned devices. The devices appear on the list in the order in which they are discovered. As a result, to see new devices, scroll down the list.
Each device discovered by the app is represented by a card containing information about that device.
The image above shows the main elements of the device card which are as follows:
- 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 nor the scan response packet, the app will display "N/A".
- The star indicates whether the device has been marked as favorite (start with blue color). This can be easily toggled by tapping the star, which makes it gray. If a favorite device is found, it automatically surfaces to the top of the list, regardless of the order in which it is found relative to the other devices.
- Advertisement interval in milliseconds.
- Connect button if the advertisement is of connectable type.
- Bluetooth address.
- Indication of whether the advertisement is connectable or non-connectable.
- RSSI (Received Signal Strength Indicator).
- Indication whether the advertisement complies with a known beacon format (iBeacon, eddystone or Altbeacon).
The device card can be expanded by tapping anywhere on the card other than the Star or the Connect button. When tapping on the device card it expands showing the advertisement data details. Another tap will collapse it. When expanded, each row shows one of the advertisement data types which are part of the advertisement data.
If the advertisement is 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 (soc-iBeacon sample application running on an EFR32BG22 kit)
EFR Connect also supports extended advertising, however that 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.
Start and Stop Scanning
The user can control when scanning starts and stops. There are only three situations where the app does this automatically:
- When entering the browser from the Develop main view, scanning automatically starts
- When connecting to a device scanning automatically stops
- Refreshing the list automatically starts scanning if it was stopped
Scanning will continue indefinitely until the user taps the Stop Scanning button at the bottom side, which will toggle the button color to blue and the text to Start Scanning.
Start/Stop action does not clear the list of devices, which means that if scanning resumes with an existing device list, new devices will be added to the end of the list.
Pulling down and releasing the device list causes the list to refresh. As mentioned above, this will also automatically start scanning if it was stopped.
The filter allows narrowing down your search to a list of devices that fulfills a specific set of criteria. To reach the filter tap the Filter icon on the top right corner which will reveal the filter options on a pull-down.
To collapse the filter, either tap the filter icon or the X icon on the lower right hand side.
The filter allows searching for devices with the following parameters:
- Device name or Bluetooth address. Note: EFR Connect for iOS only displays device name because the iOS Bluetooth stack does not provide the Bluetooth address to the application.
- Raw advertising data. Note: This feature is only supported on EFR Connect for Android. iOS provides pre-parsed advertisement data and does not provide access to raw advertising data.
- RSSI below a given value so that a user can limit results by signal strength threshold.
- Beacon type: iBeacon, Altbeacon, Eddystone or Unspecified (none of the other 3).
- Only favorites
- Only connectable
Touching the Search option causes the new filter parameters to take effect, which also automatically collapses the filter. Tapping Reset clears all the filter parameters and collapses the filter. The filter will be applied to the list of devices regardless of whether scanning is on-going or not.
You can also save an existing set of filter parameters for later use. To save filter selections, touch the Save button. Saved filter parameters are listed in the Saved Searches at the bottom of the filter pull-down.
Loading filtering parameters can be done by touching a saved search. The selected saved search is marked with blue font. To delete a saved search, tap the garbage bin on the right hand side. To take the newly loaded filter parameters into effect, tap the Search button.
The connections drop-down lists all active connections, which allows the user to go into each of those connection views or disconnect from those devices. Devices can be disconnected individually through each device's Disconnect button or altogether with the Disconnect all button at the bottom.
You can also disconnect from devices from the main browser view, if they are listed in the scan list. Connected devices have a Disconnect button in red color instead of the blue Connect button.
If the scan list is refreshed, those devices are likely to disappear from the list unless they continue advertising after a connection has been established.
The log keeps a record of all the Bluetooth activity. It can be shared via email or other methods for later analysis, filtered via text based search and cleared.
The mappings dictionary can be accessed via the dictionary icon on the top right of the browser main view, which contains a list of all the 128-bit UUIDs that have been renamed by the user. Within the mappings dictionary, the user can further edit their names as well as delete them.
When either a connection with a device is established or the user goes to an existing connection via the connections pull-down, the app will go to the device view where it displays the remote devices' GATT database.
Each card represents a GATT service and contains the service name and UUID. A custom service (128-bit UUID), which has not been renamed by the user is displayed as Unknown service. Similarly, a custom characteristic, which has not been renamed, displays as Unknown characteristic. One exception to this is the Silicon Labs OTA service (UUID 1D14D6EE-FD63-4FA1-BFA4-8F47B42119F0) and all its characteristics, which cannot be modified.
Tapping anywhere on the card causes it to expand, which reveals the characteristics within that service as well as the supported properties for each characteristic (e.g., read, indicate).
Tapping into a characteristic causes it to expand further and expose data within the characteristic. If the read property is supported, the characteristic is automatically read.
If other properties are available, they will have additional associated icons.
If the write property is available for instances, when tapping the write icon it brings a dialog that allows writing data into the characteristic.
If a characteristic has descriptors, they are listed underneath the characteristic UUID.
In the Device view, the user retains access to the Log and the list of connections so that it is easy to swap between connected devices. An RSSI value, which is refreshed each second, is located in the top right hand corner. Furthermore, there is a menu with additional options.
- Refresh services: rediscovers the GATT database as some devices have dynamic databases which can change in run-time. On iOS, this is accomplished with a pull-down action.
- Request MTU: allows changing from 23 to 250 bytes.
- Note: this is not available on iOS.
- Connection Interval: allows changing the interval between 3 different ranges.
- Low priority (100-125 ms)
- Balanced priority (30-100 ms)
- High priority (7-15 ms)
- Note: this is not available on iOS. The ranges are defined by the Android stack and are not a limitation imposed by EFR Connect mobile app.
- OTA: Updates a Silicon Labs device running the Silicon Labs Bluetooth stack.
Over-the-air device firmware updates (OTA DFU) allow updating a device with a new firmware sent over a Bluetooth connection. OTA option is shown in the menu if the Silicon Labs OTA service is included in the GATT, in which case it is assumed that the device supports OTA.
Tapping into that option opens a dialog with the following options:
- OTA type
- Partial: only application is updated
- Full: both application and apploader are updated. This is require uploading 2 separate gbl files, one for the application and one for the apploader.
- OTA mode
- Reliability: uses write operation to send the gbl file data
- Speed: uses write without response operation to send the gbl data
- Application/Apploader: retrieve the gbl files from your device (local folders or cloud storage)
- MTU: from 23 to 250 bytes (not available on iOS)
- Priority: Maps to the same connection intervals explained in the previous section.
During the OTA process, information about progress is displayed until OTA is finalized.
For additional guidance on OTA process using EFR Connect,see Using EFR Connect Mobile App for OTA DFU.