Unofficial native macOS menu-bar monitor for the Anker Prime Charger 160W with Smart Display (A2687). Product page: djui.github.io/ankered.
The app lives in the menu bar (LSUIElement). It connects locally over Bluetooth LE, shows live power, and can change charging mode, display settings, and individual USB-C ports. It is not affiliated with Anker Innovations.
0x021D) or Anker account features"Brand Device"Download AnkerPower-1.2.1.zip from the latest GitHub Release, unzip it, and move AnkerPower.app to /Applications.
Builds are ad-hoc signed and not notarized. On first launch, right-click the app and choose Open, then confirm. After that, Spotlight and Finder open it normally.
Grant Bluetooth access when macOS asks.
The app appears only in the menu bar. Click the bolt icon:
Right-click the bolt icon for Reconnect, Charging History, Diagnostics, and Quit. Shortcuts can turn a port on or off while the app is running.
If a connection fails, open Diagnostics and use Copy All when filing an issue.
open AnkerPower.xcodeproj
Select the AnkerPower scheme and My Mac, then Run.
xcodebuild -project AnkerPower.xcodeproj -scheme AnkerPower \
-destination 'platform=macOS' test
Cut a local archive (and optionally a GitHub Release) with:
./scripts/release.sh # zip only
./scripts/release.sh --publish 1.2.1
All charger telemetry and history stay on the Mac. Up to 24 hours of samples and last-known charger identity are stored in the app's Application Support container (~/Library/Application Support/AnkerPower/). Port nicknames live in UserDefaults. The app makes no network requests.
This is an unofficial implementation. The A2687 BLE protocol is not a public Anker API and may change with charger firmware.
The app first performs the current app-compatible, ephemeral P-256 ECDH/AES-GCM session and polls 0x020A/0x0200. After the session is ready it also requests charger-side history once (0x020C). If that handshake does not answer, it falls back to the older AES-CBC flow and 0x4200 telemetry subscription documented by the MIT-licensed T-REX-XP/Anker-BLE project. Mode, display, port control, and history are available on the modern session only. Charger-button changes arrive as 0x0300–0x030B reports.
Protocol constants, FF09 framing, negotiation, ECDH/AES-CBC behavior, and telemetry subscription are derived from:
The app-compatible AES-GCM handshake and telemetry commands were cross-checked against public reverse-engineering notes in:
Ankered is released under the MIT License. That is compatible with Anker-BLE's MIT license; the required copyright and permission notice is reproduced in THIRD_PARTY_NOTICES.md.
Unofficial research software. Anker is a trademark of Anker Innovations. This project is not affiliated with, endorsed by, or sponsored by Anker Innovations. Use at your own risk. Keep the official Anker app disconnected while this app holds the BLE session.
1 commits
Swift
97.1%
Shell
2.9%
Unofficial native macOS menu-bar monitor for the Anker Prime Charger 160W with Smart Display (A2687). Product page: djui.github.io/ankered.
The app lives in the menu bar (LSUIElement). It connects locally over Bluetooth LE, shows live power, and can change charging mode, display settings, and individual USB-C ports. It is not affiliated with Anker Innovations.
0x021D) or Anker account features"Brand Device"Download AnkerPower-1.2.1.zip from the latest GitHub Release, unzip it, and move AnkerPower.app to /Applications.
Builds are ad-hoc signed and not notarized. On first launch, right-click the app and choose Open, then confirm. After that, Spotlight and Finder open it normally.
Grant Bluetooth access when macOS asks.
The app appears only in the menu bar. Click the bolt icon:
Right-click the bolt icon for Reconnect, Charging History, Diagnostics, and Quit. Shortcuts can turn a port on or off while the app is running.
If a connection fails, open Diagnostics and use Copy All when filing an issue.
open AnkerPower.xcodeproj
Select the AnkerPower scheme and My Mac, then Run.
xcodebuild -project AnkerPower.xcodeproj -scheme AnkerPower \
-destination 'platform=macOS' test
Cut a local archive (and optionally a GitHub Release) with:
./scripts/release.sh # zip only
./scripts/release.sh --publish 1.2.1
All charger telemetry and history stay on the Mac. Up to 24 hours of samples and last-known charger identity are stored in the app's Application Support container (~/Library/Application Support/AnkerPower/). Port nicknames live in UserDefaults. The app makes no network requests.
This is an unofficial implementation. The A2687 BLE protocol is not a public Anker API and may change with charger firmware.
The app first performs the current app-compatible, ephemeral P-256 ECDH/AES-GCM session and polls 0x020A/0x0200. After the session is ready it also requests charger-side history once (0x020C). If that handshake does not answer, it falls back to the older AES-CBC flow and 0x4200 telemetry subscription documented by the MIT-licensed T-REX-XP/Anker-BLE project. Mode, display, port control, and history are available on the modern session only. Charger-button changes arrive as 0x0300–0x030B reports.
Protocol constants, FF09 framing, negotiation, ECDH/AES-CBC behavior, and telemetry subscription are derived from:
The app-compatible AES-GCM handshake and telemetry commands were cross-checked against public reverse-engineering notes in:
Ankered is released under the MIT License. That is compatible with Anker-BLE's MIT license; the required copyright and permission notice is reproduced in THIRD_PARTY_NOTICES.md.
Unofficial research software. Anker is a trademark of Anker Innovations. This project is not affiliated with, endorsed by, or sponsored by Anker Innovations. Use at your own risk. Keep the official Anker app disconnected while this app holds the BLE session.
1 commits
Swift
97.1%
Shell
2.9%