Plugin.Bluetooth Documentation
This directory documents the current pre-release implementation state of Plugin.Bluetooth.
Goal of these docs:
- Describe behavior as implemented in code
- Document conventions and constraints used in this repository
- Show platform differences explicitly
Documentation Map
Start Here
Architecture And Rules
- Architecture Guidelines
- Architecture Diagrams
- Facade Pattern Summary
- Architecture Decision Records (ADR)
Core Concepts
- Scanner
- Device
- Service
- Characteristic
- Service Definitions and Profiles
- Descriptor
- Advertisement
- Broadcaster
- Local Service
- Local Characteristic
- Connected Device
Configuration
- Dependency Injection
- Profile Migration
- Infrastructure Options
- Scanning Options
- Connection Options
- Exploration Options
- L2CAP Options
- Broadcasting Options
API Reference
Platform Documentation
Operational Guidance
Layer Model
flowchart LR
A[Abstractions] --> B[Core]
B --> C[Platform Implementations]
C --> D[Bluetooth.Maui Facade]
Projects in the layer model:
- Abstractions: Bluetooth.Abstractions, Bluetooth.Abstractions.Scanning, Bluetooth.Abstractions.Broadcasting
- Core: Bluetooth.Core, Bluetooth.Core.Scanning, Bluetooth.Core.Broadcasting
- Platform: Bluetooth.Maui.Platforms.Apple, Bluetooth.Maui.Platforms.Droid, Bluetooth.Maui.Platforms.Win, Bluetooth.Maui.Platforms.DotNetCore
- Facade: Bluetooth.Maui
Capability Snapshot
Legend:
- ✅ implemented
- ⚠️ implemented with platform limitations
- ❌ not implemented
| Platform | Scanning | Connection | GATT Read/Write/Notify | L2CAP | Broadcasting |
|---|---|---|---|---|---|
| Android | ✅ | ✅ | ✅ | ✅ API 29+ | ✅ |
| iOS/macOS | ✅ | ✅ | ✅ | ✅ iOS 11+/macOS 10.13+ | ✅ |
| Windows | ✅ | ✅ | ✅ | ❌ | ✅ |
| DotNetCore fallback | ❌ | ❌ | ❌ | ❌ | ❌ |
Notes:
- Windows currently throws NotSupportedException for L2CAP, connected RSSI reads, PHY changes, MTU requests, connection-priority requests, and force-disconnecting a subscribed GATT client while broadcasting. Broadcasting itself (GATT server/peripheral role) is fully implemented.
- iOS/macOS broadcaster is implemented, but some operations remain restricted by CoreBluetooth behavior.
- DotNetCore fallback implementations throw PlatformNotSupportedException by design.