Have you tried to hack on a Bluetooth device or build something with BLE, only to find out that existing software libraries to do so are completely inadequate? We have as well!

I mean, don’t get me wrong, when it comes to writing an application to communicate with a Bluetooth device, both Android and iOS have good functional support and workable APIs. However, if you start to look deeper into how their APIs were designed, you’ll quickly start to notice differences in how their underlying architecture is built and the challenges that lie ahead towards a production-grade implementation.

For instance, on iOS, connecting to a peripheral device involves sending a request to the adapter object, which also handles connection callbacks. On Android, however, you need to subclass callbacks and juggle a trio of BluetoothGattCallback, BluetoothDevice, and BluetoothGatt objects to manage your peripheral.

These variations are not unique to device connections, but extend to pretty much to every single aspect around interacting with a Bluetooth device. The problem compounds even further when you add Windows and Linux into the mix, each one with their own quirks and unique implementation details. This chaos basically leads to two major issues:

  1. Current Bluetooth software tools are far from user-friendly. Much of the implementation complexity is offloaded onto developers, significantly slowing their progress.

  2. Creating a cross-platform solution is a daunting task, as you must navigate the unique intricacies of each platform you want to support.

These challenges have been haunting my career since before I graduated over a decade ago. Every new project at every new job would require me to reinvent the wheel every single time, wasting so much time and energy for what I knew should just be simple and straightforward. I had found many other projects trying to deliver on that promise, only to find that most of them were either abandoned or in the process of becoming abandonware. As the saying goes, “Necessity is the mother of invention”, so I decided to give it a try and build something better. That’s how SimpleBLE was born.

Five years since work began, SimpleBLE has evolved to become the go-to cross-platform Bluetooth library, designed for use in all kinds of environments with a very simple API that just works and trusted by industry leaders across healthcare, automotive, manufacturing, and entertainment.

Instead of wasting hours and hours on wrapping each operating system’s API, developers can now easily integrate Bluetooth capabilities into their projects effortlessly. SimpleBLE supports all major operating systems across C, C++, Python, Java, and Rust, with a lot more coming soon. Have a look at our examplesto see how easy it is to get started.


Commercial use of SimpleBLE requires a license, which enables us to sustainably maintain and enhance SimpleBLE, particularly given its growing adoption in critical sectors like medical and industrial applications. The revenue from commercial licenses allows us to provide robust support, maintain compatibility with evolving underlying APIs, and invest in improvements that benefit all users.

Non-commercial use is free and we also gladly offer free licenses for small or interesting projects, so don’t hesitate to reach out!

One last thing: If you’re an open-source creator eager to earn fairly for your work, join the waitlist for Mercantile by The California Open Source Company.