SimpleBLE
Build Bluetooth once. Ship it everywhere.
SimpleBLE is the cross-platform Bluetooth Low Energy stack for Windows, macOS, Linux, iOS, and Android. Use it from C++, C, C#, Python, Java, Kotlin, Go, Rust, JavaScript, or React Native, with a dedicated API for Unreal Engine.
New in v1.2
Host your own BLE peripherals on Windows, macOS, Linux, and Android with the new local peripheral-mode API, and use SimpleBLE from C# with SimpleSharpBLE on NuGet. The C API has been reworked; see the migration guide.
Why SimpleBLE
- One cross-platform API: Keep application-facing BLE logic consistent across desktop and mobile.
- Native underneath: Use WinRT, CoreBluetooth, BlueZ, and Android Bluetooth through one maintained stack.
- Built for real products: Central- and peripheral-role support across all supported platforms.
- Commercially supported: Ship proprietary applications with licensing and direct technical support available.
Language Bindings & Plugins
- C++ (SimpleBLE): Core implementation with full platform support.
- C (SimpleCBLE): C-wrapped version of the library.
- C# (SimpleSharpBLE): .NET bindings available from NuGet.
- Python (SimplePyBLE): Python bindings available from PyPI.
- Java (SimpleJavaBLE): Java bindings available from Maven Central with bundled desktop native libraries.
- Go (SimpleGoBLE): Go bindings without cgo, available as a Go module.
- Rust (SimpleRsBLE): Rust bindings available from crates.io.
- JavaScript (SimpleJSBLE): Node.js and Electron bindings with TypeScript types, available from npm.
- React Native (SimpleRnBLE): iOS and Android bindings for React Native with TypeScript types, available from npm.
- Kotlin Multiplatform (SimpleKtBLE): Kotlin Multiplatform bindings for Android, iOS, macOS, Windows, and Linux, available from Maven Central.
- Android (SimpleDroidBLE) - Deprecated: Android-only Kotlin bindings, replaced by SimpleKtBLE.
- Unreal Engine (SimpleBLE for Unreal): Unreal Engine plugin with Blueprint and C++ APIs.
- Unity (SimpleBLE for Unity): C# plugin for Windows and Android with IL2CPP support.
SimplePyBLE has surpassed 3.5 million downloads on PyPI.
Getting Started
New to SimpleBLE or Bluetooth LE? Start with the shortest path that matches where you are:
- Need to install a binding? Use the Installation guide to choose the right package or source build path for C++, C, C#, Python, Java, Go, Rust, JavaScript, React Native, Kotlin Multiplatform, Android, Unreal Engine, and agent tooling.
- Need a first working program? Use the Quickstart to scan for nearby BLE devices with copy/paste snippets for each supported binding.
- Need to build a real workflow? Use the Recipes for scanning, connecting, and GATT operations like read, write, and notify.
- New to BLE concepts? Read Fundamentals for Bluetooth LE basics, permissions, concurrency, and CMake setup.
Support and resources
- Documentation: Start with Installation, Quickstart, and the task-based Recipes.
- Commercial support: Visit simpleble.org or email us about licensing and professional services.
- Community: Ask questions and share projects in GitHub Discussions.
- Dongl: Prototype and ship with the official SimpleBLE USB adapter.
- Lower-level libraries: SimpleBluez wraps BlueZ, and SimpleDBus wraps the D-Bus object model.
SimpleBLE is a project powered by The California Open Source Company.
