# ARCH 热点侧源码 —— 给审查 AI 的说明

> 固件版本 **1.0.28**　设备源码文件数 **107**

## 这是什么

ARCH 热点侧 = 跑在树莓派上的那套代码，负责：
射频收发（SX1255 多通道）、DMR/YSF/D-STAR/P25/NXDN/FM(FMO)/POCSAG 各模式网关、
Web 控制台、FMO 模拟互联桥、数据更新与在线升级。

**不含**：93/92 服务器、Cloudflare 网站、手机 APP（那是另外几条线）。

## 推荐阅读顺序

1. `ARCH热点侧-完整技术说明与代码架构.md` —— 系统边界、发布包结构、安装升级、
   运行时架构、API 路由表、每个脚本干什么、配置索引、权限模型、已知坑。
2. `opt/mmdvm-web/app.py` —— Web 主程序（约 470 KB，Flask 后端 + 整个前端塞在一个文件里）。
   重点看：`api_save()`、`api_config()`、`parse_qso_line()`、`_merge_qso()`、
   `get_telemetry()`、各 `/api/*` 路由。
3. `usr/local/libexec/mmdvm-save.py` —— 所有“保存配置”的落点（各模式 ini 的写法）。
4. `usr/local/libexec/channel-setup.py` + `arch-channel-limit.py` —— 通道规划与硬件上限。
5. `usr/local/libexec/hosts-build.py` —— 服务器列表生成（含 ARCH 自建服务器置顶）。
6. `usr/local/libexec/mmdvm-status.py` —— 状态与通话记录（各地模式“开始行”写法不同，见注释）。
7. `usr/local/bin/web-manage.sh` —— Web 的总调度（status/switch/get-config/save-*/…）。
8. `opt/fmo-bridge/fmo_bridge.py` —— FMO 模拟互联桥。
9. `_build/build_upstream_template.sh` —— 上游 MMDVM 组件的编译脚本（含三处本地补丁）。

## 已知坑（审查时请重点看这些地方）

- `app.py` 是一个 ~470 KB 的巨型文件，前端 HTML/CSS/JS 全部内联，**改它必须用锚点式精确替换**。
- Web 进程以 `mmdvm-web` 用户跑，所有需要 root 的动作都走
  `/etc/sudoers.d/arch-web` 的 **白名单**；新增功能忘了加白名单就会“点了没反应”。
- 公开版与内测版是同一套源码打包时裁剪出来的：公开版会删掉所有 TETRA / TDR Link 相关内容。
- 说话/通话记录依赖 journald 里各地模式的日志关键字，各模式“开始行”写法不一样
  （DMR/D-Star 有 header，YSF/P25/NXDN 网络侧没有），改这里要小心。
- 上游 MMDVM-IQ 打了补丁（双工模式下始终喂全时隙解码器），否则本机手台发射解不出来。
- 认证/校验：`install.sh`、`arch-hotspot-update` 都用 `current.json` 里的 sha256 校验更新包。
- 无 SX1255 射频板的设备会在安装时探测硬件并停用 MMDVM 射频服务，避免 `systemd` 无限重启；
  内测版仍保留 TETRA 模式选择，但不会启动不存在的射频硬件。

## 说明

- 本包内的呼号、DMR ID、密码、内网 IP **已全部脱敏**（NOCALL / 000000000 / CHANGE_ME / 192.168.1.x），
  可以直接贴给外部 AI。
- 页脚作者署名行保留（作者：BG2GA）。
- 许可证：GNU GPL v3。
