mirror of
https://github.com/kavishdevar/librepods.git
synced 2026-01-28 22:01:50 +00: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
-
Your phone's Bluetooth MAC address (can be found in Settings > About Device)
-
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 -
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
-
Build the application:
mkdir build cd build cmake .. make -j $(nproc) -
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:
PipeWire/WirePlumber (Recommended)
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