
昨天后台有位读者问我手头有一台吃灰多年的小米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/3GVoLTE开关对它来说形同虚设。卡槽位置和主卡设置都对之后再看状态栏。正常情况下电信或联通卡注册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 TelecomAPNctlteMCC460MNC11部分地区是03APN类型default,supl,ims承载系统LTE。如果这个配置下仍没有HD可以再把APN类型里的ims单独拆出来新建一个专门给IMS用的APNAPN字段填imsMCC/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_boolVoLTE相关carrier_volte_available_bool运营商是否支持VoLTEcarrier_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抓logcatadb 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已经解锁。没有解锁BLfastboot模式下无法写入任何分区。小米解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电信2GCDMA已大范围退网把电信卡换到卡槽1并设为数据卡卡在卡槽1但仍然没HDSIM卡未开通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的电信和联通卡焕发第二春。你自己动手过程中要是遇到其它特殊现象欢迎来交流。