正文
本来只是想给新买的Xreal Beam Pro 5G做一个 root,于是查到了这么一个网站,一看内容很丰富,甚至还有国区固件(PRC)刷成海外固件(ROW)的教程,很权威了,于是一步步跟着教程尝试把国区固件刷成海外固件。

但是,这一过程出现了一个问题,事实上 Xreal Beam Pro 有两个版本,一个是 WiFi 版,一个是 5G 版,两者的型号分别是 X4000 和 X4100,可以说非常相似了。两者的硬件差别不大,主要还是在通信相关的软硬件上,因为多了 5G 的收发,所以基带发生变化。
不过在刷机的过程中我没有注意到这个问题。其实也注意到了,比如教程中说国区刷海外版只需要在 rec 中通过 sidelode 侧载海外版固件的完整卡刷包就可以了,但是我在侧载时总是通不过完成性验证,一开始没认为是版本错误的强制终止,还以为是下载过程中出现了网络错误,在做了两次下载并确认 sha256 没问题后,我放弃了侧载卡刷包。
于是灵机一动,既然都要整个刷了,那为什么还要卡刷呢,直接下载完整的线刷包在 fastboot 中刷完不就结束了?于是我又下载了完整固件线刷包,然后在 fastboot 刷进去。结果,又出问题了,因为型号不对,所以 fastboot 也不允许继续操作。细想之下,我还是没有想过是型号的问题,在确认过固件完整性后,我决定解压固件并单独刷入分区 img。
是的,至此已经有两次后悔的机会了,但是还是头铁。
每个分区(包括A/B)刷完后,开机启动,正常进入国际版系统,很开心。但是很快开心不下去了,发现 Wi-Fi 无法启动,同时没有了移动数据信号。这下坏了,难道基带坏了?可 Reddit 还有这个 Guide 没有人汇报过国内外固件的基带不兼容啊?这下一点网络连接都没有了!

再后来不知道经过了多少次查询,我才注意到固件中X4000这个序号,并感觉似乎有些不一样。Gemini的搜索结果显示,X4000 为 Xreal Beam Pro WiFi 版的型号,而 5G 版的型号是 X4100。一开始我还不信,直到在京东上的商品参数页亲眼看到了X4100这个序号,才彻底死了心。搜遍了中文、英文、俄文社区,没有人提交过 5G 版的任何固件,而我也做了 0 个备份,这下完蛋了……
垂死挣扎半天,只看到 Reddit 上有这么一个帖子,来教人如何从 OTA 中抓取 log 来获取完整的固件包下载地址。难道只能期望有一个人,无聊买了 5G 版,然后也无聊想抓 OTA 包,还无聊地分享出来了?我看希望渺茫。按照帖子的方法,通过 PC 将网络共享给手机,我在国内 WIFI 版的固件上抓取到了 OTA 的日志,但也只能抓到 X4000 的最新固件的下载地址。

颓废了两周,突然灵机一动。既然 OTA 中存在像是 packageName='XREAL_X4000_PRC_user' 的字段,那是不是说明只要我修改设备的型号为 X4100,那么 OTA 就会认为这是个 5G 版的设备,从而下载 5G 版本的固件!?
敢想敢干!立马给系统刷了 Magisk,然后用 MagiskHidePropsConf 插件来修改设备的型号,要改的参数通过 cat /system/build.prop | grep X4000 可以看到。将其中的所有 X4000 字段换成 X4100(指纹不需要),重启后,即可在设备信息中发现所有的型号、build号全是 X4100 了。

接着再共享网络进入 OTA 界面,果然出现了 X4100 的新固件信息,通过 adb logcat 提取信息后,成功获取到了X4100_PRC固件的最新官方地址,火速下载!

下载完成后再通过 payload 解包工具来提取具体的分区镜像。

对比一下之前线刷的 flash all脚本,确认分区一个不差,于是又用这个罪恶的固件重新刷回这个新的固件。 终于,一切完好如初,安然无恙,信号也在!

总结
总的来说,这个问题全部源自于自己的疏忽,但我一开始也确实没想到 WiFi 版和 5G 版之间的基带差别。不过从事实上来看,两者确实除此之外没有任何区别,毕竟 5G 版刷完 WiFi 版固件后也能正常开机,而且除了不能上网,一切都很正常。
然后就是,Xreal 的 OTA 逻辑确实也只是检查系统的型号和系统的 Build 号。但是两者究竟检测的是哪个我也懒得去验证了。同样的,按照这个逻辑,如果把XREAL_X4100_PRC_user 替换为 XREAL_X4100_ROW_user,或许也能直接在国内版机器上直接获取海外版的 OTA 包,不过这个我也不想去验证了,可以在 Reddit 上发帖来让其他闲人来试试看。