Forum Discussion

IdoQuest's avatar
IdoQuest
Honored Guest
29 days ago

Struggling with BLE Reconnection on Quest 2 — UI and Auto-Reconnect Both Failing

Hey everyone,

(I'm sorry in advance for the AI wording, I just used it to summarize the Meta Support case.)

 

I've hit a wall with a BLE GATT connection issue on my Meta Quest 2 project and could really use some community guidance.

Summary / TL;DR:

My bonded BLE peripheral won't reconnect to the Quest 2 after a disconnection. The "Connect" button in the Bluetooth UI has never worked for this, and now the system's automatic background reconnection, which was my last resort, has also stopped working. This means the user has to "Forget Device" and re-pair every single time they want to use it, which is a deal-breaker for my app. Meta Support has already confirmed the UI button issue is a "known limitation."

Detailed Problem

I'm working with a standard BLE peripheral using the Heart Rate service. It pairs, bonds, and connects perfectly the first time, and data streams without a hitch. The problem is, once it disconnects, I can't get it to reconnect without a full re-pairing.

The Original Issue (The "Known Limitation")

The connect/disconnect buttons in the Quest's Bluetooth settings don't seem to manage the GATT connection state at all.

  • "Disconnect" Button: Pressing this while the device is connected and streaming does nothing. The connection stays active.
  • "Connect" Button: After the peripheral disconnects (e.g., goes out of range) and starts advertising again, pressing "Connect" in the UI just gives a "Couldn't connect" error.

The New, Blocking Issue

Previously, I could at least rely on the Quest OS to automatically reconnect in the background, even if it took 10+ minutes. This auto-reconnect has completely stopped working. Now, once the device is disconnected, it stays disconnected. The only way to get it working again is to manually unpair and re-pair it.

Technical Details & What I've Tried

  • Device: Meta Quest 2, latest public firmware.
  • GATT Profile: Standard Heart Rate Service.
  • Advertising: Using legacy connectable advertising (ADV_IND).
  • Security: Requires bonding. I'm using an encrypted CCCD for notifications.
  • Privacy: The peripheral uses a Resolvable Private Address (RPA). I assume the Quest stores the IRK correctly since auto-reconnection used to work.

I've tried:

  • Forgetting the device and re-pairing (the only temporary fix).
  • Toggling Bluetooth on the Quest.
  • Rebooting both the Quest and the peripheral.

My Core Questions

  1. Recommended Reconnection Flow? Since both the UI and auto-reconnect have failed me, what is the correct way to handle BLE reconnections on the Quest 2? Is there a standard workflow I'm missing?
  2. Programmatic Control? Is there any way for my native app to programmatically trigger a connection to a bonded device (e.g., something like Android's BluetoothDevice.connectGatt())? Can my app take control of the connection and bypass the buggy system UI?
  3. Advertising Strategy? Are there specific advertising parameters (intervals, flags, etc.) that make a peripheral more "reconnect-friendly" for the Quest? Could my use of legacy advertising with RPA be part of the problem?
  4. Possible OS Regression? Has anyone else noticed automatic BLE reconnections stop working recently? I'm wondering if this could be a bug in a recent Quest OS update.

I'm completely stuck, as my project depends on this connection being reliable. Any advice, workarounds, or shared experiences would be a huge help.

Thanks a lot.

 

1 Reply

  • Hello!

    Can you provide me with either of the following so I may pass this to some folks to help assist you?

    1. Bugreport from when you encountered issue.

    2. A serial number for your Quest 2 device so they can go through telemetry to understand what happened.

→ Find helpful resources to begin your development journey in Getting Started

→ Get the latest information about HorizonOS development in News & Announcements.

→ Access Start program mentor videos and share knowledge, tutorials, and videos in Community Resources.

→ Get support or provide help in Questions & Discussions.

→ Show off your work in What I’m Building to get feedback and find playtesters.

→ Looking for documentation?  Developer Docs

→ Looking for account support?  Support Center

→ Looking for the previous forum?  Forum Archive

→ Looking to join the Start program? Apply here.

 

Recent Discussions