Connect third-party HOGP accessories
Use the existing App to connect your accessory and complete a button action before writing a plugin. BLE HOGP rings, remotes, and keyboards can use this path. The App entry is currently named “Third-party ring (HOGP)”. Verify each specific model's compatibility using this guide.
Before you begin: wear the glasses and charge both devices#
- Prepare matching glasses firmware and MemoMind App with HOGP support. Record App, glasses-firmware, and accessory-firmware versions. First confirm in the App that the phone and glasses are connected over Bluetooth.
- Wear the glasses and keep them powered on during connection, recording, and validation. Do not leave them on a table while operating only the phone. Removing, folding, or placing them in the case may trigger sleep or shutdown according to power policy. Powered-off glasses cannot scan, connect, or receive accessory input.
- Charge the ring, remote, or keyboard and follow its instructions to enter BLE HID pairing advertisement mode. Disconnect it from another phone or computer first; clear old pairing if needed according to the manufacturer's instructions.
- Keep the accessory near the glasses you are wearing. For initial integration, start with a direction or confirm button that has clear press and release states. Verify the path before adding complex gestures.
Connections: the glasses play two roles#
To the phone, the glasses are a connected Bluetooth device. To an accessory, they act as BLE Central and HID Host, scanning and connecting to the BLE Peripheral / HID Device. The phone initiates configuration and shows results; the glasses perform scanning and receive accessory input.
| Role | Responsibility |
|---|---|
| MemoMind App | Provides scan, connection, recording, mapping import/export, and status UI. Connect to the glasses before configuration. |
| Glasses | Scans accessories, pairs and encrypts, discovers HID services, subscribes to input reports, saves and executes inputmap, and forwards results to the foreground glasses application. |
| Third-party accessory | Reports button, wheel, or touch data according to the HID Report Map, including correct press, release, and return-to-center states. |
| Glasses application / GMP plugin | Handles standard input events provided by the glasses. The plugin does not scan or connect the accessory itself. |
Device manufacturers: confirm BLE HOGP support#
HOGP means HID over GATT Profile, carrying HID input over Bluetooth Low Energy GATT services. A “Bluetooth HID” label alone is insufficient. Devices supporting only classic Bluetooth HID, a USB receiver, or a proprietary BLE protocol cannot directly follow this standard HOGP path.
| Checkpoint | Device requirements |
|---|---|
| Pairing advertisement | Connectable BLE advertisements with a readable device name and HID service identification. HID Service UUID 0x1812 is recommended. The current glasses also recognize HID-class Appearance values. Name and service information may be split between advertisements and scan responses. |
| HID Service | HID Service 0x1812, Report Map 0x2A4B, and notifiable Input Report 0x2A4D. Report ID/type in Report Reference 0x2908 must match the descriptor. Notification characteristics need CCCD 0x2902. |
| Input Format | Actual reports must match the Report Map's Usage Page, Usage, Report ID, bit width, count, and logical range. Each distinguishable action needs a distinct usage, value, or touch trajectory. |
| Release and return to center | Buttons report press and release; touch reports Tip Switch contact and lift; joysticks return correctly to center. Missing releases affect confirmation, long presses, and repeated input. |
| Pairing and reconnection | Verify initial pairing, encryption, reconnection, and recovery after restarting the glasses and accessory separately. Test the device's actual pairing method. Appearing in a scan is insufficient. |
| Optional battery information | The App can query standard Battery Service 0x180F / Battery Level 0x2A19. Missing battery-service support does not mean the HID button connection failed. |
Step 1: use the App to ask the glasses to scan and connect#
- Open MemoMind App → Settings → Memo Lab → Third-party ring (HOGP). If this entry is missing, check that you have the matching App version with HOGP support. If the glasses are reported as disconnected, restore the phone–glasses Bluetooth connection first.
- Put the accessory in pairing advertisement mode and tap “Scan” under “Available devices”. After “Scanning for nearby rings…” appears, wait for the target name. Each scan currently lasts 30 seconds; scan again after it finishes if needed.
- Tap the target device and wait for it to appear under “Paired devices” as “Connected”; details may show ready. A device name or “Saved” record alone does not mean it is ready.
- If it remains “Connecting…” or fails, check that another host is not using the accessory, keep wearing the glasses, and follow the troubleshooting table. Sending a connect command does not mean HID service discovery and notification subscription are complete.
Step 2: record a button and choose its glasses action#
- Confirm the accessory is connected, then enable “Recording mode” under “Button mapping (recording)”. Press and release each button in turn, one at a time.
- Watch the new records: p is Usage Page, u is Usage, a is HID Application Collection, and r is Report ID. “×count” is the capture count. These describe accessory input, not the action to execute on the glasses.
- Choose an output in each record's dropdown. For example, assign five physical buttons to UP(0), DOWN(1), LEFT(2), RIGHT(3), and SELECT(4). Record which button corresponds to each row; do not guess from row order.
- Tap “Apply button mapping”, wait for success, then check the rules under “Mapping table (inputmap)”. Selecting dropdown values alone does not send them to the glasses.
- Turn off recording mode and test in the target glasses application. Recording or HID monitoring returns events for observation; local input should still work after these are disabled.
| Observed during capture | Next step |
|---|---|
| Each button produces a different p / u | Ordinary usage_key recording usually works. For devices with multiple reports, also check a / r. |
| p / u is the same for different actions, only value is different | Use value_match. Copying the same usage_key cannot distinguish all actions. Capture the actual values, then consult the configuration reference. |
| Different touchpad positions produce the same input fields | Handle touch regions or complete swipe trajectories with abs_region / touch_gesture. Do not treat coordinate fields as ordinary buttons. |
| Selecting “Ignore” in the dropdown | This recording entry generates no ordinary button-override rule. Uncovered input may still use the firmware's default mapping. “Ignore” does not forcibly block system input. |
Step 3: verify a complete local input sequence#
- Open a glasses UI supporting the target actions and test up, down, confirm, or back. A UI without movable focus may show no visible effect from direction buttons.
- To verify a directional-button plugin, select the existing GM 2048 example in Studio and follow Run existing examples to scan and start it on real glasses. The phone entry is Settings → Memo Lab → Developer Workspace. Accessory configuration remains under Third-party ring (HOGP); the two entries serve different purposes.
- Use all four accessory directions and confirm the board responds correctly. Test short presses, holds, and releases separately. Studio keyboard simulation does not validate real accessory scanning, pairing, or HID reports.
- Leave HOGP settings and test again to confirm the mapping is active on the glasses. Then test reconnection, reboot recovery, and waking after removing and wearing the glasses again. Recheck both phone–glasses and glasses–accessory connections after recovery.
Step 4: save the configuration for devices of the same model#
- After recording and validation, tap “Export configuration”. The current App exports the configuration recorded on this page, copies JSON to the clipboard, then attempts to save a file. It does not back up arbitrary mappings already stored on the glasses.
- Check whether the prompt confirms a saved file. If only clipboard copying succeeded, paste into a text editor and save as UTF-8 .json. Include the device model and firmware version. Save recording results before leaving the page.
- On another test setup, connect the accessory to the glasses first. Then choose “Mapping table (inputmap) → Import mapping table” and select the manufacturer's JSON. Import validates and sends it directly; no additional “Apply button mapping” click is needed.
- Retest every physical button after import. Reuse a configuration only when device/firmware Report Maps and action encodings match. Similar names do not imply identical input protocols.
Clear, disconnect and unpair: understand the difference#
| Operation / Status | Actual impact |
|---|---|
| Clear recording | Clears the current page's capture draft without clearing the inputmap already applied to the glasses. |
| Clear mapping | Sends an empty configuration to the glasses, removing custom rules and restoring the default mapping path. Pairing records remain. |
| Disconnect | Disconnects the current accessory link while retaining binding and mapping for later reconnection. |
| Unpair device | Disconnects and removes the accessory binding, related cache, and mapping. You can then scan and bind another device. |
| Saved · Tap to reconnect | Only a pairing record exists; the connection is not ready. Wake the glasses and accessory, then tap to reconnect. |
| Connected/ ready | The HOGP input link is ready for recording and in-application testing. Numeric states may differ between versions; do not hardcode ready(10). |
Troubleshoot an unresponsive input along the connection path#
| Failure point | Check first |
|---|---|
| Glasses disconnected, or input stops after removing them | Wear and wake the glasses, then restore Bluetooth in the App. Keeping the App open does not replace powering on the glasses. |
| No devices appear | Put the accessory back into pairing advertisement mode, move it near the glasses, and disconnect it from other hosts. Scanning currently requires a name and HID advertisement identification. A name alone, proprietary services only, or classic HID only may not appear. |
| Scan button not available | Check for an already bound accessory; unpair it before switching devices. Also check the phone–glasses connection. |
| Visible in scans, but never ready | The manufacturer should check pairing/encryption, HID services, Report Map, Report Reference, and notification subscriptions. Recognized advertisements do not guarantee usable HID services. |
| Connected, but recording captures nothing | Enable recording, then press and release. If “Monitor HID events” also shows no data, check that the accessory sends Input Reports matching its descriptor. |
| Input is recorded, but the glasses do not act | Confirm that Apply succeeded. Check matching input fields, target key, and whether the foreground UI supports the action. Do not force touch or value-encoded input into ordinary button rules. |
| One press triggers repeatedly, or confirm appears stuck | Check release reports, repeated device transmissions, touch lift, and joystick centering. Some navigation keys repeat while held by design. Repetition counts do not represent long presses or double clicks. |
| JSON import failed / application failed | Read the error and check version, rule type, key values, capacity, and JSON syntax. Both App and firmware must support the configuration. The reference lists current version differences. |
| No battery level shown | Query and read the battery characteristic in the battery area. The device must provide the standard battery service. Troubleshoot battery information separately from button connectivity. |
| Unusual after reconnecting to the same device | Keep wearing the glasses, wake the accessory, and try reconnecting the saved device. If its firmware changed the Report Map/GATT database, preserve the configuration, unpair, pair again, and revalidate mappings. |
What manufacturers should deliver to the next user#
- Device model, hardware/firmware versions, power-on and BLE HOGP pairing instructions, advertised name, and how to clear old pairing.
- HID Report Map, Report ID / Usage definitions, and sample reports for press, release, long press, double click, or touch trajectories. Document proprietary initialization separately.
- A device-validated inputmap JSON, physical-button-to-glasses-action table, and applicable MemoMind App / glasses firmware versions.
- Test results for first connection, every action, reconnection, restarting both devices, recovery after removal, and coexistence with the phone connection. Identify unsupported actions.
- End users follow: wear the glasses → connect the phone and glasses → scan for the accessory in the App → import the configuration → verify the actions. Standard HID integration does not require developing a GMP or phone Web plugin first.