librepods README

The project's README from github.com/librepods-org/librepods. As one markdown file: README.md.

[!WARNING] librepods.org is not an official website of the LibrePods project. It inaccurately claims to be the official website of the project by claiming copyrights and using the LibrePods logo in the footer. And at the same time, they say that the project is not affiliated with the LibrePods project or its developers.

Please report any other such websites to [email protected]

LibrePods

What is LibrePods?

LibrePods allows you to use AirPods features that are exclusive to Apple devices. It implements the proprietary protocol used to exchange data between AirPods and Apple devices, enabling features like changing noise control modes, fast ear detection, accurate battery status, head gestures, conversational awareness, and more on non-Apple platforms.

Feature availability

Feature Linux Android
Changing Listening Mode ✅ ✅
Ear detection ✅ ✅
Battery status ✅ ✅
Renaming AirPods
Note for AndroidOn Android, you need to re-pair your AirPods after renaming them because Android might not use the latest name.
✅ ✅
Loud Sound Reduction 🔴 ⚪
Head Gestures ⛔ ✅
Conversational Awareness ✅ ✅
Automatically connect to AirPods ✅ ✅
Hearing Aid 🔴 ⚪
Transparency Mode customization 🔴 ⚪
Multi-device connectivity (Bluetooth Multipoint; 2 devices only) ⚪ ⚪
Other accessibility configs (click to expand)
  • Press speed
  • Press and Hold duration
  • Noise Cancellation with single AirPod
  • Volume control on swipe
  • Volume swipe speed
🔴 ✅
Other general configs
  • Press and Hold to cycle between listening modes/invoke digital assistant (invoking digital assistant needs a recent firmware)
  • Configure call controls
  • Personalized volume
  • Loud Sound Reduction (needs VendorID spoofing)
  • Microphone side
  • Pause media when falling asleep (needs a recent firmware)
  • Enable Off listening mode to switch to Off
🔴 ✅
Head-tracked Spatial Audio ❓ ❓
Heart Rate Monitoring ⛔ 🔴
Find My ❓ ❓
High quality two-way audio 🔴 🔴
Symbol Meaning
✅ Implemented and works well
⚪ Needs VendorID spoofing; use at your own risk
🔴 Not implemented yet; planned
⛔ Will not be implemented
❓ Unknown

Find My

The following features related to Find My are planned, but require further RE and might need root on Android:

Spatial Audio

The app does not currently provide head tracking information to Android for the OS to perform HRTF. This has not been explored completely, and it might need root.

Spatializing stereo sound is beyond this project's scope and will never be available. Many OEMs have an implementation of their own for this.

Heart Rate Monitoring (AirPods Pro 3 and later)

This is being worked upon, check the #⁠reverse-engineering channel on the LibrePods Discord server for more information. If it is ever implemented, it will most likely need root on Android.

High quality two-way audio

On iOS/iPadOS, you can continue using A2DP while AirPods send the audio stream from its microphone over AACP.

Since this needs deeper integration with audio on Android, it will most likely need root.

Installation

VendorID Spoofing

Turns out, if you change the VendorID in DID Profile to that of Apple, you get access to several special features!

You can do this on Linux by editing the DeviceID in /etc/bluetooth/main.conf. Add this line to the config file DeviceID = bluetooth:004C:0000:0000. For android you can enable the act as Apple device setting in the app's settings (shown only when Xposed is available and LibrePods module is enabled).

Multi-device Connectivity

Upto two devices can be simultaneously connected to AirPods, for audio and control both. Seamless connection switching. The same notification shows up on Apple device when Android takes over the AirPods as if it were an Apple device ("Move to iPhone"). Android also shows a popup when the other device takes over.

Accessibility Settings and Hearing Aid

Accessibility settings like customizing transparency mode (amplification, balance, tone, conversation boost, and ambient noise reduction), and loud sound reduction can be configured.

All hearing aid customizations can be done from Android (linux soon), including setting the audiogram result. The app doesn't provide a way to take a hearing test because it requires much more precision. It is much better to use an already available audiogram result.

Protocol and Reverse Engineering

Please refer to the Wireshark dissector plugin by Nojus (@pabloaul) for more information on the protocols used: pabloaul/apple-wireshark

The dissector had not been used in LibrePods for most of the implementation; I had reverse engineered the protocol myself before this dissector was made. But many (future) features including two-way high quality audio and spatial audio would not have been possible without their RE efforts!

Use of AI

Android app

These parts of the app were completely AI-generated:

Rest everything- the background service, the Bluetooth manager classes (AACP and ATT), the entire UI, even the smallest components were written manually.

Some parts of the UI components were borrowed from Kyant0's demo app, which is licensed under Apache License 2.0.

Linux (rewrite)

The aacp.rs and the att.rs files were translated from Kotlin to Rust with AI. Some parts of the media_controller.rs file, mainly the pulse integration, was also AI-generated.

Supporters

A huge thank you to everyone supporting the project!

davdroman
@davdroman
tedsalmon
@tedsalmon
wiless
@wiless
SmartMsg
@SmartMsg
lunaroyster
@lunaroyster
ressiwage
@ressiwage
kkjdroid
@kkjdroid
CitrusJoules
@CitrusJoules
DanielReyesDev
@DanielReyesDev
sumitduster
@sumitduster
GrifTheDev
@GrifTheDev

Special Thanks

Alternates for other platforms:

Star History

Star History Chart

License

LibrePods - AirPods liberated from Apple’s ecosystem Copyright (C) 2025 LibrePods contributors

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Trademark Notice

The GPL does not grant any rights to use the LibrePods name, logo, or branding. The LibrePods name and logo may not be used for software, websites, domains, products, services, or other projects in a manner that suggests affiliation with, endorsement by, or association with the official LibrePods project without prior permission.

If you see any misuse of the LibrePods name or logo, please report it to [email protected].

The SF Pro font used in the Android app is the property of Apple Inc.. This will be removed in future versions of the app and replaced with an open alternative soon.

AirPods, AirPods Pro, AirPods Max, and the AirPods logo are trademarks of Apple Inc. The LibrePods project is not affiliated with or endorsed by Apple Inc. in any way.

librepods (librepods-org/librepods)

Searching Database…

30.4K ·GitHub
What is this?LibrePods is an app that unlocks AirPods features normally exclusive to Apple devices on Linux and Android — noise control modes, ear detection, battery status, head gestures, conversational awareness and more.
Is this one app or separate apps for phone and desktop?Two separate apps: one for Android, one for Linux. Most core features work on both, but head gestures, hearing aid settings and other accessibility configs are Android-only for now.
How do I get it running?The README links separate installation guides for Android and Linux — pick the one for your platform. On Linux, spoofing-dependent features additionally require adding a DeviceID line to /etc/bluetooth/main.conf.
Do I need an Apple device or an iPhone for this to work?No — LibrePods implements Apple's proprietary AirPods protocol itself, so a Linux machine or Android phone talks to the AirPods directly. For spoofing on Android you need Xposed with the LibrePods module enabled.
Some features are marked as needing VendorID spoofing — what does that mean?AirPods hide certain features from non-Apple devices, and impersonating Apple unlocks them: on Linux add DeviceID = bluetooth:004C:0000:0000 to /etc/bluetooth/main.conf, on Android enable the 'act as Apple device' setting (needs Xposed).
Is it open source? Any catch in the license?GPLv3 and fully open source. One catch: the license doesn't cover the LibrePods name and logo, so nothing may present itself as official LibrePods without permission.
What works out of the box, without any spoofing?Listening mode switching, ear detection, battery status, renaming, conversational awareness and auto-connect work well on both platforms. Head gestures are Android-only (marked as never coming to Linux).
Will some features ever need a rooted Android phone?Likely yes: heart rate monitoring on AirPods Pro 3 and high-quality two-way audio will most likely need root if implemented, and planned Find My features might too.
Is there anything it will never support?True spatial audio — spatializing stereo sound is declared out of scope since most phone makers ship their own implementation. Head-tracked spatial audio is unexplored and may need root.
Can AirPods stay connected to my phone and laptop at once?Yes — Bluetooth multipoint supports up to two devices for audio and control, with seamless switching and takeover popups just like between Apple devices.
Can it turn AirPods into a hearing aid?On Android yes: amplification, balance, tone, conversation boost, ambient noise reduction and your audiogram are all configurable; Linux support is coming. It won't run hearing tests — bring an existing audiogram result.
What if my device isn't covered?The README points to CAPod for Android 16 QPR3 or below and non-rooted phones, MagicPods for Steam Deck, and MagicPods on the Microsoft Store as the 'LibrePods for Windows' option.
Is librepods.org the official website?No. The README explicitly warns that this site falsely claims to be official, misuses the project logo, and asks users to report lookalike sites to the developer.
Size
195.8 MB
Stars
30.4K
Age
2y
Commits · 90 Days