
AirPods, освобождённые из экосистемы Apple.
[!WARNING] librepods.org не является официальным сайтом проекта LibrePods. Он ошибочно заявляет, что является официальным сайтом проекта, указывая авторские права и используя логотип LibrePods в нижнем колонтитуле. И в то же время они заявляют, что проект не связан с проектом LibrePods или его разработчиками.
Пожалуйста, сообщайте о любых других подобных сайтах на [email protected]
LibrePods позволяет использовать функции AirPods, которые доступны только на устройствах Apple. Он реализует проприетарный протокол, используемый для обмена данными между AirPods и устройствами Apple, что даёт возможность использовать такие функции, как переключение режимов шумоподавления, быстрое определение нахождения в ушах, точный статус заряда батареи, жесты головой, осведомлённость о разговоре и многое другое на платформах, отличных от Apple.
| Символ | Значение |
|---|---|
Следующие функции, связанные с Find My, запланированы, но требуют дальнейшего реверс-инжиниринга (RE) и могут потребовать root на Android:
В настоящее время приложение не предоставляет Android информацию об отслеживании головы для выполнения HRTF на уровне ОС. Этот вопрос изучен не полностью, и для этого может потребоваться root.
Пространственная обработка стереозвука выходит за рамки данного проекта и никогда не будет доступна. У многих OEM-производителей есть собственная реализация этой функции.
Над этим ведётся работа — подробности смотрите в канале #reverse-engineering на Discord-сервере LibrePods. Если эта функция будет реализована, скорее всего, для неё потребуется root на Android.
На iOS/iPadOS вы можете продолжать использовать A2DP, пока AirPods отправляют аудиопоток со своего микрофона через AACP.
Поскольку для этого требуется более глубокая интеграция с аудиосистемой Android, скорее всего, понадобится root.
Оказывается, если изменить VendorID в DID Profile на идентификатор Apple, вы получаете доступ к нескольким специальным функциям!
На Linux это можно сделать, отредактировав DeviceID в /etc/bluetooth/main.conf. Добавьте в файл конфигурации строку DeviceID = bluetooth:004C:0000:0000. На Android вы можете включить настройку act as Apple device в настройках приложения (она отображается только при наличии Xposed и включённом модуле LibrePods).
К AirPods могут быть одновременно подключены до двух устройств — как для аудио, так и для управления. Бесшовное переключение соединения. Когда Android перехватывает AirPods, на устройстве Apple появляется то же уведомление, как если бы это было устройство Apple («Move to iPhone»). Android также показывает всплывающее окно, когда другое устройство перехватывает соединение.
Можно настроить такие параметры специальных возможностей, как настройка режима прозрачности (усиление, баланс, тон, усиление речи и подавление окружающего шума), а также подавление громких звуков.
Все настройки слухового аппарата можно выполнять с Android (вскоре и с Linux), включая установку результата аудиограммы. Приложение не предоставляет возможности пройти проверку слуха, поскольку для этого требуется гораздо большая точность. Гораздо лучше использовать уже имеющийся результат аудиограммы.
Для получения дополнительной информации об используемых протоколах обратитесь к плагину-диссектору Wireshark от Nojus (@pabloaul): pabloaul/apple-wireshark
Диссектор не использовался в LibrePods на протяжении большей части реализации; я сам провёл реверс-инжиниринг протокола до того, как этот диссектор был создан. Но многие (будущие) функции, включая двустороннее высококачественное аудио и пространственное аудио, были бы невозможны без их усилий по реверс-инжинирингу!
Эти части приложения были полностью созданы ИИ:
Всё остальное — фоновый сервис, классы Bluetooth-менеджера (AACP и ATT), весь пользовательский интерфейс, даже самые мелкие компоненты — было написано вручную.
Некоторые части компонентов пользовательского интерфейса были заимствованы из демо-приложения Kyant0, которое распространяется по лицензии Apache License 2.0.
Файлы aacp.rs и att.rs были переведены с Kotlin на Rust с помощью ИИ. Некоторые части файла media_controller.rs, в основном интеграция с Pulse, также были созданы ИИ.
Огромное спасибо всем, кто поддерживает проект!
LibrePods - AirPods, освобождённые от экосистемы Apple Copyright (C) 2025 участники LibrePods
Эта программа является свободным программным обеспечением: вы можете распространять и/или изменять её в соответствии с условиями Стандартной общественной лицензии GNU, опубликованной Фондом свободного программного обеспечения, либо версии 3 этой лицензии, либо (по вашему выбору) любой более поздней версии.
Эта программа распространяется в надежде, что она будет полезна, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий ТОВАРНОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ. Подробнее см. в Стандартной общественной лицензии GNU.
Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этой программой. Если вы её не получили, см. https://www.gnu.org/licenses/.
GPL не предоставляет никаких прав на использование имени, логотипа или фирменного стиля LibrePods. Имя и логотип LibrePods не могут использоваться для программного обеспечения, веб-сайтов, доменов, продуктов, услуг или других проектов таким образом, который предполагает принадлежность к официальному проекту LibrePods, одобрение с его стороны или связь с ним, без предварительного разрешения.
Если вы заметили любое неправомерное использование имени или логотипа LibrePods, пожалуйста, сообщите об этом на [email protected].
Шрифт SF Pro, используемый в приложении для Android, является собственностью Apple Inc.. Он будет удалён в будущих версиях приложения и вскоре заменён открытой альтернативой.
AirPods, AirPods Pro, AirPods Max и логотип AirPods являются товарными знаками Apple Inc. Проект LibrePods никак не связан с Apple Inc. и не одобрен ею.
| Функция | Linux | Android |
|---|
| Смена режима прослушивания | ✅ | ✅ |
| Определение нахождения в ушах | ✅ | ✅ |
| Статус батареи | ✅ | ✅ |
Переименование AirPods Примечание для AndroidНа Android после переименования AirPods их необходимо сопрячь заново, так как Android может не использовать новое имя. | ✅ | ✅ |
| Подавление громких звуков | 🔴 | ⚪ |
| Жесты головой | ⛔ | ✅ |
| Осведомлённость о разговоре | ✅ | ✅ |
| Автоматическое подключение к AirPods | ✅ | ✅ |
| Слуховой аппарат | 🔴 | ⚪ |
| Настройка режима прозрачности | 🔴 | ⚪ |
| Подключение к нескольким устройствам (Bluetooth Multipoint; только 2 устройства) | ⚪ | ⚪ |
Другие настройки специальных возможностей (нажмите, чтобы развернуть)
| 🔴 | ✅ |
Другие общие настройки
| 🔴 | ✅ |
| Пространственное аудио с отслеживанием головы | ❓ | ❓ |
| Мониторинг сердечного ритма | ⛔ | 🔴 |
| Find My | ❓ | ❓ |
| Высококачественное двустороннее аудио | 🔴 | 🔴 |
| ✅ |
| Реализовано и работает хорошо |
| ⚪ | Требуется подмена VendorID; используйте на свой страх и риск |
| 🔴 | Ещё не реализовано; запланировано |
| ⛔ | Не будет реализовано |
| ❓ | Неизвестно |
|
@davdroman |
@tedsalmon |
@wiless |
|
@SmartMsg |
@lunaroyster |
@ressiwage |
|
@kkjdroid |
@CitrusJoules |
@DanielReyesDev |
|
@sumitduster |
@GrifTheDev |