Merci pour ton retour et ton test. Je comprends le doute sur le Carista, mais j'ai analysé les logs de debug de mes dernières sessions (7 fichiers + le crash report) et le pattern est très reproductible, avec deux erreurs techniques précises qui me font penser qu'on n'est pas juste sur un mauvais adaptateur :
**Timing des déconnexions** (connexion établie → perte) :
- 6s / 38s / 33s / 27s / 9s selon les sessions
**Deux erreurs systématiques dans les logs** :
1. `IOException: bt socket closed, read return: -1` — le socket RFCOMM se ferme côté système pendant la lecture, pas côté app.
2. `NullPointerException` sur `BluetoothSocket.getInputStream()` — l'app tente de lire un flux sur un socket qui, malgré le message "Serial connected successfully", n'a en réalité jamais été correctement établi côté OS.
Ça semble correspondre très précisément au bug documenté sur la pile Bluetooth d'Android 16 : un conflit entre le nouveau stack LE Audio et les anciens profils Bluetooth classiques (SPP, HFP, A2DP), qui provoque une fermeture prématurée du socket lors de renégociations de codec. Un article qui détaille bien le mécanisme :
https://www.hawkdive.com/android-16-bluetooth-disconnect-fix/
Le bug touche aussi Samsung (S24/S25), Nothing Phone 3 et Motorola Edge sous Android 16 stock — donc pas spécifique aux Pixel ni au Carista en particulier.
Ton test avec le vLinker MC+ sur Pixel 8 (Android 17) qui fonctionne bien pourrait justement s'expliquer si le patch inclus dans Android 17 corrige (au moins partiellement) ce problème de socket.
Je peux joindre les fichiers de logs complets si ça t'intéresse pour creuser plus précisément où le socket meurt côté firmware Android. Merci en tout cas pour ton aide