Skip to content

feat.: add real-time BLE streaming support #1782

Description

@Rampage270906

The firmware has a partially implemented streaming protocol over the ng BLE service (0xF055/0xF057) that allows raw framebuffer data to be pushed directly to the badge display in real time, bypassing flash storage entirely. The app currently has no support for this service.

How the firmware works:

  • Service UUID: 0xF055
  • Write characteristic: 0xF057
  • Notify characteristic: 0xF056 (1-byte response after each command)

Protocol:
write 0xF057: 02 00 // Enter streaming mode
write 0xF057: 03 [88 bytes] // Push a frame (44 columns × 2 bytes = 88 bytes of raw framebuffer)
write 0xF057: 02 01 // Exit streaming mode

The badge writes incoming frame data directly to fb[] and renders it immediately. After each write, the badge sends a 1-byte success/error notification back on 0xF056.

What the app needs:

  • A new UI mode - e.g. a "Live Preview" or "Streaming" screen where the user can push frames in real time
  • Connection to 0xF055/0xF057 - currently the app only uses the legacy service (0xFEE0/0xFEE1)
  • Frame encoding - convert whatever the app is displaying into the raw uint16_t[44] column-major framebuffer format the badge expects (88 bytes per frame)
  • Subscribe to 0xF056 notifications to confirm each frame was received before pushing the next
  • No frame rate limit enforced by firmware, so app should throttle to a reasonable rate (e.g. 20–30fps) to avoid overwhelming the BLE connection

Metadata

Metadata

Assignees

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions