
AirPods liberati dall'ecosistema Apple.
> [!WARNING] > librepods.org non è un sito web ufficiale del progetto LibrePods. Afferma in modo impreciso di essere il sito web ufficiale del progetto rivendicando diritti d'autore e utilizzando il logo LibrePods nel piè di pagina. Allo stesso tempo, dichiarano che il progetto non è affiliato al progetto LibrePods o ai suoi sviluppatori. > > Segnala qualsiasi altro sito web di questo tipo a [[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> # Cos'è LibrePods? LibrePods ti consente di utilizzare le funzionalità degli AirPods esclusive dei dispositivi Apple. Implementa il protocollo proprietario utilizzato per scambiare dati tra AirPods e dispositivi Apple, abilitando funzionalità come la modifica delle modalità di controllo del rumore, il rilevamento rapido dell'orecchio, lo stato accurato della batteria, i gesti della testa, la consapevolezza conversazionale e altro ancora su piattaforme non Apple. # Disponibilità delle funzionalità | Funzionalità | Linux | Android | | ----------------------------------------------------------- | ----- | ------- | | Modifica della modalità di ascolto | ✅ | ✅ | | Rilevamento dell'orecchio | ✅ | ✅ | | Stato della batteria | ✅ | ✅ | | Ridenominazione degli AirPods <details><summary>Nota per Android</summary>Su Android, è necessario riassociare gli AirPods dopo averli rinominati, poiché Android potrebbe non utilizzare il nome più recente.</details> | ✅ | ✅ | | Riduzione dei suoni forti | 🔴 | ⚪ | | Gesti della testa | ⛔ | ✅ | | Consapevolezza conversazionale | ✅ | ✅ | | Connessione automatica agli AirPods | ✅ | ✅ | | Apparecchio acustico | 🔴 | ⚪ | | Personalizzazione della modalità Trasparenza | 🔴 | ⚪ | | Connettività multi-dispositivo (Bluetooth Multipoint; solo 2 dispositivi) | ⚪ | ⚪ | | <details><summary>Altre configurazioni di accessibilità (clicca per espandere)</summary><ul><li>Velocità di pressione</li><li>Durata di pressione e mantenimento</li><li>Annullamento del rumore con un singolo AirPod</li><li>Controllo del volume tramite scorrimento</li><li>Velocità di scorrimento del volume</li></ul></details> | 🔴 | ✅ | | <details><summary>Altre configurazioni generali</summary><ul><li>Pressione e mantenimento per alternare le modalità di ascolto/richiamare l'assistente digitale (richiamare l'assistente digitale richiede un firmware recente)</li><li>Configurazione dei controlli delle chiamate</li><li>Volume personalizzato</li><li>Riduzione dei suoni forti (richiede lo <a href="#vendorid-spoofing">spoofing del VendorID</a>)</li><li>Lato del microfono</li><li>Metti in pausa i contenuti multimediali quando ti addormenti (richiede un firmware recente)</li><li>Abilita <code>Off listening mode</code> per passare a <code>Off</code></li></ul></details> | 🔴 | ✅ | | [Audio spaziale con tracciamento della testa](#spatial-audio) | ❓ | ❓ | | [Monitoraggio della frequenza cardiaca](#heart-rate-monitoring) | 🔴 | 🟡 | | [Dov'è](#find-my) | ❓ | ❓ | | [Audio bidirezionale di alta qualità](#high-quality-two-way-audio) | 🟡 | 🟡 | | Simbolo | Significato | | ------ | ------------------------------------------------------------------- | | ✅ | Implementato e funzionante | | ⚪ | Richiede lo [spoofing del VendorID](#vendorid-spoofing); usare a proprio rischio | | 🟡 | Sperimentale/In sviluppo | | 🔴 | Non ancora implementato; pianificato | | ⛔ | Non verrà implementato | | ❓ | Sconosciuto | ## Dov'è Le seguenti funzionalità relative a Dov'è sono pianificate, ma richiedono ulteriori attività di reverse engineering e potrebbero richiedere i permessi di root su Android: - Aggiungere gli AirPods alla rete Dov'è - Riprodurre un suono attraverso la custodia di ricarica per trovarla - Notificare quando vengono lasciati indietro - Attivare/disattivare i suoni di ricarica della custodia ## Audio spaziale Attualmente l'app non fornisce informazioni sul tracciamento della testa ad Android affinché il sistema operativo possa eseguire l'HRTF. Questo aspetto non è stato esplorato completamente e potrebbe richiedere i permessi di root. La spazializzazione dell'audio stereo è al di fuori dell'ambito di questo progetto e non sarà mai disponibile. Molti produttori OEM dispongono di una propria implementazione per questo. ## Monitoraggio della frequenza cardiaca ### Android Disponibile nel branch `android/rewrite`. [build](https://github.com/librepods-org/librepods/actions/workflows/ci-android.yml?query=branch%3Aandroid%2Frewrite) ### Linux Non ancora disponibile (non sembra comunque qualcosa di utile su un computer. Se hai suggerimenti, crea una discussione.) ## Audio bidirezionale di alta qualità Su iOS/iPadOS, puoi continuare a usare A2DP mentre gli AirPods inviano il flusso audio ad alta risoluzione (AAC-ELD mono 64kHz?) dal loro microfono tramite AACP. ### Android Registra l'audio all'interno dell'app usando il microfono degli AirPods senza passare al profilo Headset/Handsfree che degrada la qualità della riproduzione. Tuttavia, rendere questo disponibile ad altre app/telefonia potrebbe richiedere i permessi root, se mai fosse possibile. Il registratore è in fase di sviluppo; disponibile nel branch `android/rewrite`. [builds](https://github.com/librepods-org/librepods/actions/workflows/ci-android.yml?query=branch%3Aandroid%2Frewrite) ### Linux Dai un'occhiata alla [PR #655](https://github.com/librepods-org/librepods/pull/655). # Installazione - [**Android**](https://github.com/librepods-org/librepods/blob/main/android/README.md) - [**Linux**](https://github.com/librepods-org/librepods/blob/main/linux/README.md) # Spoofing del VendorID A quanto pare, se cambi il VendorID nel DID Profile con quello di Apple, ottieni accesso a diverse funzionalità speciali! Puoi farlo su Linux modificando il DeviceID in `/etc/bluetooth/main.conf`. Aggiungi questa riga al file di configurazione `DeviceID = bluetooth:004C:0000:0000`. Su Android puoi abilitare l'impostazione `act as Apple device` nelle impostazioni dell'app (mostrata solo quando Xposed è disponibile e il modulo LibrePods è abilitato). ## Connettività multi-dispositivo Fino a due dispositivi possono essere connessi simultaneamente agli AirPods, sia per l'audio che per il controllo. Cambio di connessione senza interruzioni. La stessa notifica appare sul dispositivo Apple quando Android prende il controllo degli AirPods come se fosse un dispositivo Apple ("Sposta su iPhone"). Anche Android mostra un popup quando l'altro dispositivo prende il controllo. ## Impostazioni di Accessibilità e Aiuto all'udito Le impostazioni di accessibilità come la personalizzazione della modalità trasparenza (amplificazione, bilanciamento, tono, potenziamento della conversazione e riduzione del rumore ambientale) e la riduzione dei suoni forti possono essere configurate. Tutte le personalizzazioni dell'aiuto all'udito possono essere effettuate da Android (presto su Linux), inclusa l'impostazione del risultato dell'audiogramma. L'app non fornisce un modo per eseguire un test dell'udito perché richiede molta più precisione. È molto meglio utilizzare un risultato di audiogramma già disponibile. # Protocollo e Reverse Engineering Fai riferimento al plugin dissector di Wireshark di Nojus ([@pabloaul](https://github.com/pabloaul)) per maggiori informazioni sui protocolli utilizzati: [pabloaul/apple-wireshark](https://github.com/pabloaul/apple-wireshark) Il dissector non è stato utilizzato in LibrePods per la maggior parte dell'implementazione; avevo fatto reverse engineering del protocollo da solo prima che questo dissector fosse creato. Ma molte funzionalità (future) tra cui l'audio bidirezionale di alta qualità e l'audio spaziale non sarebbero state possibili senza i loro sforzi di RE! # Uso dell'IA ## App Android Queste parti dell'app sono state completamente generate dall'IA: - Head Gestures - tutto, inclusa la logica e l'interfaccia utente - La configurazione dell'offset con r2+il modulo xposed (entrambe le versioni) - Troubleshooter e LogCollector Tutto il resto - il servizio in background, le classi del gestore Bluetooth (AACP e ATT), l'intera interfaccia utente, anche i componenti più piccoli - è stato scritto manualmente. Alcune parti dei componenti dell'interfaccia utente sono state prese in prestito dalla [demo app di Kyant0](https://github.com/Kyant0/AndroidLiquidGlass/tree/master/catalog), che è distribuita con licenza [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ## Linux (rewrite) I file `aacp.rs` e `att.rs` sono stati tradotti da Kotlin a Rust con l'IA. Anche alcune parti del file `media_controller.rs`, principalmente l'integrazione con pulse, sono state generate dall'IA. # Sostenitori Un enorme grazie a tutti coloro che supportano il progetto! <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> # Ringraziamenti speciali - @tyalie per aver realizzato la prima documentazione sul protocollo! ([tyalie/AAP-Protocol-Definition](https://github.com/tyalie/AAP-Protocol-Defintion)) - @rithvikvibhu e le persone di lagrangepoint per l'aiuto con la funzionalità per apparecchi acustici ([gist](https://gist.github.com/rithvikvibhu/45e24bbe5ade30125f152383daf07016)) - @devnoname120 per l'aiuto con la prima patch root - @timgromeyer per aver realizzato la prima versione dell'app per Linux - @hackclub per aver ospitato [High Seas](https://highseas.hackclub.com) e [Low Skies](https://low-skies.hackclub.com)! - Naturalmente, tutti coloro che hanno contribuito al progetto in qualsiasi modo, anche solo testando, condividendo feedback o semplicemente mostrando interesse! # Alternative per altre piattaforme: - CAPod - Un'app complementare per AirPods su Android. ([play store](https://play.google.com/store/apps/details?id=eu.darken.capod) | [codice sorgente](https://github.com/d4rken-org/capod)). Usala se utilizzi Android versione 16 QPR3 o inferiore e non hai il root. - MagicPods per Steam Deck ([sito web](https://magicpods.app/steamdeck/)) - MagicPods - se stai cercando "LibrePods per Windows" ([ms store](https://apps.microsoft.com/store/detail/9P6SKKFKSHKM) [installer](https://magicpods.app/installer/MagicPods.appinstaller) | [sito web](https://magicpods.app/)) # Cronologia delle stelle <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> # Licenza LibrePods - AirPods liberati dall'ecosistema Apple Copyright (C) 2025 LibrePods contributors Questo programma è un software libero: è possibile ridistribuirlo e/o modificarlo secondo i termini della GNU General Public License come pubblicata dalla Free Software Foundation, nella versione 3 della Licenza, o qualsiasi versione successiva. Questo programma è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di COMMERCIABILITÀ o IDONEITÀ PER UNO SCOPO PARTICOLARE. Vedere la GNU General Public License per maggiori dettagli. Si dovrebbe aver ricevuto una copia della GNU General Public License insieme a questo programma. In caso contrario, vedere <https://www.gnu.org/licenses/>. # Avviso sui marchi La GPL non concede alcun diritto di utilizzare il nome, il logo o il branding di LibrePods. Il nome e il logo LibrePods non possono essere utilizzati per software, siti web, domini, prodotti, servizi o altri progetti in modo tale da suggerire affiliazione, approvazione o associazione con il progetto ufficiale LibrePods senza previa autorizzazione. Se noti qualsiasi uso improprio del nome o del logo LibrePods, segnalalo a [[email protected]](mailto:[email protected]). Il font SF Pro utilizzato nell'app Android è di proprietà di Apple Inc.. Sarà rimosso nelle versioni future dell'app e sostituito a breve con un'alternativa open. AirPods, AirPods Pro, AirPods Max e il logo AirPods sono marchi di Apple Inc. Il progetto LibrePods non è affiliato né approvato da Apple Inc. in alcun modo.