gatttool
(Linux only). It provides an interface to all of the basic features of BLE -connecting, bonding and reading and writing characteristics, etc. MichaelSaunby (@msaunby) created a brilliant Pythonwrapper for gatttool
, specificallyto connect to TI’s SensorTag project. When I discovered his project, I realizedthe missing piece for BLE on a desktop was a standard API for the Bluetoothstack running on the host OS. BlueZ’s support for BLE was still half-baked (it’smore complete now) and Microsoft only introduced support in Windows 8.gatttool
and changethe API to be more generic and not device specific. The design grew organicallyout of his original SensorTag code as I began to understand the quirks ofwrapping a command line tool with an API. The first API was still very specificto gatttool
, but using it with CSR8510-based USBadapter to connect to the Stratos Cardproved to be fairly reliable.gattttool
is using BlueZ means that itrequires Linux. We got by for a while by running the code in an Ubuntu VM(provisioned with Vagrant), but that couldn’t scale - our CI is in Linux, QAtesters use Mac OS X, and manufacturing testing uses Windows. All three requiredaccess to the same BLE interface.