小米平板 5 Pro 刷入 GSI Android 教程

到手了一块小米平板 5 Pro,又一次刷新了我对小米的认知。开个开发者模式要倒数 10 秒看警告;装个 apk 也要倒数 10 秒看警告;解锁 Bootloader 又是登录账号,又是联网绑定,还要等 168 个小时,把用户当贼一样防。

听我说谢谢你,因为有你,温暖了四季…

更难受的是,小米平板 5 Pro 并未在全球发售,唯一支持的 MIUI 国行系统自带全链路反诈。隔壁低配的小米平板 5 反倒是又有国际版 MIUI,又有 Android 13 DP(开发者预览)。

不过,小米平板 5 系列通过了 Android 认证。这意味着即使没人给它适配第三方系统,它也一定能跑 Google 发布的 GSI(Generic System Images)原生系统。 而又有许多适配 GSI 的第三方系统,这就解锁了无限可能。

如果有一定的刷机经验,刷写 GSI 非常简单,本文也部分适用于其他 Android 设备。

免责声明:本文为经验总结,操作前请先备份,操作风险自负。

解锁 Bootloader

下载 SDK Platform Tools(包括 adb、fastboot 等实用程序)

解锁程序,解锁时会清除所有数据。

  1. 关机时按住 音量减 + 电源键 进入 Bootloader。
  2. 连接电脑,按解锁程序提示操作即可。如果程序提示要等 7 天,则 7 天后再次尝试。

接下来在刷入 GSI 前,可以先刷入 Magisk,便于之后的操作。

安装 Magisk(可选)

小米平板 5 Pro 目前没有能用的 Recovery,这里通过手动补丁的方式安装。

  1. 下载与平板系统相同版本的线刷包,提取其中的 boot.img,复制进平板。
  2. 进入系统安装 Magisk.apk,用 Magisk Manager 给 boot.img 手动补丁(Install -> Select and Patch a File)。
  3. 将获得的 magisk_patched-XXX.img 传回电脑。
  4. 进入 Bootloader,连接电脑,输入 fastboot boot magisk_patched-XXX.img 临时进入支持 Magisk 的系统。
    • 如果未成功进入,可以重新进入 Bootloader 再试一次
  5. 自动开机后,在 Magisk Manager 中正式安装 Magisk(Install -> Direct Install)。

备份 Persist 分区(可选)

Persist 分区中储存了诸如指纹模块等的校准信息,这些信息每部设备都是不同的,丢失无法恢复。建议在获取 root 权限后备份一份,以备不时之需。

  1. 进入 MIUI 系统,开启 USB 调试。
  2. 连接电脑,输入以下命令。
adb shell
su # 获取 root 权限,请在手机上确认
dd if=/dev/block/bootdevice/by-name/persist of=/sdcard/persist.img
# 此时按两次 Ctrl + D,退出 adb shell
adb pull /sdcard/persist.img

将获得的 persist.img (大小约 64 MB)长期保存,避免丢失(本教程不会用到)。

刷入 GSI 镜像

GSI 系统列表
vbmeta.img

小米平板 5 Pro 是 AB 分区ARM64。选择一个喜欢的 ROM 即可。我测试过可用的有:

  • Pixel Experience Plus
    • 带 Plus 的版本有一些额外功能,如网速显示
    • 基于 Pixel 手机系统,颜值较高,但平板上用会有一些布局错位
  • Lineage
    • 测试无法通过 SafetyNet
    • 对平板适配较好
  • AOSP (phhusson)
    • 上面的 ROM 都是基于 phhusson 大神的这个项目制作的
  • Android 13 GSI
    • 蓝牙无法使用(Beta 3)
  1. 下载解压 ROM,获得 system.img
  2. 进入 Bootloader,连接电脑。
  3. fastboot flash --disable-verity --disable-verification vbmeta vbmeta.img
    • 此步骤用于停用 Verified Boot 分区验证,只需执行一次
    • 如果已经安装了 Magisk,可以跳过本步骤,但未来要一直安装着 Magisk,否则 system 分区通不过校验可能会被禁用,需要重刷
  4. fastboot boot fastboot
    • 此步骤用于进入 fastbootd,进入后屏幕上应显示 fastbootd
  5. fastboot flash system system.img,等待刷写完毕
  6. fastboot reboot recovery,进入 Recovery 后,按提示操作清除数据并重启系统
    • 刷入不同类型 ROM 或版本降级时必须清除数据,否则无法进入系统

此时应该已成功进入系统。如果此前安装了 Magisk,新系统中会自动出现 Magisk 应用。

功能补丁

由于 GSI 镜像并非针对小米平板 5 开发,有一些细节问题需要修复。

开启 120 Hz

adb shell settings put system min_refresh_rate 120
adb shell settings put system peak_refresh_rate 120

如果设置里有 Phh Treble Settings 的话,也可以在里面直接改(Misc features -> Force FPS)。

修复音频

来源:https://forum.xda-developers.com/t/run-an-gsi-on-your-mi-pad-5.4352591/page-9#post-86447857

移除屏幕锐化

注意到屏幕会经常出现锐化的效果,看了下 MIUI 并不会有这种情况,费半天劲找到了引起问题的设置,写 Magisk 模块修复之。

修复任务栏

hide-tablet-taskbar(Magisk 模块)

因为 Pixel 目前还没发布平板,所以 PixelExperience 系统对平板的支持有些小问题(比如任务栏只显示一半)。写了个 Magisk 模块修复之。另外似乎还没有模块支持隐藏 Android 12.1 平板模式下的底部提示条,这里也顺便支持了隐藏。

本来想用 Resource Overlay 的方式实现的,但不知为何不生效,只能用 Xposed 了。

已经用 Overlay 实现了。

SafetyNet

SafetyNet 的修复根据不同 ROM 分成几种情况,这里简单分享下经验。

PixelExperience ROM 已经模拟了设备信息,只需在 Magisk DenyList 对 Play Services 隐藏即可。

Lineage OS 可能由于自带了 su,我没能成功通过 Basic integrity 测试(可能要自己修改 ROM 了)。

Android 13 GSI 需要 MagiskHidePropsConf + Universal SafetyNet Fix + Magisk DenyList,其中 MagiskHidePropsConf 设置成 MIUI 系统的 fingerprint,外加将 ro.build.version.security_patch 设置成 MIUI 系统对应版本的值(可以用 7z 打开线刷包的 system.img,在 system/build.props 里找到)。

Magisk DenyList 配置方法

  1. 打开 Magisk,设置里选择 Hide the Magisk app
  2. 打开 Magisk,设置里启用 Zygisk 及 Enforce DenyList
  3. 进入 Configure DenyList,找到 Google Play services,只需勾选 com.google.android.gmscom.google.android.gms.unstable 两项。
  4. 进入设置,清除 Google Play services 及 Google Play Store 的数据。

DRM

DRM 方面,Widevine 无需任何操作,神奇的保持在了 L1,修复 Safetynet 后即可直接观看 Disney+。

Netflix 可能多了一套验证,默认会是 L3,以下操作后可以恢复到 L1:

  1. 确保 SafetyNet 已通过
  2. 将 Netflix 添加到 DenyList 列表
  3. 用 Magisk 模块在 build.prop 添加一行 ro.netflix.bsp_rev=Q8250-19134-1
    • 该值仅适用于小米平板 5 Pro
    • Magisk 模块写法非常简单,可以参考上面的「移除屏幕锐化」模块
    • 修改 build.prop 后需要清除 Netflix 应用数据重新登录
    • 该修改已合并至上游,一段时间后的新版 ROM 可能已经自带了
    • 感谢几位朋友的帮助!

系统升级

由于小米平板 5 为 A/B 分区,之前刷机时只刷入了一个分区,另一个分区情况未知,直接升级有一定风险。

建议非必要不升级。升级前务必备份好所有数据,升级后有可能无法开机,需要清数据重刷。

如出现问题,可下载 MIUI 线刷包,使用 Mi Flash 线刷恢复至 MIUI 系统,再次刷入新版 GSI 系统。

  • 如刷机刚开始时出现错误,不要试图修改刷机脚本绕过。请检查机型是否正确、是否触发防回滚检测。移除脚本中的自检代码强行刷入将会变砖,无法自行恢复。
  • 恢复时不建议锁定 Bootloader(在 Mi Flash 底部选择)。
  • 目前(2022-06)如将基于 Android 12 的 MIUI 13 作为底包,后续刷入 GSI 时,会出现一些兼容性问题。如果可能的话,建议刷入基于 Android 11 的 MIUI 13 稳定版。

我最后使用的是 PixelExperience Plus,还是挺不错的,跑分能跑到正常水平,指纹也正常使用。蓝牙耳机在修复音频后可以正常使用(Android 13 Beta GSI 不兼容蓝牙)。因为 Pixel 还没发布平板,PE 自带的 Pixel Launcher 会有些 Bug,但原生 Android 又不是不能换桌面 :P。

一些小问题是,小米键盘和手写笔会无法使用(没买这些),不支持双击唤醒(录入指纹后可用指纹快速唤醒),快充无法使用(被迫延长电池寿命),自带相机应用会假死(但第三方应用内扫码似乎是正常的),MIUI 的各种平板优化自然也没了。

怕被叫成二次元,在 Pixel 壁纸库里换了张艺术壁纸!

本文撰写过程中参考了以下内容,在此表示感谢:

本文(https://dev.moe/2716)由 Coxxs 原创,转载请注明原文链接。

发表评论

您的电子邮箱地址不会被公开。