
Appleのエコシステムから解放されたAirPods。
[!WARNING] librepods.org は LibrePods プロジェクトの公式ウェブサイトではありません。著作権を主張し、フッターに LibrePods のロゴを使用することで、プロジェクトの公式ウェブサイトであると不正確に主張しています。同時に、彼らはこのプロジェクトが LibrePods プロジェクトやその開発者とは無関係であると述べています。
その他の同様のウェブサイトを見つけた場合は、[email protected] までご報告ください。
LibrePods を使用すると、Apple デバイス専用の AirPods 機能を利用できるようになります。AirPods と Apple デバイス間でデータを交換するために使用される独自プロトコルを実装しており、ノイズコントロールモードの変更、高速な耳検出、正確なバッテリー状態、ヘッドジェスチャー、会話認識などの機能を非 Apple プラットフォームで利用できるようにします。
| 機能 | Linux | Android |
|---|---|---|
| リスニングモードの変更 | ✅ | ✅ |
| 耳検出 | ✅ | ✅ |
| バッテリー残量 | ✅ | ✅ |
AirPodsの名前変更 Androidに関する注意Androidでは、名前変更後にAirPodsを再ペアリングする必要があります。Androidが最新の名前を使用しない可能性があるためです。 | ✅ | ✅ |
| 大音量の低減 | 🔴 | ⚪ |
| ヘッドジェスチャー | ⛔ | ✅ |
| 会話認識 | ✅ | ✅ |
| AirPodsへの自動接続 | ✅ | ✅ |
| 補聴器 | 🔴 | ⚪ |
| 透過モードのカスタマイズ | 🔴 | ⚪ |
| マルチデバイス接続(Bluetoothマルチポイント、2台のデバイスのみ) | ⚪ | ⚪ |
その他のアクセシビリティ設定(クリックで展開)
| 🔴 | ✅ |
その他の一般設定
| 🔴 | ✅ |
| 頭部追跡空間オーディオ | ❓ | ❓ |
| 心拍数モニタリング | 🔴 | 🟡 |
| Find My | ❓ | ❓ |
| 高品質な双方向オーディオ | 🟡 | 🟡 |
| 記号 | 意味 |
|---|---|
| ✅ | 実装済みで正常に動作 |
| ⚪ | VendorIDの偽装が必要。自己責任で使用してください |
| 🟡 | 実験的/作業中 |
| 🔴 | 未実装。計画中 |
| ⛔ | 実装されない |
| ❓ | 不明 |
Find Myに関連する以下の機能は計画されていますが、さらなるリバースエンジニアリングが必要であり、Androidではroot権限が必要になる可能性があります:
現在、このアプリはOSがHRTFを実行するための頭部追跡情報をAndroidに提供していません。これは完全には調査されておらず、root権限が必要になる可能性があります。
ステレオサウンドの空間化はこのプロジェクトの範囲外であり、提供されることはありません。多くのOEMが独自の実装を持っています。
android/rewriteブランチで利用可能です。ビルド
まだ利用できません(そもそもコンピュータで役立つものとは思えません。提案があれば、ディスカッションを作成してください。)
iOS/iPadOSでは、AirPodsがマイクからハイレゾ(AAC-ELDモノラル64kHz?)オーディオストリームをAACP経由で送信している間も、A2DPを使い続けることができます。
再生品質を低下させるHeadset/Handsfreeプロファイルに切り替えることなく、アプリ内でAirPodsのマイクを使って音声を録音できます。ただし、これを他のアプリやテレフォニーで利用可能にするには、可能だとしてもrootが必要になるかもしれません。
レコーダーは開発中です。android/rewriteブランチで利用可能です。ビルド
PR #655をご覧ください。
わかったことですが、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)によるWiresharkディセクタプラグインを参照してください:pabloaul/apple-wireshark
このディセクタは、LibrePodsの実装の大部分では使用されていませんでした。このディセクタが作られる前に、私は自分でプロトコルをリバースエンジニアリングしていました。しかし、双方向の高品質オーディオや空間オーディオを含む多くの(将来の)機能は、彼らのリバースエンジニアリングの取り組みなしには実現できなかったでしょう!
アプリの以下の部分は完全にAIによって生成されました:
それ以外のすべて - バックグラウンドサービス、Bluetoothマネージャクラス(AACPとATT)、UI全体、さらには最小のコンポーネントまでも - は手動で書かれました。
UIコンポーネントの一部は、Apache License 2.0の下でライセンスされているKyant0のデモアプリから借用しました。
aacp.rsとatt.rsファイルは、AIによってKotlinからRustに翻訳されました。media_controller.rsファイルの一部、主にpulse統合もAIによって生成されました。
プロジェクトを支援してくださるすべての方々に心から感謝します!