Adds a small icon to the Windows task bar, displaying the battery level of most* connected wireless headphones.
-
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
-
Shows notifications on low battery level or when finished charging (optional)
Headset Battery Indicator depends on HeadsetControl, which is licensed under GPL v3.
- Download the latest release and run the installer
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).
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.
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.
This is limitation of the headsets themselves, as some devices only expose 5 possible battery states.
Your headset might be unsupported due to being a new model. See Adding a new headset
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 --recursiveRemember 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
F5in VS Code with the Rust Analyzer and CodeLLDB extensions installed. -
Build the installer: install Inno Setup Compiler, open installer.iss and click "Compile".
There are translations for the following languages:
- English
- Finnish
- Italian
- German
- Portuguese
Translations can be added to the lang.rs file.
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
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:
- Open "Device Manager" on Windows
- Find your headset in the list and open "properties"
- In the Details tab, select the "device instance path" property. It will contain the vendor ID (VID) and product ID (PID).
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!
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.
