Advanced battery monitoring solution for Apple AirPods on Windows
RustPods is an open-source, production-grade application engineered for precise battery monitoring of Apple AirPods and Beats products on Windows platforms. The system leverages a hybrid C++/Rust architecture, implementing Apple's proprietary Continuity Protocol via Bluetooth Low Energy (BLE) for high-fidelity telemetry acquisition and robust system integration.
- Battery Telemetry: Real-time acquisition and display of individual AirPods and charging case battery levels
- Bluetooth LE Integration: Native Windows Setup API for reliable device enumeration and communication
- Apple Continuity Protocol: Complete protocol parsing for proprietary battery and status data extraction
- System Integration: Windows system tray interface for persistent, background operation
- Configuration Management: Persistent user settings and preference storage
- Cross-Architecture Implementation: Modular C++ CLI scanner and Rust application for performance and maintainability
- Device Compatibility: Exclusive support for Apple AirPods and Beats product lines
- Operating System: Windows 10 (Build 1903) or later
- Hardware: Bluetooth Low Energy 4.0+ compatible adapter
- Device: Apple AirPods or Beats, paired via Windows Bluetooth configuration
RustPods employs a hybrid architecture:
- Native CLI Scanner (C++): Located in
scripts/airpods_battery_cli/, provides Apple Continuity Protocol parsing and structured JSON output - Rust Application: Modern UI built with the Iced framework, asynchronous Bluetooth integration, and robust state management
- Data Exchange: Structured JSON protocol between CLI scanner and Rust frontend
- Build Automation: Cross-platform build system for streamlined development and deployment
Device Compatibility:
- AirPods (1st, 2nd, 3rd generation)
- AirPods Pro (1st, 2nd generation, including USB-C variant)
- AirPods Max
- Beats Studio Buds, Fit Pro, Powerbeats Pro
Note: Only devices implementing Apple's Continuity Protocol are supported. Third-party Bluetooth earbuds are not supported for battery telemetry.
Windows (Complete Functionality):
- Rust toolchain (latest stable)
- Microsoft C++ Build Tools or Visual Studio 2019/2022 with C++ workload
- CMake 3.16 or later
- Git (for submodule management)
Linux/macOS (Limited Functionality):
- Rust toolchain (latest stable)
- C++ compiler (gcc or clang)
- CMake 3.16 or later
- Git (for submodule management)
Windows (PowerShell):
git clone https://github.com/Jay1/RustPods.git
cd RustPods
./scripts/build_all.ps1Linux/macOS (Bash):
git clone https://github.com/Jay1/RustPods.git
cd RustPods
./scripts/build_all.sh- Submodule Initialization
git submodule update --init --recursive
- CLI Scanner Compilation
cd scripts/airpods_battery_cli cmake -B build -S . -G "Visual Studio 17 2022" -A x64 # Windows cmake -B build -S . -DCMAKE_BUILD_TYPE=Release # Linux/macOS cmake --build build --config Release
- Rust Application Compilation
cd ../..
cargo build --release
4. **Application Execution**
```bash
# Windows
.\target\release\rustpods.exe
# Linux/macOS
./target/release/rustpods
RustPods provides multiple execution modes for distinct operational requirements:
rustpods adapters # Enumerate available Bluetooth adapters
rustpods scan # Execute basic Bluetooth device scan
rustpods interval # Initiate interval-based scanning protocol
rustpods airpods # Execute AirPods-specific filtering demonstration
rustpods events # Launch event system demonstration
rustpods ui # Launch UI application (legacy state management)
rustpods stateui # Launch UI application (modern state management, default)
rustpods help # Display command reference
Default execution launches stateui mode with modern state management.
RustPods implements a sophisticated configurable logging system that provides clean output by default while offering powerful selective debugging capabilities for developers and troubleshooting.
Log Levels:
rustpods --quiet # Errors only
rustpods # Warnings and errors (default)
rustpods --info # Info, warnings, and errors
rustpods --debug # Debug, info, warnings, and errors
rustpods --trace # All log messagesDebug Categories:
rustpods --debug-ui # UI events, window management, system tray
rustpods --debug-bluetooth # Bluetooth scanning, device discovery, CLI scanner
rustpods --debug-airpods # AirPods detection, battery parsing
rustpods --debug-config # Configuration loading, saving, validation
rustpods --debug-system # System operations, lifecycle, persistence
rustpods --debug-all # All debug categories
rustpods -v # Same as --debug-allFor detailed logging implementation, see docs/development/logging-best-practices.md.
Comprehensive technical documentation is available in the docs directory, including:
Contributions are accepted in accordance with the Development Contribution Protocol. All submissions must adhere to project standards for code quality, documentation, and testing.
Licensed under the MIT License - refer to LICENSE file for complete terms.
This project incorporates architectural foundations from the AirPodsDesktop project by SpriteOvO. The CLI scanner component extends their Apple Continuity Protocol parsing implementation.