hey wanna see something kinda interesting? this was the entire fix to the iPhone Antennagate in 2010. 20 bytes.
(this is going to be a very long thread 🧵)
hey wanna see something kinda interesting? this was the entire fix to the iPhone Antennagate in 2010. 20 bytes.
(this is going to be a very long thread 🧵)
For context, back in 2010 when the iPhone 4 came out, people noticed you could grip the phone in a certain way and the signal bars would plummet from 5 to, like, 2.
A few weeks later, they published a letter (https://www.apple.com/newsroom/2010/07/02Letter-from-Apple-Regarding-iPhone-4/) admitting fault, blaming a bad formula.
The letter was shared around and clowned upon (https://daringfireball.net/2010/07/translation_iphone_4) but nobody really looked into what the formula between 4.0 and the patch in 4.0.1
I was a stupid eight-year-old at the time, but now I’m a stupid adult with access to a disassembler.
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 convert the bytes to actual dBm values, you get:
-115, -111, -107, -103, and -99
(the closer to zero, the better the signal)
For example, here you need -107 or better signal to see 3 bars.
So there ya go. 20 bytes.
This has concluded a Tech Thread. Back to shitposting.
@samhenrigold I’m reminded again of a change I made in Mac OS 8.1 for HFS Plus.
I had to change the Start Manager code that loaded extensions so extensions would continue to load in MacRoman order. To keep Conflict Catcher working, I had to add new API it could use to control the order of extension loading.
Another engineer at Apple (IIRC, Mike Pucket) saw the new Start Manager API and changed the boot progress bar code to use the new API to make the progress bar’s updates smoother and more accurate, and that made Mac OS “seem” to boot much faster.
It’s funny how small UI changes can fool the mind.
@jimluther @samhenrigold there are studies about the perception of progress based on how the progress bar, well, progresses.
Fascinating!
Back then the rumor was about the frame in metal that had no plastic cut to break the loop. Was is a real cause of trouble?
In Pixel 9 that reuses the iphone4 shape there are 6 plastic cuts in the metal frame...
@lilstevie @samhenrigold @joey where “holding it wrong” is just the way I naturally held an iPhone when talking on it, and still do 😉
My iPhone 4 was terrible for calls until i got the bumper.
@samhenrigold
This really strikes me as being the difference between a linear and nonlinear gas gauge in a car. If you have a linear gas gauge it really *feels* like you are using gas faster because most cars are nonlinear and stay at the full mark much longer and fall more rapidly as your tank gets lower.
In this case holding the cell phone a certain way *does* weaken signal but not as drastically as the display was showing.
But despite what the display makes you *feel* the reality is that your car will run out of gas at some point and you body will affect signal strength to some extent even if it now *feels* like it doesn't.
@joey
@samhenrigold This one goes to 11.
Nice writeup!
@mhoye @gnomon @samhenrigold It wasn't "really a display error".
Rather, they modified the display code to cover up the physical design bug.
@samhenrigold I just watched this video yesterday. In combination with your thread, it seems that "Antennagate" was actually a combination of hardware and software issues.