Google Pixel 5 中国移动短信“瘫痪”排查全记录:当 VoLTE 能打电话却无法收发短信
这段时间手上的备用机 Google Pixel 5(代号 redfin)突然遇到了一个极其诡异的问题:中国移动卡只能接打电话和上网,但短信完全“失联”——既无法发送,也无法接收。
这台 Pixel 5 此前早已解锁 Root 并刷入了第三方的 VoLTE/VoWiFi/5G Magisk 模块,长期以来通话和短信都非常稳定。最近打电话(VoLTE 高清通话)和蜂窝数据一切正常,唯独短信功能戛然而止,排查起来着实踩了不少坑(我真的很喜欢 Pixel 系列的设计风格和原生安卓体验尽管性能拉完了,这台 Pixel 5 我之前的用途是折腾各种东西,最近则是用于防止搞学的时候分心毕竟这台手机基本啥日常软件都没装,年底考完研会马上入手 Pixel 11 Pro 并且这台 Pixel 5 将作为实验机继续服役)。
本文记录了从抓包诊断、MBN 模组探究、Carrier Services 排查到最终完整修复的全过程,希望能给遇到类似“洋垃圾”或老款 Pixel 在国内运营商网络下短信故障的朋友提供一份参考。
1. 故障现象与环境信息
故障表现
- 移动数据:4G/LTE 网页浏览、测速均正常。
- 语音通话:接打电话完全正常,且明确走了 VoLTE / IMS 链路。
- 短信收发:彻底瘫痪。发短信提示发送失败,别人发来的短信也完全接收不到。
- 排除法:更换短信应用、检查应用权限、检查默认短信订阅,均无法解决“收与发同时失效”的问题。
设备环境
- 设备:Google Pixel 5 (
redfin) - 系统版本:Android 11 (Build:
RD1A.200810.022.A4,2020 年基带g7250-00016-200911-B-6826885,没有更新到 Android 14 是因为 11 对我而言更方便折腾一些东西@@) - 运营商:中国移动 CMCC (MCC-MNC
460-00) - Magisk 模块:刷入了
Pixel5VolteVoWiFi(v1.01),该模块主要通过替换 Qualcomm MBN 配置文件来强制开启国内运营商的 VoLTE/VoWiFi/5G 支持。
小结:这是一套非常早期(2020年)的 Pixel 5 官方基带与第三方 MBN 模块组合。随着运营商网络侧策略的不断演进,老旧基带与第三方配置文件之间出现兼容性“打架”的概率较高。
2. 基础项排查:不是配置错选,也不是应用问题
在掏出 adb logcat 大杀器之前,先通过 dumpsys 排除了几种常见的低级错误:
默认 SMS 订阅正常:
1
adb shell dumpsys isub输出显示
defaultSmsSubId=3,语音、数据和短信的 SubID 均指向当前移动卡,不存在双卡或订阅选错的情况。默认短信应用与权限正常:
1
adb shell dumpsys rolecom.google.android.apps.messaging依然占据SMSrole,且RECEIVE_SMS/SEND_SMS权限均被授予,SmsDeliverReceiver广播接收器也完好。网络注册状态表面“良好”:
1
adb shell dumpsys telephony.registry显示
mVoiceRegState=0(IN_SERVICE),availableServices=[VOICE,SMS,VIDEO]。基带表面上宣称支持 SMS,但底层传输链路显然出事了。
3. 核心证据:Radio Logcat 抓出真凶
为了定位到底是在哪个环节挂掉的,抓取 Radio Buffer 日志并尝试发送短信:
1 | |
在几百行日志中,捕获到了本次诊断最为关键的一组日志:
1 | |
日志深度剖析:
up=true, reg=true:说明 Qualcomm IMS 服务本身已经成功注册到了中国移动的网络上(因此 VoLTE 通话才正常)。cap=false:核心罪魁祸首! 运营商/基带在 IMS 协商中,没有发布 SMS over IMS 能力!isIms()=false:Android 系统发现 IMS 并不具备短信能力,只能强制回落(Fallback)到传统的SEND_SMS(CS / NAS) 路径。SMS_FAIL_RETRY / SEND_SMS error 10:回落到传统 RIL 路径后,基带和移动网络直接予以拒绝。
这就是为什么“收发同时失效”——因为 IMS SMS 能力丢失,发短信回落被拒,收短信的 IMS 管道也未建立!
4. 开始修复:MBN 替换与副作用测试
既然知道了是 IMS 协商出来的 SMS capability 为 false,且与 Qualcomm 平台的 MBN(Modem Configuration Builder)息息相关,我开始尝试替换 Magisk 模块中的 MBN 文件。
查看当前系统的 MBN 加载日志(/data/vendor/radio/extended_logs/extended_log_mcfg.txt),发现系统加载的居然是通用测试配置 Volte_PTCRB,而不是移动专属配置。
于是开始做实验(注意:实验前已对原始 PTCRB MBN 进行了 SHA-256 备份):
试验 A:替换为 CMCC Commercial MBN (Volte_OpenMkt)
将模块内的 Volte_PTCRB 替换为移动商业版 MBN (generic/Pixel/China/CMCC/Commercial/Volte_OpenMkt/mcfg_sw.mbn) 并重启:
- 结果:传统的 RIL 短信发送瞬间成功!并且立刻接收到了多条积压的
UNSOL_RESPONSE_NEW_SMS,短信收发完全恢复! - 致命副作用:短信虽然活了,但 Qualcomm IMS 语音显示未注册!也就是说 VoLTE 电话打不通了,变成了“顾此失彼”。
试验 B:替换为 CMCC Lab / OEM Test MBN
分别尝试替换为 CMCC/Lab/Conf_VoLTE 和 OEM/Lab/Volte_Test:
- 结果:IMS 语音依然无法稳定注册,放弃该方案。
5. 峰回路转:刷新注册上下文与最终修复
既然替换 MBN 会破坏 VoLTE 通话,我决定重新将 MBN 还原为原始模块带的 Volte_PTCRB 文件(经过 sha256sum 比对,完全一致)。
在恢复原状后,我执行了一套强制刷新 IMS 注册的操作:
1 | |
奇迹时刻:靠夭终于搞好了
重启完成后,再次抓取 Radio 日志:
1 | |
cap=true 重新亮起!
随后进行实际测试:
- 短信发送:秒发成功。
- 短信接收:秒收成功。
- VoLTE 通话:主叫/被叫均清晰稳定,明确走 IMS 管道。
6. 总结与根因复盘
根因判断
本次故障既不是短信 App 崩溃,也不是短信中心(SMSC)错误,而是旧基带/第三方 MBN 模块与中国移动网络侧在某次基带重新注册时,IMS SMS 能力协商状态发生了异常卡死(IMS 已注册,但 capability=false),导致 Android 尝试回落到不支持的传统 GSM/LTE NAS 途径而被网络拒绝。
在替换其他 MBN(如 CMCC Commercial)再还原恢复、并辅以 cmd phone ims enable 重新触发注册后,成功刷新了基带的 Modem NV/PDC 运行时配置以及网络侧的 IMS 注册上下文,使 cap=true 重新下发。
给 Pixel / 刷机用户的防复发指南
如果你的类原生 / Pixel 设备也遇到了“能打 VoLTE 电话但无法收发短信”的诡异现象,建议按以下步骤排查:
- 不要盲目清除短信应用数据或恢复出厂设置(这解决不了基带与 IMS 协商问题)。
- 抓取 Radio 日志定位:重点看
1
adb shell logcat -b radio -d -t 1000 | rg -i 'ImsSmsDispatcher|SEND_SMS'ImsSmsDispatcher中的reg=与cap=状态。 - 最小风险恢复命令:
1
2adb shell cmd phone ims enable -s 0
adb reboot - 不要随意硬替换 MBN:部分 MBN 能够恢复传统短信,但极易破坏 VoLTE 通话注册。必须保证
VoLTE 通话 + SMS over IMS双重验证通过才算修复完成。 - 长期建议:老旧固件(如 2020 年基带)与现代基站策略兼容性较差,若频繁复发,建议将整机包和基带升级到更稳定、更新的 ROM 版本,除非像我一样对 ROM 版本有特殊需求那就只能受着了TT