LibrePods: AirPods control on Android and Linux without an Apple device
AirPods liberated from Apple's ecosystem.
At a glance
- What is it?
- LibrePods reimplements the proprietary AirPods protocol in Kotlin and Rust so Android and Linux can change listening modes, read battery status and use ear detection. The feature table is honest about what is missing, and the interesting parts sit behind VendorID spoofing or are marked as never coming.
- Who is it for?
- Adopt LibrePods if you use AirPods on Android or Linux and want listening mode switching, battery reporting and ear detection without an Apple device. Do not adopt it if you need hearing aid support, spatial audio with head tracking, or high quality two-way audio, because the project's own table marks those as not implemented, unknown or refused.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 15 days ago.
- What is it written in?
- Mainly Kotlin, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem LibrePods addresses for non-Apple AirPods owners
AirPods speak a proprietary protocol to Apple hardware. On an iPhone or iPad that protocol carries listening mode changes, ear detection events, battery levels, head gestures and conversational awareness. Pair the same earbuds with an Android phone or a Linux laptop and they fall back to standard Bluetooth audio profiles, which means the extra controls simply are not there. LibrePods exists to close that gap. The README describes the goal plainly: it implements the proprietary protocol used to exchange data between AirPods and Apple devices so that features exclusive to Apple platforms work elsewhere. The audience is narrow and specific. It is people who already own AirPods and who run Android or Linux as their daily driver, and who are willing to install a companion app or a system-level component to get controls that Apple treats as part of its own stack. It is not a general Bluetooth utility and it is not aimed at users who want AirPods to behave like ordinary headphones.
What the feature matrix actually promises per platform
The README carries a table that separates Linux from Android, and the two columns do not match. Changing listening mode, ear detection, battery status, renaming and conversational awareness are marked as working well on both platforms. Automatically connecting to AirPods is also listed for both. Beyond that the columns diverge. Head gestures are marked as working on Android and as never to be implemented on Linux. The group of accessibility and general configuration options, which includes press speed, press and hold duration, volume control on swipe, personalized volume, microphone side and call controls, is listed for Android only. Loud sound reduction and hearing aid support appear for Android with a marker meaning VendorID spoofing is required and the user proceeds at their own risk. Head-tracked spatial audio and Find My are marked unknown on both platforms. Heart rate monitoring is marked as not implemented on Android and as never to be implemented on Linux. High quality two-way audio is not implemented on either. That table is the most useful thing in the repository. It tells a prospective user where the project stands instead of implying parity.
How the protocol reimplementation is structured
The repository is split by platform. The primary language is Kotlin, which covers the Android application, and the Linux side has its own Rust component, visible in the CI workflow named ci-linux-rust.yml alongside ci-android.yml. The README points to separate installation documents at android/README.md and linux/README.md, so the two builds are not a single artifact with a shared installer. The mechanism is the same idea on both sides: speak the AirPods control protocol directly rather than going through Apple software. Some capabilities depend on how the host presents itself over Bluetooth rather than on the app alone. That is the case for the features marked with the spoofing symbol, and it is also how the project describes multi-device connectivity, where up to two devices can be connected to the AirPods at once for audio and control, and where an Apple device shows the same kind of takeover notification it would show for another Apple device. The Android build also exposes an option that only appears when Xposed is available and the LibrePods module is enabled, which places part of the feature set behind a rooted or hooking-based setup rather than a plain install.
Installation paths and the VendorID spoofing step
There is no single command that installs LibrePods everywhere. The README directs Android users to /android/README.md and Linux users to /linux/README.md, and those files are the authoritative instructions. The one configuration detail the main README spells out is VendorID spoofing, which it says unlocks several special features. On Linux the change is made by editing the DeviceID in /etc/bluetooth/main.conf and adding the line DeviceID = bluetooth:004C:0000:0000. On Android the equivalent is a setting labelled act as Apple device, which the README says is shown only when Xposed is available and the LibrePods module is enabled. Both routes change how the host identifies itself over Bluetooth, which is why the README attaches a use at your own risk note to that category. Anyone evaluating the project should read that warning as part of the installation cost, not as an afterthought. The spoofing step is what separates the features marked as working well from the features marked with the partial symbol, and it is also what makes the setup less reversible than a normal app install.
Limits the project states about itself
The most consequential limitation is written into the table rather than discovered later. Hearing aid support, loud sound reduction and transparency mode customization are not implemented, and the marker next to them indicates they depend on VendorID spoofing. Head-tracked spatial audio is listed as unknown, and the README explains why: the app does not currently pass head tracking information to Android for the OS to apply HRTF, that area has not been fully explored, and it might need root. The README also states that spatializing stereo sound is beyond the project's scope and will never be available, on the grounds that many device vendors ship their own implementation. Heart rate monitoring for AirPods Pro 3 and later is described as being worked on, with a pointer to the reverse-engineering channel on the project's Discord, and the README expects it to need root on Android if it lands at all. High quality two-way audio, where A2DP continues while the microphone stream travels over the control protocol as it does on iOS and iPadOS, is described as needing deeper audio integration and therefore likely root on Android. Find My features such as adding AirPods to the Find My network, playing a sound through the charging case and leaving-behind notifications are planned but need further reverse engineering and may need root. If you need any of those, LibrePods is the wrong tool today.
Where LibrePods sits next to the Apple-side default
The obvious alternative is simply using the AirPods with an Apple device, where every feature in the table works because the protocol and the operating system are built by the same vendor. That is not a like-for-like comparison for someone who has already left that ecosystem. The closer alternative is treating AirPods as ordinary Bluetooth earbuds and accepting the loss of control features, which requires no extra software, no configuration file edit and no spoofing. The difference in approach is that LibrePods reimplements the control channel to recover those features, and pays for it with platform-specific builds, a spoofed device identity for part of the feature set, and a support matrix that varies by operating system. The comparison also runs the other way: a pair of earbuds designed for Android or Linux would expose equivalent controls through the standard stack, without reverse engineering and without the risk attached to presenting the host as an Apple device. LibrePods makes sense for people who already own AirPods and want to keep using them, not for people choosing earbuds from scratch.
Licence, release cadence and maintenance expectations
LibrePods is licensed under GPL-3.0. For anyone planning to bundle it into a product or modify it and ship the result, that licence carries obligations around source distribution, and the specifics are a matter for a lawyer rather than this article. The release history shows a nightly stream alongside a release candidate. The most recent entries are nightly builds dated 2026-08-31 and 2026-06-12, with v1.0.0-rc1 dated 2026-06-20 sitting between them. That pattern suggests active development rather than a frozen stable line, and it means a user installing the latest artifact is likely installing a nightly. The repository also carries a warning at the top of the README about librepods.org, which it says is not an official website of the project, claims copyright and uses the LibrePods logo while also stating it is not affiliated with the project. The README asks that other such sites be reported by email. That warning matters for anyone searching for downloads: the repository itself is the place to check, and the README says the project has no homepage listed. The upgrade cost is therefore not only re-running an installer. It is tracking a nightly cadence, re-checking the feature table as markers change, and confirming which features still depend on the spoofing step after each update.
Editorial conclusion
Adopt LibrePods if you use AirPods on Android or Linux and want listening mode switching, battery reporting and ear detection without an Apple device. Do not adopt it if you need hearing aid support, spatial audio with head tracking, or high quality two-way audio, because the project's own table marks those as not implemented, unknown or refused. Before installing, check the Android and Linux README files in the repository, confirm which features require VendorID spoofing, and note that the current release line is a nightly build plus v1.0.0-rc1 rather than a stable tag.
Community notes