Peter Cai

@PeterCxy

Some random guy out there. en_US / zh_CN

https://sn.angry.im/@PeterCxy Guestbook

坚果 Pro 2 开启电信 VoLTE 支持的方法 (ALPHA)

2018.12.01 更新

  • 已经有人对该方法进行了封装以便直接刷入,并且给出了使用该封装的更简单的教程,如果您不想折腾这么多请移步 http://luo2888.xyz/post/25.html
  • 实测证明在完成破解电信 VoLTE 以后再刷入官方底包更新不会导致破解失效 (最后测试所用底包版本为 2018-10-29), 如果不放心建议每次刷机前备份完整的 NV,推荐直接用高通的 QPST 工具备份一份 QCN 出来

原文

由于一些众所周知的问题,锤子科技至今未向坚果 Pro 2 推送电信 VoLTE 的配置文件。然而电信 VoLTE 已经于 2018 年 11 月 29 日正式开始试商用。作为购买了坚果 Pro 2 作为日用机和开发机的开发者,手机如果长时间不支持 VoLTE 实在是令人感到浑身难受,况且该机使用的硬件明显是应当支持电信 VoLTE 的 —— 同样使用该平台 (SDM660) 的红米 Note 5 就早早推送了电信 VoLTE 的基带配置文件。因此,我很早就有想法将红米 Note 5 的配置文件移植到坚果 Pro 2 上,无奈本地电信之前迟迟没有进行 VoLTE 测试。而今天总算跟着全国一起开放了 VoLTE 支持,我也总算可以将这个想法付诸实践了。

在继续阅读之前请注意,该方法由我在我的两部坚果 Pro 2 上测试通过,但是我并不知道它为什么可以工作(尤其是中间那一步为什么要把小米的文件整个覆盖进去一遍……)。 It just works. 如果您继续跟随这篇文章,您同意自行承担一切可能的后果。

首先,您需要准备一个已经 ROOT 过的坚果 Pro 2,并且请确保您使用的 ROM 有 VoLTE 支持(第三方ROM中,魔趣 8.1 以及由我维护的 Nitrogen OS 最新版本均支持)。然后,您需要确保您具有基本的 adb / 命令行操作知识。您需要下载以下文件并解压到手机存储卡备用

https://www.androidfilehost.com/?fid=11410963190603862029

在我的两部手机上,可以起作用的详细过程如下:(仅在 2018-09-04 版本的基带固件上测试通过,且升级底包/基带后您将需要重新执行这些步骤!)

  1. 使用 adb shell 进入手机的命令行,并运行 su 以进入 ROOT 用户
  2. 执行 mount -o remount,rw /firmware
  3. 执行 cd /firmware/image/modem_pr/mcfg/configs 进入基带配置目录
  4. 将该目录下的 mcfg_sw 拷贝到 sd 卡上作为备份以防出错后无法恢复 (cp -r mcfg_sw /sdcard/some/path/)
  5. 删除 mcfg_sw (rm -rf mcfg_sw)
  6. 将刚刚解压出来的文件中的 mcfg_sw.xiaomi.flash_first 复制到该目录并改名为 mcfg_sw (cp -r /path/to/mcfg_sw.xiaomi.flash_first ./ && mv mcfg_sw.xiaomi.flash_first mcfg_sw)
  7. 删除 /data/vendor/radio 目录 (rm -rf /data/vendor/radio)
  8. 重启手机,待出现信号图标以后再重启一次,此时开机进入系统应当是无法使用电信 4G 网络的状态(至少在我的两部手机上是这样的)
  9. 此时再次重复步骤 3 进入基带配置目录,再次重复步骤 5 删除 mcfg_sw, 然后将解压出来的文件中的 mcfg_sw2.working 以类似于步骤 6 的方式复制到基带配置目录并改名为 mcfg_sw
  10. 重启手机,此时在拨号盘中输入号码后应该就能看见视频通话选项了,出现该选项则说明 VoLTE 开启成功。您也可以通过拨号 *#*#4636#*#* 选择第一个 Phone Information 并在右上角的菜单中选择 IMS Service Status 来查看 IMS (也就是 VoLTE) 的注册成功状态。(这个 IMS Service Status 将只会显示卡槽 1 内的状态)

以上过程中,

mcfg_sw.xiaomi.flash_first 该目录是我从朋友的红米 Note 5 的相同目录 (/firmware/image/modem_pr/mcfg/configs) 中提取的配置文件,而 mcfg_sw2.working 是我将红米 Note 5 的配置文件中的 generic/china/ct 目录覆盖到坚果 Pro 2 配置文件中的 generic/china/ct 以及 generic/smartisa/ca/ct,并修改 oem_sw.txt 中的 hvolte_ovolte_op 而成。

原本我以为只要替换电信配置文件到坚果 Pro 2 自带的配置文件中就可以使用,但是当我完成备用机上测试以后尝试在主力机上使用这种方式却不可用。仔细回忆才想起来我在备用机上测试的时候曾经死马当活马医,把整个小米的配置目录都覆盖到锤子的目录上,结果当然是一切都不可用;但是当我做了这件事情以后,再替换回锤子自带的配置文件,只保留小米的电信配置文件,VoLTE 就奇迹般地可用了。这也是以上步骤中令人摸不着头脑的第 6 步的由来。

由于最近实在太过繁忙,以及太过激动于向大家分享这个成果,我还没有来得及仔细调查为什么一定需要第 6 步这样的不明所以的魔法步骤。我所知道的只有,如此操作是可用的。现在怀疑的是配置目录中有某些文件会向 EFS 中写入特定的参数,或者其实仅仅需要在单独替换了中国电信的配置文件以后使用高通 QPST 工具中的 PDC 来激活一下对应的电信 VoLTE profile 就可以不必使用第 6 步了。我现在并没有答案。

当然,也许甚至可以直接封装一个 NON-HLOS.bin 出来,让所有用户只需要线刷一下就可以用上电信 VoLTE。当然,这些事情都要等我有更多空闲的时候来慢慢研究……


You'll only receive email when Peter Cai publishes a new post

More from Peter Cai: