The author complains that the Redmi Note 12 5G (codename sunstone) has very few third-party ROMs, official updates have ceased, and it lacks Google services, prompting a flash to crDroid. The article details the entire flashing process: preparing tools (ADB, unlocking, firmware, ROM, etc.), flashing via Fastboot and Recovery, installing NikGapps for Google services, resolving Chinese input method issues, and providing methods to disable AVB and SELinux to address verification problems caused by cross-codename flashing. The author emphasizes backing up the official stock ROM to avoid bricking, and notes that the device's incomplete kernel source and exclusive release in mainland China result in poor overseas support and higher flashing risk.
Redmi Note 12 5G(sunstone)这个机器已经不在小米的版本更新列表了,无缘 HyperOS 后续更新,最新的官方系统停留在 OS2(OS2.0.6.0.UMQCNXM,2025年8月12日)
无缘最新更新不是最要命的不需要更新系统的设备才是好设备,更要命的是这台手机有 Google 验证,但是小米愣是不给他用谷歌的机会,严重怀疑 不用严重怀疑了就是 是为了给同一个内部代号的 Poco X5 做的验证,一举击碎我那刚从华为跑出来的谷歌梦想
所以我早早就刷了 Xiaomi.EU,好死不死今年开始他们不打算往里直接修补 GApps 了,那我也没有什么吊在 MIUI & HyperOS 的必要了,就去找了类原生,也是第一次接触卡刷这玩意,之前都是线刷的
虽然最终选择了 crDroid,但是叠加这个手机的 BUFF,刷个锤子
P0:准备
理论上从这里开始的每一步都可以类比到别的手机,但要时刻牢记:别忘记留一份官方线刷包,不然炸系统到根本没法修复就真砖了
另外,为简短编写,后续会用设备内部代号(也就是例如 stone 这种)称呼小米公司出品的手机
最必要的几条:
Redmi Note 12 5G 可以对应的内部代码有 sunstone、stone、gemstone,理论上不能跨内部代码刷机,我这里硬跨了内部代码刷机,不要学我
截至发稿时,网站可以搜寻到的有 gemstone(crDroid 12)和 stone(crDroid 11、10),根据自己的情况选择
P1:刷系统
把刚才下载的固件包、ROM 包、boot.img、vendor_boot.img 和 dtbo.img、NikGapps 包放在同一个目录下,方便操作
为了方便,所有文件都修改成了方便理解的文件名,请你根据自己的情况按需修改
把手机和电脑用一根数据线连接起来(废话
进入 fastboot,长按电源键+音量键-,如果你的手机启用了 ADB,可以执行以下指令
手机屏幕显示 Fastboot 的时候,就说明已经切换到 Fatboot 了
接下来是最重要的一步:依次刷入 boot.img、vendor_boot.img、dtbo.img,槽位不能乱
确认全部刷好后,执行以下指令
此时手机会重启,并切换到 crDroid Recovery 系统还没装好恢复模式先装好了
此时界面会有 Reboot system now、Apply update、factory reset、Advanced 四个选项
依次选择 factory reset 👉 Format data/factory reset 👉 Format data ,此时手机会清空用户数据,这就是为什么要提前备份的原因,不做这一步会直接卡系统
做完上面一步后,退到最初始的页面,依次选择 Apply update 👉 Apply from ADB,页面下方显示 Now send the package you want to apply,就说明 ADB 已经启用好了,此时是 sideload 模式
接下来依次刷入 固件包、ROM 包
比较重要的一点是,sideload 模式下,每执行完一次指令就会回到一开始进入 Recovery 的页面,重新走一遍启用就好
在刷入 ROM 包时,手机可能会出现让你确认是 Yes 还是 No 的地方,这里不用管上面写什么(实际含义是固件的版本差异问题),直接 Yes 就行
此时手机会直接重启,重启后会回到 crDroid Recovery,此时选择 Reboot system now,就进入 crDroid 的初始界面了,跟着走完步骤就行
大功告成
P2:Google 框架
可以看到所有的自带软件都是 AOSP 的东西,此时如果需要 Google 服务,将手机调回 crDroid Recovery,启用 ADB sideload 模式,刷入 NikGapps 即可
NikGapps 分为六个分支,针对于 crDroid,只需要在 Core 和 Basic 中间选,这样不容易炸系统
刷入完成后,手机不会自己重启,需要选择 Reboot system now 才会重启
进入系统后,你就可以看到 Google Play 在你的桌面了
P3:输入法
这其实是 AOSP 的锅,所以请安装 Gbord 或者其他的输入法,不然你没法输入中文的
如果你装了 GApps,我会更建议用 Gbord
P4:禁用内核校验
其实写这篇文章的时候我的手机一直在砖和不砖的情况反复跳跃,其实很明显是因为跨内部版本号导致的,但没办法,会给 sunstone 做第三方系统的太少了,连 Xiaomi.EU 都没有接着做了(很正常,因为他们跟随小米的大版本步伐),一般情况下,只要内部版本号对的上,就不需要
这种情况就需要提取到 vbmeta.img 去禁用 AVB(Android Verified Boot)的分区完整性签名校验,另外还可能需要禁用 SELinux 强制校验,以防万一,我每个都做
P4.1:提取 vbmeta.img
下载 payload-dumper-go,根据 README 部署到系统上
解压 ROM 包,并在解压后的目录上运行:
运作完成后,同目录下会出现 extracted_xxxxxxxx_xxxxxx 的文件夹,里面就有提取出来的一众 img 文件
P4.2:禁用 AVB 分区完整性签名校验
依次把 vbmeta.img 和 vbmeta_system.img 刷入
刷入完成后,重启设备:
P4.3:禁用 SELinux 强制校验
禁用 SELinux 强制校验必须要 root 设备,关于如何 root 设备,在此不赘述
运行以下指令确认 SELinux 的状态
接下来进入 shell(不是电脑的 shell,而是通过电脑进入 Android 的 shell)
当看到例如 sunstone:/ $ 时,则代表成功进入
依次运行
运行 adb shell getenforce,显示 Permissive 则说明 SELinux 强制校验已经临时关闭,设备重启后即失效
为了持久化这一个程序,我们需要写一个开机启动脚本(类似 Linux systemd)
重启设备,并再走一次验证 adb shell getenforce,显示 Permissive 则说明 SELinux 强制校验已经在开机工序上关闭了
同时设备也显示 SELinux 未工作在强制模式,部分银行类应用因此直接无法运作,这时候就需要修补了,不多赘述
PE:后续
不得不提 crDroid 官方直接支持的设备就有好多,比 PiexlOS 要好,但可惜的是还是没有 sunstone,思来想去大概是因为 sunstone 只对中国大陆发售,不能指望海外团队专门买一台无法启用 Google 的设备去做测试做适配
实际上小米也有问题,stone 这一边都是内核开源不完全的,很难受