
Appleのエコシステムから解放されたAirPods。
> [!WARNING] > librepods.org は LibrePods プロジェクトの公式ウェブサイトではありません。著作権を主張し、フッターに LibrePods のロゴを使用することで、プロジェクトの公式ウェブサイトであると不正確に主張しています。同時に、彼らはこのプロジェクトが LibrePods プロジェクトやその開発者とは無関係であると述べています。 > > その他の同様のウェブサイトを見つけた場合は、[[email protected]](mailto:[email protected]) までご報告ください。 <picture> <source media="(prefers-color-scheme: dark)" srcset="./imgs/banner-dark.png" /> <source media="(prefers-color-scheme: light)" srcset="./imgs/banner.png" /> <img alt="LibrePods" src="https://assets.kitploit.com/production/public/readmes/7308/dd79739201ddda9382b9f24871abdd8b39e75645fe7c341831c76ed98b61f805.png" /> </picture> <div align="center" style="margin: 20px 0px;"> <a href="https://github.com/kavishdevar/librepods/releases/latest"> <img src="https://img.shields.io/github/downloads/kavishdevar/librepods/total?label=GitHub%20Downloads" /> </a> <a href="https://github.com/kavishdevar/librepods/actions/workflows/ci-android.yml"> <img src="https://github.com/kavishdevar/librepods/actions/workflows/ci-android.yml/badge.svg" /> </a> <a href="https://github.com/kavishdevar/librepods/actions/workflows/ci-linux-rust.yml"> <img src="https://github.com/kavishdevar/librepods/actions/workflows/ci-linux-rust.yml/badge.svg" /> </a> <a href="https://github.com/kavishdevar/librepods/issues"> <img src="https://img.shields.io/github/issues/kavishdevar/librepods" /> </a> <a href="https://discord.gg/HhG4ycVum4"> <img src="https://img.shields.io/discord/1441416992027574375?logoColor=white&color=5865F2&label=Discord" /> </a> </div> # LibrePods とは? LibrePods を使用すると、Apple デバイス専用の AirPods 機能を利用できるようになります。AirPods と Apple デバイス間でデータを交換するために使用される独自プロトコルを実装しており、ノイズコントロールモードの変更、高速な耳検出、正確なバッテリー状態、ヘッドジェスチャー、会話認識などの機能を非 Apple プラットフォームで利用できるようにします。 # 機能の利用可否 | 機能 | Linux | Android | | ----------------------------------------------------------- | ----- | ------- | | リスニングモードの変更 | ✅ | ✅ | | 耳検出 | ✅ | ✅ | | バッテリー残量 | ✅ | ✅ | | AirPodsの名前変更 <details><summary>Androidに関する注意</summary>Androidでは、名前変更後にAirPodsを再ペアリングする必要があります。Androidが最新の名前を使用しない可能性があるためです。</details> | ✅ | ✅ | | 大音量の低減 | 🔴 | ⚪ | | ヘッドジェスチャー | ⛔ | ✅ | | 会話認識 | ✅ | ✅ | | AirPodsへの自動接続 | ✅ | ✅ | | 補聴器 | 🔴 | ⚪ | | 透過モードのカスタマイズ | 🔴 | ⚪ | | マルチデバイス接続(Bluetoothマルチポイント、2台のデバイスのみ) | ⚪ | ⚪ | | <details><summary>その他のアクセシビリティ設定(クリックで展開)</summary><ul><li>押す速度</li><li>長押しの継続時間</li><li>片方のAirPodでのノイズキャンセリング</li><li>スワイプでの音量調整</li><li>音量スワイプの速度</li></ul></details> | 🔴 | ✅ | | <details><summary>その他の一般設定</summary><ul><li>長押しでリスニングモードを切り替え/デジタルアシスタントを起動(デジタルアシスタントの起動には新しいファームウェアが必要)</li><li>通話コントロールの設定</li><li>パーソナライズされた音量</li><li>大音量の低減(<a href="#vendorid-spoofing">VendorIDの偽装</a>が必要)</li><li>マイクの側</li><li>眠りに落ちたときにメディアを一時停止(新しいファームウェアが必要)</li><li><code>Off listening mode</code>を有効にして<code>Off</code>に切り替え</li></ul></details> | 🔴 | ✅ | | [頭部追跡空間オーディオ](#spatial-audio) | ❓ | ❓ | | [心拍数モニタリング](#heart-rate-monitoring) | 🔴 | 🟡 | | [Find My](#find-my) | ❓ | ❓ | | [高品質な双方向オーディオ](#high-quality-two-way-audio) | 🟡 | 🟡 | | 記号 | 意味 | | ------ | ------------------------------------------------------------------- | | ✅ | 実装済みで正常に動作 | | ⚪ | [VendorIDの偽装](#vendorid-spoofing)が必要。自己責任で使用してください | | 🟡 | 実験的/作業中 | | 🔴 | 未実装。計画中 | | ⛔ | 実装されない | | ❓ | 不明 | ## Find My Find Myに関連する以下の機能は計画されていますが、さらなるリバースエンジニアリングが必要であり、Androidではroot権限が必要になる可能性があります: - AirPodsをFind Myネットワークに追加する - 充電ケースから音を鳴らして見つける - 置き忘れたときに通知する - ケースの充電サウンドを切り替える ## 空間オーディオ 現在、このアプリはOSがHRTFを実行するための頭部追跡情報をAndroidに提供していません。これは完全には調査されておらず、root権限が必要になる可能性があります。 ステレオサウンドの空間化はこのプロジェクトの範囲外であり、提供されることはありません。多くのOEMが独自の実装を持っています。 ## 心拍数モニタリング ### Android `android/rewrite`ブランチで利用可能です。[ビルド](https://github.com/librepods-org/librepods/actions/workflows/ci-android.yml?query=branch%3Aandroid%2Frewrite) ### Linux まだ利用できません(そもそもコンピュータで役立つものとは思えません。提案があれば、ディスカッションを作成してください。) ## 高品質な双方向オーディオ iOS/iPadOSでは、AirPodsがマイクからハイレゾ(AAC-ELDモノラル64kHz?)オーディオストリームをAACP経由で送信している間も、A2DPを使い続けることができます。 ### Android 再生品質を低下させるHeadset/Handsfreeプロファイルに切り替えることなく、アプリ内でAirPodsのマイクを使って音声を録音できます。ただし、これを他のアプリやテレフォニーで利用可能にするには、可能だとしてもrootが必要になるかもしれません。 レコーダーは開発中です。`android/rewrite`ブランチで利用可能です。[ビルド](https://github.com/librepods-org/librepods/actions/workflows/ci-android.yml?query=branch%3Aandroid%2Frewrite) ### Linux [PR #655](https://github.com/librepods-org/librepods/pull/655)をご覧ください。 # インストール - [**Android**](https://github.com/librepods-org/librepods/blob/main/android/README.md) - [**Linux**](https://github.com/librepods-org/librepods/blob/main/linux/README.md) # VendorIDのなりすまし わかったことですが、DIDプロファイルのVendorIDをAppleのものに変更すると、いくつかの特別な機能にアクセスできるようになります! Linuxでは、`/etc/bluetooth/main.conf`のDeviceIDを編集することでこれを行えます。設定ファイルに`DeviceID = bluetooth:004C:0000:0000`という行を追加してください。Androidでは、アプリの設定で`act as Apple device`設定を有効にできます(Xposedが利用可能でLibrePodsモジュールが有効な場合にのみ表示されます)。 ## マルチデバイス接続 最大2台のデバイスを同時にAirPodsに接続でき、オーディオとコントロールの両方が可能です。シームレスな接続切り替えが行われます。AndroidがAppleデバイスであるかのようにAirPodsを引き継ぐと、Appleデバイス上に同じ通知(「iPhoneに移動」)が表示されます。また、他のデバイスが引き継いだ際にはAndroidにもポップアップが表示されます。 ## アクセシビリティ設定と補聴器 透過モードのカスタマイズ(増幅、バランス、トーン、会話ブースト、環境ノイズ低減)や大音量の低減といったアクセシビリティ設定を構成できます。 補聴器のカスタマイズはすべてAndroidから行えます(Linuxも近日対応予定)。オーディオグラムの結果の設定も含まれます。このアプリは聴力検査を行う方法を提供していません。それははるかに高い精度を必要とするためです。既に利用可能なオーディオグラムの結果を使用する方がはるかに優れています。 # プロトコルとリバースエンジニアリング 使用されているプロトコルの詳細については、Nojus([@pabloaul](https://github.com/pabloaul))によるWiresharkディセクタプラグインを参照してください:[pabloaul/apple-wireshark](https://github.com/pabloaul/apple-wireshark) このディセクタは、LibrePodsの実装の大部分では使用されていませんでした。このディセクタが作られる前に、私は自分でプロトコルをリバースエンジニアリングしていました。しかし、双方向の高品質オーディオや空間オーディオを含む多くの(将来の)機能は、彼らのリバースエンジニアリングの取り組みなしには実現できなかったでしょう! # AIの使用 ## Androidアプリ アプリの以下の部分は完全にAIによって生成されました: - Head Gestures - ロジックとUIを含むそのすべて - r2とxposedモジュールを使ったオフセット設定(両バージョン) - TroubleshooterとLogCollector それ以外のすべて - バックグラウンドサービス、Bluetoothマネージャクラス(AACPとATT)、UI全体、さらには最小のコンポーネントまでも - は手動で書かれました。 UIコンポーネントの一部は、[Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0)の下でライセンスされている[Kyant0のデモアプリ](https://github.com/Kyant0/AndroidLiquidGlass/tree/master/catalog)から借用しました。 ## Linux(リライト) `aacp.rs`と`att.rs`ファイルは、AIによってKotlinからRustに翻訳されました。`media_controller.rs`ファイルの一部、主にpulse統合もAIによって生成されました。 # サポーター プロジェクトを支援してくださるすべての方々に心から感謝します! <table> <tr> <td align="center"> <a href="https://github.com/davdroman"> <img src="https://assets.kitploit.com/production/public/readmes/7308/776c36c82a7801798fc6ff1a91611d8272c3f21c41f10a808ae6ab459872104a.jpg" width="48" height="48"alt="davdroman"/><br /> @davdroman </a> </td> <td align="center"> <a href="https://github.com/tedsalmon"> <img src="https://assets.kitploit.com/production/public/readmes/7308/29cbb61b4c1f9a9992f644c2592fb4c3a626d580397fb5ff01133039fa9a7441.jpg" width="48" height="48"alt="tedsalmon"/><br /> @tedsalmon </a> </td> <td align="center"> <a href="https://github.com/wiless"> <img src="https://assets.kitploit.com/production/public/readmes/7308/f10d3773c4c1f7ac24dafc11366fd93ae98e40bf3f2252ed17023f6909c280de.jpg" width="48" height="48"alt="wiless"/><br /> @wiless </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/SmartMsg"> <img src="https://assets.kitploit.com/production/public/readmes/7308/8d8b4afb772a2d505ffbd6d895c279126a6140bd8c3c0431e0fecb1d8cc78d4a.jpg" width="48" height="48"alt="SmartMsg"/><br /> @SmartMsg </a> </td> <td align="center"> <a href="https://github.com/lunaroyster"> <img src="https://assets.kitploit.com/production/public/readmes/7308/8ab33c6770165d3fbd14e19766731ada3f0d9cb29f2c7782d142b848e92c1cbd.jpg" width="48" height="48"alt="lunaroyster"/><br /> @lunaroyster </a> </td> <td align="center"> <a href="https://github.com/ressiwage"> <img src="https://assets.kitploit.com/production/public/readmes/7308/06edb9c51fd205aea82e9415bada62fb35394b66a7b65709ea99dc771a308a69.jpg" width="48" height="48"alt="ressiwage"/><br /> @ressiwage </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/kkjdroid"> <img src="https://assets.kitploit.com/production/public/readmes/7308/3156f982f536e6bd7c59d465c9b31d02ab86684b688024396caaba99b184f1ba.jpg" width="48" height="48"alt="kkjdroid"/><br /> @kkjdroid </a> </td> <td align="center"> <a href="https://github.com/CitrusJoules"> <img src="https://assets.kitploit.com/production/public/readmes/7308/251a526465bd512cb24e299e6d5f901dc509bf01a3ceb4308b13cdfcf936d1ae.png" width="48" height="48"alt="CitrusJoules"/><br /> @CitrusJoules </a> </td> <td align="center"> <a href="https://github.com/DanielReyesDev"> <img src="https://assets.kitploit.com/production/public/readmes/7308/d184d9fac60f0c7c719d061c7f13da5ae765fcb06a516db3b6368f5a143b1aa3.jpg" width="48" height="48"alt="DanielReyesDev"/><br /> @DanielReyesDev </a> </td> </tr> <tr> <td align="center"> <a href="https://github.com/sumitduster"> <img src="https://assets.kitploit.com/production/public/readmes/7308/dc57745f78d8548393402e301691893b01dc0067a134f7ecf20629d14a81c22b.jpg" width="48" height="48"alt="sumitduster"/><br /> @sumitduster </a> </td> <td align="center"> <a href="https://github.com/GrifTheDev"> <img src="https://assets.kitploit.com/production/public/readmes/7308/3d4decbb6b54d36f8354af483fb767741550b61e163054cddff36d196ea77518.png" width="48" height="48"alt="GrifTheDev"/><br /> @GrifTheDev </a> </td> </tr> </table> # 特別な感謝 - プロトコルに関する最初のドキュメントを作成してくれた @tyalie に感謝します!([tyalie/AAP-Protocol-Definition](https://github.com/tyalie/AAP-Protocol-Defintion)) - 補聴器機能の実装を手伝ってくれた @rithvikvibhu と lagrangepoint の皆さんに感謝します ([gist](https://gist.github.com/rithvikvibhu/45e24bbe5ade30125f152383daf07016)) - 最初の root パッチの作成を手伝ってくれた @devnoname120 に感謝します - Linux アプリの最初のバージョンを作成してくれた @timgromeyer に感謝します - [High Seas](https://highseas.hackclub.com) と [Low Skies](https://low-skies.hackclub.com) を開催してくれた @hackclub に感謝します! - もちろん、テストやフィードバックの共有、あるいは単に関心を示してくださるなど、あらゆる形でこのプロジェクトに貢献してくださったすべての皆さんに感謝します! # 他のプラットフォーム向けの代替アプリ: - CAPod - Android 向けの AirPods コンパニオンアプリ。([play store](https://play.google.com/store/apps/details?id=eu.darken.capod) | [ソースコード](https://github.com/d4rken-org/capod))。Android バージョン 16 QPR3 以下を使用していて、root 化されていない場合はこちらを使用してください。 - MagicPods for Steam Deck ([ウェブサイト](https://magicpods.app/steamdeck/)) - MagicPods - 「Windows 向け LibrePods」をお探しの場合 ([ms store](https://apps.microsoft.com/store/detail/9P6SKKFKSHKM) [インストーラー](https://magicpods.app/installer/MagicPods.appinstaller) | [ウェブサイト](https://magicpods.app/)) # スター履歴 <a href="https://www.star-history.com/?repos=librepods-org%2Flibrepods&type=date&legend=top-left"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=librepods-org/librepods&type=date&theme=dark&legend=top-left&sealed_token=CS9QF2Wcx-_EN6M7lBhwvTa2WBd5eB8FbQa5FWt3SV14v1OcQdy2aCGsXxHoytVaoylP_pTxj1h2U-odoXDV_EwTqMxM-MQwG_WpvV_1g_yH-Jh3ux2BuWCmS98LxLqfox2ibLOlFDHu_-geTLFsTmqTc1SjX6-NYxVHXF5DaqnxFOAyjLPL5_WtXVew" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=librepods-org/librepods&type=date&legend=top-left&sealed_token=CS9QF2Wcx-_EN6M7lBhwvTa2WBd5eB8FbQa5FWt3SV14v1OcQdy2aCGsXxHoytVaoylP_pTxj1h2U-odoXDV_EwTqMxM-MQwG_WpvV_1g_yH-Jh3ux2BuWCmS98LxLqfox2ibLOlFDHu_-geTLFsTmqTc1SjX6-NYxVHXF5DaqnxFOAyjLPL5_WtXVew" /> <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=librepods-org/librepods&type=date&legend=top-left&sealed_token=CS9QF2Wcx-_EN6M7lBhwvTa2WBd5eB8FbQa5FWt3SV14v1OcQdy2aCGsXxHoytVaoylP_pTxj1h2U-odoXDV_EwTqMxM-MQwG_WpvV_1g_yH-Jh3ux2BuWCmS98LxLqfox2ibLOlFDHu_-geTLFsTmqTc1SjX6-NYxVHXF5DaqnxFOAyjLPL5_WtXVew" /> </picture> </a> # ライセンス LibrePods - Appleのエコシステムから解放されたAirPods Copyright (C) 2025 LibrePods contributors このプログラムはフリーソフトウェアです。Free Software Foundation が公開する GNU General Public License の条項(ライセンスバージョン3、またはそれ以降の任意のバージョン)に従って、再配布および/または改変することができます。 このプログラムは有用であることを願って配布されていますが、いかなる保証もありません。商品性や特定目的への適合性についての暗黙の保証さえもありません。詳細は GNU General Public License を参照してください。 このプログラムと共に GNU General Public License のコピーを受け取っているはずです。受け取っていない場合は <https://www.gnu.org/licenses/> を参照してください。 # 商標に関する注意 GPL は、LibrePods の名称、ロゴ、ブランドを使用するいかなる権利も付与しません。LibrePods の名称およびロゴは、事前の許可なく、公式の LibrePods プロジェクトとの提携、承認、または関連を示唆する形で、ソフトウェア、ウェブサイト、ドメイン、製品、サービス、その他のプロジェクトに使用することはできません。 LibrePods の名称またはロゴの不正使用を見つけた場合は、[[email protected]](mailto:[email protected]) までご報告ください。 Android アプリで使用されている SF Pro フォントは Apple Inc. の財産です。これは将来のバージョンのアプリで削除され、近いうちにオープンな代替フォントに置き換えられる予定です。 AirPods、AirPods Pro、AirPods Max、および AirPods ロゴは Apple Inc. の商標です。LibrePods プロジェクトは、いかなる形でも Apple Inc. と提携しておらず、また承認も受けていません。