Skip to content

O3 Root v3.1

Choose a tag to compare

@zsw125 zsw125 released this 31 Oct 19:32
· 15 commits to main since this release

v3.1 — user-selected .ko with a compatibility check and adaptive fallback.

  • App v3.1 (versionCode 14): new "选择 .ko" picker. CustomKo validates the chosen file before the run (ELF, 64-bit LE ET_REL, AArch64, .modinfo with name=kernelsu…, kernel series match, ≤ 8 MB). Hard failures show a dialog with 仍然尝试 / 取消 / 退回自适应; a same-series-but-different-build module only warns. The choice lives for the app process (persistence lands in v3.1.1).
  • Payload: O3P_CUSTOM_KO selects the file; ko_validate() re-checks it, ksu_try_load() is shared with the built-in path, and a rejected/unreadable/failed module falls back to the embedded blob automatically. O3P_CUSTOM_KO_FORCE=1 covers the "仍然尝试" path for kernel_series_mismatch only.
  • Hardware-verified on yingtian (2026-11-01): custom tiann v3.3.1 LKM accepted with a warning and loaded (KSU_INSMOD_OUT:[rc=0], KSU_MODULE LIVE); a forced 6.6.000-vermagic module also loaded because the relink rewrites vermagic. The automatic fallback branch was not triggered on hardware.
  • Built-in LKMs unchanged: KernelSU v3.3.1, KernelSU-Next v3.4.2, SukiSU-Ultra v4.2.1-r2 (SukiSU v4.3.0 exists upstream; try it through the custom path).
  • APK: 14,235,152 B, sha256 6d9041a97bb1ea6811b6cc512f3d98bb0504be2b8db1e375b73f56e9879e4d73. Kept in git history at tag v3.1, not attached here.

Superseded by v3.1.1 (fixes persistence of the selection) — prefer that build.