ble analyser image

  BLE Analyser
      from KEUWLSOFT

Google Play Link
ble analyser image

BLE Analyser

Measure RSSI strength of nearby Bluetooth Low Energy (BLE) devices. Connect to them to get a list of Services and Characteristics on the BLE device. Read and write to Characteristics and Descriptors.

• Six modes to choose from: Levels, Graph, Meter, List, Report & Read/Write.

• View RSSI on a graph, gauge or in a list.

• Average, Maximum and Minimum RSSI.

• Auto-scale, or touch scaling/panning of graphs.

• Write ASCII, Hexadecimal, 32-Bit Integers or Floats to Characteristics or Descriptors.

Note that this app is for Bluetooth Low Energy (Bluetooth 4.0), and will not work with Bluetooth Classic (Bluetooth 2.0).

User Guide

BLE stands for Bluetooth Low Energy, also know as Bluetooth 4.0, and is significantly different to that of Bluetooth Classic (Bluetooth 2.0). This app is only for Bluetooth low energy devices.

If you are just measuring the strength (RSSI) of nearby bluetooth devices, there is no need to connect. Connection is only required if you wish to discover the services, characteristics and descriptors on a BLE device or read and write to them.

The app has six modes (Levels, Graph, Meter, List, Report and Read/Write), selected with the buttons at the bottom of the screen.

In Levels mode, the RSSI values are shown like levels in a graphic equaliser.
In Graph mode, the RSSI values are plotted on a time graph.
In Meter mode, the RSSI values are shown on a meter gauge. Max, min and averaging can be done in this mode
In List mode, the discovered BLE devices are shown in a list.
In Report mode, a list of the services, characteristics and descriptors for the connected device is shown.
In Read/Write mode, characteristics and descriptors of the connected device can be read or written to.

The pause button at the top of the screen will pause RSSI updates etc. until pressed again.

levels mode
Levels Mode
Graph Mode
Graph Mode
Meter Mode
Meter Mode

Levels Mode

levels button image
This mode shows the RSSI level as bars which move up and down (like a graphic equaliser). Below the plot, is a list where the visibility of the connected devices on the levels graph can be toggled (this will also toggle the visibility of the same device on the graph mode).

The list also shows the device names, their addresses and the most recent RSSI reading as a numerical value. Note the RSSI value colour will change with strength and fade if no recent reading has been obtained.

The levels graph y-axis can be panned and scaled by touching or pinching in the graph area.

Graph Mode

graph button image
This mode shows how the RSSI values change with time. The graph can be zoomed in and scrolled when paused. Trace visibility (for both graph and levels mode) can be toggled from the list below the graph.

The graph Y-Axis is auto scaling by default, but can be set to manual scaling in the settings.

Below the graph is a list showing the connected devices and their most recent RSSI values.

Meter Mode

meter button image
The Meter mode shows the RSSI values on a gauge. Toggle visibility of the needles in the list below the gauge. If only one BLE device is shown, then two extra blue needles are shown on the gauge for the maximum and minimum values measured for that device.

The average, max and min values are shown for each BLE device in the list below the gauge. The time since averaging began is shown below the gauge, and can be restarted by tapping the restart button.

List Mode

list button image
This mode shows a list of the discovered BLE devices. The name and address of each device is shown along with the RSSI value and bar indicator. The bar and RSSI colour will go from grey, to orange, to green, to brigher green as the signal gets stronger.

To re-arrange the order of the list, hold on an item until it is selected and then move it up or down in the list.

To connect to a device in the list, whilst the item is selected, drag it into the connection status box.

Swipe a device right to remove it from list (The device will be forgotten and wont re-appear until re-discovered next time the app is run).

Report Mode

results button image
This will show the results from discovering services on the connected device. A scrollable list of services with their characteristics and descriptors is shown.

Each service will either be a defined Bluetooth service, or a custom one. The UUID of the service is shown along with the service type and its instance. Service type can be either primary or secondary, where a secondary service provides auxiliary functionality and is referenced from a primary service. Instance is a integer that can be used to distinguish between multiple services with the same UUID.

Each characteristic will either be a defined Bluetooth characteristic or custom one as determined by the first part of the UUID. The UUID of the characteristic is shown along with the property flags (e.g. READ, WRITE, NOTIFY), the write type and instance. The write type can be default, write without response or signed. Instance is a integer that can be used to distinguish between multiple characteristics with the same UUID.

Each descriptor will be shown with the name of the type of descriptor along with the UUID of the descriptor.

There is a button in settings to copy these results in plain text format to the clipboard so that they can be pasted into another application.

Read/Write Mode

transfer data button image
This mode allows characteristics or descriptors to be read or written.

First connect to a BLE device. Then select a service on that device by tapping on the service box and selecting the required service. Select the required characteristic within that service in the same way. Optionally, also select a descriptor within that characteristic.

Once a characteristic is selected, the Read & Write buttons will become enabled as determined by the property flags of that characteristic.

If a descriptor is selected, read and write operations occur on the descriptor, otherwise they occur on the characteristic.

To read a characteristic or descriptor, tap the read button. The read results are shown in the terminal.

The terminal consists of 4 sections; the first shows the code of the characteristic/descriptor. The second section shows the type of data transfer (Read, Write or Notify). The third section shows the hexadecimal bytes of the data transfered. Up to 8 bytes are shown per line. The fourth section shows the ASCII representation of the hexadecimal bytes.

The terminal showing the data transfered can be scrolled, but will return to show the latest data each time new data is read/written.

If there are four data bytes, there is an option in the settings to replace the ASCII with an 32-bit Integer or Float.

To write to the characteristic/descriptor, tap the write button. In the screen that appears, there will be the format option of ASCII, Hexadecimal, Integer and Float. Once the data is entered, tap on the write button to send it. If an odd number of characters is entered in hexadecimal format, to complete the last byte, 0 will be appended.

Read every second - This button will continually perform the read operation every second whilst not paused.

Read on Notify - This will cause the terminal to be updated with new data each time the BLE device sends a notification. Note that notification will only work for characteristics with the Notify property. Note that to enable Notify on the BLE device, it may be necessary to read the 0x2902 (Client Characteristic Configuration) descriptor for that characteristic and then set the notification enabled bit.

read/write mode screenshot
Read/Write Mode

Change Connection

change connection button image
By tapping this button, you can change the currently connected BLE device. Select the device you wish to connect to in the list that appears and tap on connect. The app will then try to establish a connection to the BLE device and discover the services it has. The connection status box will show the connection progress. Note that it sometimes takes a couple of attempts to connect successfully.

Once connected, tap the change connection button again to return the the mode you came from, or alternatively one of the mode buttons at the bottom of the screen.

The connected BLE device will be disconnected when connecting to another device, or when the app is paused or closed. You can also disconnect the BLE device by swiping right on it's name in the connection status box.


settings button image
Clicking the cogs button at the top left of the screen brings up a settings menu:

Sound On – Turn button sound effects on or off.

Vibrate On – Turn button vibration effects on or off.

Stay awake – Check this option to stop the device from sleeping whilst the app is running.

Autoscale Levels Graph Y-Axis - The Y-Axis of the levels graph will be auto scaled when not paused. Otherwise panning or pinching on the graph can change the axis scales.

Autoscale Time Graph Y-Axis - The Y-Axis of the time graph will be auto scaled when not paused. Otherwise panning or pinching on the graph can change the axis scales.

Show 4 byte read/write/notify values as ... – This applies to the read/write mode. In addition to reporting the hexadecimal for read and write operations, the ASCII is also normally shown. In the case of a four byte message, it can be shown as ASCII, a 32-bit Integer or a 32-bit Float.

Endian for Integer/Float to byte conversion – When writing 32-bit integers or floats, which consist of 4 bytes we can white them Least Significant Byte (LSB) first, so that they look backwards in memory (Little Endian), or the other way around (Big Endian). The same Endian setting applies when converting a 4 byte read value into a integer or float.

Copy Service-Characteristic-Descriptor List to Clipboard – Once connected to a BLE device, this button becomes visible, and will allow a plain text copy of the obtained service & characteristic list to be copied to the clipboard ready for pasting into another application.