Grizzly-Endeavors/ap630-debian
GitHub: Grizzly-Endeavors/ap630-debian
针对 Aerohive AP630 的 Debian 主线 arm64 端口,提供从内核、设备树到根文件系统的完整移植与调试方案。
Stars: 0 | Forks: 0
# ap630-debian
在 **Aerohive AP630**(Broadcom BCM4906 / BCM4908)上启动主线 Debian arm64 —— 内核、设备树、驱动补丁、根文件系统构建器、U-Boot 环境工具,以及 RDP 逆向工程笔记。
## 正常运行的功能
- Linux 6.12 从 NAND 启动于 AP630
- 自定义设备树(`dts/bcm4906-aerohive-ap630.dts`)基于主线 `bcm4906.dtsi`
- 以太网:通过 DSA 启用两个 GbE 端口(`wan` 位于交换机端口 3,`lan` 位于端口 1),次毫秒级 ping 延迟
- Debian bookworm arm64 根文件系统(systemd、openssh-server、nftables、ethtool、iperf3 等)构建为 initramfs
- 串口控制台波特率 9600,8N1;通过以太网的 SSH
- 完整的 U-Boot 恢复流程(TFTP 启动、NAND 重刷、全部 10 个 MTD 分区的备份/恢复)
- 通过 CVE-2025-27229 在库存 IQ Engine 10.6r7 上获得根权限 shell(用于初始闪存)
## 已知限制
- **WiFi:不可能。** BCM43684 没有开源的 Linux 驱动。如需 WiFi,请使用库存固件。
- **以太网吞吐量:~10 Mbps(通过 iuDMA)。** 这是 BCM4908 慢速路径 DMA 引擎的硬件特性 —— 不是驱动错误。博通的数据平面运行在 Runner Data Path(RDP)加速器上。详见 [ADR-010](docs/decisions/010-ap630-iudma-limit-requires-rdp.md)。
- **使用从 asuswrt-merlin.ng GPL 源码移植的 RDP 初始化模块:~95 Mbps。** 相比提升了 10 倍,但受单核 Cortex-A53 限制(第二核卡在复位状态),不足以作为 GbE WAN 路由器。详见 [ADR-011](docs/decisions/011-ap630-restored-to-stock-wifi-ap.md)。
- **SMP:无法将 CPU1 启动上线。** BCM4908 使用 DQM(消息队列)接口与 PMC 进行 CPU 功耗控制;主线 Linux 没有对应的驱动。需要移植 ATF 的 `pmc_cpu_core_power_up()`。
- **自动启动:BTRM 在 U-Boot 切换波特率前以 115200 波特输出。** 垃圾数据会中断 U-Boot 的倒计时,因此每次启动都需要手动在 U-Boot 提示符下执行 `bootm`。
- **仅限 initramfs。** 没有持久化根文件系统 —— 重启后更改会丢失。NAND MTD 分区尚未在 DTS 中定义。
## 硬件
| 组件 | 详情 |
|------|------|
| SoC | Broadcom BCM4906(BCM49408 系列),双核 Cortex-A53 @ 1.8 GHz |
| RAM | 1 GiB DDR3-1600 |
| NAND | 1 GiB(Micron) |
| 以太网 | 2× GbE,通过 BCM4908 集成 SF2 交换机 |
| WiFi | 2× BCM43684(4×4:4 802.11ax)— 无开源驱动 |
| 串口 | 9600 波特,8N1 |
| PoE | 802.3at(PoE+) |
详见 [docs/project-overview.md](docs/project-overview.md) 获取完整的硬件、固件、NAND 分区和启动流程说明。
## 仓库结构
| 路径 | 用途 |
|------|------|
| `dts/bcm4906-aerohive-ap630.dts` | AP630 的设备树 |
| `kernel/build.sh` | 完整内核构建(下载 6.12、打补丁、交叉编译) |
| `kernel/generate-config.sh` | BCM4908 内核配置生成器 |
| `kernel/patches/bcm4908_enet.c` | 修补后的 enet 驱动 — IRQ 重排序、DMA 静默、GMAC 电源域、DSA MTU 修复 |
| `kernel/patches/bcm-pmb.{c,h}` | 支持 `BCM_PMB_SWITCH` 与 `BCM_PMB_GMAC` 电源域的 PMB 驱动 |
| `kernel/rdp-init/` | Runner Data Path 初始化模块(从 asuswrt-merlin.ng GPL 源码移植) |
| `initramfs/build-debian-rootfs.sh` | Debian bookworm arm64 根文件系统构建脚本 |
| `initramfs/build-test-initramfs.sh` | 极简 BusyBox 测试 initramfs |
| `initramfs/build-enet-test-initramfs.sh` | 以太网测试诊断 initramfs |
| `uboot-env/build-env.py` | U-Boot 环境镜像生成器(CRC32 + key=value 对) |
| `scripts/catch-uboot.py` | 带密码处理的串口 U-Boot 捕获工具 |
| `scripts/tftp-boot-test.sh` | TFTP 启动测试工具 |
| `scripts/rebuild-and-stage.sh` | 增量内核重建 + mkimage + TFTP 阶段部署 |
| `scripts/power-cycle-ap.sh` | PoE 循环辅助(通过 SR2024 交换机) |
| `scripts/ap630-serial.sh` | 基于 Expect 的根 Shell / U-Boot 自动化脚本 |
| `scripts/restore-stock.sh` | 恢复库存 HiveOS 的工具 |
| `docs/project-overview.md` | 完整技术文档(硬件、启动、根访问、驱动缺陷) |
| `docs/rdp-reverse-engineering.md` | RDP 模块目录与逆向工程笔记 |
| `docs/decisions/` | 架构决策记录(ADR) |
| `STATUS.md` | 工作日志 / 当前状态快照 |
| `RESTORE-STOCK.md` | 库存固件恢复步骤指南 |
## 快速开始
本仓库以文档为主;脚本假设特定实验环境(带 TFTP 服务器的 Debian 笔记本、USB 以太网连接 AP、USB 串口波特率 9600)。按需调整。
1. **获取 AP 根权限** 通过 CVE-2025-27229(在 `docs/project-overview.md` 中有说明),并在操作前转储所有 NAND 分区。shmoo(mtd1)与硬件信息(mtd2)分区不可替代。
2. **构建内核** 使用 `kernel/build.sh` —— 它会下载 Linux 6.12、打入本地补丁,并生成 U-Boot Legacy 镜像。
3. **构建根文件系统** 使用 `initramfs/build-debian-rootfs.sh`。
4. **首先通过 TFTP 启动验证**:参考 `scripts/tftp-boot-test.sh` 与 `docs/project-overview.md` 中的 `bootm` 流程。
5. **仅验证成功后刷入 NAND** 并保留备份。恢复流程请参见 `RESTORE-STOCK.md`。
## 值得向主线贡献的驱动修复
`kernel/patches/` 中的以下三项修复适用于通用 BCM4908,而不仅限于 AP630:
- **`bcm4908_enet_open` 中的 IRQ 排序竞争** — 影响所有通过 U-Boot 启动的 BCM4908(OpenWrt 的 BCM4908 测试者均使用 CFE,因此不会触发此问题)
- **`bcm4908_enet_dma_reset` 中的 DMA 静默** — 当 U-Boot 留下 RDP 引擎仍在运行时的安全重置
- **`BCM_PMB_GMAC` 电源域** — 在 U-Boot 的 `sf2gmac_remove()` 为 ENET 块断电后,恢复该块所必需
详见 [docs/project-overview.md](docs/project-overview.md) §“以太网驱动状态”获取完整细节。
## 许可证
内核补丁继承 Linux 内核的 GPL-2.0。RDP 初始化代码源自 asuswrt-merlin.ng,同样为 GPL-2.0。脚本与文档采用 MIT 许可。
## 参考链接
- [WikiDevi: Aerohive AP63](https://wikidevi.com/wiki/Aerohive_AP630)
- [mclab-hbrs CVE-2025-27229 writeup](https://github.com/mclab-hbrs/extremenetworks-aerohive-writeup)
- [Aura InfoSec: Hacking the Hive](https://research.aurainfosec.io/pentest/hacking-the-hive/)
- [asuswrt-merlin.ng](https://github.com/RMerl/asuswrt-merlin.ng) — GPL 源码,包含 BCM4908 硬件驱动与 Runner 固件
标签:Aerohive AP630, ARM64, ATF, BMC, Broadcom BCM4906, Broadcom BCM4908, CPU1 无法上线, Cutter, CVE-2025-27229, Debian, DSA, DTS, GBE, initramfs, IQ Engine, iudma, Linux 6.12, MTD 分区, NAND 刷写, NAND 闪存, PMB, PMC, RDP 反向工程, rootfs 构建, Runner Data Path, SEO 关键词, SMP 限制, SSH, TFTP 启动, U-Boot, WiFi 不可用, 串口控制台, 以太网, 单核加速, 固件恢复, 客户端加密, 嵌入式 Linux, 开源驱动, 硬件限制, 系统引导, 网口驱动, 网络加速, 设备树, 路由器开发, 逆向工具