Files
librepods/linux
..
2025-09-17 10:19:52 +08:00
2025-03-31 22:57:12 +02:00
2025-04-22 15:11:30 +02:00
2025-09-03 13:48:57 +05:30
2025-09-03 13:48:57 +05:30
2025-06-08 22:06:58 +02:00

LibrePods Linux

A native Linux application to control your AirPods, with support for:

  • Noise Control modes (Off, Transparency, Adaptive, Noise Cancellation)
  • Conversational Awareness
  • Battery monitoring
  • Auto play/pause on ear detection
  • Seamless handoff between phone and PC

Prerequisites

  1. Your phone's Bluetooth MAC address (can be found in Settings > About Device)

  2. Qt6 packages

    # For Arch Linux / EndeavourOS
    sudo pacman -S qt6-base qt6-connectivity qt6-multimedia-ffmpeg qt6-multimedia
    
    # For Debian
    sudo apt-get install qt6-base-dev qt6-declarative-dev qt6-connectivity-dev qt6-multimedia-dev \
         qml6-module-qtquick-controls qml6-module-qtqml-workerscript qml6-module-qtquick-templates \
         qml6-module-qtquick-window qml6-module-qtquick-layouts
    
     # For Fedora
     sudo dnf install qt6-qtbase-devel qt6-qtconnectivity-devel \
         qt6-qtmultimedia-devel qt6-qtdeclarative-devel
    
  3. OpenSSL development headers

    # On Arch Linux / EndevaourOS, these are included in the OpenSSL package, so you might already have them installed.
    sudo pacman -S openssl
    
    # For Debian / Ubuntu
    sudo apt-get install libssl-dev
    
    # For Fedora
    sudo dnf install openssl-devel
    

Setup

  1. Build the application:

    mkdir build
    cd build
    cmake ..
    make -j $(nproc)
    
  2. Run the application:

    ./librepods
    

Troubleshooting

Media Controls (Play/Pause/Skip) Not Working

If tap gestures on your AirPods aren't working for media control, you need to enable AVRCP support. The solution depends on your audio stack:

Create ~/.config/wireplumber/wireplumber.conf.d/51-bluez-avrcp.conf:

monitor.bluez.properties = {
  # Enable dummy AVRCP player for proper media control support
  # This is required for AirPods and other devices to send play/pause/skip commands
  bluez5.dummy-avrcp-player = true
}

Then restart WirePlumber:

systemctl --user restart wireplumber

Note: Do NOT run mpris-proxy with WirePlumber - it will conflict and break media controls.

PulseAudio

If you're using PulseAudio instead of PipeWire, enable and start mpris-proxy:

systemctl --user enable --now mpris-proxy

Usage

  • Left-click the tray icon to view battery status
  • Right-click to access the control menu:
    • Toggle Conversational Awareness
    • Switch between noise control modes
    • View battery levels
    • Control playback