Open-source project
librepods-org/librepods avatar
librepods-org/librepods

LibrePods: AirPods control on Android and Linux without an Apple device

AirPods liberated from Apple's ecosystem.

30,730 stars1,871 forksKotlinGPL-3.0

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 needing VendorID spoofing or not implemented yet, unknown, or experimental.
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 5 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 November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • librepods-org/librepods30,730 ★ · +878
Star history
Repository2026-09-132026-11-13
librepods-org/librepods29.9k30.7k

878 Stars in the last 61 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial 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 experimental on Android and as not implemented yet on Linux. High quality two-way audio is marked experimental on both. 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 as needing VendorID spoofing.

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 yet on Linux, and on Android 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 is available on Android in the android/rewrite branch, while on Linux it is not available yet. 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 a work-in-progress recorder on Android in the android/rewrite branch, and making it available to other apps or telephony might need root. 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 v1.x line alongside alpha builds of a rewrite. The most recent entries are v2.0.0-alpha.4 (rewrite) dated 2026-10-23 and v2.0.0-alpha.3 (rewrite) dated 2026-10-22, with v1.0.4 dated 2026-10-16. That pattern suggests active development, so check whether the release you install is v1.0.4 or a rewrite alpha. 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 repository lists no homepage. The upgrade cost is therefore not only re-running an installer. It is tracking frequent releases, 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 needing VendorID spoofing or not implemented yet, unknown, or experimental. Before installing, check the Android and Linux README files in the repository, confirm which features require VendorID spoofing, and note that the current releases are v1.0.4 alongside v2.0.0 alpha builds of a rewrite.

Frequently asked questions

What are Libre Pods?

LibrePods is a project that lets you use AirPods features otherwise exclusive to Apple devices. It implements the proprietary protocol used to exchange data between AirPods and Apple devices, bringing changing noise control modes, fast ear detection, accurate battery status, head gestures and conversational awareness to non-Apple platforms. It is written in Kotlin and released under GPL-3.0.

Can I use LibrePods without root?

The project does not state a blanket guarantee, so check the specific feature. Its Android VendorID spoofing toggle is shown only when Xposed is available and the module is enabled, while Find My features are described as possibly needing root on Android. On Linux the spoofing equivalent is a config edit in /etc/bluetooth/main.conf rather than an Xposed module.

How to set up LibrePods?

Pick your platform: the repository carries a separate Android readme and Linux readme under android/ and linux/. On Linux the extra step for features marked as needing VendorID spoofing is to add `DeviceID = bluetooth:004C:0000:0000` to /etc/bluetooth/main.conf. On Android enable the `act as Apple device` setting, which appears only when Xposed is available.

how to install librepods on android

Follow the Android installation readme in the repository's android/ directory. Two caveats first: the VendorID spoofing toggle only appears when Xposed is available and the LibrePods module is enabled, and renaming AirPods on Android means you must re-pair them afterwards because Android may not use the latest name.

how to install librepods on linux

Follow the Linux installation readme in the repository's linux/ directory. For the features marked as needing VendorID spoofing, such as Multi-device connectivity, also add the line `DeviceID = bluetooth:004C:0000:0000` to /etc/bluetooth/main.conf. The project marks that approach as at your own risk.

Official sources

  1. Issues
  2. librepods-org/librepods on GitHub
  3. License: GPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/librepods-org-librepods.svg)](https://hysenlabs.com/projects/librepods-org-librepods)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/librepods-org-librepods.svg)](https://hysenlabs.com/projects/librepods-org-librepods)

Was this useful?