硬件档案/HARDWARE ARCHIVE
进行中

Cisco Meraki MX64 / MX65

2GB 内存的企业分支网关,授权一过期就彻底不转发流量。DTS 已在内核主线,但官方没有成品固件。

资产标签 · 已核实
SoC
Broadcom BCM58625(Cortex-A9 双核 @ 1.2GHz,Northstar Plus)
架构
ARMv7 / armhf —— 不是 x86,装不了 pfSense 或 OPNsense
内存
2GB DDR3(4 × SK Hynix H5TC4G83CFR)
存储
1GB 裸 NAND(Micron MT29F8G08ABACA),非 eMMC
端口
MX64:BCM58625 内置交换,5 × GbE / MX65:2 × GbE(WAN) + 2 颗 QCA8337 提供 10 × GbE(LAN) + BCM59111 PoE+ PSE
构建目标
OpenWrt bcm53xx / bcm5862x,三个 image:mx64、mx64a0、mx65
二手价位
授权失效件极便宜,国内闲鱼有量但不大

这台是什么,为什么它变成了废铁

MX64 和 MX65 是 Cisco Meraki 面向分支机构的小型安全网关,2015 年前后的产品。放在今天看它的配置依然不寒酸:2GB DDR3 内存——对比一下,绝大多数消费级路由器是 128MB 到 512MB。

它现在几乎白送,原因和技术无关。Meraki 的整个产品逻辑建立在云授权上:授权到期,设备停止转发流量。 不是降级、不是限速,是停止工作。一颗电容都没坏,硬件完好,但它成了一块两斤重的塑料砖。

这是我想从这台设备开始建这个档案的原因。它是"厂商用商业模式杀死好硬件"这件事最干净的标本。

拆开看到什么

本节的芯片清单来自内核与 OpenWrt 的提交记录,已交叉核对;我自己的机器还在路上,实拍和实测会在到手后补上。 标注为已核实的部分不会再变,未核实的会明确写出来。

MX64 和 MX65 用的是同一颗 SoC:Broadcom BCM58625,双核 Cortex-A9 跑 1.2GHz,属于 Northstar Plus 平台。配 2GB DDR3 和 1GB 裸 NAND,一个 USB 2.0,主板上有内部串口排针。

真正有意思的是两者的网络部分完全不同,而这个差异很能说明企业设备的设计思路:

MX64 的 5 个千兆口全部来自 BCM58625 内置的交换单元。结构简单。

MX64 端口拓扑图:5 个千兆口全部来自 BCM58625 内置的交换单元,没有外挂交换芯片也没有 PoE PSE;口与口之间由芯片内部转发,WAN 到 LAN 的流量则由 A9 核心路由
MX64 的端口分工,简单到只有一层。口与口之间的流量由 SoC 内部的交换单元自己转发,根本到不了 CPU;[1] 标出的橙色那条才是要过 A9 核心的——WAN 到 LAN 要路由和 NAT。所以这台的天花板是 CPU,不是端口数。依据公开提交记录绘制,实测吞吐待补。

MX65 就复杂了:BCM58625 的交换单元只负责 2 个 WAN 口,10 个 LAN 口是外挂了两颗 Qualcomm QCA8337,另外还有一颗 Broadcom BCM59111KMLG 专门做 PoE+ 的 PSE。

这个拓扑值得多说两句,因为它解释了一个很多人搞不清的问题:为什么"口多"不等于"性能好"。

MX65 端口拓扑图:BCM58625 内置交换负责 2 个 WAN 口,10 个 LAN 口由两颗 QCA8337 提供,跨芯片与 LAN 到 WAN 的流量必须经过 SoC
MX65 的端口分工。[1] 标出的橙色链路就是上行瓶颈:跨两颗 QCA8337、以及 LAN 到 WAN 的流量都要经过 SoC,而 LAN 口之间在同一颗芯片内互访才是线速。依据公开提交记录绘制,实测吞吐待补。

那 10 个 LAN 口之间的流量,如果发生在同一颗 QCA8337 内部,是芯片自己转发的,线速无压力。但跨两颗 QCA8337、或者 LAN 到 WAN 的流量,必须经过 SoC。这条上行链路的带宽,以及 1.2GHz 双核 A9 的处理能力,才是真正的天花板。厂商标称的"12 个千兆口"是接口数量,不是聚合吞吐能力。

企业设备这么设计不是偷工减料,是因为分支机构的真实流量模型就是"大量终端、少量上行"。理解了这一点,你才知道这台设备适合放在什么位置——以及不适合放在哪。

买之前必须知道的

这一节是我整理这台设备时觉得最该先写出来的部分,因为它能直接帮你省钱。

一、别买 W 版本。 MX64W / MX65W 的无线是两颗 Broadcom BCM43520KMLG,OpenWrt 不支持。刷完就是一台没有 Wi-Fi 的盒子,其余功能正常。W 版通常还卖得更贵,纯浪费。

二、有 A0 步进变体。 早期批次的 BCM58625 是 A0 版本,缺少 cache coherency,secondary-boot-reg 也不同,需要单独的设备树(meraki,mx64-a0),编译时是独立的 image 目标。下单前基本问不出来,到手必须自己确认,选错 image 起不来

三、卖家"已升级到最新固件"是坏消息。 新版原厂固件把 mtd0(U-boot 分区)锁成只读了。刷机前先在原厂系统里查一下:

cat /sys/block/mtdblock0/ro

返回 0 可以直接写;返回 1 就得先加载 mtd-rw 模块解锁。顺便说,原厂固件是开着 telnet 的,这就是入口。

四、至少买两台。 你要替换 U-boot,第一台变砖的概率不低。第二台保持原厂状态很有用:做对照、验证步骤、以及拍下"授权过期后它到底怎么废掉"的实证画面。

工具上需要一根 3.3V TTL USB 串口线(115200 8N1)和一个 FAT 格式 U 盘——USB 启动是刷机路径里的必经一环。

完整操作记录

以下流程整理自 OpenWrt PR #16634PR #3996(作者 Matthew Hagan),改过的 U-boot 来自 clayface 的仓库。我尚未亲手跑完,到手后会逐步替换成实拍记录,并标注与文档不一致的地方。

要理解的关键点是:这台设备的支持还停在 PR 阶段,官方下载页没有它的固件,你必须自己拉 patch 编译。 设备树本身已经进了 Linux 主线(bcm958625-meraki-kingpin.dtsi 那一组),但 OpenWrt 侧还带着额外的板级补丁和改过的 U-boot。

流程的骨架是这样:

  1. 从 telnet 进入原厂系统,确认 mtd0 是否只读
  2. 若被锁,insmod mtd-rw.ko i_want_a_brick=1 解锁,再用 mtd write 写入
  3. 若未锁,可直接 dd 写入 U-boot
  4. 替换 U-boot(原厂 U-boot 的 nand read 只能读 2MB,而 kernel 分区更大,所以要么换成支持 UBI 的版本,要么走"小 U-boot 先引导"的两段式)
  5. 插好装有 initramfs 的 FAT U 盘,按住 reset 上电,进入 USB 启动
  6. SCP 把 sysupgrade 镜像传到 192.168.1.1:/tmp,执行 sysupgrade

第 4 步是整件事真正的硬骨头。DTS 有人做完了,编译有 AI 帮忙,但 bootloader 这一段是你会花掉大部分时间的地方——而且是唯一真正有变砖风险的地方。

哪些能用,哪些不能用

待实测。到手后这一节会填成一张明确的清单,至少覆盖:

  • 各端口是否都被 DSA 驱动正确识别(b53qca8k
  • 端口间桥接是否走硬件转发,还是要过 CPU
  • 实测 NAT / 路由吞吐
  • MX65 的 PoE+ 供电(预期不工作)
  • USB 2.0 实测速度
  • 功耗

这一节不会写"应该可以"。 没测的就标未测。

值不值得

结论待实测后给。但现在可以先说清判断标准:这台设备的价值不在性能——1.2GHz 的 A9 做软件转发,跑不过现在几百块的 x86 软路由。它的价值在于 2GB 内存 + 企业级做工 + 极低的获取成本,适合当一台安静、稳定、不发热的边缘设备长期挂着。

如果你要的是高吞吐,别买这个,去看二手 x86。如果你要的是一台能塞满服务、放在角落里跑三年不管的小盒子,它的性价比可能相当好。

顺带一句:不要在这台设备上追求装 Ubuntu 或 Debian。 它是 armhf,Ubuntu 对这个架构的支持一直在收缩;1GB 裸 NAND 也不适合承载 apt 那种大量小块随机写的发行版。真想要完整发行版,把 rootfs 放 USB,或者干脆换 x86 设备。这个话题我会单独写一条。

读者反馈与作者回复

关于本文,有问题、使用反馈或不同的实测结果,都欢迎留言。 涉及设备实测时,请尽量附上设备型号、固件版本和测试条件。 我会在对应留言下回复,已核实的修正会补进正文。

留言需登录 GitHub。不方便使用或评论未加载时,可以邮件反馈(itscraper@hotmail.com),邮件已预填本文链接。

← 回到档案索引

图片查看

打开原图 ↗

按原始尺寸显示,可滑动查看细节。