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, 开源驱动, 硬件限制, 系统引导, 网口驱动, 网络加速, 设备树, 路由器开发, 逆向工具