You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter中实现带OOB安全的nRF Mesh连接?

Flutter中nRF Mesh带OOB连接出现“Unsupported algorithm!”错误的解决方法

我需要在Flutter中实现带有OOB安全机制的nRF Mesh连接,但操作时触发了“Unsupported algorithm!”错误,相关日志如下:

V/MeshManagerApi(17303): Provisioning pdu sent: 0x030005
V/MeshManagerApi(17303): Received provisioning message: 0x03010100020003000000080008
V/ProvisioningCapabilities(17303): Number of elements: 1
V/ProvisioningCapabilities(17303): Public key information available: false
V/ProvisioningCapabilities(17303): Static OOB information available: : false
V/ProvisioningCapabilities(17303): Output OOB size: 0
V/ProvisioningCapabilities(17303): Input OOB size: 8
V/InputOOBAction(17303): Input oob action type value: Input Alpha Numeric
D/fr.dooz.nordic_nrf_mesh.DoozMeshProvisioningStatusCallbacks(17303): onProvisioningStateChanged 0503f008-d1d8-25c8-4a59-494f542d3235
D/fr.dooz.nordic_nrf_mesh.DoozMeshProvisioningStatusCallbacks(17303): meshNodeAlreadySaved true
D/fr.dooz.nordic_nrf_mesh.DoozMeshManagerCallbacks(17303): onNetworkUpdated
I/flutter (17303): [NordicNrfMesh] successfully assigned 2 to node !
E/MethodChannel#fr.dooz.nordic_nrf_mesh/mesh_manager_api/methods(17303): java.lang.IllegalArgumentException: Unsupported algorithm!
E/MethodChannel#fr.dooz.nordic_nrf_mesh/mesh_manager_api/methods(17303): at no.nordicsemi.android.mesh.MeshProvisioningHandler.sendProvisioningStart(MeshProvisioningHandler.java:378)
E/MethodChannel#fr.dooz.nordic_nrf_mesh/mesh_manager_api/methods(17303): at fr.dooz.nordic_nrf_mesh.DoozMeshManagerApi.onMethodCall(DoozMeshManagerApi.kt:455)
E/MethodChannel#fr.dooz.nordic_nrf_mesh/mesh_manager_api/methods(17303): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267)
E/MethodChannel#fr.dooz.nordic_nrf_mesh/mesh_manager_api/methods(17303): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
E/MethodChannel#fr.dooz.nordic_nrf_mesh/mesh_manager_api/methods(17303): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322)
E/flutter (17303): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(error, Unsupported algorithm!, null, java.lang.IllegalArgumentException: Unsupported algorithm!
E/flutter (17303): at no.nordicsemi.android.mesh.utils.AlgorithmType.getSupportedAlgorithmValue(AlgorithmType.java:91)
E/flutter (17303): at no.nordicsemi.android.mesh.provisionerstates.ProvisioningStartState.createProvisioningStartPDU(ProvisioningStartState.java:117)
E/flutter (17303): at no.nordicsemi.android.mesh.provisionerstates.ProvisioningStartState.executeSend(ProvisioningStartState.java:101)
E/flutter (17303): at no.nordicsemi.android.mesh.MeshProvisioningHandler.sendProvisioningStart(MeshProvisioningHandler.java:378)
E/flutter (17303): at no.nordicsemi.android.mesh.MeshProvisioningHandler.startProvisioningNoOOB(MeshProvisioningHandler.java:306) 

错误原因分析

  • 从日志的ProvisioningCapabilities字段可知,设备不支持公钥配网,无静态OOB,仅支持8位字母数字的输入型OOB。
  • 错误栈显示代码调用了startProvisioningNoOOB(无OOB配网方法),但设备需要OOB验证,且当前指定的配网算法不在设备支持列表中,触发算法不兼容异常。

解决方案

1. 改用输入型OOB配网流程

放弃无OOB配网方法,调用支持输入OOB的接口,传入设备要求的8位字母数字OOB数据:

// 假设已获取设备UUID和支持的算法
final oobInput = "ABC12345"; // 示例8位字母数字OOB数据
await nordicNrfMesh.startProvisioningWithInputOob(
  nodeUuid,
  selectedAlgorithm,
  oobInput: oobInput,
);

2. 动态获取设备支持的算法

从ProvisioningCapabilities中提取设备支持的算法列表,避免硬编码不兼容的算法:

// 获取设备的配网能力信息
final provisioningCapabilities = await nordicNrfMesh.getProvisioningCapabilities(nodeUuid);
final supportedAlgorithms = provisioningCapabilities.supportedAlgorithms;
if (supportedAlgorithms.isNotEmpty) {
  final selectedAlgorithm = supportedAlgorithms.first; // 选择第一个兼容算法
  // 启动输入OOB配网
  await nordicNrfMesh.startProvisioningWithInputOob(
    nodeUuid,
    selectedAlgorithm,
    oobInput: "你的OOB数据",
  );
}

3. 检查自定义插件实现

如果使用的是自定义Flutter插件(fr.dooz.nordic_nrf_mesh),需确保Android端代码调用MeshProvisioningHandler时,传递的是设备支持的算法类型,而非硬编码固定值。

内容的提问来源于stack exchange,提问作者Kishan Patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 08:57:03