Featured image of post 为什么手机信号格最多 5 格,而且每一格都是骗你的

为什么手机信号格最多 5 格,而且每一格都是骗你的

上周末我跟朋友在一家小餐厅吃饭。他刚换了华为的新旗舰,掏出来拍菜。拍着拍着抬头跟我说,你看这信号,满格。我低头瞄了一眼自己的 iPhone,2 格。

上周末我跟朋友在一家小餐厅吃饭。

他刚换了华为的新旗舰,掏出来拍菜,拍得特别起劲。拍着拍着抬头跟我说,你看这信号,满格。上次我来这家店一格都没有,换个手机完全不一样。

我低头瞄了一眼自己的 iPhone。2 格。

我没接话。

换半年前,我大概率会跟着点头,说句确实新机天线牛。但最近因为一个偶然的原因,我知道了一件事。

手机信号格,根本就不是一个物理量。

它长得像物理量。塔往你手机上打信号,手机把信号强度换算成几条小竖线画在状态栏上,看上去跟温度计的水银柱没什么区别。

但它不是。

塔发给你手机的信号确实有一个客观单位,叫 dBm,4G 和 5G 里面用的具体指标叫 RSRP。这是整个通信行业的规矩,全世界同一个位置测出来都是同一个值,几十年没变过。可是从 RSRP 到状态栏上的「几格」这一步换算,是谁定的呢?

手机厂商自己。每家一套。关起门来拍脑袋。

苹果一套,华为一套,小米一套,OPPO 又是另一套。同一张桌子、同一张运营商卡,几台不同牌子的手机并排举起来,能给你凑出一整张阅读理解答案。大家都信以为真。

但这只是第一层。它还有第二层,所以连手机厂商都不是最后拍板的人。

2018 年 Google 发布 Android 9 的时候,悄悄在系统里加了一组 API,允许运营商通过一个叫 CarrierConfig 的机制,给手机远程下发信号条的阈值。直说就是,运营商可以告诉你的手机,RSRP 低于 -95 dBm 的时候显示 4 格,低于 -105 显示 3 格,低于 -115 只剩 1 格,具体数字由运营商自己填。两年后的 Android 11 把这套能力继续扩展到 5G NR 和 SINR 上,等于把信号条的每一个环节都交给运营商定义。

以前我一直以为,手上的 iPhone 或者某台安卓手机,是两家公司跟我之间的合同。手机公司告诉我塔有多强,我信它。结果从 2018 年开始,这个合同里悄悄多了第三方。

换一张运营商卡,同一台手机、同一个位置,信号格数量都可能跟着变。手机厂商不再是最后的裁判,运营商才是。

这一下以前很多事情对上了。比如我上次去东南亚出差,一落地接上当地网络,同一台 iPhone 信号格莫名其妙就变好了。之前我还以为是当地基站比国内强,回头想明白,大概率是本地运营商发了一套比国内宽松得多的阈值,好让你觉得,至少还能聊微信。

这些事其实都不新鲜。十六年前,苹果就当着全世界被同一个问题按在地上摩擦过一次。

那年是 2010 年,iPhone 4 发布三天之内,用户发现左手握住机身左下角那条金属接缝,满格信号会唰一下掉到一格甚至断线。这就是后来被写进科技史的 Antennagate 天线门。

苹果一开始的回应是乔布斯一封著名邮件,Just avoid holding it in that way,你别那么拿不就行了。但在幕后,苹果团队扎进去查问题的时候发现了一件比天线本身更让他们头皮发麻的事。iPhone 的信号条公式,写错了。

同年 7 月 2 日,乔布斯亲自署名的公开信出现在苹果官网。原话是,我们震惊地发现,我们用来计算信号条显示几格的公式完全是错的,在很多情况下比应该显示的多画两格。两周后 iOS 4.0.1 发布,把公式按 AT&T 推荐的值重写了一遍。去年 10 月有个开发者把这两个版本的固件反编译对比,挖出核心改动只有大约 20 字节。苹果最著名的公关危机之一,技术上的修复是 20 个字节。

按理说,一家巨头当众承认过「我们的公式完全错了」之后,行业应该吸取教训搞一个诚实点的显示。十六年过去了,结果完全不是。

苹果自己的状态栏样式倒是翻来覆去改过好几轮。iOS 7 那会儿把 5 条大竖线换成 5 个小圆点,2017 年 iOS 11 又改回 4 条竖线,官方理由是给 iPhone X 的刘海腾状态栏空间。有意思的是,苹果不光换样式,还顺手把满格的门槛也调了。AnandTech 当年拿 iPhone 7 Plus 实测过两代系统,iOS 10 要求 RSRP 强过 -60 dBm 才给你满格(5 个圆点),到了 iOS 11 这个门槛放宽到了 -65 dBm(满格是 4 条竖线)。5 分贝听起来不多,放在通信这行里已经是肉眼可见的一大截。同一台 iPhone 在一个 -62 dBm 的位置,iOS 10 只给你 4 格(5 格里的第 4 格),换成 iOS 11 就直接满格 4 条。多出来的那一格不是因为塔变强了,是因为系统升级那天,苹果悄悄把满格的门槛降了一档。

华为、小米、vivo、OPPO 也都一样。每家旗舰跟同一张 SIM 卡放在一起都能凑出三种不同答案,没有任何一家公开过自己的映射表。大家心照不宣地把「让你看着舒服」放在「让你看到真实值」前面。

说到「心照不宣」,顺便聊几件业内都知道、但运营商和手机厂商从来不会主动告诉你的事。

先说一个最常见的。信号满格跟你能不能打通电话、能不能发出去微信,根本是两回事。

信号条的公式不管哪家怎么定,算的都是你手机跟塔之间那根电波强不强,算出来的是一个单纯的接收功率。它只反映一件事,你离塔有多近、中间隔了多少墙。但它完全不反映另一件事,那个塔现在还有没有空位留给你。

你肯定遇到过这种场景。演唱会现场、跨年夜外滩、春运候车厅、世界杯的体育场,手机满格,微信发不出去,红包抢不到,电话打不通。真相是塔那头的信道资源已经被塞爆了。一个基站能同时服务的用户数有物理上限,超了之后新来的用户信号再强也上不去。信号条不管这个。它就跟一家酒店的大堂经理一样,永远微笑着告诉你我们这儿很豪华,从来不告诉你今晚没房。

再说一个你每天都在用但不知道原理的。你以为**「切一下飞行模式再关掉」**是个玄学小妙招,背后其实有实打实的技术原因。

手机在 idle 状态下挑基站有一个惰性原则,只要当前连着的那个塔没掉到阈值以下,手机就不会主动去换塔,哪怕旁边有一个更强的。这是 4G 和 5G 协议里写死的 cell reselection 机制,为的是省电和避免频繁切换抖动。所以你从好位置走到不好的位置,手机很可能还赖在原来那个早就不够用的老塔上,死死不放。这时候你打开飞行模式,手机断开所有射频连接,再打开它被迫重新扫一遍所有可用基站,挑一个最强的连上,信号就「突然变好了」。

最后一个。你状态栏上那个 5G 图标,很多时候跟 5G 没太大关系。

5G 有两种部署方式,SA 独立组网和 NSA 非独立组网。国内三大运营商早期铺的 5G 基本都是 NSA,简单说就是手机同时挂在 4G 和 5G 两个基站上,下行跑 5G 快一点,上行(你发微信、发朋友圈、发视频那些)还是走 4G。状态栏只告诉你显示了 5G,不告诉你上行其实还在 4G。

最离谱的例子发生在 2018 年底的美国。AT&T 直接把 4G LTE Advanced 的网络标成 5G E,E 是 Evolution 演进的意思,堂而皇之地在用户的 iPhone 和安卓机状态栏上显示「5G E」三个字。整个美国通信圈把这事儿嘲笑了整整两年。2019 年 1 月 7 日,T-Mobile 官方推特发了一个短视频,视频里有人往一台 iPhone 屏幕上贴了一张写着「9G」的便利贴,配文「没想到升级这么简单,我先去更新一下」。后来美国广告审查机构 NAD 正式建议 AT&T 停用 5G Evolution 这个说法,但那个 5G E 图标一直留在状态栏上没删。

说了这么多,你其实也能自己亲手看一眼塔发给你手机的东西到底有多强。

iPhone 上,打开拨号盘输入 *3001#12345#*,按绿色拨号键。手机会直接进入一个叫 Field Test Mode 的隐藏界面,里面有一个 RSRP 数字。负数,越靠近 0 越强。一般 -80 以上算不错,-100 到 -110 之间开始掉速度,-115 以下基本就是快断线的状态。iOS 18 之后这个界面还顺便加了 SINR,信号质量指标,数字越大越好。

Android 上拨号盘敲 *#*#4636#*#*,进入菜单里的「手机信息」或「SIM 卡状态」,就能看到原始的 dBm 读数。少数深度定制系统把这个入口堵上了,大部分机型还留着。小米用户也可以在 设置 → 我的设备 → 全部参数 里直接找到 SIM 卡状态。

下次你在一个信号满格但微信发不出去、电话打不通的地方,可以拨一下那个代码试试看。屏幕上跳出来的那个负数,才是今晚塔真正愿意送到你兜里的东西。至于状态栏上那几条小竖线,它从来不是一个测量结果。它是一家手机厂商、一家运营商、外加一个远在硅谷或者深圳的产品经理,三方坐在一起商量之后,决定「让你看着还行」的一个小动画。

回到开头那家小餐厅。我朋友那台华为满格,我那台 iPhone 2 格。它们其实都没错,也都没真对,只是两家不同公司的产品经理对「你应该感觉有多安心」给出的两种不同答案。那个塔呢,它从头到尾就在餐厅外面,不多不少地发它那一点 dBm。

会变的,只有兜里那块屏幕替它说出来的话。

位旅人路过 次翻阅 初次见面