
Appleのエコシステムから解放されたAirPods。
[!WARNING] librepods.org は LibrePods プロジェクトの公式ウェブサイトではありません。このサイトは著作権を主張し、フッターに LibrePods のロゴを使用することで、プロジェクトの公式サイトであると誤って主張しています。同時に、このプロジェクトは LibrePods プロジェクトやその開発者とは無関係であるとも述べています。
このような他のウェブサイトがあれば、[email protected] までご報告ください。
LibrePods を使用すると、Apple デバイス専用の AirPods 機能を利用できるようになります。AirPods と Apple デバイス間のデータ交換に使用される独自プロトコルを実装しており、ノイズ制御モードの変更、高速な耳検出、正確なバッテリー状態、ヘッドジェスチャー、会話認識など、非 Apple プラットフォームでもこれらの機能を有効にします。
| 記号 | 意味 |
|---|---|
| ✅ | 実装済みで正常に動作 |
| ⚪ | VendorID スプーフィングが必要;自己責任で使用 |
| 🔴 | 未実装;計画中 |
| ⛔ | 実装しない予定 |
| ❓ | 不明 |
Find My に関連する以下の機能は計画されていますが、さらなるリバースエンジニアリングが必要であり、Android では root が必要になる可能性があります。
現在、アプリは OS が HRTF を実行するためのヘッドトラッキング情報を Android に提供していません。これは完全には調査されておらず、root が必要になる可能性があります。
ステレオ音声の空間化はこのプロジェクトの範囲外であり、利用可能になることはありません。多くの OEM がこれに対する独自の実装を持っています。
これについては現在取り組んでおり、詳細は LibrePods Discord サーバーの #reverse-engineering チャンネルをご確認ください。もし実装された場合、Android では root が必要になる可能性が高いです。
iOS/iPadOS では、AirPods がマイクからのオーディオストリームを AACP 経由で送信している間も、A2DP を引き続き使用できます。
これは Android のオーディオとのより深い統合が必要なため、root が必要になる可能性が高いです。
DID プロファイルの VendorID を Apple のものに変更すると、いくつかの特別な機能にアクセスできるようになることがわかりました!
Linux では、/etc/bluetooth/main.conf の DeviceID を編集することでこれを行えます。設定ファイルに DeviceID = bluetooth:004C:0000:0000 という行を追加してください。Android では、アプリの設定で「Apple デバイスとして動作」設定を有効にできます(Xposed が利用可能で LibrePods モジュールが有効な場合のみ表示されます)。
最大2台のデバイスを AirPods に同時に接続でき、オーディオとコントロールの両方に使用できます。シームレスな接続切り替え。Android が AirPods を Apple デバイスであるかのように引き継ぐと、Apple デバイスにも同じ通知("Move to iPhone")が表示されます。他のデバイスが引き継いだ場合、Android にもポップアップが表示されます。
透明モードのカスタマイズ(増幅、バランス、トーン、会話ブースト、周囲ノイズ低減)や大音量低減などのアクセシビリティ設定を構成できます。
聴力図の結果の設定を含め、すべての補聴器のカスタマイズを Android から行うことができます(Linux は近日対応予定)。アプリは聴力検査を実施する方法を提供しません。はるかに高い精度が必要だからです。既存の聴力図の結果を使用する方がはるかに優れています。
使用されているプロトコルの詳細については、Nojus (@pabloaul) による Wireshark ディセクタプラグインを参照してください:pabloaul/apple-wireshark
ディセクタは LibrePods の実装のほとんどで使用されていませんでした。私はこのディセクタが作られる前に自分でプロトコルをリバースエンジニアリングしていました。しかし、双方向高品質オーディオや空間オーディオを含む多くの(将来の)機能は、彼らのリバースエンジニアリングの努力なしには実現不可能でした!
アプリの以下の部分は完全に AI によって生成されました:
残りのすべて(バックグラウンドサービス、Bluetooth マネージャークラス(AACP と ATT)、UI 全体、最小のコンポーネントに至るまで)は手動で記述されました。
UI コンポーネントの一部は Kyant0 のデモアプリ から借用しました。これは Apache License 2.0 の下でライセンスされています。
aacp.rs と att.rs ファイルは AI を使用して Kotlin から Rust に翻訳されました。media_controller.rs ファイルの一部、主に pulse 統合部分も AI によって生成されました。
プロジェクトを支援してくださるすべての方に心から感謝します!
LibrePods - Apple のエコシステムから解放された AirPods Copyright (C) 2025 LibrePods コントリビューター
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/.
GPL は LibrePods の名称、ロゴ、ブランディングを使用する権利を付与しません。LibrePods の名称およびロゴは、事前の許可なく、公式の LibrePods プロジェクトとの提携、推奨、または関連を示唆する方法で、ソフトウェア、ウェブサイト、ドメイン、製品、サービス、その他のプロジェクトに使用することはできません。
LibrePods の名称またはロゴの不正使用を発見した場合は、[email protected] までご報告ください。
Android アプリで使用されている SF Pro フォントは Apple Inc. の所有物です。これはアプリの将来のバージョンで削除され、近いうちにオープンな代替フォントに置き換えられます。
AirPods、AirPods Pro、AirPods Max、および AirPods ロゴは Apple Inc. の商標です。LibrePods プロジェクトは Apple Inc. とは一切提携しておらず、その承認も受けていません。
| 機能 | Linux | Android |
|---|
| リスニングモードの変更 | ✅ | ✅ |
| 耳の検出 | ✅ | ✅ |
| バッテリー状態 | ✅ | ✅ |
AirPods の名前変更 Android に関する注意Android では、名前変更後に AirPods を再ペアリングする必要があります。Android が最新の名前を使用しない可能性があるためです。 | ✅ | ✅ |
| 大音量低減 | 🔴 | ⚪ |
| ヘッドジェスチャー | ⛔ | ✅ |
| 会話認識 | ✅ | ✅ |
| AirPods に自動接続 | ✅ | ✅ |
| 補聴器 | 🔴 | ⚪ |
| 透明モードのカスタマイズ | 🔴 | ⚪ |
| マルチデバイス接続(Bluetooth マルチポイント、2台のみ) | ⚪ | ⚪ |
その他のアクセシビリティ設定(クリックして展開)
| 🔴 | ✅ |
その他の一般設定
| 🔴 | ✅ |
| ヘッドトラッキング対応空間オーディオ | ❓ | ❓ |
| 心拍数モニタリング | ⛔ | 🔴 |
| Find My | ❓ | ❓ |
| 高品質双方向オーディオ | 🔴 | 🔴 |
|
@davdroman |
@tedsalmon |
@wiless |
|
@SmartMsg |
@lunaroyster |
@ressiwage |
|
@kkjdroid |
@CitrusJoules |
@DanielReyesDev |
|
@sumitduster |
@GrifTheDev |