Community Documents

Showing results for 
Search instead for 
Did you mean: 

LabVIEW BLE (Bluetooth Low Energy) toolkit

BLE Toolkit


BLE (Bluetooth LE, Bluetooth low energy, marketed as Bluetooth Smart) is a wireless personal area network technology designed and marketed by the Bluetooth Special Interest Group aimed at novel applications in the healthcare, fitness, beacons, security, and home entertainment industries. Compared to Classic Bluetooth, Bluetooth Smart is intended to provide considerably reduced power consumption and cost while maintaining a similar communication range. Wikipedia entry.


While LabVIEW supports Classic Bluetooth (on Windows), it does not provide support for BLE. To solve this issue, a workaround is to use a BLE dongle to handle the communication.


The BLE toolkit for LabVIEW is an implementation of the API Bluegica BGAPI v1.3, that allows to communicate with Bluegiga BLE(D)11x and WF121 devices using USB/UART.


During the development of the Toolkit, the BLED112 USB dongle was used


Beside the Toolkit, three examples are provided:

* Discover and connect to BLE devices (

* Reading and Writing Characteristics values (

* Acquiring Heart Rate data stream (




1. Get a BLED112 USB dongle (e.g. in Digi-Key)

2. Install the drivers provided by Bluegiga
3. Verify the COM number for the dongle in Device Manager > Ports

4. Download and install the LabVIEW BLE Toolkit (package below)

5. Open the example provided in

6. Select the COM port for your BLED112 dongle

7. Run the VI


Screenshot 2016-07-28 19.59.23(2).png


The source files for this Toolkit are available on GitHub:




To install the BLE Toolkit for LabVIEW, the VI Package Manager by JKI is needed.

  1. Download and install VI Package Manager
  2. Download and install the last VI package for the BLE Toolkit for LabVIEW from here


Raymundo Cassani

Hello rCassani,


Thank you for such a wonderfull toolkit. It worked like magic in deteting heart rate.

Although we had initial issues like, the device must have public MAC address and the Random MAC address was assigned to android mobiles. Hence we were not able to communicate to Mobile Phones. But embedded device with public MAC address works.



Thanks & Regards,
Bharath Kumar

Thank you very much for the great tool kit.

Ideally I would like to read a message which is longer than the 23 bytes which the BLED112 dongle supports. Is there a way to read longer messages or do multiple reads in order to transfer messages which are longer than 20 bytes?

Thank you very much for your kind help.

All the best



Hi all, 

 Me also have same problem. That is, one packet have the size of 100 bytes. but this VI is reading only first 20 bytes. other 80 bytes in one packet is missing. how can i read the hex values of more than 20 bytes from one packet?

Any help is greatly appreciated.





firstly, thank you for this toolkit. I would like to ask you about the sample rate. I acquire a signal from the BLE113 where the soft timer was set on 100 Hz (100 S/s). However, the signal which I obtain in LabView has an unconstant sample rate which is around 94 S/s. Do you have please any experience regarding this or any suggestion on how to deal with that?

I am also not sure where that number (94 S/s) came from. If you have an idea how to calculate it in this I would be grateful. I need to obtain the RR interval from the ECG signal so I need the sample rate to get the time from the samples. 


Thank you, 



@satode, how did you resolve your problem?

I have got the same problem as you..

("Error 0 occurred at Service: 1800 and Characteristic 2A00 were not found")




Did you ever found out how to subscribe for notifications for a certain characteristic?


I have the same issue:






Thank you for developing this toolkit! 

I'm facing some issues when I try to read characteristics with a long 128-bit Uuid. Is there any way to implement this long custom Uuid in the .vi?

Many thanks 






Thanks for developing this toolkit! Currently I have an issue in regards to disconnecting the dongle. I'm using the ble_evt_attclient_attribute_value API in a loop to read incoming large amount of data that the peripheral device sends every few minutes. The peripheral sends 276 packets of data (20 bytes each) after a few minutes. I noticed that when the peripheral hasn't sent data yet, the loop runs slowly even though I did not put any wait function, I suspect that the API is trying to find data and will keep finding it until the given timeout and then move to the next loop iteration. When the peripheral data is sending data I can see the data received and the loop runs really fast. 


I tried to disconnect while the loop is running slowly and I get the error shown in the image below and I'm not sure how to solve that. I used the BLE GUI which also uses the same API and I was able to disconnect. 






How do I get the GATT table from a device using LabVIEW BLE Toolkit?

I've managed to communicate with the device using a Handle, but it turns out that the Handle isn't persistent and the UUID should be used. By reading the GATT table, I could find which Handle is connected to a specific UUID.