UWB Tag BLE Configuration - Phone app settings via Bluetooth #690

Closed
opened 2026-03-18 10:20:45 -04:00 by seb · 0 comments
Owner

Feature Request

Implement BLE (Bluetooth Low Energy) configuration interface for the UWB tag to replace button sequences with smartphone app control.

Requirements

  1. BLE advertising: Tag advertises as "UWB_TAG_XXXX" (last 4 of MAC)
  2. Configuration service: GATT service for JSON-based settings
  3. Persistent storage: Save settings to NVS flash
  4. nRF Connect support: Initial configuration via Nordic nRF Connect app
  5. Real-time apply: Settings take effect immediately

Configuration Parameters (JSON)

{
  "sleep_timeout_s": 30,
  "display_brightness": 128,
  "tag_name": "Tee Tag",
  "uwb_channel": 5,
  "ranging_interval_ms": 100,
  "battery_report": true
}

BLE Implementation

// Service & characteristic UUIDs
#define CONFIG_SERVICE_UUID "12345678-1234-5678-1234-56789abcdef0"
#define CONFIG_CHAR_UUID    "12345678-1234-5678-1234-56789abcdef1"

Flow

  1. Tag advertises BLE name
  2. Phone connects via nRF Connect (or custom app)
  3. Write JSON config to characteristic
  4. Tag validates, saves to NVS, applies
  5. Disconnect resumes normal operation

Hardware

  • Board: ESP32-S3 with built-in BLE support
  • Branch: salty/uwb-tag-display-wireless

Benefits

  • Eliminates complex button sequences
  • Professional user experience
  • Expandable for OTA updates
  • Works with Issue #689 (power management)
## Feature Request Implement BLE (Bluetooth Low Energy) configuration interface for the UWB tag to replace button sequences with smartphone app control. ### Requirements 1. **BLE advertising**: Tag advertises as "UWB_TAG_XXXX" (last 4 of MAC) 2. **Configuration service**: GATT service for JSON-based settings 3. **Persistent storage**: Save settings to NVS flash 4. **nRF Connect support**: Initial configuration via Nordic nRF Connect app 5. **Real-time apply**: Settings take effect immediately ### Configuration Parameters (JSON) ```json { "sleep_timeout_s": 30, "display_brightness": 128, "tag_name": "Tee Tag", "uwb_channel": 5, "ranging_interval_ms": 100, "battery_report": true } ``` ### BLE Implementation ```cpp // Service & characteristic UUIDs #define CONFIG_SERVICE_UUID "12345678-1234-5678-1234-56789abcdef0" #define CONFIG_CHAR_UUID "12345678-1234-5678-1234-56789abcdef1" ``` ### Flow 1. Tag advertises BLE name 2. Phone connects via nRF Connect (or custom app) 3. Write JSON config to characteristic 4. Tag validates, saves to NVS, applies 5. Disconnect resumes normal operation ### Hardware - Board: ESP32-S3 with built-in BLE support - Branch: `salty/uwb-tag-display-wireless` ### Benefits - Eliminates complex button sequences - Professional user experience - Expandable for OTA updates - Works with Issue #689 (power management)
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: seb/saltylab-firmware#690
No description provided.