昨天后台有位读者问我:手头有一台吃灰多年的小米5,翻出来插了张电信卡当备用机,结果能上网、不能打电话,拨号键按下去一两秒就自动断开,短信也彻底没动静,状态栏死活不见HD图标。他想让我专门写一篇小米5的VoLTE排障。
正好这个系列第二篇就用它来讲。电信卡、联通卡在小米5上的VoLTE问题,和移动卡完全是两个难度级别。移动卡基本装上就能用,电信和联通卡则需要一点姿势和运气。这篇文章我会把排查链路、系统层隐藏开关、modem固件刷入、甚至NV项修复都完整过一遍,手把手带着走完整个排障过程。
小米5说是2016年的老将,但本质问题到今天也没变:硬件支持VoLTE,软件和运营商侧的适配却没跟上。这篇文章适合手里还有小米5、小米5s、小米5s Plus,或者其他骁龙820/821老机型的朋友参考,电信卡和联通卡双卡用户优先看。
1. 小米5的VoLTE困局:移动卡正常,电信联通卡为何失声
1.1 先做最基础的确认:卡槽选择和HD图标
排障之前,先搞清楚小米5这个机型本身的硬件限制。它不是双4G待机,这一点非常关键,很多人卡了一整天都没想到是卡槽的问题。
小米5的两个卡槽能力并不对等:卡槽1支持4G网络,可以注册LTE并承载VoLTE;卡槽2只支持2G待机(联通卡在卡槽2时还可能支持3G,但电信卡在卡槽2基本等于废了)。如果你把电信卡插在卡槽2,手机根本没有能力让电信卡注册到4G网络,那VoLTE自然是一句空话。很多人以为全网通手机两个卡槽随便插,放到2016年的小米5上,这是不成立的。
所以第一步就是物理层面的确认:需要VoLTE的那张卡,必须插在卡槽1,并且把它设为数据卡。注意,不是设为"通话默认卡"就行,而是要在系统设置里把这张卡指定为4G数据卡。小米5的双卡逻辑在MIUI里做了限制:只有数据卡才能使用4G,非数据卡最多只能待机在2G/3G,VoLTE开关对它来说形同虚设。
卡槽位置和主卡设置都对之后,再看状态栏。正常情况下,电信或联通卡注册VoLTE成功后,状态栏信号旁边会出现一个HD图标,表示当前通话承载在高清语音上。没有HD,说明电话是走传统2G/3G回落通道,或者是完全不可用的状态。
1.2 根因拆解:硬件支持但软件和认证没跟上
小米5用的是骁龙820平台,集成X12 LTE基带。单纯从硬件能力上看,支持VoLTE完全没问题——它最初发布时就已经支持移动VoLTE。那为什么电信卡和联通卡在小米5上这么折腾?
这里有三层原因叠加在一起:
第一层,运营商商用时间差。移动VoLTE在2015年底就开始全国商用,小米5在2016年初上市时,移动VoLTE已经是大势所趋,所以小米在出厂系统里就做了完整的移动VoLTE适配。而电信VoLTE到2018年底才真正商用,联通VoLTE更晚,2019年才开始逐步放号。小米5上市时,电信和联通的VoLTE标准还没定型,厂商自然没法提前做适配。
第二层,运营商终端认证缺失。电信和联通要放行VoLTE,需要终端型号先通过运营商的IOT测试认证,把终端能力参数登记到网络侧。小米5这种老机型,早期压根不在电信/联通VoLTE终端清单里。后来MIUI陆续推送了更新,部分版本补上了VoLTE配置,但如果你刷了某些第三方精简包,或者停留在很旧的MIUI版本,缺失的部分就一直缺失。
第三层,modem基带固件的针对性优化。VoLTE不只是系统设置的问题,还需要基带固件里写好对应运营商的IMS配置、NV项参数。小米后续在MIUI开发版里针对电信VoLTE做了大量适配,如果你的系统还停在一个老版本,modem里的VoLTE参数很可能就是残缺的。
这三层原因叠加,导致同一个现象:移动卡插上去有HD,电信联通卡插上去无声无息。这不是手机坏,是适配没到位。
1.3 短信这个"盲区"最容易踩坑
很多人排查VoLTE只盯着通话,结果通话修好了,短信还是收不到,又回来问怎么回事。
电信和联通的VoLTE短信机制不太一样,但有一个共同点:IMS网络注册成功后,短信会优先走IMS通道(即VoLTE短信)。如果IMS注册不成功,手机会尝试回落到传统2G/3G网络走CS域短信。
问题来了:电信的2G是CDMA,在很多城市已经退网或信号极差,小米5在电信卡没有VoLTE能力的情况下,短信收发会非常不稳定。联通稍微好一点,因为2G/3G退网进程慢一些,但在一线城市的某些区域,联通2G也早就拆得没影了。
所以结论很简单:小米5上的电信卡/联通卡如果连HD都出不来,短信问题根本不是单独排障能解决的,核心矛盾就是VoLTE注册。IMS一旦注册成功,只要短信中心参数不丢,短信基本自动恢复正常。
2. 不动刀的第一步排查:SIM卡、APN和MIUI设置
2.1 SIM卡侧到底要不要"开通"什么东西
先说一个最容易被忽略的前提:VoLTE不是SIM卡插进去就有,它是在运营商侧有一个业务开通状态。2019年之后电信和联通基本是默认开通VoLTE,但你手里的SIM卡可能是好几年前的老卡,存在两种极端情况:
- 运营商系统里根本没开通VoLTE功能;
- SIM卡本身太老,USIM卡上缺少VoLTE开户数据。
这两种情况处理方式很直接:打运营商客服电话(电信10000、联通10010),让客服查一下这台号码的VoLTE/高清通话业务是否处于开通状态。没开通就让对方开,客服说"默认开通"也要坚持让对方再确权一次。遇到过不止一次,后台显示开通,但实际上是半开状态,重新发一次开通指令就恢复正常了。
如果是老SIM卡,客服会建议去营业厅免费换新卡。不要觉得麻烦,换新卡能顺带解决不少隐性问题,比如4G网络附着不稳、IMS注册失败等。
2.2 MIUI里的开关:藏在双卡设置里的"高清通话"
确认SIM卡侧正常之后,回到MIUI系统设置里翻开关。
路径是这样:设置 → 双卡和移动网络 → 选中对应SIM卡 → 打开"VoLTE高清通话"开关。不同MIUI版本叫法略不同,有的版本直接叫"高清通话",有的叫"启用VoLTE"。
这里有一个很多教程没讲清楚的细节:小米5这种老机型,VoLTE开关往往和数据卡身份绑定。如果你设置了卡槽1为数据卡,那VoLTE开关只对卡槽1生效;卡槽2即便显示有开关,也基本是个摆设。所以上文说的"让电信卡插卡槽1并设为数据卡"在设置层面同样成立。
有的MIUI版本里VoLTE开关是隐藏状态,你在设置里找不到。这时候可以用拨号盘输入*#*#86583#*#*,手机会有个短暂的反应(比如设置页面闪现),VoLTE菜单就会被呼出来。这是小米的工程调试代码,实测在MIUI 9/MIUI 10/MIUI 11上有效。
顺带检查一下网络模式选择:设置 → 双卡和移动网络 → 网络类型选择,确保不是锁定在"仅2G""仅3G"上,优先选"4G优先"或"自动"。
2.3 APN配置:电信卡千万别用错接入点
APN(接入点名称)很多人不重视,但VoLTE的通话和短信恰恰对APN很敏感。
电信4G卡默认的APN情况比较特殊。我在小米5上实测下来的稳定配置是:
- APN名称:随意填,比如"China Telecom";
- APN:
ctlte; - MCC:
460; - MNC:
11(部分地区是03); - APN类型:
default,supl,ims; - 承载系统:LTE。
如果这个配置下仍没有HD,可以再把APN类型里的ims单独拆出来,新建一个专门给IMS用的APN,APN字段填ims,MCC/MNC保持一致。
联通卡的配置一般不用动,默认的3gnet或wonline都能用,关键是不要手贱把MNC改成别的。经常有人把联通MNC从01改成别的数字,结果4G数据都上不去,更别谈VoLTE。联通卡如果4G正常但没HD,多数情况下问题不在APN。
注意:APN类型里的
ims字段,如果运营商网络下发了IMS配置,手机会自动创建"IMS"这个APN,不需要你手动新建。你改的是数据APN,改完之后记得点右上角保存,并且在APN列表里选中它。
设置完APN之后,建议顺手重启一次手机。APN的生效不是即时的,尤其电信卡,切换APN之后系统要重新发起网络附着,重启能省去很多"为什么还不生效"的等待时间。
3. 系统层隐藏开关与运营商配置:没root也能折腾的进阶排障
3.1 工程师菜单、隐藏代码和小米5版本差异
如果SIM卡、APN、基础开关都弄过了,HD还没出现,那就要往系统层挖了。
先打开拨号盘的工程师菜单,输入*#*#4636#*#*,进入"手机信息"页面。这个页面能直接看到:
- IMS注册状态:显示"已注册"说明IMS已经成功附着,没注册则说明网络侧或手机侧有问题;
- 网络类型:确认当前卡是否真的注册在LTE上,如果显示在WCDMA或GSM,说明4G都没附着成功,VoLTE自然无从谈起;
- 服务状态:确认是不是有"服务"而非"仅限紧急呼叫"。
这个界面是VoLTE排障最重要的"仪表盘",多花两分钟盯着看,比瞎猜强得多。
小米5的系统版本差异也要心里有数。国行MIUI开发版对电信VoLTE的支持通常比稳定版更及时,因为开发版会带上最新的运营商配置。如果你的机器还停在MIUI 8或者老MIUI 9,建议至少升到MIUI 10/11开发版以上再排查。不过这里说的升级是指官方MIUI,如果你现在刷的是第三方移植包,那VoLTE配置往往是残缺的,优先考虑刷回官方MIUI再继续。
3.2 carrier config里到底有什么,怎么看
Android系统里有一个CarrierConfig的概念,直白说就是运营商配置文件。系统根据SIM卡的MCC/MNC号加载对应的配置,决定要不要显示VoLTE开关、IMS短信开关等一系列功能。
想看你当前卡对应的配置是否完整,可以连上ADB,执行:
adb shell cmd carrier_config get --mccmnc 4601146011是电信的MCC/MNC码,联通是46001,移动是46000。执行后系统会打印出一大堆配置项。重点看这几个:
ims_vt_enabled_bool:是否支持IMS视频通话;volte_vt_enabled_bool:VoLTE相关;carrier_volte_available_bool:运营商是否支持VoLTE;carrier_volte_provisioned_bool:是否已配置VoLTE服务。
如果这些关键字段输出是false或者压根没有,说明系统在当前ROM里没有加载完整的运营商配置,这就是VoLTE开关不出现、功能不可用的直接原因。
不过这个cmd carrier_config get命令在部分老MIUI上可能不好使,命令不识别的话,可以用另一个方式查看:
adb shell settings get global volte_vt_enabled adb shell settings get global enhanced_4g_mode_enabled这两个全局设置项能反映VoLTE开关是否处于打开状态。值为1是开,0是关。
3.3 用日志判断IMS注册失败发生在哪一侧
如果IMS状态一直显示"未注册",需要用日志判断是手机侧的问题还是网络侧的问题。
连上ADB抓logcat:
adb logcat | grep -i ims重点看几个关键词:
IMS_REGISTER_FAILED:注册失败,后面通常会带一个原因码;USER_NOT_REGISTERED:用户未注册,通常是网络侧没开通业务或终端不在白名单;SERVICE_DEREGISTERED:被网络侧主动注销,常见原因是欠费、业务未开通、或IMS APN配置错误。
如果你看到大量IMS_REGISTER_FAILED且原因码是403,大概率是运营商侧鉴权失败,也就是号码没开通VoLTE业务,或者SIM卡太老不被网络识别,回到第2.1节去处理运营商侧。
如果原因码是480或者其他非403码,更可能是手机侧配置不全,比如modem固件缺少IMS配置,这就得往刷新固件的方向走了。
看日志这个操作虽然麻烦一点,但能有效避免瞎折腾。否则你刷了半天modem,结果发现其实是号码欠费停机,那就很尴尬了。
4. 硬核解法:刷modem固件与NV项修复(风险自负)
4.1 为什么"刷modem"能解决小米5的VoLTE老毛病
前3章把软设置都排查完,如果电信/联通卡的HD还是出不来,问题大概率出在modem基带固件上。
小米5的modem分区(modem.img)里保存着基带处理器运行的固件,它负责4G网络附着、IMS注册、语音编码等底层工作。同一颗高通X12基带,因为不同时期编译的modem固件里集成的运营商参数不一样,实际表现会差很多。早期固件没有适配电信VoLTE计费开关和MOS语编解码参数,后面MIUI版本里才逐步补上。
所以刷对应版本的新modem固件,本质上是把基带里的VoLTE适配补全。
哪些modem固件比较靠谱?我的建议是:优先找官方MIUI开发版线刷包里的modem分区,因为开发版的运营商配置一般是最新的。MIUI不同版本间的modem差异其实比较大,没必要追最新,找自己机器能稳定运行并带有VoLTE配置的版本就行。
警告:刷modem属于有一定风险的操作。操作不当可能导致无信号、IMEI异常、基带版本不匹配等问题。整个过程请务必谨慎,并提前做好完整备份。
4.2 刷机实操流程:从解锁BL到fastboot命令
在动手刷modem之前,确认小米5的Bootloader已经解锁。没有解锁BL,fastboot模式下无法写入任何分区。小米解BL锁的流程在官网上有,去小米解锁官网用账号申请即可,等待时间看官方审批。
解锁成功之后,下载好对应的MIUI线刷包,解压出里面的modem.img。接下来的操作分两步。
第一步,手机完全关机,同时按住音量下+电源键进入fastboot模式,用数据线连接电脑。确认驱动正常,执行:
fastboot devices能看到设备ID就说明连接成功。
第二步,刷入modem分区:
fastboot flash modem modem.img刷完之后执行fastboot reboot重启。整个过程不到一分钟,快得很。
重启后先别急着下结论,按第1.1节的方法确认状态栏是否有HD,同时进*#*#4636#*#*看IMS注册状态。如果HD出来了,直接进入实测环节:给另一个手机拨个电话,再发条短信,确认通话和短信都正常。
给一个额外的建议:刷modem之前,先用TWRP做一个完整的系统备份(包括modem和nvdata分区)。万一刷完出现信号问题,可以随时还原。没有TWRP的,至少把原来版本对应的modem.img存档留在电脑里,方便回刷。
4.3 刷完仍然不行的收尾手段:NV项和QCN
如果刷了新款modem依然没HD,问题可能藏在NV项里。
NV项是基带芯片内部的非易失性参数存储空间,它记录了射频校准、运营商偏好、eHPLMN等数据。老手机在长期使用过程中,NV项可能残留偏离值,导致新modem固件里的VoLTE相关参数无法正常生效。
这一层操作对小白来说难度很高,我简要说明思路,不建议没有经验的朋友盲目模仿:
用QXDM软件连接手机,在NV浏览器里查看Ims相关NV项是否完整,比如IMS_AUTHENTICATION、SIP_PARAMETERS、VoLTE_QOS等关键条目。如果发现缺失或者和正常机型不一致,需要用同版本小5上的QCN文件做对比,手动写入正确的NV值。
QCN是基带的完整配置备份文件,正常状态下可以通过DFS工具从手机里读出来。修复NV项之前一定要先备份自己当前的QCN,万一改乱了,还能恢复原状。
这一套操作的风险在于:NV项写错一个值,轻则没信号,重则IMEI丢。除非你确定自己知道在做什么,否则我更建议下面的路线:如果刷modem都无法解决VoLTE,说明这台小米5的基带和当前运营商网络的兼容性确实到头了,换一张支持的机型才是最高效的选择。
4.4 给手残党和小白的安全建议
刷机这件事,放在2024年的今天其实技术门槛已经很低了,但风险还是真实存在的。给几个实在的建议:
- 一定先备份:哪怕只刷一个modem分区,也要以防万一。很多人觉得"我就刷个modem而已",结果刷完没信号,又没有备份,只能重新刷全量线刷包。
- 核对机型再下载:小米5有标准版、高配版、尊享版之分,不同版本主板略有差异,但modem固件通用性比较高。最稳妥的做法是认准国行版线刷包,别下错成其他地区版本,海外版的modem频率和运营商配置可能与国内网络不匹配。
- 别在刷机状态下断电:一台砖机恢复起来难度大,浪费时间。刷的时候确保电脑接电源、手机电量在60%以上、USB线质量过关。
- 刷完重新设置APN:刷modem不会动APN,但如果之前手滑重置过,记得依照第2.3节重新检查一遍。
如果看完这些还是觉得虚,那就别刷了。先试试第2章和第3章的软设置,能解决最好,解决不了就接受小米5在电信/联通VoLTE上的残缺,把它当个纯游戏机或WiFi播放器用,不太影响它的备用机定位。
5. 实测排错速查:按现象快速定位问题
5.1 现象-原因-处理对照表
写了这么多,最后整理一个速查表。遇到问题先按表格对号入座,能少走很多弯路。
| 现象 | 可能原因 | 处理方案 |
|---|---|---|
| 电信卡在卡槽2完全无法通话 | 卡槽2只支持2G,电信2G(CDMA)已大范围退网 | 把电信卡换到卡槽1并设为数据卡 |
| 卡在卡槽1但仍然没HD | SIM卡未开通VoLTE业务 | 致电客服重新开通高清通话业务 |
| 状态栏没HD但4G上网正常 | IMS未注册,可能APN缺ims或modem固件旧 | 按2.3改APN,无效后按4.2刷modem |
| 有HD但打电话被挂断或听不到声音 | IMS注册不稳定,通常是modem版本的编解码参数不匹配 | 刷对应MIUI版本的modem,测试不同版本 |
| 能通话但短信收发不了 | IMS短信通道异常 | 检查APN类型是否含ims,确认SIM卡业务状态 |
| 联通卡有HD但通话自动回落3G/2G | 网络侧或终端未协商成功,可能是modem里联通VoLTE参数不全 | 更新modem固件,或确认手机版本为较新MIUI开发版 |
| 刷完modem后无服务 | 刷入了不匹配的modem固件,或NV数据异常 | 回刷原版modem,或恢复QCN备份 |
5.2 几个让我印象深刻的翻车案例
排障过程中遇到过不少"看起来是A问题,实际是B问题"的情况,挑三个比较典型的分享出来。
案例一:电信卡插在卡槽2,状态栏显示4G但无法通话。有朋友说他的电信卡明明有4G信号,为什么不能打电话?查了半天才发现,他看到的4G是卡槽1上移动卡的信号,电信卡在卡槽2根本只显示"CDMA"或"无服务"。这种混插组合非常容易误判。小米5的双卡显示逻辑里,副卡信号会显示在主卡旁边,不仔细看很难发现其实副卡的语音通道一直都不通。
案例二:有HD图标但不能接电话。小米5刷了某个移植版miui之后,电信卡状态栏确实显示了HD,但来电不响铃、拨出无声音。后来看日志发现IMS注册状态虽然是"已注册",但SIP信令里REGISTER消息返回的是401未授权,说明modem里的IMS鉴权参数和网络侧对不上。最终刷回官方MIUI10开发版的modem后恢复。这个案例说明,HD图标不代表VoLTE链路完全健康,还是要结合日志判断。
案例三:联通卡在小米5上只能打电话不能上网。这个比较冷门:联通卡设成主卡后,VoLTE通话正常,但上网时经常掉3G。排查后发现是APN接入点没有匹配到正确的承载,后来把APN类型从default改成default,supl,ims并确保承载系统是LTE,问题解决。联通卡用户如果在小米5上遇到类似情况,优先检查APN承载。
5.3 最后的经验之谈
小米5作为2016年的老旗舰,在VoLTE这个大问题上,给我的整体感觉是:能用,但别指望它像新机一样省心。移动卡体验接近完美,联通卡经过适当配置后也能达到可用状态,电信卡相对挑版本、挑网络环境。
如果你已经按文章里的步骤一步步排查下来,最后HD还是出不来,我的建议是别死磕到底。可以尝试换一个MIUI版本(比如从稳定版换到开发版),再给modem两次机会;如果依然无解,很可能就是这台手机与当前区域的网络侧兼容性彻底到头了。把它降级为WiFi娱乐机、闹钟、MP3播放器,或者直接换一台新手机,都比继续耗时间强。
另外给还在折腾的人一个小技巧:电信卡开通VoLTE后,如果HD图标时有时无,试试在设置的"双卡和移动网络"里把网络类型从"4G优先"切成"仅4G"再切回来,强制手机重新注册一次IMS。这个方法不止小米5,很多高通老机型都适用,实测有一定概率能唤回HD。
希望这篇能帮你把小米5的电信和联通卡焕发第二春。你自己动手过程中要是遇到其它特殊现象,欢迎来交流。