安装教程 —— 把魔百盒 HG680-R 变成「桌面小电脑」

> OpenHW Lab · 约 40–60 分钟 · 适用 魔百盒 HG680-R（MStar 平台 / Android 4.4.4）。

---

0. 你需要
- 一台已 root 的 HG680-R（能开 ADB）。
- 电脑（装 adb）+ 网线；TTL 串口线（强烈建议，本 ROM adbd 需授权、串口是生命线；console 115200）。
- （可选）USB 鼠标键盘；Firefox 68 armv7（多语言）安装包；U 盘。

1. 认清盒子
getprop ro.product.model      # HG680-R
getprop ro.board.platform     # clippers
getprop ro.build.version.release  # 4.4.4


2. 打开控制通道（ADB over TCP，本 ROM 需授权）
盒子里（串口）先起 adbd：
setprop service.adb.tcp.port 5555
start adbd

电脑 adb connect <盒子IP>:5555。若显示 offline/unauthorized（本 ROM 会），把电脑公钥写进盒子：
串口里(可 root)：把 ~/.android/adbkey.pub 的内容分块写入
su 0 sh -c "mkdir -p /data/misc/adb"
su 0 sh -c "echo -n '<公钥前半段>' > /data/misc/adb/adb_keys"
su 0 sh -c "echo -n '<公钥后半段>' >> /data/misc/adb/adb_keys"
su 0 sh -c "echo >> /data/misc/adb/adb_keys"      # 结尾换行
su 0 setprop ctl.restart adbd

> ⚠️ 本机 su 0 <cmd> 可用；su -c "长串" 不行。

3. 一键安装
cd install
./一键安装.sh <盒子IP>


4. 手动要点（与一键等价）

4.1 桌面 App + 设默认 HOME
adb push install/桌面.apk /data/local/tmp/desk.apk
adb shell 'pm install -r /data/local/tmp/desk.apk'
adb shell 'am start -n com.openhwlab.desktop/.MainActivity'
adb shell 'pm disable com.fiberhome.iptv'     # 禁运营商桌面(可 pm enable 还原)

桌面图标双击打开；含 浏览器/当贝市场/当贝投屏/电视直播/回收站/设置… 等。

4.2 浏览器 Firefox（桌面版）
装 armv7 的 Firefox 68 多语言（org.mozilla.firefox）后，写桌面UA配置：
P=$(adb shell 'ls -d /data/data/org.mozilla.firefox/files/mozilla/*/ | head -1')  # profile目录
adb push install/firefox-user.js ${P}user.js
adb shell 'am force-stop org.mozilla.firefox'      # 重启生效
adb shell 'pm disable com.android.browser'         # 否则点链接弹选择框

firefox-user.js 里含：Windows 桌面 UA、desktopWidth=1280、关字体膨胀、DPR=1、单标签、主页=百度、关会话恢复。

4.3 瘦身 + 内存扩容
adb push install/1-系统瘦身.sh /data/瘦身.sh; adb shell 'sh /data/瘦身.sh'
adb push install/2-内存扩容.sh /data/扩容.sh; adb shell 'sh /data/扩容.sh'


4.4 子系统 + 局域网互传（:8890）
建 Ubuntu 20.04 armhf 子系统到 /data/linux（chroot，盒子能上网可直接 apt）：
解包 ubuntu-base-20.04.5-base-armhf.tar.gz 到 /data/linux；挂 proc/sys/dev
子系统内： apt-get install -y --no-install-recommends python3   (互传用)
二维码库(可选)： pip install qrcodegen
adb push install/5-局域网互传.py   /data/linux/root/transfer.py
adb push install/6-系统工具服务.py /data/linux/root/boxctl.py


4.5 开机自启（本 ROM 专属）
钩到 /system/bin/opt/etc/init.fhservice.sh（开机执行）→ 调 /data/startlinux.sh：
adb push install/开机自启-盒子.sh /data/startlinux.sh
adb shell 'chmod 755 /data/startlinux.sh'
adb shell 'mount -o remount,rw /system'
adb shell '[ -f /system/bin/opt/etc/init.fhservice.sh.bak ] || busybox cp /system/bin/opt/etc/init.fhservice.sh /system/bin/opt/etc/init.fhservice.sh.bak'
adb shell 'echo "sh /data/startlinux.sh >/dev/null 2>&1 &" >> /system/bin/opt/etc/init.fhservice.sh'

/data/startlinux.sh：等 sys.boot_completed=1 → 挂子系统 → start-stop-daemon 起 transfer/boxctl → swap → setprop ctl.restart adbd（带 5555 端口）。

4.6 （可选）鼠标指针补丁：手→箭头 + 去白圈
本 ROM 系统指针是"手"、且指针处有白圈。刷入本目录已改好的 framework-res.patched.apk：
adb shell 'mount -o remount,rw /system'
adb shell 'cp /system/framework/framework-res.apk /data/fwres.bak'      # 备份
adb push install/framework-res.patched.apk /system/framework/framework-res.apk
adb shell 'chmod 644 /system/framework/framework-res.apk; reboot'

> 改动：res/drawable-hdpi/pointer_arrow.png→箭头；res/drawable-xhdpi/pointer_spot_{hover,touch,anchor}.png→透明。
> ⚠️ 改核心包有风险（本次实测开机正常）；还原：cp /data/fwres.bak /system/framework/framework-res.apk 后重启。

5. 重启验证
adb shell 'reboot'
等 ~2 分钟
ping <盒子IP>
adb connect <盒子IP>:5555; adb shell 'dumpsys window windows | busybox grep mCurrentFocus'  # 桌面
curl -s -o /dev/null -w '%{http_code}\n' http://<盒子IP>:8890/   # 200


日常使用
- 桌面双击图标打开应用；右上角悬浮栏：返回/任务/⌂桌面/确定/关机。
- 浏览器（桌面版）；当贝市场可装更多 App；当贝投屏已关更新弹窗。
- 传文件：http://<盒子IP>:8890/。

常见问题
- 点浏览器弹选择框 → pm disable com.android.browser。
- 浏览器每次一堆标签 → 已配单标签+主页百度（见 firefox-user.js）。
- 白圈还在 → 刷 framework-res 指针补丁（4.6）。
- 网页不像电脑版 → 确认 firefox-user.js 已写入 profile 并重启 Firefox。

—— OpenHW Lab · 智能硬件开放实验室 · hi@openhwlab.com
