Il y a maintenant 15 ans arrivait l’iPhone 4, et avec lui, une nouvelle expression en -gate comme les américains les aiment quand une polémique prend une ampleur considérable : l’Antennagate. Entre retours à foison, que ce soit dans les forums ou en vidéo, et réponse cinglante de Steve Jobs, 9to5Mac a fini par obtenir la clé du mystère.

« You’re holding it wrong ». 15 ans après la phrase résonne encore pour ceux qui ont vu la conférence, organisée par Apple en réponse à la grogne qui montait auprès des utilisateurs de l’iPhone 4 (même si cette réponse bien sèche, bien qu'attribuée à Steve Jobs, n'aie jamais été réellement prononcée par celui-ci. Sa phrase exacte était « Just avoid holding it in this way », dans un message à un journaliste d'ArsTechnica). Nombre d’entre eux constataient une baisse de la qualité de réception du smartphone suivant la façon dont ils le tenaient, et dans un premier temps Apple a tenté de faire passer le souci pour une simple erreur d’affichage :
Après enquête, nous avons été stupéfaits de constater que la formule que nous utilisons pour calculer le nombre de barres de puissance du signal affichées est totalement erronée. Notre formule, dans de nombreux cas, affiche par erreur deux barres de plus qu’elle ne devrait pour une intensité de signal donnée. Par exemple, nous affichons parfois 4 barres alors que nous devrions en afficher seulement 2. Les utilisateurs qui constatent une chute de plusieurs barres lorsqu’ils tiennent leur iPhone d’une certaine manière se trouvent très probablement dans une zone où la force du signal est très faible, mais ils ne le savent pas car nous affichons à tort 4 ou 5 barres. Leur forte chute de barres s’explique par le fait que le nombre élevé de barres affiché auparavant n’était jamais réel.
Puis vint la conférence dirigée par Steve Jobs, qui reste un exemple parfait de gestion de crise, comme seul le co-fondateur d’Apple pouvait réaliser : peu de grands patrons, mis au pied du mur, auraient pu sortir une phrase telle que « C’est vous qui le tenez mal » dans la position de Steve Jobs. Et pourtant, il l’a fait.
Au final, Apple a sorti iOS 4.0.1, qui a « corrigé » le souci d’affichage, et ainsi atténué la visibilité de cette variation de réception. L’ingénieur logiciel Sam Henri Gold a d’ailleurs mis le doigt sur les modifications faites par Apple dans iOS 4.0.1 et elles tiennent... sur 20 octets.
J’ai téléchargé les deux firmwares et commencé à fouiller. Dans le framework CoreTelephony, j’ai trouvé un binaire prometteur : CommCenter. L’examen des chaînes de caractères m’a rapidement permis de soupçonner que la formule des barres s’y trouvait. Le calcul en lui-même est d’une simplicité extrême. Pour convertir l’intensité du signal en barres, CommCenter charge chaque seuil en mémoire et compare, jusqu’à trouver la bonne plage. Ce n’est pas là que réside le problème. Le problème, c’est ici. C’est la table de correspondance. Quand on la représente sur un graphique, on voit clairement que ses valeurs sont faussées car elles sont beaucoup trop optimistes. La plupart du temps, on voyait 4 à 5 barres. Mais lorsque l’on saisissait l’appareil, la chute était si brutale qu’on pouvait passer de 5 à 2 barres d’un coup. Dans iOS 4.0.1, ils ont modifié ces valeurs pour que la transition soit bien plus progressive. Sur un graphique, il apparaît qu’il faut maintenant perdre beaucoup plus de signal pour tomber de 5 à 0 barres. Il est plus difficile de voir 5 barres, mais il devient aussi plus rare de chuter soudainement. Voilà, 20 octets.
In 4.0.1, they changed these values to be way smoother. pic.twitter.com/CVZs1XR0uY
— sam henri gold (@samhenrigold) October 7, 2025
En plus de cette petite modification destinée à adoucir la courbe correspondant à l’intensité du signal, Apple en a aussi profité... pour rallonger légèrement la première barre du signal. Ainsi, psychologiquement, l’utilisateur avait moins l’impression d’avoir un réseau au ras des pâquerettes.
15 ans après, ce défaut de fabrication, la façon dont Apple a géré la crise et le culot de Steve Jobs sont restés dans les mémoires. Tout ça pour 20 petits octets...