.NET Bluetooth

.NET and MAUI BLE libraries, compared

Five ways to reach Bluetooth Low Energy from C#. SimpleBLE runs on Windows, macOS, Linux, Android, and iOS from one NuGet package, as a central or a peripheral, in MAUI apps and desktop tools alike.

Kober Engineering
InsuLearn
Meta
Fender
Honeywell
Bionic Labs
Sona
SWT
Moon Smart Focus
Lewitt
Medra
Desko
g.tec
IXI
Innovision
Moonlighting Industries
Kober Engineering
InsuLearn
Meta
Fender
Honeywell
Bionic Labs
Sona
SWT
Moon Smart Focus
Lewitt
Medra
Desko
g.tec
IXI
Innovision
Moonlighting Industries
Kober Engineering
InsuLearn
Meta
Fender
Honeywell
Bionic Labs
Sona
SWT
Moon Smart Focus
Lewitt
Medra
Desko
g.tec
IXI
Innovision
Moonlighting Industries
Comparison

How the .NET BLE libraries compare

Platforms, roles, and licensing decide which library fits a commercial .NET app. This is where each one stands.

How the .NET BLE libraries compare
SimpleBLESimpleSharpBLEWindows, macOS, Linux, Android, iOS, Mac CatalystEvery platformC++, Python, Rust, Kotlin, and moreSource-available (BUSL 1.1); one commercial license per company
Plugin.BLEPlugin.BLEAndroid, iOS, Mac Catalyst, WindowsNo.NET onlyApache 2.0
ShinyShiny.BluetoothLEAndroid, iOS, macOS, Windows, Linux, Blazor WebAssemblyAndroid, iOS, macOS, Windows, Linux.NET onlyMIT
32feet.NETInTheHand.BluetoothLEWindows, Android, iOS, macOS, LinuxNo.NET onlyMIT
Windows Bluetooth APIsWindows.Devices.BluetoothWindowsYesC++/WinRT and other Windows languagesIncluded with Windows
The options

The .NET BLE libraries, one by one

SimpleBLE

SimpleBLE is a Bluetooth Low Energy library for Windows, macOS, Linux, iOS, and Android. Its .NET package, SimpleSharpBLE, scans and connects as a central and hosts GATT services as a peripheral, from one NuGet package that carries the native libraries for every platform. The same package works in MAUI apps, console tools, and services, with async methods and NativeAOT support. The library also runs in C++, Python, Rust, and other languages, and commercial customers work directly with the engineers who build it.

Plugin.BLE

Plugin.BLE is a central-role plugin for Xamarin and MAUI apps on Android, iOS, Mac Catalyst, and Windows, licensed under Apache 2.0. It has no peripheral role and no Linux support, so Linux tools and apps that advertise need another library.

Shiny

Shiny is an MIT-licensed .NET framework for device services, and its Bluetooth LE modules cover the central and peripheral roles on Android, iOS, macOS, Windows, and Linux. Bluetooth is one module among many, set up through Shiny's hosting and dependency injection. SimpleBLE is a Bluetooth library you call directly from any .NET app, available in other languages too, with a Bluetooth team behind it.

32feet.NET

32feet.NET's InTheHand.BluetoothLE gives .NET a Web Bluetooth-style API on Windows, Android, iOS, macOS, and Linux, under the MIT license. It works in the central role.

Windows Bluetooth APIs

Windows.Devices.Bluetooth is the Bluetooth API built into Windows, callable from C# on Windows 10 and newer, in both roles. It covers Windows only, so an app that also targets macOS, Linux, or mobile needs a separate implementation for each platform. SimpleBLE gives you one API for Windows and every other platform.

Get started

Scan, connect, and host in a few lines

Every blocking call in SimpleSharpBLE has an async counterpart. Add it with dotnet add package SimpleSharpBLE, and this is the code for each step.

using SimpleSharpBLE;

using var adapter = Adapter.GetAdapters()[0];

adapter.ScanFound += (_, e) =>
{
    using var peripheral = e.Peripheral;
    Console.WriteLine($"{peripheral.Identifier} [{peripheral.Address}]");
};
await adapter.ScanForAsync(TimeSpan.FromSeconds(5));
Why SimpleBLE

What SimpleBLE gives your .NET app

Platforms

Six platforms, one package

Windows, macOS, Linux, Android, iOS, and Mac Catalyst from one NuGet package.

Roles

Central and peripheral

Scan and connect, or advertise and serve GATT, on every platform.

Anywhere in .NET

MAUI, console, or service

The same package in MAUI apps, desktop tools, and background services. No framework to adopt.

Modern .NET

Async and NativeAOT

Async methods throughout. Trimming and NativeAOT with zero warnings.

Hardware

Dongl on desktop

Plug in a Dongl for a dedicated radio on Windows, macOS, or Linux. Same code.

Support

A direct line to the engineers

Commercial customers work directly with the team that builds SimpleBLE.

Try SimpleBLE in your .NET app

Evaluation needs no license. For commercial use, one agreement covers your whole company, with no per-seat, per-device, or royalty fees.

Frequently
asked questions

SimpleBLE, Plugin.BLE, Shiny, and 32feet.NET all work in MAUI apps. SimpleBLE also runs the same package in console tools and services on Windows, macOS, and Linux.

SimpleBLE, Shiny, and 32feet.NET support Linux. Plugin.BLE targets Android, iOS, Mac Catalyst, and Windows.

Yes. SimpleBLE hosts GATT services and advertises on Windows, macOS, Linux, Android, and iOS. Shiny's hosting module covers the peripheral role too, and so do the Windows Bluetooth APIs on Windows. Plugin.BLE and 32feet.NET work in the central role.

Add SimpleSharpBLE from NuGet, then move scanning, connections, and GATT calls one flow at a time. SimpleSharpBLE takes full 128-bit UUID strings, returns byte arrays, and has an async counterpart for every blocking call.

Yes. SimpleSharpBLE is trimming and NativeAOT compatible with no warnings, and publishing copies its native libraries next to the executable.

SimpleBLE is source-available under the Business Source License 1.1 and free for non-commercial use. Evaluation needs no license. Commercial use needs a license, and one agreement covers your whole company, with no per-seat, per-device, or royalty fees.