airoc_connect_flutter
A Flutter plugin for Infineon AIROC Bluetooth OTA (Over-The-Air) firmware upgrades. Supports Android, iOS, and macOS.
What this package is like to depend on
Last release 3 days ago
21 Aug 2026
Release timing varies
gaps range from 2 weeks to 4 months
Nearly every release is documented
notes for 6 of 6 stable releases
Nothing withdrawn
no release was ever pulled
5 months old
6 releases · first in 2026
6 releases in the last 12 months
see the full history below
Release timeline
6 releases · Mar 2026 to Aug 2026Releases
latest 6-
0.0.821 Aug 2026Release notes
Open source →Lowered Minimum SDK Requirements
- Minimum Dart SDK lowered from 3.8.1 to 3.2.0
- Minimum Flutter lowered from 3.32.7 to 3.16.0
- Downgraded
cryptoto ^3.0.3 andflutter_lintsto ^4.0.0, the last versions compatible with Dart SDK 3.2
-
0.0.704 Aug 2026Release notes
Open source →OTA Workflow Redesign & Connection Stability
Platform Support: Android, iOS, macOS
New Features
- Auto-Unpair After OTA - Once the upgrade completes, the device is automatically unpaired to clean up the pairing state: Android calls
removeBond(), while iOS/macOS disconnect (CoreBluetooth exposes no programmatic unpair API). - Explicit Manual Pairing — Added "Pair Device" as Step 1 in the OTA workflow. Users must manually pair before proceeding to service discovery and upgrade. Paired state is visually indicated (Not Paired / Pairing… / Paired ✓).
- 4-Step OTA Workflow — Expanded from 3 steps to 4 steps for clearer operation flow:
- Step 1: Pair Device — Manually pair with the device
- Step 2: Discover Services — Read device service UUIDs
- Step 3: Select Firmware — Choose a firmware file
- Step 4: Start OTA Upgrade — Begin the firmware update
- Colorized Debug Logging — Terminal output now uses ANSI color coding: level-specific badges (blue=info, yellow=warning, red=error), green tags, gray timestamps, magenta TX / cyan RX hex dumps.
- Characteristic Property Filtering — Service discovery dropdowns now only show characteristics that support both WRITE and NOTIFY capabilities.
Bug Fixes
- Fixed macOS Pairing "android-only" Error — Pairing and OTA no longer throw
android-onlyon macOS/iOS. The example app previously calledflutter_blue_plusAndroid-only APIs (createBond(),bondState) unconditionally on all platforms; these are now guarded behindPlatform.isAndroid. On iOS/macOS (CoreBluetooth), which expose no programmatic pairing API,pairDevice()just connects and pairing is triggered implicitly by the OS when an encrypted characteristic is accessed;isDeviceBonded()/isBondedfall back to connection state. Android retains its explicitcreateBond()flow unchanged. - Fixed Repeated Pairing Prompts — Eliminated unnecessary disconnect/reconnect cycles throughout the OTA flow. A single continuous BLE connection is now maintained from pairing through OTA completion, matching iOS CoreBluetooth behavior.
- Fixed "WRITE property not supported" Error — Transport layer now auto-detects whether the characteristic supports
writeorwriteWithoutResponseand uses the correct write mode. - Fixed Multiple
createBond()Calls — Removed auto-pairing logic from the transport layer. Pairing is now exclusively handled by the user-facing "Pair Device" step.
Technical Improvements
- Single Continuous Connection —
FlutterBluePlusOtaTransport.connect()no longer forces disconnect/reconnect when the device is already connected. It reuses the existing connection to avoid bond re-negotiation. - Transport Write Detection —
write()auto-falls back towriteWithoutResponsewhen the characteristic lacks WRITE property. - Characteristic Discovery —
discover()logs all characteristic properties and selects the best match with both WRITE and NOTIFY capabilities. - Pairing State Management — Bond state is checked on OTA screen init to detect previously-paired devices.
Notes
- One Connection, One Pairing — Following the iOS CoreBluetooth model, the app now uses a single Bluetooth connection throughout the entire OTA session. Users should only see the pairing dialog once.
- Auto-Unpair After OTA - Once the upgrade completes, the device is automatically unpaired to clean up the pairing state: Android calls
-
0.0.630 Mar 2026 -
0.0.530 Mar 2026Release notes
Open source →Major UI Refactor and OTA Workflow Optimization
Platform Support: Android, iOS, macOS
New Features
- Simplified OTA Upgrade Screen - Refactored multi-page flow into a single-page three-step process
- Step 1: Discover Services - Discover device services (auto-pair on connect)
- Step 2: Select Firmware - Select firmware file
- Step 3: Start OTA Upgrade - Start upgrade
- Smart Bottom Hint Bar - Displays dynamic operation hints based on current state
- Auto-Return After OTA - Automatically returns to scan screen 2 seconds after upgrade completes
- Simplified Device Scan Screen - Removed "OTA only" toggle, scans all devices by default
Bug Fixes
- Fixed Pair State Check Logic - Uses
bondState.firstto wait for stream update, avoiding repeated pairing dialogs - Fixed GATT 133 Error - Disconnects existing connection before reconnecting to prevent connection conflicts
- Fixed Unresponsive Button After Pairing - Re-checks state after pairing to ensure UI updates correctly
- Removed Redundant Step 1 Pair Card - Pairing now happens automatically during service discovery
Technical Improvements
- BLE Connection Optimization - Added pre-connect checks and delays in
connect()method to avoid GATT cache conflicts - Optimized Pairing Timing - Only triggers
createBond()when device is not bonded; directly connects for bonded devices - Enhanced Error Logging - Added detailed bond state logs for debugging
Notes
- discoverServices() is Required - BLE requires rediscovering services after each connection; this is standard BLE protocol behavior
- Bootloader Mode May Trigger Pairing - If device changes MAC address after entering bootloader mode, system will treat it as a new device and request pairing
- Simplified OTA Upgrade Screen - Refactored multi-page flow into a single-page three-step process
-
0.0.4+424 Mar 2026 -
0.0.3+324 Mar 2026