WattsUp
See the battery of your wireless mouse, keyboard and more in the menu bar and a widget.
- Runs on
- macOS
- Status
- Coming soon
- Version
- 1.0
- Needs
- macOS 14 Sonoma or later
- Source
- Closed source
- Built with
The problem
My peripherals report their battery in different ways. Apple keyboards and mice use one method, AirPods use a second, and Bluetooth LE devices use a third. A mouse or keyboard on a USB 2.4 GHz receiver uses a method from its vendor. On a Mac, no single place showed all of them, and I wanted a warning before a battery goes empty.
What it does
WattsUp shows how much battery is left in your wireless mouse, keyboard, headphones and other devices, from the Mac menu bar.
- Click the bolt icon to see each device, its battery percentage and a guess such as "~3 days left".
- Show the lowest battery as a number next to the icon.
- Rename a device, change its icon, or hide it.
- Choose the theme, how often WattsUp checks, the level that counts as low, and start at login.
- Add a widget in two sizes to your desktop or to Notification Center.
- Get one notification when a battery becomes low.
- See "N/A" when WattsUp finds a device but cannot read its battery.
Decisions & trade-offs
Private Bluetooth keys, read with care. I read the AirPods battery through private macOS keys, and I check each key before I read it. You get AirPods battery levels, and a future macOS cannot crash the app. A macOS update can remove AirPods support at any time.
Vendor commands only for vendor hardware. I send a vendor command only to devices from that vendor. Your other USB devices never get commands that were made for a different brand. Each new brand needs new code before WattsUp can show its battery.
No battery is better than a wrong battery. I removed a dongle read that showed a constant, wrong 93% for my Gravastar keyboard. You see "N/A" instead of a false value. That keyboard shows no battery over the dongle, but it shows the correct value over Bluetooth.
Input Monitoring for dongles. WattsUp asks for the macOS Input Monitoring permission one time at each launch, and the dropdown tells you why. Without this permission, the app cannot read the battery from USB receivers. The permission looks alarming for a battery app, but no other method can read the receiver.
One notification for each discharge. I send one warning when a device goes below the threshold, not one on each refresh. A restart of the app does not repeat the warning. A device can warn again only after it charges or goes 5 points above the threshold.
What's next
- Get an Apple Developer account and real code signing, so I can share WattsUp. Without it, the widget does not always get its data.
- Add support for USB receivers from more gaming brands.
Some receivers, such as my Gravastar receiver, do not send the battery over 2.4 GHz, and the Mac cannot fix that. A device also shows only while it is connected and awake.