Skip to content
Shiny Controls v1.0 - The Ultra Control Suite for .NET MAUI & BlazorO...M...G!

BluetoothLE

GitHub GitHub stars for shinyorg/shiny
Downloads NuGet downloads for Shiny.BluetoothLE
Blazor NuGet downloads for Shiny.BluetoothLE.Blazor
Linux NuGet downloads for Shiny.BluetoothLE.Linux
Frameworks
.NET
.NET MAUI
Blazor
Operating Systems
Android
iOS
macOS
Windows
Linux

Shiny BluetoothLE provides a unified cross-platform API for Bluetooth Low Energy operations in the BLE central role (scanning, connecting, and talking to peripherals). It wraps the native BLE APIs on each platform, giving you a consistent reactive and async experience.

  • Unified central-role API across iOS, macOS, Android, Windows, Linux, and Blazor WebAssembly
  • Reactive (IObservable) and async/await patterns
  • Managed scanner with observable collection
  • Automatic GATT Error 133 handling on Android
  • Background scanning and peripheral state monitoring (mobile platforms)
  • Connection lifecycle management
  • MTU negotiation, pairing, and reliable write transactions
Feature iOS macOS Android Windows Linux Blazor WASM
Package Shiny.BluetoothLE Shiny.BluetoothLE Shiny.BluetoothLE Shiny.BluetoothLE Shiny.BluetoothLE.Linux Shiny.BluetoothLE.Blazor
Scanning Full Full Full Full Full (BlueZ) Limited
Background scanning Allowed with entitlements N/A (desktop) Foreground service N/A N/A Not supported
Pairing Full Full Full Full Manual via BlueZ Not supported
L2CAP CoC Full Full API 29+ Full (BlueZ socket)
Browser How to enable
Chrome / Edge / Brave / Opera (desktop) Enabled by default on Windows, macOS, Linux, and ChromeOS. If scanning fails, check chrome://flags/#enable-web-bluetooth (or edge://flags, brave://flags, opera://flags) and set Web Bluetooth to Enabled, then restart. Linux also needs experimental-web-platform-features enabled and BlueZ 5.43+.
Chrome / Edge (Android) Supported on Android 6.0+. No flag needed on recent versions; on older builds enable chrome://flags/#enable-experimental-web-platform-features. OS-level location services must be on for the native chooser prompt to appear.
Samsung Internet Open internet://flags, enable Web Bluetooth, then restart.
Safari (macOS / iOS / iPadOS) Apple does not ship Web Bluetooth in Safari. On iOS/iPadOS use a third-party browser that implements Web Bluetooth on top of WKWebView, such as Bluefy or WebBLE. There is no supported option in stock Safari on macOS.
Firefox (all platforms) Not supported — Mozilla has not implemented Web Bluetooth and there is no flag to turn it on. Use a Chromium-based browser instead.
Changed files
  • MyApp/
Platforms/Android/AndroidManifest.xml
AndroidManifest.xml
1<?xml version="1.0" encoding="utf-8"?>2<manifest xmlns:android="http://schemas.android.com/apk/res/android">3	<application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true">4	</application>5	<uses-feature android:name="android.hardware.bluetooth_le" android:required="false" />6	<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>7	<uses-permission android:name="android.permission.BATTERY_STATS" />8	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />9	<uses-permission android:name="android.permission.INTERNET" />10    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />11    <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />12	<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />13	<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" />14	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />15	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />16</manifest>
claude plugin marketplace add shinyorg/skills
claude plugin install shiny@shiny

One plugin installs all 35 Shiny skills. Your agent loads only the skill relevant to what you're building, so there's no cost to having them all available.

copilot plugin marketplace add https://github.com/shinyorg/skills
copilot plugin install shiny@shiny

One plugin installs all 35 Shiny skills. Your agent loads only the skill relevant to what you're building, so there's no cost to having them all available.

View shiny-bluetoothle Skill