Simple trick to increase coverage: Lying to users about signal strength

tsujamin | 434 points

I implemented the same behavior in a different Google product.

I remember the PM working on this feature showing us their research on how iPhones rendered bars across different versions.

They had different spectrum ranges, one for each of maybe the last 3 iPhone versions at the time. And overlayed were lines that indicated the "breakpoints" where iPhones would show more bars.

And you could clearly see that on every release, iPhones were shifting the all the breakpoints more and more into the left, rendering more bars with less signal strength.

We tried to implement something that matched the most recent iPhone version.

zabumafu | 2 days ago

A friend recently got a (carrier-supplied) phone and has been complaining about how it would often have no reception despite showing a good signal; taking mine to the same areas on the same carrier and doing a comparison, mine was indeed showing no bars on the signal indicator. The difference is, mine predates this stupidity, and I can also see the details in the MTK Engineer Mode app, which shows the actual signal strength --- it was around -140dBm when it was showing 0 bars.

The signal strength measurement is actually standardised: https://en.wikipedia.org/wiki/Mobile_phone_signal#ASU

userbinator | 2 days ago

Related: https://www.bbc.co.uk/news/articles/crexqyj7n5lohttps://www....

"Tests carried out by research group PolicyTracker, and shared with BBC's Morning Live, found that nearly 40% of the time a phone displays the 5G symbol, it is actually using a 4G connection"

gadders | 2 days ago

You know, I don't recall ever seeing 1 bar of signal strength on a smartphone. And once it's down to 2 bars, it barely works, if at all.

Human brains: wow, what a bunch of suckers. Damn.

By the way, is it legal to be deceptive in this way?

metadat | 2 days ago

Original commit that introduced the change: https://android.googlesource.com/platform//frameworks/base/+...

I don't know if I want my name on an open source project attached to a commit whose only purpose is to lie?

OptionOfT | 2 days ago

IIRC this really took off with the antennagate fiasco on the iphone 4. I was working for Verizon at the time and this was also the first one we were able to sell. I forget who it was that did it but I believe it was Apple in response to people "holding their phone wrong" so they bumped everything up a bar so you couldn't tell. There was a lot of competition at the time but also all the androids had better margins so they wanted us to sell those instead.

sanex | 2 days ago

I wonder if it’s more intuitive that way.

Like what Apple does with stopwatch.

https://lukashermann.dev/writing/why-the-iphone-timer-displa...

alberth | 2 days ago

There is a way to switch the bars to actual numeric dBM: https://www.techbout.com/display-iphone-signal-strength-in-n...

(Probably a way to do it on Android, too)

A CSR showed me this while debugging network connectivity issues with my phone.

Leftium | 2 days ago

Is there any reason to believe this mechanism is actually there to help carriers deceive users? To me this looks like it's intended to address some other issue, like perhaps "I have zero bars shown, what do you mean I'm still connected? That that clearly means I'm disconnected..." I feel like anything intended to lie to users would not be implemented in this manner.

dataflow | 2 days ago

Android users can enter *#*#INFO#*#* on the phone app's numeric keypad to open a diagnostics tool, which includes a submenu that shows signal strength in dBm.

It's handy for locating sweet spots and dead zones in my home.

foresto | a day ago

Where are those files stored on my phone? I want to check this for my ISP. Edit: git clone https://android.googlesource.com/platform/packages/apps/Carr... && cd CarrierConfig && grep -rnie inflate

jesprenj | 2 days ago

With Three UK I used gathered evidence over the course of 4 months to wiggle myself out of a £46/month 28-month 5G contract (had to pay £200 remaining on my iPhone 16 Pro) when I demonstrated that my phone was basically useless whenever in the postcode are where I live, even if I always had 1 bar 5G signal.

Not even phone calls would go through, let alone calls on Whatsapp et al, or loading websites using something heavier than just text.

Have raised a _formal_ complaint (they must report it to Ofcom), and after that it was just a matter of ensuring I lost enough phone calls to demonstrate how many ended up in my answering machine.

The fact that Wifi calling is also super buggy and almost never work, played also a big role.

My problem is, all other mobile providers in my area are even worse, showing LTE or 4G. So I just need to wait for them to strengthen signal, or move!

2dvisio | 2 days ago

If you use some app such as Network Survey (open source, Android), you can see that providers also lie about the type of connection. I'm on LTE now, but provider makes phone display 5G.

And this is on non-provider phone, this is built in in the whatever communication they do with the phone, possibly works with every device.

ashirviskas | 2 days ago

There's a part of me that thinks there's perhaps a logical and reasonable explanation, I just can't think of one.

NoPicklez | 2 days ago

I would rather see a live speed test number, emoji, or something. The signal frequency or strength doesn’t matter if the tower equipment is overloaded with users and running at dialup speeds.

I’ve been in bad tower areas where the solution is to drive to the next town or tower along the highway.

instagib | 2 days ago

Don’t worry the camera is only on when the green light is on.

Towaway69 | 2 days ago

With Three UK, I have not 1 bar but 5 bars!

Until about March this year, it was excellent and I used it as my home broadband. 60MB/s down, 20MB/s up on a good day. Much better than any ADSL I'm able to get.

Since March, from about 10:30am until 5pm some days, and late evening other days, there is no working data, and occasionally no working voice, despite the 5 bars.

It's working fine until then, and then it just stops completely, fading over the course of maybe 10 minutes. This happens all 7 days of the week.

The working theory is congestion at the base station. That's consistent with the occasional 6 minute ping times that I've measured, and more usual 20-30 second ping times, when anything gets through at all.

Still shows 5 bars. Three's coverage map says it's good here. Just can't use it.

jlokier | 2 days ago

How can one hide from git blame?

NooneAtAll3 | 2 days ago

Having no knowledge about this isn't there a possibility that this is innocuous, that is that there is some difference in how each provider, such as T-Mobile or Verizon, etc., send the data about how many bars are available such that it needs to be bumped by one?

explosion-s | a day ago

That is a tricky one. I caught myself comparing bars to a friend’s phone before wondering if changing carriers would give me better signal in a certain area.

jwrallie | 2 days ago

Are signal strength indicators even useful anymore these days?

I've long (at least since 3G) considered cell signal to be a binary property (available or not), with the much more important criterion being available data rate.

lxgr | 2 days ago

I frequently find that my data service is completely broken even when I have full 5G bars. Inflating by one is lame but doesn't explain this behavior. Is this a T-Mobile thing or is it widespread these days? I don't remember it happening so much 3+ years ago.

modeless | 2 days ago

contrast with RF emissions which are regulated.

if we cared about signal strength, we'd make it part of the telecommunications regulated sphere: you must back your meter with a path which shows signal strength accurate to xDB in some yUnits of zQuality measured at one of A,B conforming labs

ggm | 2 days ago

I'm surprised that's not against regulation in a bunch of countries

justahuman74 | 2 days ago

Poking around the config files, AT&T and two other carriers (both of which are subsidiaries, from a quick Google) seem to display 3G connections as if they were 4G:

    $ grep -r show_4g_for_3g_data_icon_bool assets/
    assets/carrier_config_carrierid_1187_AT&T.xml:    <boolean name="show_4g_for_3g_data_icon_bool" value="true"/>
    assets/carrier_config_carrierid_2119_FirstNet.xml:    <boolean name="show_4g_for_3g_data_icon_bool" value="true"/>
    assets/carrier_config_carrierid_1779_Cricket-Wireless.xml:    <boolean name="show_4g_for_3g_data_icon_bool" value="true"/>
Android documents[0] this flag, which they don't appear to do for the `inflate_signal_strength_bool` field outside the source code from what I can tell. It seems like there a bunch of odd flags for controlling user-exposed visuals - another flag `show_4g_for_lte_data_icon_bool` is used by 96 carriers, for example.

I wonder if there's some odd telecom history behind these, or if these flags were intended for some kind of edge-case. It seems like carriers have the option to arbitrarily override the thresholds used for determining signal strength[1], but only four carriers actually do. All only elect to customize the `lte_rsrp_thresholds_int_array` field; and all opt to make things harder for themselves, reporting their network connection as lower strength than the default classification[2] would:

    $ grep -r _thresholds_int_array assets/ -A5
    assets/carrier_config_carrierid_2556_Xfinity_Mobile.xml:    <int-array name="lte_rsrp_thresholds_int_array" num="4">
    assets/carrier_config_carrierid_2556_Xfinity_Mobile.xml-        <item value="-115"/>
    assets/carrier_config_carrierid_2556_Xfinity_Mobile.xml-        <item value="-105"/>
    assets/carrier_config_carrierid_2556_Xfinity_Mobile.xml-        <item value="-95"/>
    assets/carrier_config_carrierid_2556_Xfinity_Mobile.xml-        <item value="-85"/>
    assets/carrier_config_carrierid_2556_Xfinity_Mobile.xml-    </int-array>
    --
    assets/carrier_config_carrierid_1345_Telstra.xml:    <int-array name="lte_rsrp_thresholds_int_array" num="4">
    assets/carrier_config_carrierid_1345_Telstra.xml-        <item value="-120"/>
    assets/carrier_config_carrierid_1345_Telstra.xml-        <item value="-115"/>
    assets/carrier_config_carrierid_1345_Telstra.xml-        <item value="-100"/>
    assets/carrier_config_carrierid_1345_Telstra.xml-        <item value="-90"/>
    assets/carrier_config_carrierid_1345_Telstra.xml-    </int-array>
    --
    assets/carrier_config_carrierid_1839_Verizon-Wireless.xml:  # omitted, same as Xfinity, above
    ...
    --
    assets/carrier_config_carrierid_2032_Xfinity-Mobile.xml:  # omitted, same as Xfinity, above
    ...
[0]: https://developer.android.com/reference/android/telephony/Ca...

[1]: https://source.android.com/docs/core/connect/signal-strength...

[2]: https://android.googlesource.com/platform/frameworks/base/+/...

        sDefaults.putIntArray(KEY_LTE_RSRP_THRESHOLDS_INT_ARRAY,
                // Boundaries: [-140 dBm, -44 dBm]
                new int[] {
                        -128, /* SIGNAL_STRENGTH_POOR */
                        -118, /* SIGNAL_STRENGTH_MODERATE */
                        -108, /* SIGNAL_STRENGTH_GOOD */
                        -98,  /* SIGNAL_STRENGTH_GREAT */
                });
NotMelNoGuitars | 2 days ago

The latest iPhone have pushed this to such extremes that it’s become useless as a signal to users.

It’s showing full or near full bars even in places I can’t load light sites like hn properly.

Psychology tricks like these only work if you don’t overdo it

Havoc | 2 days ago

Toggle that off or just remove it entirely.

sharts | 2 days ago

this is the difference between selling a technology and selling a product

doctorpangloss | 2 days ago

Ironically this site is struggling due to traffic from HN

Wayback machine link: https://web.archive.org/web/20251103013626/https://nickvsnet...

sammy2255 | 2 days ago

Crazy how they’d rather fake a stronger signal than actually make it stronger.

horizonVelox999 | 2 days ago