Skip to content

Adds an icon to the Windows task bar displaying the battery level of connected wireless headphones

License

Notifications You must be signed in to change notification settings

aarol/headset-battery-indicator

Repository files navigation

Headset Battery Indicator

Adds a small icon to the Windows task bar, displaying the battery level of most* connected wireless headphones.

Screenshot of indicator on Windows task bar

Features

  • Works on Windows 10+

  • Built using Rust, with low resource usage (~2MB RAM)

  • Supports most non-bluetooth headsets (SteelSeries, Logitech, Corsair, HyperX)

    • See all supported headsets here.

      Since headset support is done by reverse-engineering the USB HID protocol, not every headset is supported yet, and some headsets (notably Arctis Wireless 1) may not work even though they are listed as supported.

  • Shows a little green dot to indicate charging

    Charging icon

  • Shows notifications on low battery level or when finished charging (optional)

Headset Battery Indicator depends on HeadsetControl, which is licensed under GPL v3.

Installation

Running the installer may result in a Windows defender SmartScreen warning. This happens to all executables that don't have a large enough install count. There's no way around it other than paying hundreds of dollars every year for a signed certificate from Microsoft :(

Additionally, sometimes Windows Defender's ML-based antivirus falsely detects the program as a virus, most commonly Wacatac.b!ml (the "ml" at the end signifies machine learning).

Security

The code that is in this repository is the code that is in the executable. There is a Github Action that builds the code from source and creates the release in the releases page.

The GitHub release is marked as immutable, so once the executable is built by the Actions workflow, it cannot be modified by me or anyone else. This way, it is guaranteed that the code you're running is the same code that is in this repository.

Troubleshooting

If you're experiencing crashes or other issues, you can try running the headset-battery-indicator-debug.exe located at %localAppData%\Programs\HeadsetBatteryIndicator or look at the log file located in the same folder.

Why does it only show 100%, 75%, 50%, 25% or 0%?

This is limitation of the headsets themselves, as some devices only expose 5 possible battery states.

My headset is connected, but it still shows "No headphone adapter found"

Your headset might be unsupported due to being a new model. See Adding a new headset

Development

Git, Rust and Cargo need to be installed.

Additionally, this project depends on hidapi and HeadsetControl which are stored as Git submodules in the vendor directory. Those C/C++ projects are built in build.rs using the cc crate.

The MSVC compiler is also required. Install Visual Studio 2019 or later with "Desktop development with C++","Windows SDK" and "MSVC .. C++ x64/x86 build tools" workloads.

To get started with developing the project, first clone this repository:

git clone https://github.com/aarol/headset-battery-indicator --recursive

Remember to use --recursive to clone the submodules as well.

Then, from the headset-battery-indicator folder, you can:

  • Run the application in release mode: cargo run --release

  • Run the application in debug mode: cargo run

  • Debug the application by pressing F5 in VS Code with the Rust Analyzer and CodeLLDB extensions installed.

  • Build the installer: install Inno Setup Compiler, open installer.iss and click "Compile".

Translations

There are translations for the following languages:

  • English
  • Finnish
  • Italian
  • German
  • Portuguese

Translations can be added to the lang.rs file.

Adding a new headset

Headset Battery Indicator depends on HeadsetControl for supporting many kinds of headset models. If the headset you're using isn't currently supported, you can either wait until someone else adds support for it, or try adding it yourself.

Reading the HeadsetControl wiki is the best resource on this.

I have a post on my website going a bit into reverse-engineering the headset APIs as well: https://aarol.dev/posts/arctis-hid

Arctis headphone firmware update

In early 2026, many SteelSeries Arctis headphones received a new firmware update, adding more accurate battery level reporting, but also changing the HID product ID, leading to HeadsetControl (and thus this program) not recognizing the headset.

Luckily, the fix is quite simple. The new product ID simply needs to be reported to the maintainers.

Here's how you can find the product ID:

  1. Open "Device Manager" on Windows
  2. Find your headset in the list and open "properties"
  3. In the Details tab, select the "device instance path" property. It will contain the vendor ID (VID) and product ID (PID).
Reference screenshot image

Once you have the vID and pID, you can file an issue in the repository or in HeadsetControl, or file a pull request if you're more technically savvy!

License

This project is licensed under GNU GPL v3.

You’re free to use, modify, and redistribute it, as long as your version is also licensed under GPL v3, and you include the source code and license when you share it. See the LICENSE file for full terms.

About

Adds an icon to the Windows task bar displaying the battery level of connected wireless headphones

Topics

Resources

License

Stars

Watchers

Forks

Contributors 8