Skip to content

Connect third-party HOGP accessories

This page demonstrates setup for third-party BLE HOGP devices using MemoMind App, under “Third-party devices (HOGP)”. The protocol does not require the official App: an independent desktop or mobile client can request scanning, connection, and disconnection through an available GM/TLV control transport on the glasses. See HOGP_QUICKSTART.md in the SDK for packet details. The target firmware must expose the chosen control transport, and each accessory requires compatibility testing.

Before you begin: wear the glasses and charge both devices#

  1. 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.
  2. 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.
  3. Charge the third-party device 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.
  4. Keep the third-party device near the worn glasses. Current integration covers standard HID keys; start with a directional or select key that reports clear press and release states.

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.

HOGP two-link architectureThe phone controls configuration. The glasses act as HID Host, connect directly to accessories, and deliver mapped input to local applications. 01 / CONNECTIONSWear the glasses, then establish both linksPhone AppConfiguration entryScan · Connect · inputmapShow status and recording resultsMemoMind glassesTo the phone: Bluetooth deviceTo accessories: BLE Central + HID HostThird-party accessoryThird-party devicesBLE PeripheralHID Device · HOGP①②Parse and map inside the glassesForeground glasses application / GMP pluginReceive standard actions directly, without phone forwarding① Phone ⇄ glasses: commands / scan results / recorded event copies② Glasses ⇄ accessory: BLE pairing and subscription / HID input reportsWear the glasses and keep them on. Neither link can continue when the glasses power off.
HOGP two-link architecture (narrow screen)One Bluetooth link connects phone and glasses; another BLE link connects accessory and glasses. Input is processed locally on the glasses. 01 / CONNECTIONSGlasses connect to phone and accessoryPhone App: configurationSend scan, connect, inputmap commandReceive status and recorded event copies① Phone ⇄ glassesExisting Bluetooth connectionMemoMind glassesTo the phone: Bluetooth deviceTo accessories: BLE Central + HID HostParse HID and apply mappings locallyForeground application / GMP pluginReceive actions without phone forwarding② Glasses ⇄ accessoryBLE connection · HID reportsThird-party devicesBLE Peripheral + HID DeviceConnect directly to glasses using HOGPWear the glasses during connection, recording, and testing.When the glasses are off, the phone cannot connect to the accessory in their place.
There are two Bluetooth links, with input processed locally on the glasses. The phone's device list comes from scan results returned by the glasses.
RoleResponsibility
MemoMind AppProvides scan, connection, recording, mapping import/export, and status UI. Connect to the glasses before configuration.
GlassesScans 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 accessoryReport standard keys according to the HID Report Map, including correct press and release states.
Glasses application / GMP pluginHandles standard input events provided by the glasses. The plugin does not scan or connect the accessory itself.

Device manufacturers: confirm BLE HOGP support#

The glasses connect to third-party devices over Bluetooth Low Energy (BLE), using HOGP (HID over GATT Profile) to carry HID input. Accessories must support BLE HOGP and provide the HID service and input reports listed below. Confirm the specific protocol with the manufacturer; a “Bluetooth HID” or “BLE supported” label alone does not establish compatibility.

CheckpointDevice requirements
Pairing advertisementConnectable 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 ServiceHID 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 FormatKey reports must match the Usage Page, Usage, Report ID, bit width, count and logical range in the Report Map. Distinct key actions require distinguishable usage or value fields.
Press and releaseKeys must report both press and release. Missing release reports affect confirmation, long presses and repeated input.
Pairing and reconnectionVerify 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.

Step 1: use the App to ask the glasses to scan and connect#

  1. Open MemoMind App → Settings → Memo Lab → Third-party devices (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.
  2. Put the accessory in pairing advertisement mode and tap “Scan” under “Available devices”. After “Scanning for nearby third-party devices…” appears, wait for the target name. Each scan currently lasts 30 seconds; scan again after it finishes if needed.
  3. 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.
  4. 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.

Optional: record keys and customize their actions on the glasses#

  1. First confirm HID input is ready and test directional and select keys in a glasses UI that supports navigation. Standard keys covered by firmware defaults need no recording. To change actions or adapt unmapped input, enable recording under “Button mapping (recording)” and press and release each key in turn.
  2. 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.
  3. 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.
  4. 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.
  5. 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 captureNext step
Each button produces a different p / uOrdinary 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 differentUse value_match. Copying the same usage_key cannot distinguish all actions. Capture the actual values, then consult the configuration reference.
Selecting “Ignore” in the dropdownThis 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#

HOGP configuration and runtimeConfigure by connecting, recording, and applying mappings. At runtime, the glasses parse accessory reports locally and deliver actions to the foreground application. 02 / SETUP → RUNConfigure first, then verify local glasses inputConfiguration · Phone App + glasses1. scan and connectApp sends commands to glassesGlasses connect to the accessoryWait until 'connected / ready '2. Record and Select ActionTurn on the recording, press and release.Watch HID input logsSelect UP / SELECT etc.3. Apply mappingsApp sends the complete inputmapGlasses validate and saveWait for successRuntime · Accessory → glassesAccessory sends reportsPress / releaseDelivery through BLE to glassesGlasses parse and mapDecode using the Report MapGenerate actions using inputmapForeground application respondsSystem UI performs the actionGMP receives standard button eventsKeep wearing the glasses and keep them active. After configuration, turn off recording and test buttons.
HOGP configuration and runtime (narrow screen)Scan/connect, record, then apply mappings. At runtime, accessories send directly to the glasses, which map input and deliver it to the application. 02 / SETUP → RUNConfigure first, then validate local inputConfiguration1. scan and connectApp sends commands to glassesGlasses connect to the accessoryWait until 'connected / ready '2. Record and Select ActionTurn on the recording, press and release.Watch HID input logsSelect UP / SELECT etc.3. Apply mappingsApp sends the complete inputmapGlasses validate and saveWait for successRuntimeAccessory sends reportsPress / releaseDelivery through BLE to glassesGlasses parse and mapDecode using the Report MapGenerate actions using inputmapForeground application respondsSystem UI performs the actionGMP receives standard button eventsWear the glasses and keep them active.Runtime button input needs no per-event phone forwarding.
The upper half covers configuration; the lower half verifies runtime. Once mapping is applied, accessory input goes directly to the glasses application.
  1. 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.
  2. 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 devices (HOGP); the two entries serve different purposes.
  3. 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.
  4. 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.

Optional: save custom mappings for another device of the same model#

  1. 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.
  2. 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.
  3. 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.
  4. 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 / StatusActual impact
Clear recordingClears the current page's capture draft without clearing the inputmap already applied to the glasses.
Clear mappingSends an empty configuration to the glasses, removing custom rules and restoring the default mapping path. Pairing records remain.
DisconnectDisconnects the current accessory link while retaining binding and mapping for later reconnection.
Unpair deviceDisconnects and removes the accessory binding, related cache, and mapping. You can then scan and bind another device.
Saved · Tap to reconnectOnly a pairing record exists; the connection is not ready. Wake the glasses and accessory, then tap to reconnect.
Connected/ readyConfirm HID input readiness before recording or testing. Independent clients should check hid_ready (0/1 in the current protocol). A Bluetooth connection or connect request ACK does not mean HID discovery and subscription have completed. Do not replace protocol state checks with a UI label or the legacy ready(10) value.

Troubleshoot an unresponsive input along the connection path#

Failure pointCheck first
Glasses disconnected, or input stops after removing themWear and wake the glasses, then restore Bluetooth in the App. Keeping the App open does not replace powering on the glasses.
No devices appearPut the accessory back into BLE pairing advertisements, move it near the glasses, and ensure it is not connected to another host. The current scan filter requires a nonempty device name plus HID Service 0x1812 or a firmware-supported HID Appearance. These may be split between advertising and scan-response data. Devices missing this information may not appear in the list.
Scan button not availableCheck for an already bound accessory; unpair it before switching devices. Also check the phone–glasses connection.
Visible in scans, but never readyThe 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 nothingEnable 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 actConfirm custom mappings were applied successfully, then check input matching fields, target keys and foreground app support. Use value_match for distinct values on the same Usage.
One press triggers repeatedly, or confirm appears stuckCheck release reports and repeated transmissions. Held navigation keys may repeat intentionally; do not interpret repeat counts as long presses or double clicks.
JSON import failed / application failedRead 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.
Unusual after reconnecting to the same deviceKeep 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.
  • Provide the HID Report Map, Report ID / Usage definitions, and standard key press/release report samples. Document device initialization requirements 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.