Skip to content

Feature Request: Detailed Bluetooth Battery Levels for TWS Earbuds #116

Description

@deluca0206

Summary

Add support for displaying individual battery levels for Bluetooth TWS devices, including:

  • Left earbud battery
  • Right earbud battery
  • Charging case battery
  • Charging status for each component, when available

Currently, Linux desktops commonly display only a single battery percentage for Bluetooth headsets, even when the device provides separate battery information for each component.

Motivation

Many modern TWS earbuds expose independent battery information for the left earbud, right earbud, and charging case.

Android and vendor applications are often able to display this information, while Linux usually exposes only a single generic battery percentage.

Providing detailed battery information directly in LuminusOS would improve the Bluetooth experience and make device integration feel significantly more complete.

Example:

Current

Galaxy Buds — Battery: 72%

Proposed

Galaxy Buds

  • Left: 72%
  • Right: 68%
  • Case: 91% — Charging

Proposed Implementation

Implement a Bluetooth battery service/daemon on top of BlueZ with an extensible provider architecture.

Possible providers could include:

  1. Standard Bluetooth Battery Service (BAS)
  2. Multiple BAS instances for devices exposing separate components
  3. Google Fast Pair battery information
  4. Vendor-specific providers when necessary
  5. BlueZ Battery1 as a generic fallback

Conceptually:

Bluetooth Device
       │
       ▼
BlueZ / BLE / GATT
       │
       ▼
Luminus Bluetooth Battery Service
       │
   ┌───┼───┐
   ▼   ▼   ▼
 Left Right Case
       │
       ▼
LuminusOS Bluetooth UI

The system should automatically use the most detailed battery information available.

If only one battery value is available, the current behavior should remain unchanged.

Suggested MVP

Initial implementation could support:

  • BlueZ battery information
  • Standard Bluetooth Battery Service
  • Detection of multiple battery components
  • Left / Right / Case representation
  • Charging state when available
  • Automatic fallback to a single battery percentage

Additional protocol/vendor support could be added later through separate providers.

Future Extensions

Possible future providers:

  • Google Fast Pair
  • Apple AirPods
  • Samsung Galaxy Buds
  • Nothing / CMF
  • Xiaomi / Redmi
  • Huawei
  • Sony
  • JBL
  • Other vendor-specific implementations

Expected Result

The Bluetooth panel could display something similar to:

Galaxy Buds

L   72%
R   68%
Case 91% ⚡

This would provide a more complete Bluetooth experience while keeping the implementation modular and avoiding the need to maintain a custom BlueZ fork.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions