Files
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

80 lines
4.2 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# verify_meow_m22.sh — R3 Pro II MeowOS 常驻主界面 + 系统拔营(挂卡/联网)真机验证编排
#
# 前提:设备已在 MeowOS 模式(播放器已死)且联网可 SSH;或先在此脚本内确认无播放器。
# 场景(用户实测 M2.1 三现象 + 拔营):
# - 现象3:启动即显示应用列表(非播放器死帧/启动图卡屏)→ `shot m22_start`
# - 现象1:BACK TO PLAYER 显示「重启后返回播放器」提示并留下 → `--sim-exit-tap`
# - 现象2:无播放器时不备份/不冻结/不 SIGCONT、不恢复死帧 → 全程 logmsg 确认
# - 拔营:TF 卡自动挂载(ensure_card_mounted)、WiFi 自动联网(ensure_wifi)
#
# 用法:./verify_meow_m22.sh <设备IP> [ssh私钥]
# ./verify_meow_m22.sh <device_ip>
#
# 纪律:不 killall(仅已知 pid SIGTERM);禁 SIGUSR1;禁经 hiby_player.sh;
# 启动前 rm -f /data/recovery_all;本脚本不刷机。
set -u
DEV="${1:-<device_ip>}"
KEY="${2:-$HOME/Project/R3ProII/ssh_keys/<device_key>}"
ROOT="$HOME/Project/R3ProII"
LAUNCHER="$ROOT/patch_v2/meow_launcherd/meow_launcherd"
SSH="ssh -i $KEY -o StrictHostKeyChecking=accept-new -o ConnectTimeout=8"
SCP="scp -i $KEY -o StrictHostKeyChecking=accept-new"
s() { timeout 60 $SSH root@"$DEV" "$1"; }
sbg() { timeout 60 $SSH root@"$DEV" "$1" >"$ROOT/device_test/$2.raw" 2>/dev/null; }
shot() {
# 抓取当前 fb0 显示帧(buffer0, 480*720*2)并起名
s 'dd if=/dev/fb0 of=/data/_m22.raw bs=691200 count=1 2>/dev/null' >/dev/null
local name="${1:-m22_shot}"
sbg 'cat /data/_m22.raw' "$name"
local sz=$(stat -c%s "$ROOT/device_test/$name.raw")
if [ "$sz" = "691200" ]; then
python3 "$ROOT/device_test/fb2png.py" "$ROOT/device_test/$name.raw" "$ROOT/device_test/$name.png" >/dev/null 2>&1
python3 "$ROOT/device_test/ascii_fb.py" "$ROOT/device_test/$name.raw" 96 40 > "$ROOT/device_test/$name.txt"
echo "saved device_test/$name.png/.txt (raw $sz)"
else
echo "!! unexpected raw size $sz (期望 691200); 可能 fb0 非 RGB565 或 dd 失败"
fi
}
echo "==> 连接 $DEV ..."
s 'echo OK' >/dev/null || { echo "!! SSH 失败(设备可能在 MeowOS 未联网,或未开机)"; exit 1; }
echo "==> 红线:清 /data/recovery_all"
s 'rm -f /data/recovery_all; ls /data/recovery_all 2>/dev/null && echo FLAG || echo no_flag'
echo "==> 当前播放器状态(MeowOS 模式应无)"
s 'pidof hiby_player && echo PLAYER_ALIVE || echo NO_PLAYER'
PLAYER_PID=$(s 'pidof hiby_player' | tr -d ' ')
echo "==> 推送新 launcher 到 /data(不覆盖系统二进制)"
$SCP "$LAUNCHER" root@"$DEV":/data/meow_launcherd_m22
s 'chmod 755 /data/meow_launcherd_m22; md5sum /data/meow_launcherd_m22'
if [ -n "$PLAYER_PID" ]; then
echo "==> 有播放器在跑(HibyOS 覆盖语境)。若要测 MeowOS 常驻需先杀之(已知 pid SIGTERM):"
echo " 请确认后手动:$SSH root@$DEV 'kill $PLAYER_PID; sleep 2; pidof hiby_player || echo DEAD'"
echo " (本脚本不代杀,避免误触 watchodog;走 MeowOS 启动路径最干净)"
exit 2
fi
echo "==> 前端后台拉起新 launcher(MeowOS 常驻): "
echo " --sim-exit-tap 6000 —— 6s 点 BACK TO PLAYER 行(应 toast「REBOOT TO RETURN TO PLAYER」并留下)"
s 'rm -f /tmp/meow_boot.log; kill $(cat /usr/data/meow_launcherd.pid 2>/dev/null) 2>/dev/null; \
nohup /data/meow_launcherd_m22 --sim-exit-tap 6000 >/tmp/meow_boot.log 2>&1 & echo "launcher pid $!"'
sleep 3
shot m22_start # 现象3:启动即应用列表(非死帧)
sleep 3
shot m22_back_toast # 现象1:BACK TO PLAYER toast
echo "==> 日志(确认不备份/不冻结/不恢复死帧 + 挂卡/联网拔营)"
s 'grep -E "meow mode|sd_0 mounted|wifi not up|menu close|BACK TO PLAYER|card ready" /tmp/meow_boot.log | head -30'
echo "==> 清理:SIGTERM 已知 pid,结束恢复干净"
LPID=$(s 'cat /usr/data/meow_launcherd.pid 2>/dev/null')
[ -n "$LPID" ] && s "kill $LPID 2>/dev/null" || true
s 'sleep 1; kill $(pidof meow_launcherd_m22) 2>/dev/null; rm -f /data/_m22.raw /data/recovery_all; \
grep sd_0 /proc/mounts >/dev/null && echo SD_STILL_MOUNTED || echo SD_UMOUNTED; echo done'
echo "==> 完成。物理交互(热键开关/触摸/按键/音频)留用户真机确认。"