Skip to content

Comments

fw: add new PPS characteristic to reset PPoGATT#857

Open
gmarull wants to merge 1 commit intocoredevices:mainfrom
teslabs:ppogatt-reset
Open

fw: add new PPS characteristic to reset PPoGATT#857
gmarull wants to merge 1 commit intocoredevices:mainfrom
teslabs:ppogatt-reset

Conversation

@gmarull
Copy link
Member

@gmarull gmarull commented Feb 18, 2026

We sometimes run into the case where the watch is subscribed to the PPoG data characteristic on the phone, and a PPoG session is initialized - then the phone app dies. But the BLE connection still lives (because of ANCS), and the watch does not realize that the PPoG session is dead until it next attempts to send a PP packet.

When the phone app restarts, it is waiting for the watch to initalize a PPoG session, which doesn't happen. We need a way for the phone to tell the watch that it needs to re-initialize PPoG.

Proposed solution:

  • Add a new characteristic in the Pebble Pairing Service
  • UUID 00000006-328E-0FBB-C642-1AA6699BDADA
  • Writable with response.
  • Characteristic value is 1 byte, boolean flag, set to 1 when the phone wants the watch to re-initialize PPoGATT

The mobile app will always write to this when connecting on iOS but will not use it on Android, where it isn't required.

Mobile can also remove some of the existing workarounds, e.g., sending PPoGATT resets at various times, when this characteristic is supported on the watch.

Fixes FIRM-1268

We sometimes run into the case where the watch is subscribed to the PPoG
data characteristic on the phone and a PPoG session is initialized -
then the phone app dies. But the BLE connection still lives (because of
ANCS), and the watch does not realize that the PPoG session is dead
until it next attempts to send a PP packet.

When the phone app restarts, it is waiting for the watch to initalize a
PPoG session, which doesn't happen. We need a way for the phone to tell
the watch that it needs to re-initialize PPoG.

Proposed solution:

- Add a new characteristic in the Pebble Pairing Service
- UUID 00000006-328E-0FBB-C642-1AA6699BDADAm
- Writable with response.
- Characteristic value is 1 byte, boolean flag, set to 1 when phone
  wants watch to re-initialize PPoGATT

The mobile app will always write to this when connecting on iOS, but
will not use it on Android where it isn't required.

Mobile can also remove some of the existing workarounds e.g., sending
PPoGATT resets at various times, when this characteristic is supported on
the watch.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
@gmarull gmarull requested a review from sjp4 February 18, 2026 16:44
Copy link
Member

@sjp4 sjp4 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implemented in mobile and and tested - seems to work well!

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants