AskaEth
|
31d4c22806
|
fix(fw): M51 刷机前批次 — 5 组二进制从最新 main 重编 + 钉值回写 + 语义指纹自证
本轮终结「二进制与源码两条轨道各走各的」:M23/M43/M47/M49/M50 只交源码,产物统一由本单
从 main 5a06a8c 一次重编。重编后 md5 全变(旧钉值来自另一代工具链/另一份源码),语义由
scripts/build/verify_fingerprints.sh 逐条自证。
- meow_bootmenu 157108 → 158836 8bce6558 (源码与 884d4c4 一致,变化全部来自工具链代差)
- meow_netmgrd 212740 → 222068 e62e7512 (M49 蓝牙控制面 + WiFi 连接修复,+9328 全为源码)
- meow_audiod 153484 → 68604 9f58b219 (musl 静态 → glibc-2.22 动态,链 libasound.so.2;M50)
- meow_audio 88888 → 88888 3909c8d2 (与钉值逐字节一致,重编即复现)
- meow_launcherd 894940 → 901020 e21450ff (M47 蓝牙/WiFi 三态开关 +6592)
fw_content.conf:上述 6 行(netmgrd 双路径)md5 回写;desc 改为中性描述(文件是什么/什么形态),
不再写未进产物的功能版本号(M48 查出 bootmenu/netmgrd/audiod 三处 desc 撑谎)。
30/30 行 md5 与磁盘一致、全部 4 字段。
新增 scripts/build/rebuild_binaries.sh:干净 checkout / worktree 里的重编驱动(兼容 HOME +
.tools/meow_ui.a 兜底,不改各组件 build_*.sh 的本机硬编码路径)。
新增 scripts/build/verify_fingerprints.sh:字符串/动态段/4263 反汇编判据逐条断言。
|
2026-11-11 20:29:21 +08:00 |
|
AskaEth
|
1ad2346d34
|
fix(m43): r2 评审 P2 — 构建级主判据 + 数据依赖语义 + bootmenu 注释
- test_time32_abi.sh 增加构建级主判据:解析各组件的 build_*.sh,按 -o <产物>
定位实际编译行(自动拼接续行),断言同时出现 meow_time32.c 与
-DMEOW_TIME32_LIBC_OVERRIDES。缺任一即 FAIL(100% 抓「漏加」)。
- 二进制 16B 断言从「空间窗口」改为「数据依赖」:0/4/8 写回必须来自
被调函数填的 ts32 缓冲(lw off() → sw 0x0,lw off+4() → sw 0x8,
含 sra 符号扩展),修掉无关结构体写回造成的 false positive。
已知健康件 launcherd(非内联转换)仍 PASS;复现的评审反例 bad6b 现 FAIL。
- bootmenu 注释把 initramfs 误述改为 squashfs /usr/bin(M23 未碰该文件)。
|
2026-11-11 18:51:16 +08:00 |
|
AskaEth
|
884d4c4891
|
fix(fw): M43 系统组件接入 o32 time32(9 组件 + meow_audio CLI)
- 构建脚本链 ../sdk/meow_time32.c + -DMEOW_TIME32_LIBC_OVERRIDES:
sysui/svcd/bootmenu/amsd/netmgrd/crash/svc_perf/powermgr/meowpanel,
以及 musl-static 的 meow_audio CLI(monitor 取时/轮询)
- meow_audiod 守护例外:glibc-2.22 time_t 32 位,无 musl time64 ABI 错位,不链
- 重编 10 个产物:反汇编 4263=3 / 4403=0,__clock_gettime 按 16 字节布局写回
- test_time32_abi.sh 收紧为 addiu 系统调用号匹配,避免 .text+0x1133x 偏移误报
- fw_content.conf 同步全部新 md5(清单逐行校验通过)
|
2026-11-11 18:51:16 +08:00 |
|
AskaEth
|
a9281c2d64
|
fix(bootmenu): M23 评审 r2 — 电源键锁存取代「3s 抑制」,缺键视同不可信
P2-2(r2):删除「电源键按下后 3s 内不补」的定时抑制 —— 它到期就会把用户刚熄的屏点亮
(窗内可重复),且该行为被单测固定。改为**锁存**:扫描窗内一看到电源键按下边沿就置
scan_pwr_seen=1,本次窗口内此后一律不补(why="power-key-latched"),窗口结束才清零。
理由:Bug 4 保护的是「无人值守时媒体扫描导致黑屏几分钟」;用户已按键介入,需要亮屏时
自己再按一次即可。锁存同时覆盖「播放器只写 brightness=0 不改 bl_power」与「HibyOS 自动
超时熄屏」两种残余。
bl_power 门保留但降级为纯保险,注释改成诚实表述:据 patch_v2/meow_launcherd/backlight.c:90-95
实测,本机播放器熄屏(brightness 0 + FBIOBLANK 4)后 bl_power **仍为 0**,该门在播放器熄屏
场景不生效;真正的门是电源键锁存。(上一轮注释里的「播放器灭屏会置 bl_power>0」是反向推断,
已删。)
顺手关掉评审指出的竞态:亮度保底判定块从主循环前半(keypoll 之前)移到电源键边沿更新之后,
电源按下与播放器写 0 落在同一 poll 间隙时不会再出现一轮「没看到电源键就补亮」。
非阻塞 1(采纳):settings 文件存在但缺 display.brightness 键 → 返回 -1(视同不可信),
不再走 launcher 设置表的 101→100;否则扫描窗待机补 100 比老 bug 的 60 更亮。
单测(52 → 56 条):
- 删「power key expired -> floors」(把 bug 固定成期望的那条),换「latch 在窗口内永不过期」
「下一轮窗口(锁存清零)恢复正常补」「latched 时面板暗也不写、why=power-key-latched」;
- 「missing key -> 100」改「missing key -> -1 (untrusted)」,并补 e2e「缺键 → saved=10 不是 100」;
- 两条名字去 degraded:`floor: saved 80 (from settings) floors at 80`、
`hotkey: blank -> saved 60 (settings value)`(降级路径已封顶 10,80/60 只可能来自 settings)。
只交源码:不含二进制、不改 fw_content.conf、不动 build_bootmenu.sh。
|
2026-11-11 18:42:41 +08:00 |
|
AskaEth
|
8cd6e21cad
|
fix(bootmenu): M23 评审 r1 — 修 P2-1 降级路径 + P2-2 Bug4 防护退化
P2-1(降级路径把老 bug 请回来):settings 不可读时不再原样采信面板瞬时值。
bm_bri_pick_saved 的 panel 分支改为 min(面板, BM_BRI_SAFE_LOW),src 改名 panel-capped;
BM_BRI_SAFE_LOW 20 → 10,与 meow_watchdog 的 WD_BRI_SAFE_LOW 对齐(同一系统同一个安全下限)。
这样 settings 不可读 + 面板 60(播放器启动画面值)时 saved 是 10,扫描窗/确认框不会再写 60。
注释改掉「与 wd_bri_decide 同构」的断言:方向相同,但 bootmenu 没有运行期亮度快照,
降级走安全下限而不是 M20 的「快照 → cur>0 不写」链。
单测:把原先钉死 bug 的 "fallback keeps panel 60" 改成 "caps panel 60 -> SAFE_LOW 10",
并补「比 SAFE_LOW 更暗的真实值保留」「SAFE_LOW 与 M20 对齐」两个断言。
P2-2(busy 门可能让 Bug 4 防护变成空操作):删除 /proc D 态门,触发条件回到 pre-M23 的
「窗口内 + 面板暗(bri<=0)+ 面板未下电(bl_power<=0)」。
避免「熄屏瞬间爆亮」改由两条可观测信号承担:bl_power>0(播放器 FBIOBLANK)与
「电源键按下后 3s 内不补」(supervisor 已在 10ms 轮询 evdev,记录按下边沿)。
单测补 Bug4 防退化回归用例(窗口剩余 89999ms、面板暗、未下电 → 必须补)。
评审非阻塞三条:
- 日志节流:同一原因 ≥2s 一条、原因跃迁也 ≥1s(防 visible↔scan-floor 每 400ms 交替刷屏,
90s 窗口最坏 ~90 行);日志字段 busy= 换成 pwr_ago=。
- 单测复跑配方补 TMPDIR;tmp_root() 增加自愈(TMPDIR → 可写 /tmp → $HOME/tmp/m23test)。
- 验收配方(3 次亮/灭屏 + 进一次开机菜单 + 期望日志行)写进报文。
只交源码:不含二进制、不改 fw_content.conf、不动 build_bootmenu.sh。
|
2026-11-11 18:42:41 +08:00 |
|
AskaEth
|
bc7bafa5dc
|
fix(bootmenu): M23 亮度单一权威源(只交源码,二进制由 M43 统一重编)
真机 0.8.46 两个症状:
1) 开机菜单亮度 = 第一屏的 60(用户设置 1)——根因是 M6.25 的选单亮度写回只改了源码、
二进制没重编(strings 无 display.brightness_min),本次只交源码,重编交给 M43 批次。
2) HibyOS 亮/灭屏瞬间爆亮——supervisor 把启动瞬间面板读数(播放器写的 60)当保底,
且 >60 一律钉 60;扫描窗保底只要读到亮度<=0 就在 400ms 内写回该值,用户主动熄屏
也会被强行点亮。
改动(全部失败也沿用现状行为):
- saved_brightness 权威源改为 settings.conf 的 display.brightness(与 watchdog/launcher
同源同 clamp);面板读数只在 settings 不可读时兜底;两者都不可知才写 BM_BRI_SAFE_LOW。
- 旧的 `>60 → 60` 硬钉改为 clamp 进 [display.brightness_min, max_brightness](bm_bri_clamp),
不再用常量顶替用户值;为什么不会重新引入 M2.9 开机闪屏写在 bm_bri_pick_saved 注释里。
- 扫描窗保底加「播放器忙(proc 态 D)+ 面板未下电(bl_power<=0)」两门,窗口结束彻底放手。
- 热键熄屏恢复:面板真实正值优先(HibyOS 内改过亮度),否则用 settings 值,夹进 [min,max]。
- 决策抽纯函数 bm_bri_pick_saved / bm_bri_clamp / bm_bri_floor_decide / bm_bri_hotkey_saved。
- 亮度判定/写回补 bm_log 落卡(stderr 原行全部保留),只在状态跃迁时打,不在高频路径刷日志。
- test_bm_fw.c:宿主单测(settings=1/saved=60/now=0/blank 矩阵 + clamp 矩阵 + 真文件 e2e)。
- -Wall -Wextra 清理:3 处 unsigned/int 比较、未用参数、未用变量、sys/poll.h→poll.h。
不含二进制、不改 fw_content.conf 钉值(保持 4441822d)。
|
2026-11-11 18:42:41 +08:00 |
|
AskaEth
|
f9c2ea42a4
|
fix(boot): M21 r1 评审 P1 — bl_cap 把 cur=0 当「无有效值」照写 20(+P2 两处)
P1 根因(评审给的真机驱动证据链,已按其最小修法改):
/module_driver/pwm_backlight.sh 是 `insmod pwm_backlight.ko ... default_brightness=0
max_brightness=101`,模块 init 把 props.brightness 置 0 再 update_status(PWM 0 分支)→ 上电即灭屏;
该模块由 S11module_driver_default 加载,rcS 自然序排在 S11jpeg_display_shell 之后。于是:
- 函数入口那次 bl_cap:背光节点还不存在,写必然失败(no-op);
- fb0 出现后画图前那次 bl_cap:读到 cur=0,旧条件 `cur <= cap` 命中「只降不升」跳过分支,
20 从未写入 → 画图时刻亮度 0。
物理后果两头都是缺陷:面板仍亮则 logo 依旧亮(原问题没修);面板灭则 S11~S21 无可见 logo,
settings.conf 缺失时直到 launcherd 才亮屏(相对 stock「0.1s 后写 60」是回归)。
修改:
- bl_cap 判定改为「仅 1 <= cur <= cap 才视为已有有效值跳过;0 / 空 / 非数字一律照写」。
S22 抢写 1 的竞态保护不变(1 落在 1..20 → 仍跳过,不会被顶回 20)。
- 删掉函数入口那次 bl_cap(节点未建,必然 no-op,且是重定向报错的来源);只保留 fb0 就绪后、
画 logo 前那一次 —— 同一驱动脚本里 pwm_backlight.ko 先于 soc_fb.ko 加载,fb0 出现即节点就绪。
- 写入成功时打一行 `backlight: -> 20 (was N)` 便于刷机后复核;`2>/dev/null` 移到 `>` 之前,
节点未就绪时连重定向报错一起吞掉(P2-1)。
- S22:失败路径日志由「保持 S11 低亮度」改为「不改背光(当前 brightness=N)」(P2-2);写入失败
日志同样附当前读数;写入处的 2>/dev/null 次序一并改正。
- 头部注释按时序真相重写(驱动默认 0 = 灭屏,不是「上电很亮」)。
实测(沙箱重写 sysfs 路径 + stub cmd_jpeg_display/nanddump/sleep,dash 与 busybox 各一遍):
cur=0 → 画图时刻 20、结束 20(修复前 0/0);cur=1 → 1/1;cur=60、cur=101 → 20/20;
竞态(fb0 就绪前外部写 1)→ 画图时刻 1、结束 1(未被顶回);节点不可写时 stderr 0 行、仍画图、rc=0。
S22 19 用例全 rc=0(仅 usage rc=1,rcS 不可达)、sleep 调用 0、行为与改文案前一致。
S11 与 S22 内容均变 → fw_content.conf 两条 md5 同步更新为
3ad33301fb9f0884102a47e17a1985ed / 1a0aa33d6f806f3f1648168cc1d8b953
(未改动 meow_watchdog 那条:main tip dfde95b 仍是 553840cd,与本单无关,已在报告中提示。)
|
2026-11-05 22:04:16 +08:00 |
|
AskaEth
|
0ab23161b6
|
fix(boot): M21 开机 logo 亮度 — S11 画前压到 <=20 + 新增 S22brightness 按用户设置恢复
冷启动 logo 很亮:stock S11 是画完 logo 之后才写死 60,画图那一刻用的是面板上电默认高亮;
而 S11 早于 S21mount_ubifs,那时 /usr/data 未挂载、读不到 settings.conf,只能写死一个值。
- S11jpeg_display_shell:以基线(249220f2)为底,把背光压制挪到画 logo 之前(jpeg_display
函数体内、先于 cmd_jpeg_display),值 20(只降不升:S22 已写更暗则不覆盖);删除画完后
写死 60 的那行;/dev/fb0 等待、mtd5 主题判定、后台 jpeg_display & 语义不变;
主题判定 `==` 改 `=`(POSIX test,语义不变,便于宿主验证)。
- S22brightness(新):S21mount_ubifs 之后运行,读 /usr/data/meow/settings.conf 的
display.brightness,按 display.brightness_min 与 sysfs max_brightness clamp 后写入;
读不到/解析失败不改背光(保持 S11 低值)、无 sleep/重试、任何运行期失败 exit 0;幂等。
- scripts/build/fw_content.conf:登记两条(S11 覆盖基线同名文件、S22 新增),md5 实算,
说明列写清 S11 < S21mount_ubifs < S22 的顺序依赖。
- scripts/build/README.md:补「覆盖基线已有文件」语义(无条件 cp -f,不校验基线 md5、
也不跳过已存在文件;唯一基线校验仍是 hiby_player)。
固件需整包刷机才生效,未刷机、未写设备。
|
2026-11-05 22:04:16 +08:00 |
|
AskaEth
|
76eb2f4d1c
|
fix(bootmenu): M6.25 开机菜单/第二屏亮度按用户设置恢复(方案A:显示前读settings.conf写回) — 推卡
|
2026-09-03 14:40:56 +08:00 |
|
MeowOS
|
c0f7a95719
|
feat(font+sys): 字库内存纪律(agent-215)+sysui接管launcher监管(agent-216)
215: meow_font.c 流式分块解码(gbk峰值40→23.5MB, 逐字节校验一致) + 多字体槽5→4+16MB驻留预算; 量化: gbk稳态驻留17.3MB vs common 4.2MB(OOM主因); meow_font.a→67113c03 meow_ui.a→223d5401
216: bootmenu让位(sysui在则start launcher让位, 不在则exec兜底) + S70预置launcher.conf enabled=1(+旧设备升级迁移); launcher崩溃可自动拉起; bootmenu 4441822d / S70 e435affc / S90 e0ace111
216注: S70早启动与选单共存为真机重点观察项
|
2026-08-31 13:28:07 +08:00 |
|
MeowOS Dev
|
b3e57d4b55
|
bootmenu版本显示修复(agent-106): 读/etc/meowos_version替换硬编码0.7.9, 版本单点
|
2026-08-30 12:34:51 +08:00 |
|
MeowOS Dev
|
064635b3c4
|
WIP checkpoint (M2.53→M2.54 工作区): 字体归MeowOS/fonts+SDK跟随+多字体(进行中)+boot板载+状态栏28+亮度/音量修复+文档刷新
|
2026-08-30 03:27:24 +08:00 |
|
MeowOS Dev
|
245bee2946
|
MeowOS for HiBy R3 Pro II — 公共发布版本(历史已重置)
• 全新单提交:清除含敏感信息的旧历史(sudo 口令、内网 IP、SSH 密钥路径、热点 SSID、设备 MAC)
• 本地开发文档/测试记录/构建脚本全部移入 gitignored 的 devdocs/ 与 scripts/build/(不入库)
• 保留:MeowOS 源码(launcher/watchdog/bootmenu/meow_svcd/SDK)、项目规范文档、mips-repo
增补组件:SDK 统一日志+通知 API、meow_svcd 服务管理器、mips-repo 软件仓库
|
2026-08-30 01:12:34 +08:00 |
|