// the find
dotnet-bluetooth-le/dotnet-bluetooth-le
Bluetooth LE plugin for Xamarin/MAUI, supporting Android, iOS, Mac, Windows
A cross-platform BLE plugin for Xamarin and MAUI that wraps Android, iOS, Mac, and Windows Bluetooth stacks behind a unified C# interface. It handles scanning, connecting, and reading/writing GATT characteristics without you having to touch platform-specific APIs directly. The audience is mobile and IoT developers who need BLE in a .NET mobile app and don't want to write four platform implementations.
The abstraction layer is well-designed — IAdapter, IDevice, IService, ICharacteristic contracts are clean and the platform implementations live in clearly separated folders. The BleCommandQueue utility addresses a real BLE gotcha: Android's GATT stack is not thread-safe and will silently corrupt if you fire operations concurrently. The Windows (WinRT) implementation is there and maintained, which is rare for MAUI BLE libraries. KnownServices/KnownCharacteristics with standard Bluetooth SIG GUIDs saves tedious lookup work for common sensors.
The test suite is almost nonexistent — two test files, both doing trivial things, no platform-specific logic tested at all. BLE peripheral/server mode is a half-finished Android-only experiment sitting in BLE.Server.Droid with no cross-platform interface or docs. The Windows implementation has known gaps (no descriptor write support, limited scan filter options) but they're not called out clearly in the README. The library is still shipping Xamarin support alongside MAUI, which means the codebase carries legacy baggage and the NuGet packaging story is messier than it needs to be.