Installation
Pick the right SimpleBLE package or source build path for your language and platform.
SimpleBLE is a family of libraries. Start by choosing the binding that matches your application, then install the platform dependencies that binding needs.
Choose a binding
| Binding | Language | Status | Best fit | Install path |
|---|---|---|---|---|
| SimpleBLE | C++ | Production-ready | Native desktop, mobile native code, shared libraries | CMake from source |
| SimpleCBLE | C | Production-ready | C applications, FFI, language bridges | CMake from source |
| SimpleSharpBLE | C# / .NET | Production-ready | Desktop, mobile, and MAUI apps; test and industrial tooling | NuGet |
| SimplePyBLE | Python | Production-ready | Scripts, tools, data pipelines, tests | PyPI or local source |
| SimpleJavaBLE | Java | Production-ready | JVM desktop apps and integrations | Maven Central or local source |
| SimpleGoBLE | Go | Production-ready | Desktop apps, tools, and services | Go modules |
| SimpleRsBLE | Rust | Production-ready | Rust applications and async workflows | crates.io or local path |
| SimpleJSBLE | JavaScript / TypeScript | Production-ready | Node.js and Electron apps | npm |
| SimpleRnBLE | JavaScript / TypeScript | Production-ready | React Native apps on iOS and Android | npm |
| SimpleKtBLE | Kotlin Multiplatform | Production-ready | Shared Kotlin code for Android, iOS, and desktop | Maven Central |
| SimpleDroidBLE | Kotlin / Android | Deprecated | Existing Android-only applications; new ones use SimpleKtBLE | Maven Central or local composite build |
| SimpleBLE for Unreal | Unreal Engine / Blueprint / C++ | Fab plugin | Unreal projects that need BLE device integration | Fab or project plugin |
| SimpleBLE for Unity | Unity / C# | Development | Unity projects on Windows and Android | Asset Store package |
| SimpleBluez | C++ | Lower-level utility | Direct BlueZ integration on Linux | CMake from source |
| SimpleDBus | C++ | Lower-level utility | DBus object model work | CMake from source |
| SimpleAIBLE | Python / AI agents | Utility package | Local BLE tools for agents and HTTP/MCP workflows | uv or PyPI |
Platform prerequisites
| Platform | Required setup |
|---|---|
| Linux | BlueZ, DBus development headers, and permission to access the system Bluetooth stack. On Ubuntu, install libdbus-1-dev. |
| Windows | Windows 10 or newer, Windows SDK 10.0.22621.0 or newer, and a C++20-capable MSVC toolchain such as Visual Studio 2019 16.11 or newer. Build and run 64-bit applications on 64-bit Windows. |
| macOS | macOS 15.0 or newer and Xcode Command Line Tools. Packaged apps need Bluetooth usage strings in Info.plist. |
| iOS | iOS 15.8 or newer and the normal CoreBluetooth permission flow. |
| Android | API 31 or newer, Android Studio, Android NDK, manifest permissions, and runtime Bluetooth permission requests. |
See Bluetooth Permissions for the OS-specific permission details that are easy to miss on first adoption.
Install commands
Build and install the C++ library from source:
git clone https://github.com/simpleble/simpleble.git
cd simpleble
cmake -S simpleble -B build_simpleble
cmake --build build_simpleble -j
cmake --install build_simpleble --prefix "$PWD/install_simpleble"Consume the installed package from your own CMake project:
find_package(simpleble REQUIRED CONFIG)
target_link_libraries(your_app PRIVATE simpleble::simpleble)For a local vendored build, add the library directly:
add_subdirectory(path/to/simpleble/simpleble ${CMAKE_BINARY_DIR}/simpleble)
target_link_libraries(your_app PRIVATE simpleble::simpleble)Build and install the C wrapper from source:
git clone https://github.com/simpleble/simpleble.git
cd simpleble
cmake -S simplecble -B build_simplecble
cmake --build build_simplecble -j
cmake --install build_simplecble --prefix "$PWD/install_simplecble"Consume the installed package from CMake:
find_package(simplecble REQUIRED CONFIG)
target_link_libraries(your_app PRIVATE simplecble::simplecble)If you are compiling manually, include simplecble headers and link both simplecble and the platform Bluetooth dependencies.
Install SimpleSharpBLE from NuGet:
dotnet add package SimpleSharpBLERequires .NET 10. See SimpleSharpBLE Usage for platform requirements and a first scan example.
Install the Python binding from PyPI:
pip install simplepybleLinux users also need DBus headers:
sudo apt-get install libdbus-1-devInstall from a local checkout when developing SimplePyBLE itself:
git clone https://github.com/simpleble/simpleble.git
cd simpleble
pip install .Add SimpleJavaBLE to your Gradle dependencies:
dependencies {
implementation("org.simpleble:simplejavable:<version>")
}The Maven artifact bundles the supported Windows, macOS, and Linux native libraries. See SimpleJavaBLE Usage for source builds and native library loading options.
Install the Go binding with Go 1.25 or newer:
go get github.com/simpleble/simplegoble
go build ./...See SimpleGoBLE Usage for platform requirements and client examples.
Add the Rust crate:
cargo add simplersbleLinux users need DBus headers before building:
sudo apt-get install libdbus-1-devIf you want to use a local checkout while developing:
[dependencies]
simplersble = { path = "path/to/simpleble" }Install the Node.js package with Node.js 22 or newer:
npm install simplejsbleThe package includes the native addon for Windows, macOS, and Linux on x64 and arm64, so nothing is compiled during installation. See SimpleJSBLE Usage for Electron and platform notes.
Install the React Native package and Nitro Modules, which it is built on:
npm install simplernble react-native-nitro-modules
cd ios && pod installThe package includes SimpleBLE prebuilt for iOS, and compiles it with the NDK
in your app's Android build. Apps target iOS 15.8 and Android API 31 or newer,
declare Bluetooth usage in Info.plist, and request the Android permissions at
runtime; see
SimpleRnBLE Usage for permissions and Expo.
Add SimpleKtBLE to the shared module of your project, with Kotlin 2.3 or newer:
kotlin {
sourceSets {
commonMain.dependencies {
implementation("org.simpleble:simplektble:<version>")
}
}
}Each target's artifact includes the native SimpleBLE library it needs, for Android, iOS, macOS, Windows, and Linux, so nothing is compiled during your build. See SimpleKtBLE Usage for permissions and supported targets.
Add SimpleDroidBLE to your app module:
dependencies {
implementation("org.simpleble:simpledroidble:<version>")
}For a local checkout, include the library before include(":app"):
includeBuild("path/to/simpleble/simpledroidble") {
dependencySubstitution {
substitute(module("org.simpleble:simpledroidble")).using(project(":simpledroidble"))
}
}
include(":app")The app must also declare and request Bluetooth permissions at runtime.
In Unity's Package Manager, select My Assets, find SimpleBLE for Unity,
then download and import it. For a supplied .unitypackage, use Assets > Import
Package > Custom Package. Use Unity 6.3 LTS or 6.6.
See SimpleBLE for Unity Installation for assembly references and Platform notes for Android settings.
Install with uv:
uv tool install simpleaibleOr with pip:
pip install simpleaibleThen run the MCP server:
simpleaibleSee MCP Server and HTTP Server for agent and HTTP workflows.
Verify the install
The fastest smoke test is to scan for nearby devices:
- C++, C, Python, Java, Rust, Kotlin Multiplatform, and Android users can start with Quickstart.
- C# users can start with the scan example in SimpleSharpBLE Usage.
- CMake users can build the repository examples from SimpleBLE Examples or SimpleCBLE Examples.
- Python users can run the examples under
examples/simplepyble. - Rust users can run the examples under
examples/simplersble. - Android users can run the example app under
examples/simpleble-android.
