Skip to content

Releases: Sillybomo/OWC

OWC v1.4.10 — 复归累计确认 / cleanup 幂等化 / 归因修复

Choose a tag to compare

@Sillybomo Sillybomo released this 16 Sep 11:36

OWC v1.4.10

亮屏快充守护的稳定性修复版。四项改动,全部来自 2026-09-16 真机实测发现的问题。

核心语义不变:安全栏 = 保险丝(不到阈值不干涉,一到阈值立即熔断并完全交还系统)。
阈值全局统一,不区分游戏。


1. 复归确认「连续」→「累计/去尖刺」

问题:v1.4.8 的复归死区 + 连续 3 次确认,在真实游戏负载下从未走完过 3/3。

实测日志(异环 + 亮屏快充,2026-09-16 00:18~00:21):

时刻 CPU 状态
00:18:22 83300 复归确认中 1/3
00:18:27 94200 熔断持续(+10900,跨回熔断线)
00:19:21 91500 复归确认中 1/3
00:19:27 93800 熔断持续(+2300)
00:19:39 91500 复归确认中 1/3
00:19:44 93800 熔断持续
00:20:45 90700 复归确认中 1/3
00:20:51 93400 熔断持续

全日志统计:1/3 出现 4 次,2/3 与 3/3 各 0 次。

根因:单次采样尖刺(±5.5°C)比确认窗口更宽,"连续 N 次"是个永远攒不满的窗口。
分子恒为 1,紧接着必被一次撞线清零。

曾评估把 RESUME_CONFIRM 从 3 降到 2 —— 实测证明无效:分子只到 1,降为 2 同样攒不满。

修法:达标次数累加,尖刺不再立即清零;仅当「连续尖刺」超过容差才重置。
新增 RESUME_SPIKE_TOLERANCE=2。

熔断判定(TRIP_*)与保险丝行为零变化 —— 仅放宽"必须连续"。

2. cleanup 幂等化(根治 trap 并发重入)

问题:同一秒执行 4 次 restore。

实测日志:

00:11:18  守护进程退出,恢复所有系统状态 ×4
00:11:18  已交还 cool_down 降流控制权      ×4
00:11:38  守护进程退出 ×2   已交还 ×2

根因:trap cleanup EXIT INT TERM 三个信号指向同一函数,而函数内 exit 0
会再次触发 EXIT,叠加外部并发信号即造成重入。

修法:RESTORE_DONE 幂等标志 + mkdir 原子锁做退出互斥。

单测抓到的坑:初版在"抢锁失败"分支也置位了 RESTORE_DONE=1,会导致抢锁失败者
既不还原也不复位标志 ⇒ 锁释放后 restore 永不执行、系统状态静默卡住。
已修正为「抢锁失败不置位」,保留重试机会。

3. 来源=unknown 归因修复

问题:WARP_GUARD_SRC 只在真熔断时赋值,而守护退出 / 用户关磁贴 / 断充
都会直接调用 restore_warp_charge,此时为空 ⇒ 日志打印 来源=unknown。

修法:restore_warp_charge 接受归因参数,5 处调用点显式传入:

  • 过热熔断 → cpu / gpu / battery / shell
  • 守护退出 → shutdown
  • 用户操作 / 断充 → user

4. 运行位置统一 vtools/

问题:原设计把脚本拷入 tmp/ 运行,导致 tmp/ 与 vtools/ 各存一份内容相同的
warp_charge.sh,核查时无法判断"哪个在跑",且曾造成版本号滞后。

修法:脚本在 vtools/ 原地运行,tmp/ 只放运行时产物(日志/锁/过滤名单)。
warp_charge.sh 路径逻辑本就兼容两种位置,故本次只改 service.sh / watchdog.sh
两处启动方,核心脚本零改动。


验证

  • 复归状态机单测 21/21 通过(含「达标夹尖刺」—— v1.4.8 会失败的场景)
  • cleanup 幂等单测 11/11 通过(含上述初版 bug 点)
  • 四脚本语法检查全绿,无 CRLF
  • 真机热更验收:双守护 PPID=1 稳定存活,亮屏快充正常激活
    11984     1 sh .../OWC/vtools/warp_charge.sh
    12165     1 sh .../OWC/vtools/watchdog.sh
    19:29:28  亮屏快充已激活(充电接入|游戏=0)
    
  • 归因修复当场验证生效:日志打出 来源=shutdown(旧版此处为 unknown)

升级

直接刷入 OWC_v1.4.10.zip 覆盖安装即可,无需清数据。
App(控制中心磁贴)随包更新,APK 沿用旧版签名,可正常覆盖。

versionCode 18 → 19。


@author bomo

OWC v1.4.2 — 亮屏快充安全栏改为温度驱动(游戏不再单独暂停)

Choose a tag to compare

@Sillybomo Sillybomo released this 15 Sep 14:33

OWC v1.4.2

修复:亮屏快充「一进游戏就停」

问题:进入游戏后亮屏快充被限制,而当时温度远未达到安全阈值。

根因:主循环里游戏判断写在温度判断之前,游戏态直接 restore,温度判断被短路:

if [ "$GAME_ACTIVE" = "1" ]; then
    restore_warp_charge          # 游戏态无条件停
else
    real_temp=$(get_real_temp)   # 温度判断躲在 else 里,游戏时根本执行不到

日志实测:21:58 充电接入时因游戏态未激活;22:02 心跳 电池=383(38.3°C)、CPU=73300(73.3°C),
两条阈值(46°C / 85°C)都没到,亮屏快充却已停用。

变更:安全栏由「场景驱动」改为「温度驱动」

  • 新增 warp_temp_hot() 作为唯一暂停依据:电池 ≥ 46°C 或 CPU/SoC ≥ 85°C → 暂停;
    游戏运行不再单独触发暂停,只写入日志便于回溯
  • CLI apply(磁贴 / App 热开关)与「游戏退出立即恢复」两处同步加温度守卫,防止绕过
  • 原「游戏运行中暂停」的设计意图保留在注释中作为历史依据(shell-temp 伪装本身就是骗温控)

顺带修复

  • is_game_running 检测链:补 ResumedActivity 标记(ColorOS 16 无 AOSP 的
    topResumedActivity= / mResumedActivity:),并修正 head -1 的位置 —— 前台为通知栏 /
    输入法时 mCurrentFocus 不含包名,原写法会掐断整条检测链
  • WARP_ACTIVE 补初始化:此前未赋值,导致心跳打印为空、且「游戏退出立即恢复」分支静默失效

实测(PLZ110 / ColorOS 16,充电中)

场景 结果
游戏态 + 温度未到阈值 亮屏快充保持生效 ✅
温度超限(门槛临时调 25°C 验证) 日志 亮屏快充已暂停(电池温度 275 >= 250) ✅

校验

  • 包内 vtools/warp_charge.sh md5 f09700ebf77359f7769a4ebe6f2addb7
  • 三处一致:dev 源 / 本发布仓 / 设备已装(热更验证)

升级方式

模块管理器直接刷入本 zip 后重启。App 侧无改动,app/OWC-App.apk 与 v1.3.3 起签名一致(md5 7c2ab7c5…)。

OWC v1.4.1 — 文档与注释清理 + 机型识别修复

Choose a tag to compare

@Sillybomo Sillybomo released this 15 Sep 13:00

本次更新(v1.4.1)

🐞 修复

  • 安装流程:机型识别改用 device + model + name + board 联合匹配(统一大写比较)。
    此前仅匹配 ro.product.device,在本机(device=OP64DDL1、model=PLZ110、board=canoe)
    会把正版机型误判为"未验证",安装时停在音量键确认并超时取消,管理器报
    Failed to install module script。现在直接识别通过。

🔧 优化

  • 冲突检测名单精简:直接写充电节点的同类模块改由广扫描正则兜底
    (cool_down / oplus_chg 温度 / shell-temp / horae),检出覆盖不变。
  • 文档与脚本注释整理:移除对其他项目的归属与版本引用;技术要点全部保留
    (热失控教训、单位换算事故、有界等待、trip 节点排除)。
  • README:兼容性段落与致谢精简,版本 badge 更新至 v1.4.1。

📦 升级方式

  • 直接刷入本 zip 覆盖即可,无需先卸载,刷完重启生效。
  • 磁贴 App 无改动,与本版内置 APK 一致(md5 7c2ab7c5267a3ee12322e71a4b603647)。
  • 已装旧版的用户:管理器里覆盖刷入后重启;状态文件 /data/adb/owc/enabled 保持不变。

说明

  • 仅一加 15T(PLZ110 · ColorOS 16 · Android 16)完整实测可用,其他机型自测、随缘适配。

v1.4.0 — 安装流程修复:机型不符改音量键确认

Choose a tag to compare

@Sillybomo Sillybomo released this 13 Sep 02:34

修复

① 卡死修复(根因)

旧版安装脚本在机型不符提示后,用 grep -r 递归扫描全部模块目录做充电模块冲突检测。该扫描会顺着模块目录内的符号链接 / 运行期 bind-mount 递归进巨型目录,扫描规模不可预期,导致安装界面在打印「继续安装...」后长时间卡住。

v1.4.0 改为有界 glob(仅模块目录 1~2 层的 *.sh),不递归、不跟随符号链接,扫描成本恒定。

② 机型确认交互

机型不符不再静默继续,改为音量键显式确认:

  • 音量上 = 继续安装
  • 音量下 = 取消安装
  • 10 秒无操作 = 自动取消(安全默认)

变更文件

customize.sh / module.prop (versionCode 9) / README.md

校验

  • bash -n 语法通过、zip 全文件 LF 校验通过
  • 本地 stub 模拟 4 条分支(已验证机型直通 / VOL+ 继续 / VOL- 取消 / 超时取消)全部符合预期
  • APK 与 v1.3.3 发布版完全一致(md5 7c2ab7c5267a3ee12322e71a4b603647,App 无改动)

⚠️ 仍仅在一加 15T (PLZ110) 实测验证,其他机型请自测。

OWC v1.3.3

Choose a tag to compare

@Sillybomo Sillybomo released this 06 Sep 16:39

⚡ 一加 15T 实测:亮屏充电 ~22W → ~45W(磁贴热切换,App 内置自动安装)。

v1.3.3 卸载安全性加固:

  • cool_down 卸载时交还系统控制(防 SIGKILL 场景残留)
  • 防御性清扫电池类 emul_temp 残留
  • 覆盖审计缺口:此前卸载仅恢复 ORMS/horae

OWC v1.3.2

Choose a tag to compare

@Sillybomo Sillybomo released this 06 Sep 16:19

⚡ 一加 15T 实测:亮屏充电 ~22W → ~45W。

  • 磁贴 App 已内置 zip,刷入模块时自动安装(pm install)
  • 事件驱动热切换:控制中心磁贴秒级生效
  • cool_down 亮屏降流对抗 + 壳温/电池温度伪装
  • 安装时兼容性检查(机型提示 + 充电模块冲突自动终止)
  • 卸载零残留(含模块外状态文件)

安装后:管理器内给 OWC App 授予 root → 控制中心添加「亮屏快充」磁贴

OWC v1.3.1 (legacy)

Choose a tag to compare

@Sillybomo Sillybomo released this 06 Sep 15:35

旧版:不含内置 App。请使用 v1.3.2。