Rok 2010: Apple právě vydal iPad, ale pozornost médií upoutala úplně jiná událost – kauza Antennagate. Krátce po vydání iPhonu 4 uživatelé zjistili, že pokud drží telefon běžným způsobem během hovoru, počet zobrazených čárek signálu dramaticky klesá.



Apple reagoval různými způsoby, včetně slavného komentáře Steva Jobse, že uživatelé „drželi telefon špatně“. Skutečný problém se však ukázal být softwarový – konkrétně chyba ve vzorečku pro výpočet zobrazeného počtu čárek signálu. Podle Apple vzorec často zobrazoval o dvě čárky více, než odpovídalo skutečné síle signálu. Uživatelé tedy pozorovali náhlý pokles, protože „vysoké“ čárky nebyly nikdy skutečné.

Jak Apple problém vyřešil

Software engineer a designér Sam Henri Gold nedávno detailně analyzoval firmware iPhone 4. V CoreTelephony frameworku objevil CommCenter, kde se vzorec pro čárky nacházel. Sam zjistil, že samotný výpočet byl jednoduchý – problém byla tabulka, která převáděla sílu signálu na počet čárek.

  • Původní tabulka byla optimistická: většinou se zobrazovalo 4–5 čárek. Když však uživatel telefon uchopil, došlo k prudkému poklesu z 5 na 2 čárky.
  • Firmware 4.0.1 změnil hodnoty v tabulce jen o 20 bajtů, což způsobilo hladší přechod a zmenšilo prudké propady počtu čárek.

Gold dokonce vytvořil graf, který ukazuje rozdíl: původní tabulka způsobovala dramatický propad, nová tabulka zajišťuje postupnější snížení čárek. Takže celá kauza Antennagate nebyla o anténě samotné, ale o 20 bajtech kódu, které změnily způsob zobrazení síly signálu. Už nikdy se tedy nemusíte bát, že pád zobrazených čárek signálu znamená problém s hardwarem – iPhone jen dříve zobrazoval čísla příliš optimisticky.