Skip to content

Sending messages to the watch seems pretty slow #17

@matejdro

Description

@matejdro

I've been playing around with PebbleKit Android (#16) and it appears that BLE connection is pretty slow, much slower than the classic connection back in the day.

It seems the round trip AppMessage data from the phone -> Appmessage ACK to phone takes around 200-300ms and quite frequently much longer (if I remember correctly, it was consistently in low hundreds of ms back in the day).

For example, here is a log from one such instance, where the round trip took over 500ms:

2025-10-05 20:14:13.886 sending AppMessagePush(uuid=StructElement(size=16, linkedSize=null, value=0a7575eb-e5b9-456b-8701-3eacb62d74f1), count=StructElement(size=1, linkedSize=null, value=4), dictionary=SFixedList(list=[AppMessageTuple(key=StructElement(size=4, linkedSize=null, value=0), type=StructElement(size=1, linkedSize=null, value=2), dataLength=StructElement(size=2, linkedSize=null, value=1), data=SBytes(value=[4], size=1)), AppMessageTuple(key=StructElement(size=4, linkedSize=null, value=1), type=StructElement(size=1, linkedSize=null, value=2), dataLength=StructElement(size=2, linkedSize=null, value=1), data=SBytes(value=[0], size=1)), AppMessageTuple(key=StructElement(size=4, linkedSize=null, value=2), type=StructElement(size=1, linkedSize=null, value=0), dataLength=StructElement(size=2, linkedSize=null, value=3), data=SBytes(value=[0, 5, 0], size=3)), AppMessageTuple(key=StructElement(size=4, linkedSize=null, value=3), type=StructElement(size=1, linkedSize=null, value=0), dataLength=StructElement(size=2, linkedSize=null, value=76), data=SBytes(value=[68, 105, 115, 109, 105, 115, 115, 32, 45, 32, 80, 104, 111, 110, 101, 0, 0, 0, 0, 68, 105, 115, 109, 105, 115, 115, 32, 45, 32, 80, 101, 98, 98, 108, 101, 0, 0, 0, 79, 112, 101, 110, 32, 111, 110, 32, 112, 104, 111, 110, 101, 0, 0, 0, 0, 0, 0, 77, 117, 116, 101, 32, 97, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], size=76))]))
2025-10-05 20:14:13.891 sendPacketImmediately: Data(sequence=27, data=[0, -128, 0, 48, 1, 58, 10, 117, 117, -21, -27, -71, 69, 107, -121, 1, 62, -84, -74, 45, 116, -15, 4, 0, 0, 0, 0, 2, 1, 0, 4, 1, 0, 0, 0, 2, 1, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 5, 0, 3, 0, 0, 0, 0, 76, 0, 68, 105, 115, 109, 105, 115, 115, 32, 45, 32, 80, 104, 111, 110, 101, 0, 0, 0, 0, 68, 105, 115, 109, 105, 115, 115, 32, 45, 32, 80, 101, 98, 98, 108, 101, 0, 0, 0, 79, 112, 101, 110, 32, 111, 110, 32, 112, 104, 111, 110, 101, 0, 0, 0, 0, 0, 0, 77, 117, 116, 101, 32, 97, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
2025-10-05 20:14:14.384 received packet: Ack(sequence=26)
2025-10-05 20:14:14.385 received packet: Data(sequence=14, data=[0, 2, 0, 48, -1, 58])
2025-10-05 20:14:14.387 sendPacketImmediately: Ack(sequence=14)
2025-10-05 20:14:14.390 inbound pebble protocol packet: io.rebble.libpebblecommon.packets.AppMessage$AppMessageACK@1b
2025-10-05 20:14:14.395 Result from the app: io.rebble.libpebblecommon.services.appmessage.AppMessageResult$ACK@a78bfda
2025-10-05 20:14:14.399 sent broadcast com.getpebble.action.app.RECEIVE_ACK 58

This was tested with the Pebble Time.

Delay appears to be on the watch side (between us sending the data and and us receiving the data). Is there anything we can do? If not, do the new watches behave better?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions