David Madore's WebLog: Tethering, Orange et Android récent : souci

Index of all entries / Index de toutes les entréesXML (RSS 1.0) • Recent comments / Commentaires récents

Entry #2116 [older|newer] / Entrée #2116 [précédente|suivante]:

(samedi)

Tethering, Orange et Android récent : souci

Il y a quelques semaines, j'ai mis à jour l'Android de mon téléphone (qui est un CyanogenMod officieux parce que CyanogenMod considère que mon HTZ Desire Z d'il y a à peine deux ans est tellement insupportablement obsolète que ce n'est plus la peine de développer pour), pour un Android 4.2.1 (CyanogenMod 10.1). J'ai testé plein de choses qui marchaient très bien mais je n'ai pas pensé à tester ce qui est, finalement, presque le plus important pour moi dans l'utilisation du téléphone : le tethering (c'est-à-dire l'utilisation du téléphone comme une sorte de modem pour fournir un accès Internet à un ordinateur auquel il est connecté par exemple par USB). Et la loi de Murphy ayant frappé, évidemment, maintenant qu'il me serait très difficile de revenir en arrière à la version précédente[#], je m'aperçois que le tethering ne marche pas. Catastrophe.

Premier effet observé : au moment où j'active le tethering (par USB, ce qui semble le plus robuste), la connexion de données disparaît. Initialement j'ai cru que c'était simplemnt que la connectivité était mauvaise et que par hasard il perdait la connexion à ce moment-là, mais au bout de N répétitions du même motif, j'ai fini par me rendre à l'évidence : il y a vraiment un problème.

J'ai trouvé une première cause du problème : pour faire fonctionner le tethering, il faut maintenant créer un APN de type dun. Un APN, c'est le mécanisme par lequel on fait passer une connexion de données sur la couche de protocoles GSM ; mais je ne sais pas exactement ce à quoi ça correspond : ce qui est sûr, c'est que le téléphone a besoin qu'on lui en fournisse un, et même un par type de connexion qu'on peut avoir besoin d'effectuer : un pour les connexions Internet « normales » (type default ou peut-être internet), un pour l'envoi de MMS (type mms : c'est souvent tarifié différemment), un pour les upgrades du firmware (type fota), un pour la réception de données GPS (type supl ou peut-être agps — je ne sais pas la différence, et de toute façon ça ne semble plus trop utilisé), peut-être encore d'autres types (admin ? hipri ? phone ?), et, donc, maintenant, aussi un pour le tethering (dun ou peut-être tether ou tethering). Remarquez que personne ne semble y comprendre quoi que ce soit : en googlant ces différents mots-clés on trouve plein de gens qui s'échangent des recettes de cuisine et des conseils contradictoires sur les types d'APN à configurer — probablement dans beaucoup de cas ça a peu d'importance, certains types sont sans doute synonymes, et de toute façon l'opérateur ne fournit guère qu'un tout petit nombre d'APN différents (chez Orange-FR il semble y avoir simplement orange qui sert pour tout accès Internet, donc essentiellement pour tous les types listés sauf mms, et orange.acte, justement, pour les MMS). Tout ceci est extrêmement confus (peut-être que je pourrai trouver un collègue à Télécom qui peut m'expliquer exactement ce que tout ce merdier signifie), toujours est-il que je n'avais pas d'APN de type dun et que c'est sans doute la cause (cachée dans un message fort peu convivial caché dans le log : D/Tethering( 393): chooseUpstreamType(true), preferredApn =4, got type=-1) de la disparition de ma connexion de données au moment où j'active le tethering : apparemment les Android récents exigent un APN de type dun, ils ne vont pas prendre celui de type default. D'autres gens semblent avoir rencontré un problème très semblable (mais eux, au moins, avaient un message d'erreur un peu plus compréhensible !).

Il y a une chose qui m'horripile, c'est quand on a un problème, qu'on trouve une cause qui explique tout, qu'on corrige en conséquence, et que le problème persiste. (Je me sens un peu comme Gregory House quand il découvre que son troisième diagnostic n'est encore pas le bon parce que le foie du patient se met maintenant à défaillir.)

Tout content d'avoir trouvé cette histoire d'APN de type dun manquant, j'en ajoute un, je vois avec joie que le téléphone établit une connexion de données, je me dis que maintenant ça va marcher… eh non ! aucun paquet ne passe. Même depuis le téléphone lui-même.

Mon explication provisoire (provisoire comme les diagnostics de House) est que cette nouvelle version d'Android, en exigeant un APN de type dun (whatever that means), communique à l'opérateur (Orange, donc) ce qu'il veut faire de la connexion de données qu'il demande (bonjour, je voudrais une connexion pour faire du tethering) et qu'Orange ne veut pas qu'on fasse du tethering, au moins avec la formule de pauvre que j'ai (qui ne me coûte que 8€ par mois pour Internet illimité, il faut admettre que c'est assez compétitif), du coup ils ne laissent pas passer mes paquets. Ou quelque chose de ce genre.

L'ennui, c'est que (1) ce diagnostic va être délicat à confirmer (il va falloir au moins fouiller dans les entrailles d'Android pour savoir ce qu'il fait au juste avec le type d'un APN), et (2) même en admettant qu'il soit bon, ça va être difficile à réparer (je ne veux pas que mon téléphone dise à mon opérateur qu'il va faire du tethering). Je risque de devoir soit arriver à recompiler un Android (ce qui semble vraiment difficile, d'autant que je veux recompiler précisément celui d'Andromadus parce qu'il doit marcher sur mon téléphone — ils fournissent les sources, mais ils ne fournissent pas les explications sur comment les compiler), soit lui faire un patch binaire (j'en ai déjà plusieurs, par exemple pour désactiver le choix aléatoire d'adresse IPv6 que je déteste, mais s'il s'agit de patcher un binaire Java converti en Dalvik, ce ne sera probablement pas facile).

Je sens que je vais passer un bon nombre de nuits blanches sur cette affaire.

Si par hasard parmi mes lecteurs infiniment cultivés il y en a qui savent comment fonctionne la gestion des APN dans le GSM en général ou dans Android en particulier, je suis preneur de toute information !

Suite : voir une entrée ultérieure.

[#] J'ai fait un backup avant de changer de version, mais le reprendre impliquerait de perdre tout ce que j'ai fait depuis. Comme la nouvelle version d'Android a changé la signature de la base des contacts, je ne peux pas simplement installer une plus ancienne. Par ailleurs, je me suis habitué aux nouveautés de la version que j'ai maintenant.

↑Entry #2116 [older|newer] / ↑Entrée #2116 [précédente|suivante]

Recent entries / Entrées récentesIndex of all entries / Index de toutes les entrées