Google Pixel XL 支持电信卡

前几天托兄弟从深圳买回来三台 Pixel 一代,其中一台是 XL。要说现在电子产品的贬值那是真叫厉害,这么好的机子,4G 的运行内存,32GB 的存储,外观也基本完好,一台才 400 来块。

根据信息,Google Pixel XL 在硬件上是全网通的规格,然鹅,却人为去除了对中国电信的支持。于是,西方不亮东方亮,民间高人这几年来积累了不少变通的方法。本人对电信基本没有使用过,去年底还有电信的客服打电话劝我转网,被我婉拒,但后来却阴差阳错拥有了一张来历神奇的电信卡。

在综合网上的各种信息之后,对 Pixel 系列对通讯制式支持的方法有了个大概了解,不知是否通用,按理说应该是的。

对于 Pixel 一代,根据参考资料之一 —— https://blog.csdn.net/boss_crabe/article/details/80908635,号称史上最详细的帖子 —— 所述,增加电信支持的要点可以归结为如下:

  1. 解锁 bootloader 先;
  2. 将系统 root(即原文中的刷入一个现成的 root 后的系统分区映像);
  3. adb 修改手机端 USB 的能力,桌面端安装与该能力对应的驱动;
  4. 用基带厂商高通的工具(即文中的 QPST)修改手机的 EFS 中的内容,进入 policyman 目录,找到 carrier_policy.xml 文件,将之修改或者替换为合适的副本;
  5. 恢复为非 root 系统(即原文中的将正常系统分区映像刷回)。

上面的方法应该比较老了,而且需要用 root 后的系统来辅助,感觉有点重。另外的一个帖子,则自称是最简捷http://bbs.gfan.com/android-9531535-1-1.html),原文是“按照文本操作傻瓜都会”。

  1. 从链接 https://pan.baidu.com/s/1zH1bXxdeLnOiRpqG0Zm8ZQ 提取文件,提取码 9lac
  2. 刷第一个 modem 分区:fastboot flash modem_a modem.img
  3. [可选] 刷第二个 modem 分区:同上,只需把 _a 改成 _b
  4. [必需] 恢复出厂设置(请提前备份数据):两次分别执行 fastboot erase userdatafastboot erase frp
  5. 按手机电源键开机。

这其实就是刷入了前人已经修改好的 modem.img。据说要想同时刷 _a 和 _b,执行这一条即可:fastboot --slot all flash modem modem.img,而且刷完后用联通卡的要设置一下 APN。这个方法比较不错,但作为一个好奇心比较强且有点强迫症的老程序员,最感兴趣的是别人怎么把 modem.img 改出来的,因为上述操作很可能当时并非是针对老夫手机上用的 Android 10(尽管是阴差阳错被动升级上来的)。

然后就发现了有人在论坛里问了与我脑海中的疑惑相同的问题,“请问下,Pixel XL 安卓 10 怎么破解电信 4G?”。该贴的五楼回复了一个自己动手定制 modem.img 的帖子链接(而六楼则直接回复的就是上述方案二),http://bbs.gfan.com/android-9571646-1-1.html,查看帖子可知,这一方法尽管写作时是针对 Android 9,但后续七楼、九楼的回复和五楼一样,均表示在 Android 10 上已经实作成功。大喜,正可解我前文所惑。这个手工打造可用 modem.img 的帖子,将其主要内容引用如下。

原理很简单,就是将别的相近机型(本例选了一加 3T)的基带配置文件移植进 Pixel 的基带镜像(modem.img)中。修改 modem.img 需要Linux,不过 macOS 也可以,只是步骤 4 挂载命令稍有区别,其他命令也相应调整。

1. 下载 Pixel 的线刷包
https://developers.google.com/android/images
解压后再将得到的 image-sailfish-***.zip 文件解压,取出 modem.img

2. 下载一加 3T 线刷包
https://www.h2os.com/download
解压后在 firmware-update 目录下取出 NON-HLOS.bin

3. 给 modem.img 增加大约 400KB 容量

4. 挂载镜像
Linux:

macOS:

以上命令会输出类似 /dev/diskN 的结果,再使用结果分别执行:
hdiutil mount /dev/diskN

5. 移植基带配置文件

6. 保存镜像

macOS 则可使用磁盘工具直接推出镜像。

7. 启动到 bootloader 模式

8. 刷写镜像

9. 重启完成破解

引用完毕。作者一开始也表明,他参考的是 https://forum.xda-developers.com/pixel-xl/how-to/guide-enable-china-telecom-lte-t3782538。在后一文中可知,前文方案二的步骤 4 里 fastboot erase frp 应该不是必需的,因为这老兄写着这条命令的目的是“(Optional. To skip setup wizard.)”。而且提到了一句原理:Why? On initial SIM insertion, Android copies carrier config files into data and then flashes one of them into modemst. I just changed all mcfg_sw.mbn files into 1+3T’s, which supports CT. 接着还附上了他提取出来的 mbn 文件的网盘链接。

更新一:本文写就一天后,已经将 Pixel XL 一代的最新官方 ROM 中的 modem.img 改造后成功刷入,电信 4G LTE 使用尚未发现问题。在实际操作中,特意省去了前文方案二的整个步骤 4,也没有异常。

最后,附录一则适用于 Pixel 较新的三代机的操作过程,发现于一个老家伙的搏客(https://blog.kangkang.org/index.php/archives/382)。他的宣传语是“最干净”,比较符合我老人家的口味。从其描述来看,和一代机已经有所不同,首先就是要把 dm-verify 禁掉(通过修改 vbmeta 分区,这个分区我头一次注意到),然后到 vendor 分区里去修改适当的文件即可(显然,mbn 配置文件的位置发生了变化)。此老兄貌似也是一位中年大叔,行文对技术手法和细节的取舍得当,深得吾心。而且学到了新的知识,例如修改官方 ROM 刷机脚本 flashall 中的参数,把 -w 去掉即可免于清除数据,而且从其中的一条语句 fastboot boot trwp-xxx.img 还让我看到了一种不用执行先刷后使用再恢复这三件套标准步骤就可以启动一次指定 recovery 的可能性(大概率是可行的,就差哪天实践一下)。

 

9 条评论


  1. 请问大佬能否提供已经修改好的Pixel XL 安卓10版本能用的modem.img?我没有Mac和Linux环境>_<

    回复

    1. 找了好几台电脑了,工具什么的都找了个差不多,但是没有找到当时的成品。自己做吧。

      回复

      1. 在mount pixel镜像的时候出现错误:
        hdiutil: mount failed – 无可装载的文件系统

        回复

        1. 看来你是在 macOS 上操作的,我没有在其上实际完整操作此过程。要么你仔细检查一下你执行的命令,尤其是和 image class 相关的参数是否正确并依然被支持,要么你搞个 Linux 环境来操作。个人建议后者,文件系统处理起来亲和度更高一些。

          回复

        2. 对了,你得看准前面 hdiutil attach 命令的输出,尤其是那个 diskN 里面的 N 是几。

          回复

          1. Linux 也是一样的,我就是个先用了 Linux 不行,才用的 Mac。

            唯一和你教程不同的地方在于,我用的是 pixel5 的镜像(Android 11),这里面有个 radio.img。

            pixel5 上 flash 的命令是 radio,不是 modem。

            有人在镜像同步站点同步所有 pixel 镜像,不需要单独下载超大的 ROM,pixel5 的基带文件: https://dl.msfjarvis.dev/pixel/redfin-rd1a.201105.003/radio-redfin-g7250-00016-200826-b-6790987.img

            我在 vivo x50(与 pixel5 使用同样的高通 765G cpu,且同样使用 cpu 内置的 x52 芯片为基带解析信号等)上提取了 NON-HLOS.bin 并成功 mount 在 Mac 上(Linux上也是 OK 的),但始终无法 mount 上面的 radio.img。

            (PS1: 绝不是我使用了上面链接下载的原因,我几乎尝试了官方的所有 pixel5 各种发行版本的 ROM 并检查了下载完的 hash265 值)

            (ps2: 我使用 fastboot flash radio modem.img 是能刷入的,该命令提取自官方 ROM 的 flash-all.bash 命令文件)

            我已经为此整了多个晚上了,如果你能帮助我我将不甚感激。


        3. 根据你补充的信息,无法成功 mount 的可能是存在的。在我原文的情况下,mount 的作用是把 ROM 映像文件加载至一个本地可访问的文件系统中的路径,如果该映像文件没有组织为系统可识别的文件系统,而仅仅是个分区映像,则 mount 就会出现这种情况。

          如果你注意到了我的文章末尾的话,就会发现在 Pixel 3 里,我写的这种方式已经不再适用了,你的目标是 Pixel 5,有充足的理由相信,需要处理的技术手段差异只会增大。可能你还需要去了解新的 radio/modem 中,运营商信息的组织管理结构才行。祝顺利。

          回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注