Ah, 2010. The year when Apple launched the iPad, but the limelight was stolen by something else entirely: Antennagate. Soon after the launch of the iPhone 4, users discovered that when they held the phone in a typical grip for a phone call, the number of bars shown for signal strength immediately dropped dramatically. Apple responded in a number of ways, including Steve Jobs famously suggesting that users were holding the phone wrong, but the issue was resolved by changing just 20 bytes of code … Unfortunately for Apple, the iPhone 4 is now mostly remembered not for its excellent design, but rather for a controversy that got completely out of hand. Apple was forced to offer buyers a free bumper case as well as to settle a class action lawsuit. The company subsequently improved the antenna in the iPhone 4S, but the real issue was not with the hardware, but rather the software. Apple said at the time that it had made an error in the formula responsible for displaying the number of signal strength bars. Upon investigation, we were stunned to find that the formula we use to calculate how many bars of signal strength to display is totally wrong. Our formula, in many instances, mistakenly displays 2 more bars than it should for a given signal strength. For example, we sometimes display 4 bars when we should be displaying as few as 2 bars. Users observing a drop of several bars when they grip their iPhone in a certain way are most likely in an area with very weak signal strength, but they don’t know it because we are erroneously displaying 4 or 5 bars. Their big drop in bars is because their high bars were never real in the first place. We didn’t know exactly what Apple had changed, but software engineer and designer Sam Henri Gold has now figured it out. I downloaded both firmwares and started poking around. In the CoreTelephony framework, I found a promising looking binary: CommCenter. Looking at the strings gave me a pretty good sense that this is where the bar formula was. The actual calculation is dead simple. When converting signal strength to bars, CommCenter loads each threshold from memory and compares until it finds the right range. This code is not the problem. This is. This is the lookup table. When you plot this onto a chart, you can see how the values are kinda screwed up since the values are really optimistic. Most of the time, you would see 4-5 bars. But when you gripped it, since the falloff is so sharp, you’d see a catastrophic drop from 5 to 2 bars. In 4.0.1, they changed these values to be way smoother. Mapped onto a chart, you can see that it takes a lot to drop from 5 to 0 bars. It’s harder to see 5 bars, but it’s harder to plummet bars. So there ya go. 20 bytes. He posted a graph showing the before and after drop-offs in the number of bars displayed. Mapped onto a chart, you can see that it takes a lot to drop from 5 to 0 bars. It’s harder to see 5 bars, but it’s harder to plummet bars. pic.twitter.com/QFLh8IK086 — sam henri gold (@samhenrigold) October 7, 2025 In a fun bit of psychology, Gold notes that Apple also increased the height of the bars so that signal strengths one and two didn’t look quite so bad! oh also in 4.0.1 they changed the height of the lower bars to be taller lmao pic.twitter.com/sxzF4YJ1Bc — sam henri gold (@samhenrigold) October 7, 2025 It’s a fun look back at an interesting piece of Apple history. Highlighted accessories Photo by Brett Jordan on Unsplash