BLE Examples generic intro
Many Technologic Systems' products offer on-board support of Wi-Fi and Bluetooth via a soldered down module. In applications without on-board support, Bluetooth connectivity can still be achieved with a USB dongle.
This document will focus only on products that use the on-board modules. While these examples should work just the same, external USB modules may require additional configuration and support that is not covered here. Additionally, these examples will only cover Bluetooth Low Energy and not Bluetooth Classic modes.
The primary provider of Bluetooth support in Linux is the BlueZ project. Many distributions provide their own release of BlueZ packages. However, with how quickly BLE and Linux evolve, this may not be the best route for up-to-date support unfortunately.
Below, we have a set of instructions for both installing and using BlueZ with some of our products. Additionally, BlueZ provides a set of example scripts for testing functionality and for use as a starting point for development. The instructions below provide setup and use cases for these scripts in order to give known working examples. Additionally, we've done testing with external APIs and have provided examples that we have found working with this as well.
This is not intended to be a development guide, it is simply an introduction with known working and testing examples in order to get BLE up and running with Technologic Systems' products.
For those unfamiliar with the differences between Bluetooth Classic and BLE modes, we strongly suggest doing some background research. The main difference of note is that Classic Bluetooth offered many different profiles targeted at a wide range of concepts from notification to data transport. BLE on the other hand was designed with notification and signaling in mind. BLE has a focus on low power, low communication latency, and long battery lifetimes. More importantly, it removes restrictions in data formats by using the single Generic Attribute Profile (GATT) for all communication with some established data standards on top of this. This adds immensely to the flexibility of Bluetooth LE, but moves the complexity of communication to the application layer.