Peripheral Battery Monitor
A lightweight Windows 11 app that shows the battery of wireless mice, keyboards, headsets and other devices in the tray — no vendor software or third-party drivers.
- v0.4.5latest release · October 24, 2026
- 3ways to read battery: HID, BLE, Windows
- 2UI languages
- 0drivers or admin rights needed
About the project
Vendor utilities only show their own devices, often need extra drivers and run in the background all the time. Peripheral Battery Monitor brings the battery of every wireless device into the tray and a compact dashboard.
For devices with proprietary protocols — the AJAZZ AJ139 2.4 GHz receiver and the Apple Magic Keyboard — the app reads HID battery reports directly. BLE devices with the standard Battery Service are read and send change notifications; others are found through Windows battery properties. It installs without admin rights and updates from GitHub Releases — the latest release, v0.4.5, shipped on October 24, 2026.
What the system does
-
Your kind of tray
One combined icon for up to four devices or a separate icon per device; battery symbols or the lowest percentage.
-
Compact dashboard
Device cards appear and disappear automatically, with device and connection icons and pages instead of scrolling.
-
Bluetooth Battery Service
BLE devices exposing the standard battery service are read on connect and send battery-change notifications.
-
Auto-discovery
Bluetooth Classic, BLE and USB/HID devices are grouped per physical device without duplicates.
-
Honest data
Disconnected and unconfirmed devices stay out of the tray and alerts, and missing data is never shown as zero.
-
Disconnect from a card
A Bluetooth device can be disconnected from the dashboard while keeping its pairing.
-
Updates & rollback
Pick a release to update to or roll back to an older one, with SHA-256 validation; settings are kept.
-
Ukrainian & English
Switchable UI language, settings grouped into General, Tray icons and Notifications.
-
Privacy
No key logging, telemetry or cloud accounts — only the keyboard's battery collection is read.
How it is built
-
Native C# launcher
Runs the app in a PowerShell runspace and switches the active version via a pointer — updates and rollbacks are staged side by side.
-
C# device providers
AJ139 over its 2.4 GHz receiver (65-byte HID reports, filtering of false charge jumps) and the Apple Magic Keyboard over Bluetooth.
-
Win32 HID, SetupAPI & BLE GATT
P/Invoke into hid.dll and setupapi.dll to find interfaces by VID/PID; the standard 180F service and 2A19 characteristic for BLE.
-
Windows Forms UI
Tray, paged dashboard, a standard Windows toolbar and settings; state reaches the UI through locked snapshots.
-
CI/CD on GitHub Actions
On windows-latest: parser, battery-stability, install, upgrade and rollback tests; a vX.Y.Z tag publishes a release with SHA256SUMS.
External services
- GitHub ReleasesRelease picker, updates and rollback with integrity checks.
- Bluetooth LE Battery ServiceBattery level and change notifications (0x180F / 0x2A19).
- Windows device propertiesBattery and connection state for discovered devices.
- AJAZZ AJ139 V2 MCProprietary HID protocol of the 2.4 GHz receiver.
- Apple Magic KeyboardBattery reports over Bluetooth.
Project stack
Application
- PowerShell 5.1
- C#
- .NET Framework
- Windows Forms
Windows API
- HID
- SetupAPI
- Bluetooth LE GATT
- Device Properties
- P/Invoke
Infrastructure
- GitHub Actions
- GitHub Releases
- SHA-256
Have an idea or a project?
Open to collaboration on business systems, CRM and integrations. Drop me a line — let's talk.