
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 がマイクからのオーディオストリームを 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 では、アプリの設定で Apple デバイスとして動作 設定を有効にできます(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 コンポーネントの一部は Kyant0 のデモアプリ から借用されました。これは Apache License 2.0 の下でライセンスされています。
aacp.rs と att.rs ファイルは AI によって Kotlin から Rust に翻訳されました。media_controller.rs ファイルの一部、主に pulse 統合も AI によって生成されました。
プロジェクトを支援してくださっているすべての方々に心から感謝します!