Open Source / MIT License / Rust / v0.2.0

Your AirPods. Your Desktop.

Native AirPods support for Linux and Windows. Battery monitoring, ear detection, parametric EQ, ANC control, desktop app, and full CLI — across every AirPods generation. A Rust daemon that speaks the Apple Accessory Protocol over raw Bluetooth.

AirPods Helper desktop app showing battery levels, ANC controls, and feature toggles
airpods-cli status
AirPods Pro 2  (A2698)  FW 7A305

  Left   ██████████████████░░  92%
  Right  ██████████████████░░  90%
  Case   ████████████░░░░░░░░  63%

ANC:    noise
CA:     on
1-Bud:  off
Ears:   L=in R=in
EQ:     Flat

Everything your AirPods can do, from your desktop

ANC Control

Switch between Off, Noise Cancellation, Transparency, and Adaptive modes. Adjust adaptive noise level from 0-100.

Battery Monitoring

Real-time battery levels for Left, Right, and Case. Charging status indicators. Low-battery warnings.

Ear Detection

Auto-pause media when you remove your AirPods. Auto-resume when you put them back in. Works with any MPRIS player.

Parametric EQ

PipeWire filter-chain presets: flat, bass-boost, vocal-clarity, and Crinacle's AirPods Pro target curve.

Auto-Reconnect

Exponential backoff reconnection when your AirPods disconnect. Configurable retry count. Just works.

CLI + D-Bus

Full terminal control via airpods-cli. D-Bus interface for desktop integration. JSON output for scripting.

Supported Devices

DeviceModel NumbersFeatures
AirPods 1A1523, A1722Battery, Ears, EQ
AirPods 2A2031, A2032Battery, Ears, EQ
AirPods 3A2564, A2565Battery, Ears, EQ
AirPods 4A3050, A3053, A3054, A3058Battery, Ears, EQ
AirPods 4 (ANC)A3055, A3056, A3057, A3059ANC, Adaptive, CA
AirPods ProA2083, A2084, A2190ANC
AirPods Pro 2 (Lightning)A2698, A2699, A2700, A2931ANC, Adaptive, CA
AirPods Pro 2 (USB-C)A2968, A3047, A3048, A3049ANC, Adaptive, CA
AirPods Pro 3A3063, A3064, A3065, A3122ANC, Adaptive, CA
AirPods MaxA2096ANC
AirPods Max 2A3184ANC, Adaptive, CA

How It Works

The daemon communicates with AirPods using the Apple Accessory Protocol (AAP) over a raw L2CAP channel on PSM 0x1001. The protocol was reverse-engineered from packet captures between AirPods and Apple devices. After a multi-step handshake, the daemon maintains a persistent connection, sending commands and receiving notifications in a binary format. All state flows through D-Bus on Linux or a local HTTP API on Windows.

                   ┌────────────────────────────┐
                   │      AirPods (BLE)          │
                   └─────────────┬──────────────┘
                              │ AAP over L2CAP
             ┌──────────────┴───────────────┐
             │  Daemon (Rust + Tokio)    │
             │  AAP parser • BLE scan    │
             │  EQ • MPRIS • reconnect   │
             └──────┬─────────────┬─────────┘
                   │             │
        Linux │  D-Bus    Windows │  HTTP API
                   │             │
       ┌──────┴─────┐  ┌─────┴───────┐
       │ CLI       │  │ Desktop App │
       │ Widgets   │  │ (Tauri)     │
       └────────────┘  └─────────────┘

CLI Reference

# Status
airpods-cli status                    # full status
airpods-cli status --json             # JSON for scripts
airpods-cli battery                   # battery only

# ANC Control
airpods-cli anc noise                 # noise cancellation
airpods-cli anc transparency          # transparency
airpods-cli anc adaptive              # adaptive
airpods-cli anc off                   # disable

# Features
airpods-cli ca on                     # conversational awareness
airpods-cli eq bass-boost             # apply EQ preset
airpods-cli eq list                   # available presets
airpods-cli reconnect                 # force reconnect

Get Started

Linux

$

Tarball (universal)

Download, extract, run install.sh

$

AUR (Arch Linux)

yay -S airpods-helper

$

.deb (Ubuntu/Debian)

Download .deb from releases

Download v0.2.0

Windows

Windows support uses Winsock L2CAP for the AAP protocol with a local HTTP API. BLE discovery via btleplug/WinRT. Includes standalone daemon + Tauri desktop app.

Download v0.2.0