
Pamiętacie aferę wokół iPhone’a 4 z 2010 roku? Pewien programista postanowił znaleźć jej dokładną przyczynę i odkrył, że winnym całego kryzysu był mikroskopijny fragment kodu.
Krótko po starcie sprzedaży użytkownicy na całym świecie zauważyli, że chwycenie iPhone'a 4 w określony sposób mogło powodować wyjątkowo duży spadek siły sygnału komórkowego. Wykraczający poza normę, do której przyzwyczaiły ich inne telefony.
Gdy wybuchła głośna afera, nazwana przez media "Antennagate", ówczesny szef Apple’a z rodziną na wakacjach. Steve Jobs miał jednak przerwać urlop, zlecić wewnętrzne śledztwo i przez dwie doby dyskutować ze sztabem ekspertów na temat sposobów, w jaki można by ugasić pożar.
"W trakcie dochodzenia byliśmy zdumieni, odkrywając, że formuła, której używamy do obliczania, ile kresek siły sygnału wyświetlać, jest całkowicie błędna. Nasza formuła, w wielu przypadkach, błędnie wyświetla o 2 kreski więcej niż powinna dla danej siły sygnału. Na przykład, czasami wyświetlamy 4 kreski, gdy powinniśmy wyświetlać zaledwie 2 kreski. Użytkownicy obserwujący spadek o kilka kresek, gdy trzymają iPhone'a w określony sposób, najprawdopodobniej znajdują się w obszarze o bardzo słabej sile sygnału, ale nie wiedzą o tym, ponieważ błędnie wyświetlamy 4 lub 5 kresek. Ich duży spadek kresek wynika z tego, że ich wysokie kreski nigdy nie były prawdziwe" - ogłosił Apple na swojej stronie.
Producent wypuścił aktualizację oprogramowania, która skorygowała sposób przeliczania siły zasięgu na kreski w interfejsie, ale to nie wystarczyło, bo na iPhone’a 4 zdążyła się już wylać fala krytyki. Zaledwie dzień później odbyła się konferencja prasowa, podczas której Jobs wygłosił słynne "nie jesteśmy idealni, telefony nie są idealne" i starał się udowodnić, że problem z anteną dotyczy wielu popularnych smartfonów. Ogłosił jednocześnie, że każdy nabywca iPhone'a 4 może się zgłosić po darmowe etui zapobiegającą kontaktowi anteny ze skórą lub zwrócić telefon w ciągu 30 dni.
Szacuje się, że cała afera - uwzględniając odszkodowania dla amerykańskich użytkowników, program wymiany i darmowe bumpery - kosztowała Apple’a nawet 175 mln dol.
iPhone 4 - afera. Wszystko przez 20-bajtowy fragment kodu
Programista Sam Henri Gold postanowił po 15 latach porównać kod systemu iOS 4 z wersją iOS 4.0.1, w której wprowadzono wspomnianą łatkę. Udało mu się ustalić, że problem tkwił w tabeli wyszukiwania, która przekształca siłę sygnału (wartość dBm) na liczbę wyświetlanych pasków zasięgu. Pierwotnie iPhone 4 nawet przy relatywnie słabym sygnale wyświetlał 4 lub 5 kresek zasięgu.
Programista zauważył, że za kontrolowanie tabeli wyszukiwania odpowiadało 20 bajtów kodu. Wystarczyło zmienić garstkę znaków, by wskaźnik zasięgu iPhone 4 wierniej oddawał rzeczywistość.
Warto odnotować, że łatka w oprogramowaniu nie wyeliminowała problemu całkowicie, bo część użytkowników wciąż skarżyła się na spadki zasięgu. Gdyby jednak iPhone 4 w wyniku zmiany chwytu raportował spadek o 1-2 kreski zamiast o 4-5, być może cała sprawa przeszłaby bez echa i żadnej afery by nie było.
Komentarze
1