First bluetooth scan shows nothing.
Then I stop the scan, restart the scan, and connect to one of my two found bluetooth companions.
Just as it finishes loading nodes and channels, the app crashes and I get an Apple report dialoge from macOS
bill@beastie /Volumes/ExternalData/source/bplein/meshcore-open Main ± flutter run
Connected devices:
macOS (desktop) • macos • darwin-arm64 • macOS 26.1 25B78 darwin-arm64
Checking for wireless devices...
[1]: macOS (macos)
Please choose one (or "q" to quit): 1
Launching lib/main.dart on macOS in debug mode...
Building macOS application...
✓ Built build/macos/Build/Products/Debug/meshcore_open.app
2026-01-02 15:44:21.005 meshcore_open[18957:6090980] Running with merged UI and platform thread. Experimental.
Failed to foreground app; open returned 1
flutter: Error initializing notifications: Invalid argument(s): macOS settings must be set when targeting macOS platform.
flutter: Error initializing notifications: Invalid argument(s): macOS settings must be set when targeting macOS platform.
Syncing files to device macOS... 27ms
Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h List all available interactive commands.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).
A Dart VM Service on macOS is available at: http://127.0.0.1:60888/bQ5hA1fb3jI=/
The Flutter DevTools debugger and profiler on macOS is available at: http://127.0.0.1:60888/bQ5hA1fb3jI=/devtools/?uri=ws://127.0.0.1:60888/bQ5hA1fb3jI=/ws
2026-01-02 15:44:25.422 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: flutterRestart
2026-01-02 15:44:25.422 meshcore_open[18957:6090980] [FBP-iOS] initializing CBCentralManager
2026-01-02 15:44:25.422 meshcore_open[18957:6090980] [FBP-iOS] showPowerAlert: yes
2026-01-02 15:44:25.422 meshcore_open[18957:6090980] [FBP-iOS] restoreState: no
2026-01-02 15:44:25.422 meshcore_open[18957:6090980] [FBP-iOS] initializing checkForMtuChangesTimer
2026-01-02 15:44:25.422 meshcore_open[18957:6090980] [FBP-iOS] disconnectAllDevices(flutterRestart)
2026-01-02 15:44:25.422 meshcore_open[18957:6090980] [FBP-iOS] connectedPeripherals: 0
2026-01-02 15:44:25.423 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: startScan
[ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: PlatformException(startScan, bluetooth must be turned on. (CBManagerStateUnknown), null, null)
#0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:653:7)
#1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:367:18)
<asynchronous suspension>
#2 FlutterBluePlusDarwin._callDarwinMethod (package:flutter_blue_plus_darwin/flutter_blue_plus_darwin.dart:290:17)
<asynchronous suspension>
#3 FlutterBluePlusDarwin.startScan (package:flutter_blue_plus_darwin/flutter_blue_plus_darwin.dart:233:12)
<asynchronous suspension>
#4 FlutterBluePlus._invokePlatform (package:flutter_blue_plus/src/flutter_blue_plus.dart:560:14)
<asynchronous suspension>
#5 FlutterBluePlus.startScan (package:flutter_blue_plus/src/flutter_blue_plus.dart:288:7)
<asynchronous suspension>
#6 MeshCoreConnector.startScan (package:meshcore_open/connector/meshcore_connector.dart:611:5)
<asynchronous suspension>
2026-01-02 15:44:25.484 meshcore_open[18957:6090980] [FBP-iOS] centralManagerDidUpdateState CBManagerStatePoweredOn
flutter: [FBP] stopScan: already stopped
2026-01-02 15:44:43.769 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: startScan
2026-01-02 15:44:46.586 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: stopScan
2026-01-02 15:44:46.591 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: connect
2026-01-02 15:44:47.469 meshcore_open[18957:6090980] [FBP-iOS] didConnectPeripheral
flutter: MTU request failed: FlutterBluePlusException | requestMtu | fbp-code: 2 | android-only, using default
2026-01-02 15:44:47.479 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: discoverServices
flutter: [FBP] stopScan: already stopped
2026-01-02 15:44:47.618 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverServices:
2026-01-02 15:44:47.618 meshcore_open[18957:6090980] [FBP-iOS] svc: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.619 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverCharacteristicsForService:
2026-01-02 15:44:47.619 meshcore_open[18957:6090980] [FBP-iOS] svc: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.619 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.619 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400002-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.679 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverIncludedServicesForService:
2026-01-02 15:44:47.679 meshcore_open[18957:6090980] [FBP-iOS] svc: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.680 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverDescriptorsForCharacteristic:
2026-01-02 15:44:47.680 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.680 meshcore_open[18957:6090980] [FBP-iOS] desc: 2902
2026-01-02 15:44:47.680 meshcore_open[18957:6090980] [FBP-iOS] desc: 2901
2026-01-02 15:44:47.680 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverDescriptorsForCharacteristic:
2026-01-02 15:44:47.680 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400002-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.680 meshcore_open[18957:6090980] [FBP-iOS] desc: 2901
2026-01-02 15:44:47.683 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverCharacteristicsForService:
2026-01-02 15:44:47.683 meshcore_open[18957:6090980] [FBP-iOS] svc: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.683 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.683 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400002-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.687 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: connect
2026-01-02 15:44:47.687 meshcore_open[18957:6090980] [FBP-iOS] already connected
flutter: MTU request failed: FlutterBluePlusException | requestMtu | fbp-code: 2 | android-only, using default
2026-01-02 15:44:47.689 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: setNotifyValue
2026-01-02 15:44:47.689 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverDescriptorsForCharacteristic:
2026-01-02 15:44:47.689 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.689 meshcore_open[18957:6090980] [FBP-iOS] desc: 2902
2026-01-02 15:44:47.689 meshcore_open[18957:6090980] [FBP-iOS] desc: 2901
2026-01-02 15:44:47.689 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverDescriptorsForCharacteristic:
2026-01-02 15:44:47.689 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400002-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.689 meshcore_open[18957:6090980] [FBP-iOS] desc: 2901
2026-01-02 15:44:47.740 meshcore_open[18957:6090980] [FBP-iOS] didUpdateNotificationStateForCharacteristic:
2026-01-02 15:44:47.740 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.744 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: discoverServices
2026-01-02 15:44:47.755 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverServices:
2026-01-02 15:44:47.755 meshcore_open[18957:6090980] [FBP-iOS] svc: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.755 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverCharacteristicsForService:
2026-01-02 15:44:47.755 meshcore_open[18957:6090980] [FBP-iOS] svc: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.755 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.755 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400002-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.797 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverIncludedServicesForService:
2026-01-02 15:44:47.797 meshcore_open[18957:6090980] [FBP-iOS] svc: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.797 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverDescriptorsForCharacteristic:
2026-01-02 15:44:47.797 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.797 meshcore_open[18957:6090980] [FBP-iOS] desc: 2902
2026-01-02 15:44:47.797 meshcore_open[18957:6090980] [FBP-iOS] desc: 2901
2026-01-02 15:44:47.797 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverDescriptorsForCharacteristic:
2026-01-02 15:44:47.797 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400002-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.797 meshcore_open[18957:6090980] [FBP-iOS] desc: 2901
2026-01-02 15:44:47.798 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverCharacteristicsForService:
2026-01-02 15:44:47.798 meshcore_open[18957:6090980] [FBP-iOS] svc: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.798 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.798 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400002-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.799 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: writeCharacteristic
2026-01-02 15:44:47.799 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverDescriptorsForCharacteristic:
2026-01-02 15:44:47.799 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.800 meshcore_open[18957:6090980] [FBP-iOS] desc: 2902
2026-01-02 15:44:47.800 meshcore_open[18957:6090980] [FBP-iOS] desc: 2901
2026-01-02 15:44:47.800 meshcore_open[18957:6090980] [FBP-iOS] didDiscoverDescriptorsForCharacteristic:
2026-01-02 15:44:47.800 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400002-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.800 meshcore_open[18957:6090980] [FBP-iOS] desc: 2901
2026-01-02 15:44:47.802 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: setNotifyValue
2026-01-02 15:44:47.860 meshcore_open[18957:6090980] [FBP-iOS] didUpdateNotificationStateForCharacteristic:
2026-01-02 15:44:47.860 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
2026-01-02 15:44:47.860 meshcore_open[18957:6090980] [FBP-iOS] didUpdateValueForCharacteristic:
2026-01-02 15:44:47.860 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
flutter: RX frame: code=13 len=80
flutter: [ChannelSync] Starting sync for 40 channels
flutter: [ChannelSync] Requesting channel 0/40 (retry: 0/3)
2026-01-02 15:44:47.864 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: writeCharacteristic
2026-01-02 15:44:47.865 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: writeCharacteristic
2026-01-02 15:44:47.866 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: writeCharacteristic
2026-01-02 15:44:47.867 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: writeCharacteristic
2026-01-02 15:44:47.868 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: writeCharacteristic
2026-01-02 15:44:47.921 meshcore_open[18957:6090980] [FBP-iOS] didUpdateValueForCharacteristic:
2026-01-02 15:44:47.921 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
flutter: RX frame: code=5 len=68
flutter: Got SELF_INFO
flutter: RX frame: code=5 len=68
flutter: Got SELF_INFO
2026-01-02 15:44:47.924 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: writeCharacteristic
2026-01-02 15:44:47.925 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: writeCharacteristic
2026-01-02 15:44:47.925 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: writeCharacteristic
2026-01-02 15:44:47.931 meshcore_open[18957:6090980] [FBP-iOS] handleMethodCall: writeCharacteristic
2026-01-02 15:44:47.989 meshcore_open[18957:6090980] [FBP-iOS] didUpdateValueForCharacteristic:
2026-01-02 15:44:47.989 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
flutter: RX frame: code=13 len=80
flutter: RX frame: code=13 len=80
2026-01-02 15:44:48.038 meshcore_open[18957:6090980] [FBP-iOS] didUpdateValueForCharacteristic:
2026-01-02 15:44:48.038 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
flutter: RX frame: code=2 len=5
flutter: Got CONTACTS_START
flutter: RX frame: code=2 len=5
flutter: Got CONTACTS_START
2026-01-02 15:44:48.101 meshcore_open[18957:6090980] [FBP-iOS] didUpdateValueForCharacteristic:
2026-01-02 15:44:48.101 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
flutter: RX frame: code=0 len=1
flutter: Unknown frame code: 0
flutter: RX frame: code=0 len=1
flutter: Unknown frame code: 0
2026-01-02 15:44:48.158 meshcore_open[18957:6090980] [FBP-iOS] didUpdateValueForCharacteristic:
2026-01-02 15:44:48.158 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
flutter: RX frame: code=0 len=1
flutter: Unknown frame code: 0
flutter: RX frame: code=0 len=1
flutter: Unknown frame code: 0
2026-01-02 15:44:48.220 meshcore_open[18957:6090980] [FBP-iOS] didUpdateValueForCharacteristic:
2026-01-02 15:44:48.220 meshcore_open[18957:6090980] [FBP-iOS] chr: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
flutter: RX frame: code=3 len=148
flutter: Got CONTACT
flutter: RX frame: code=3 len=148
flutter: Got CONTACT
flutter: Error initializing notifications: Invalid argument(s): macOS settings must be set when targeting macOS platform.
flutter_local_notifications/FlutterLocalNotificationsPlugin.swift:538: Fatal error: Unexpectedly found nil while unwrapping an Optional value
Lost connection to device.
First bluetooth scan shows nothing.
Then I stop the scan, restart the scan, and connect to one of my two found bluetooth companions.
Just as it finishes loading nodes and channels, the app crashes and I get an Apple report dialoge from macOS