❗️ 注意:本教程仅适用于 Google Pixel (2016) 或 Google Pixel XL (2016),其他更新的机型并不适用。

高通现代的 SoC 理论上应该是支持众多 LTE 的频段,而很多针对中国大陆境外销售的手机可能对境内的运营商网络支持不够友好。Google Pixel 对于中国电信的支持情况就是一个例子,为了使中国电信能够在 Google Pixel 上正常使用,本教程教会告诉你如何通过非硬件层面上的方法(通过修改 modem )来实现这一目的。

基本要求

为了能够正常完成本次操作,你首先需要确保以下内容:

配置好 ADB 的环境变量

不懂的话就请网上自行搜索“ADB 环境变量”,本文不会讲解这一基本操作(敬请见谅

知道如何进入 bootloader 模式
  • bootloader 模式:在设备关机的情况下,长按 音量-键 + 电源键 ,进入如下界面即可。
知道如何进入 recovery 模式
  • recovery 模式:①.在设备处于 bootloader 模式的情况下,通过 音量+键音量-键 更换菜单选项,直到显示 Recovery mode ,然后 按 电源键 确认;②.随后手机会出现 No command 的界面;③.然后这时长按 电源键 ,3 秒后(电源键依然不要松),按一下 音量+键 (只要按一下就松开音量键),手机就会显示出 recovery 的功能菜单,如下第 3 张图所示。
确保已解锁 bootloader

关于解锁 bootloader 的操作可以看我上篇的文章的一个小节:

如果很不幸你的 Pixel 是 Verizon 版的就只能找某宝奸商付费解锁 bootloader 了。


❗️ 注意:如果你不想或没空自己移植 modem,请直接跳过过下面 移植 modem 的环节(之后直接按教程刷入移植得到的 modem.img 即可):

点击跳过“移植 modem”环节

移植 modem

❗️ 注意:由于 Google Pixel 和 Google Pixel XL 使用的是相同的 modem(通过二者 modem.img 的 sha256sum 值相同得出的结论),所以通过修改得到的 modem 文件是通用的。

刷入最新的 factory image

本教程是基于 Pixel 的最后一个系统版本修改 modem,所以请确保你的 Pixel 系统已是最新。factory image,即工厂镜像,通俗来说也就是所谓的“线刷包”。请根据你所持有的设备下载相应的工厂镜像:

设备 工厂镜像下载链接
Pixel sailfish-qp1a.191005.007.a3-factory-d4552659.zip
Pixel XL marlin-qp1a.191005.007.a3-factory-bef66533.zip
  1. 将手机重启到 bootloader 模式
  2. 解压下载好的工厂镜像
  3. 找到 flash-all.bat 文件,双击即可
  4. 完成后手机会自动重启

备份 Pixel / Pixel XL 的 modem

由于 Pixel /Pixel XL 的 Android 10 工厂镜像没有提供单独的 modem.img ,所以我们需要通过 TWRP(第三方 recovery)执行 dd 命令来实现对 modem 的备份。

设备 TWRP 下载链接
Pixel twrp-3.4.0-0-sailfish.img
Pixel XL twrp-3.4.0-0-marlin.img
  1. 首先根据你所持有的设备下载好相应的 TWRP
  2. 将手机重启到 bootloader 模式
  3. 启动到 TWRP,即执行命令:
1
fastboot boot *.img

命令里的 *.img 不需要手动输入,直接拖拽文件到 cmd 窗口即可,系统会自动填写文件相应的路径。如图:

  1. 最后,备份 modem

执行命令如下:

1
2
3
4
adb shell
dd if=/dev/block/bootdevice/by-name/modem_a of=/sdcard/stock.img
exit
adb pull /sdcard/stock.img F:\Downloads

命令里的 F:\Downloads 是备份的 modem (即 stock.img )存储在电脑上的路径,你可以自行修改,看图:

获取 OnePlus 3T 的 modem

更改基带文件的总体思路是:提取相同型号处理器的设备的基带文件(这里使用的是 OnePlus 3T)。为了得到 OnePlus 的 modem,所以我们需要 OnePlus 的工厂镜像来提取 modem。

设备 工厂镜像下载链接
OnePlus 3T OnePlus3THydrogen_28_OTA_083_all_2002201900_bf0fc8385b5547c0.zip
  1. 首先下载 OnePlus 3T 的工厂镜像
  2. 从工厂镜像压缩包找到 /firmware-update/NON-HLOS.bin ,提取出来即可

移植 modem

经过前期的准备工作,我们得到了

  • Pixel / Pixel XL 的 modem 镜像 stock.img
  • OnePlus 3T 的 modem 镜像 NON-HLOS.bin
文件名 下载链接
stock.img 链接
NON-HLOS.bin 链接

通过挂载 modem 镜像,我们可以对镜像里的文件进行修改,为了接下来的操作,我们这里需要用到搭载 Linux 系统 的电脑或虚拟机。以下命令均在 Linux 上运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1. 创建挂载点(stock 用于挂载 Pixel 的原始 modem 镜像,oneplus 用于挂载 OnePlus 的 modem 镜像)
mkdir stock oneplus
# 2. 分别挂载 Pixel 和 OnePlus 的镜像,挂载到相应挂载点上
sudo mount -o loop stock.img stock && sudo mount -o loop NON-HLOS.bin oneplus
# 3. 创建目录
sudo mkdir stock/modem_pr/mcfg/configs/mcfg_sw/generic/china
# 4. 复制文件
sudo cp -r oneplus/image/modem_pr/mcfg/configs/mcfg_sw/generic/china/ct stock/modem_pr/mcfg/configs/mcfg_sw/generic/china/
# 5. ❗️ 注意:使用 vim (或其他编辑器)编辑文件,将文件中的数字加 1
sudo vim stock/modem_pr/verinfo/ver_info.txt
# 6. 同步
sudo sync
# 7. 从各自的挂载点卸载
sudo umount stock oneplus
# 8. 重命名 stock.img 为 modem.img
mv stock.img modem.img

完成上述命令后我们就移植得到了 modem.img 啦。

下载移植得到的 modem 镜像

你可以使用自己移植得到的 modem 镜像( modem.img ),或者是下载本文提供的镜像:

文件名 下载链接
modem.img 链接

刷入 modem

手机进入 bootloader 模式,刷入 modem 镜像( modem.img ),cmd 执行这行命令即可:

1
fastboot --slot all flash modem *.img

命令里的 *.img 不需要手动输入,直接拖拽文件到 cmd 窗口即可,系统会自动填写文件相应的路径。如图:

❗️ 注意:刷入 modem 后必须恢复出厂设置,之后重启即可,执行以下命令:

1
2
3
fastboot erase userdata
fastboot erase frp
fastboot reboot

网络去叉

状态栏的网络信号有个叉,这是为什么呢,又该如何解决?详情请参见:

(类)原生 Android 网络去叉/叹号 Android 5.0 - 10.0

评论