Android Dependency Resolution Fails
- Confirm your app has
google(),mavenCentral(), and any required SDK repository configured. - Confirm
com.mentra:bluetooth-sdk:<version>matches the SDK version you are integrating. - Confirm Gradle can resolve the companion SDK artifacts.
- If you are testing an unreleased SDK, publish the SDK and companion artifacts to
mavenLocal()and includemavenLocal()in the app repositories.
Android Build Fails On Native Libraries
- Confirm Android min SDK is at least
28. - Confirm Java 17 is used by Gradle.
- Confirm your app includes
pickFirsts += "**/libonnxruntime.so"underandroid.packaging.jniLibs. - Confirm no app-level packaging rule excludes
libc++_shared.so, ONNX Runtime, or SDK native libraries. - Clean only the app build output first. Do not delete SDK source artifacts unless you are intentionally resetting your workspace.
iOS Pod Install Fails
Run:15.1 and that the MentraBluetoothSDK pod version exists.
If your app also uses Firebase with static frameworks, Firebase modular header configuration belongs in your app, not in the Bluetooth SDK.
React Native Native Module Is Missing
- Confirm you are running a development build or production native build. Expo Go cannot load
@mentra/bluetooth-sdk. - Run
bunx expo prebuildafter adding the SDK plugin toapp.json. - Confirm
@mentra/bluetooth-sdkis installed in the app that is being prebuilt. - On iOS, run
pod installinside the generatedios/directory or rerunbunx expo run:ios. - If you are testing a local SDK package, set
MENTRA_BLUETOOTH_SDK_PACKAGE_PATHto the same package path you installed with Bun.
Bluetooth Permission Problems
- Android 12+ requires runtime Bluetooth scan/connect permissions.
- Android scanning may require location permission or Location services depending on OS version and device policy.
- On some Android 12+ devices, scans can start successfully but return zero callbacks until
ACCESS_FINE_LOCATIONis granted. - iOS requires
NSBluetoothAlwaysUsageDescription. - Microphone/audio features require
RECORD_AUDIOon Android andNSMicrophoneUsageDescriptionon iOS.
No Devices Found
- Confirm the glasses are charged and in pairing mode.
- Confirm OS Bluetooth permissions are granted.
- On Android, confirm location permission is granted and device Location services are enabled.
- Confirm the selected
DeviceModelmatches the target glasses family. - Stop and restart scanning from the UI instead of scanning indefinitely.
- Try pairing from a clean Bluetooth state after forgetting the device.
Connected But No Events
- Subscribe before connecting.
- In React Native, render
useMentraBluetooth()state for connection, battery, Wi-Fi, hotspot, scan, and SDK state. In native Android/iOS apps, log the SDK status objects. - Confirm the hardware feature is available on the connected model.
- Watch SDK log callbacks for native diagnostics.
Optional Local Stream Preview Does Not Show Video
- The local demo cloud is only needed when the starter app’s Stream screen has Use cloud server enabled. If you are using that optional local stream preview, confirm the local demo cloud or MediaMTX helper is running.
- Use the printed LAN URL, not
localhost, in the example app’s RTMP or WebRTC field. - Confirm the glasses, phone, and computer are on a network where local device-to-device traffic is allowed.
- Confirm Mentra Live is connected to Wi-Fi before starting the stream.
- For RTMP, the native iOS example embeds the derived HLS preview URL while live. You can also open or refresh the printed HLS preview URL on your computer after tapping Start stream.
- If Docker is running in bridge mode, confirm UDP ports
8890and8189are published. - If the helper picked the wrong network interface, restart it with
python3 examples/local-demo-cloud/server.py --host-ip <computer-lan-ip>.
React Native Or Expo Apps
React Native and Expo apps use the@mentra/bluetooth-sdk package and must run as development builds or production native builds. Expo Go cannot load the native SDK. Start from examples/react-native for Expo, examples/android for bare Android, or examples/ios for bare iOS.
If Android prebuild succeeds but native linking fails, confirm the generated project includes :lc3Lib in android/settings.gradle. The SDK plugin adds this module automatically during prebuild.
If iOS builds fail with missing Expo adapter symbols, rerun bunx expo prebuild so the SDK plugin can configure the Podfile for Expo module registration.
