Skip to content

LowMesh nodes never appear in the pairing picker — missing from AccessorySetupKit discovery criteria #416

Description

@shadowdoc

Describe the bug

LowMesh boards advertise over BLE as LowMesh_MC_<id> (e.g. LowMesh_MC_2236). They never appear in the pairing picker, so they can't be added — even though they're ordinary MeshCore companion radios. I tested two different LowMesh devices; neither showed up.

The cause looks like the AccessorySetupKit discovery filter. On iOS 26.1+ the picker uses filtered discovery, and the filter is built from AccessorySetupKitDiscoveryCriteria.bluetoothNameSubstrings, which doesn't include LowMesh:

// MC1Services/Sources/MC1Services/Services/AccessorySetupKitDiscoveryCriteria.swift:14
static let bluetoothNameSubstrings = [
  "MeshCore-", "Whisper-", "WisCore", "XIAO", "elecrow", "HT-n5262", "Seeed",
  "BQ", "ProMicro", "Keepteen", "Meshtiny", "T1000-E-BOOT", "me25ls01-BOOT",
  "NRF52 DK", "T-Impulse",
]

To Reproduce

  1. Power on a LowMesh node (advertises as LowMesh_MC_...)
  2. In MeshCore One, go to add a new BLE device
  3. The picker appears but never lists the node

Reproduced with two separate LowMesh devices. Other MeshCore hardware pairs normally on the same phone.

Expected behavior

A LowMesh node appears in the pairing picker like any other MeshCore-compatible device.

Evidence that these are normal companion radios

Verified from macOS, to rule out the hardware:

  • The device advertises the Nordic UART service the app scans for. A bleak scan of 38 nearby BLE devices returned exactly one match for 6E400001-B5A3-F393-E0A9-E50E24DCCA9E:
    955DB188-0456-75BD-1042-BC1B74AD2CC5  LowMesh_MC_2236  [MeshCore service, rssi -50]
    
  • meshcore-cli connects to it by address and it answers the companion protocol normally:
    model: RAK 4631, ver: v1.16.0, fw ver 13, max_contacts 350, max_channels 40
    

Suggested fix

Add "LowMesh" to bluetoothNameSubstrings. It's a substring match, so one entry covers LowMesh_MC_2236 and any other LowMesh_* variant.

I've confirmed the LowMesh_MC_ prefix on the device above; I haven't surveyed the whole product line, so LowMesh is the safer of the two as a match string.

Happy to open the PR if you'd prefer that to implementing it yourself.

Device (please complete the following information):

  • Device: iPhone 17 Pro
  • OS: iOS 26.6
  • Version: v1.4.0
  • Build: 202

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions