这台 H5-9 是换宽带之后闲下来的。原来用的移动千兆,坐标广东;后来换了别的宽带,这台移动光猫就被摘下来搁着了。放着也是放着,不如彻底拆开看个明白——这是我第二次拆它。
五月份写过一版《中国移动 H5-9 光猫拆解》,那时候手里只有一把螺丝刀、一个放大镜,能讲的东西也就到「外壳长什么样、芯片丝印叫什么、散热片有多大」为止。文章发出去流量还行,但我自己知道它虚——它压根没回答「这台机器到底是什么」,只是把芯片型号抄了一遍、往搜索引擎里对一圈,然后把同系列资料里的参数搬了过来。
这一版不一样。后来条件补齐了:板上焊了排针、接了串口、从头到尾把开机那几十秒的日志全录了下来。所以这一版和上一版的区别可以概括成一句话——上一版是在「看」,这一版是在「听」。听得见之后你会发现,内存多大、闪存怎么切、系统哪个版本、这台机器谁代工的、运营商后台塞了多少东西,全都写在它自己的嘴里。这些东西,用眼睛是看不出来的。
先说结论:这台 H5-9 到底是什么
按你的时间宝贵程度,先把答案摆上来,后面再讲这些答案是「怎么拿到」的。下表里凡标「日志」的,都是它开机时自己报的;标「丝印」的,是板子上印的。
| 项目 | 实测 / 确认值 | 依据 |
|---|---|---|
| 型号与代工 | 中国移动 H5-9,定制标识 CHANGHONG_H5_9_S1(长虹代工) | 日志 |
| 设备类型 | GPON ONU,4×GE + 1×USB2.0,无无线、无语音 | 日志 + 板子 |
| 主控 | 中兴微 ZX279127S,ARM Cortex-A9,1000MHz | 丝印 + 日志 |
| CPU 核心 | 芯片按 2 核设计,固件只跑起来 1 核 | 日志 |
| 内存 | 512MiB,DDR 速率 1066 Mbps | 丝印 + 日志 |
| 闪存 | 256MiB SLC NAND(铠侠 TC58BVG1S3HTA00),并行接口 8bit | 丝印 + 日志 |
| 分区 | 15 个 MTD 分区,核心区 A/B 双份 | 日志 |
| 光口 | GPON,光组件标识 ZTE_PX20+_G,BOB 芯片 ZX279511 | 日志 |
| 系统三件套 | U-Boot 2013.04 / Linux 4.1.25 / Buildroot 2017.05 | 日志 |
| 内核编译 | 2024-06-12,构建账号 cmdc@zte | 日志 |
| 固件版本 | ZXIC 1GPON UNI V32.AA1.01 | 日志 |
| 地区 | region code:310(广东) | 日志 |
| 插件 | 中国移动 Felix OSGi 全家桶(andlink / cmccdpi / appcore) | 日志 |
| 安全启动 | 未启用(non secure boot) | 日志 |
| 调试串口 | 115200 8N1 | 日志 |
光看表没感觉,挑几条说人话:
- 主控是中兴微的 ZX279127S,丝印
ZXIC / ZX279127S / AE10114TTX / TRBV3900。按中兴微自己的资料,这颗是面向家庭网关和 ONU 的 xPON SoC:GPON / EPON / P2P 三模,内嵌 4 路千兆 PHY,另给一路 RGMII 接外置 PHY,还带 1 路 PCIe——那路 PCIe 一般是留给挂 WiFi 芯片用的,而这台机器压根没装无线,那条总线就空着。 - 这台机器是长虹代工的。不是我看着外壳猜的,是它自己报的:定制标识
0x00010492 = CHANGHONG_H5_9_S1。这也是旧版文章完全没答案的一个问题。 - 内存 512MiB、闪存 256MiB,都是实测值,不是查料号推算的。日志里
DRAM: 512 MiB、256 MiB, SLC, page size: 2048, OOB size: 64,连闪存的三个出厂坏块都给你标出来了。 - 芯片是双核设计,只跑起来一个核。日志里连着三行
num_possible_cpus:2、num_present_cpus:2、num_active_cpus:1,中间夹着一句CPU1: failed to come online,最后一句Brought up 1 CPUs。翻译过来就是:第二颗核上电了、但没起来,系统就这么单核跑着。这是全篇里最「只有日志能给」的一条——你对着板子看一年也看不出这事。 - 没有无线、没有语音,是软件盖章确认的。板子上找不到无线芯片、语音芯片的位置干脆是空的;日志这边更直接,无线报
pm_wlan_list_config error,语音报slic total_line_num: 0。所以别指望拿它当无线路由用。 - 闪存被切成 15 个分区,核心区全是双份。kernel0/kernel1、osgi/osgi1、phoneapp/phoneapp1 各存两套,还额外留了一个 middleware 中间件备份区。运营商推固件先写备用区,校验过了才切过去,写坏了还能回滚——这就是这类设备「刷不死」的底气。
- 最劲爆的一条放在最后:telnet 的开关、端口、账号、密码,原文就印在启动日志里。具体行文见下面的日志实录,反正第一眼看到的时候我是愣了一下的。
先看壳子:一台不打算给你无线的猫
拆之前先把外壳看一圈。这类小方盒光猫,信息密度最高的地方其实是接口和指示灯——它们排布的方式,本身就在说明这台机器打算干什么活。

四个千兆口这个配置,放到移动这条产品线里算是实在的——同价位不少光猫只给一个千兆口,剩下三个百兆。这台没这么干。USB 口是 2.0,日志里认出来的是 dwc2 的 OTG 控制器,用来插个 U 盘做共享或者当个轻量存储口。
翻过来看顶面。面板上写着 GATEWAY 和 DESIGNED BY CHINAMOBILE,中间是移动的 logo,往下是八个指示灯。

这排灯里,真正需要记住的只有两个:「注册」决定它有没有在运营商的 OLT 上挂上号,「光信号」决定光路正不正常。这两个不对的时候,你去重启下游路由器是没意义的,问题压根不在你这边。至于「上网」,那是拨号或者 OMCI 下发的事了。
拆开看板子:两颗螺丝,加一点点耐心
拆机不难,但也不完全无损。底面两颗螺丝,卸掉之后从侧面拿塑料撬棒一点点沿着缝走一圈;卡扣比较脆,想做到一点印子都没有基本不可能,介意的话就别拆了。

板子拿出来之后,第一感觉是「空」。四个千兆口是主控自己带的,不需要外挂交换芯片;没有无线,也就没有射频那一大片;没有语音,SLIC 和它周边那一圈也没了。留下的就是主控、内存、闪存、光组件、电源和网口变压器这几块。我把整体过一遍:

为什么说「还不能下定论」?因为板子上空着的位置,可能是这一批没装,也可能是这一款就没有。光看板子,你分不清「没焊」和「本来就没有」。这个判断得留给日志。
逐颗看芯片:丝印只告诉你型号,不告诉你参数
板子上有丝印的东西不多,一颗颗过一遍。先说好:这一段看完,你手上会有四个型号,但一个参数都拿不到。这不是我藏私,是丝印本身就只有这么多信息。

ZXIC / ZX279127S,下面几行是 AE10114TTX / TRBV3900 / 2440/FHE10021。ZXIC 是中兴微电子。丝印到这里就结束了——它没写主频,也没写几个核ZX279127S 的公开定位很清楚:面向家庭网关 / ONU 的 xPON SoC,支持 GPON、EPON、P2P 三模,遵从 ITU-T G.984 的 GPON 标准,也支持 IEEE 802.3-2005 和 CTC 的 EPON 规范;内嵌 4 路千兆 PHY,另有 RGMII 可接外置 PHY;数据面能力包括 L2/L3 组播转发、L2 桥接、L3 路由与 NAPT,再加上流分类和 HQoS,协议上支持 IPv4/IPv6 双栈、DS-Lite、6RD。
这段话很有用,但它回答不了两个最关键的问题:它有几个核、这台机器把几个核用起来了。而且它自己还有两副名字——U-Boot 阶段报 ZX279127S@A9,进了内核又变成 ZTE ZX279128S。这两个名字后面会一起讲。

RamMonster / RS5128B-18E / 2436H,下面一行是 D3CW1659EIZ16。那个带翅膀的蝙蝠标就是 RamMonster 的品牌标RamMonster 这个牌子比较小众,是台湾千奕国际的自有内存品牌(名字就是 RAM + Monster,蝙蝠标来自它的品牌设计)。料号里的「5128」按这类颗粒的命名习惯是 512M × 8,也就是单颗 4Gbit,合 512MB——和日志报的 512 MiB 正好对得上。
这里得交代一个我上一版写错的地方。旧版里我写它是 DDR2-1066、1.8V。这次日志只给了「ddr init enter, rate is 1066 Mbps」这一句,它能说明速率是 1066 Mbps,说明不了是 DDR2 还是 DDR3,更说明不了电压。所以这一版我就写日志给了什么:512 MiB、1066 Mbps,剩下的不猜。

KIOXIA / TC58BVG1S3HTA00,另外还印着 TAIWAN 2448 9AE 和 DJ5589。注意它是 TSOP-48 两边出脚的封装这颗料号查得到官方手册:2Gbit(也就是 256MB),SLC,24nm,TSOP-48,页大小 2048+64 字节,块大小 128K+4K,工作电压 2.7–3.6V,片内自带 ECC(每 528 字节能纠 8bit)。这类把 ECC 做进芯片里的 SLC NAND,铠侠自己叫 BENAND。
有个细节值得较真:它是并行 NAND,不是 SPI NAND。虽然名字里都带 NAND,但接口完全是两回事。日志给了两个证据:一是内核挂载时驱动名写着 denali-nand(Denali 是 SoC 内部那颗并行 NAND 控制器),二是 SPI 控制器那边明确报了一句 spi nand not exist!。所以「SPI NAND」这个说法,用在这台机器身上是错的。
顺便说个「同一颗丝印、两本账」的实例。有位网友拆的是湖北版 H5-9,配件写的是「512M + 128M」。我这台是广东版,日志报的闪存是 256 MiB。同一型号名,闪存差了一倍——这事在光猫上太常见了,换料、换批次、换省份都可能不一样。这也正是「看丝印」和「读日志」的分水岭:丝印抄不出容量,日志能。

日志把光模块的身份也交代了:驱动同时兼容 Semtech 的 GN25L95 和 ZX279511,靠一个寄存器的值区分(读到 0xFF 认 GN25L95,读到 0xAA 认 ZX279511),这台读出来是 0xAA,认的是 ZX279511。GN25L95 本身是颗 GPON ONU 用的突发模式激光驱动器加限幅放大器,1.25–3.1Gbps,片内带温度传感器做光功率诊断,专门给 BOSA 板载式的 ONU 用。另外日志还报了 vendor name = ZTE_PX20+_G——PX20+ 是 GPON 的 B+ 光功率等级,至于后面的 _G,跟 region 310(广东)对得上,应该是省份后缀。

这张是语音区。空焊盘说明「这里本该有东西」,但还不能说明「这款就没有语音」——所以我用日志收尾:slic total_line_num: 0,而且它前后试了三种 mode,把 Siliconlab、Kylin、Lantiq 几家挨个点过名,一个都没认到。这台确实不带语音。
更有意思的是,软件里语音的那套东西其实是装着的——日志里能看到 Init codec v2.5(2019-09-18)、P_2833: Setup 0、DSP device setup OK。DSP 驱动装好了,缺的就是那颗 SLIC 芯片。这是典型的「一套固件平台,按配置裁剪硬件」:代码为全功能版本写,硬件按订单砍。
到这儿,四个型号都到手了:主控 ZX279127S、内存 RS5128B-18E、闪存 TC58BVG1S3HTA00、光模块 ZX279511。现在问题来了——光凭这四个名字,你能说出这台机器的主频、内存实际容量、闪存分区、系统版本、代工厂和省份吗?一个都说不出来。要拿到这些,得让它自己开口。
焊一个 TTL 口:把它的嘴撬开
这块板出厂没给调试口装针,只在边上留了一排空焊盘(丝印 BJ1)。这就是入口,得自己补针。

BJ1 三个焊盘,出厂是空的,针是我自己焊上去的。焊盘间距不大,旁边全是 0402 的小阻容,手抖一下就连带
为什么不拿探针顶着、或者拿夹子夹?因为串口是长时间实时通信,不是点一下就读完的数据。探针一滑就断,夹子夹不牢还会蹭到旁边的元件,日志读一半断掉最气人。焊上针之后插杜邦线,想读几次读几次。
焊这点东西不需要教程,但有几个坑我替你先踩了:烙铁别超 350℃,高了焊盘铜箔容易翘;一个点两三秒解决,压在焊盘上超过五秒就是在烤板子;助焊剂记得洗,不洗时间长了会吸潮发黑;最怕虚焊——焊点看着圆,其实锡没爬进孔里,串口就会时通时不通。判断办法很简单:拿镊子轻轻拨一下针脚,会晃就返工。
接线用一块 CH340 的 USB 转 TTL 小板(电脑上认成 COM4)。三根线就够:GND 对 GND,TX 接 RX、RX 接 TX,交叉接。板子自己有电,不用从串口取电。串口参数是 115200、8 数据位、无校验、1 停止位——这个数字不是我试出来的,日志里的内核命令行写着 console=ttyAMA0,115200n8,照着抄就行。
启动日志实录:从上电到系统起来
下面按开机顺序,把关键段落贴出来。录到的整份日志 1500 多行,其中九成是刷屏的东西——比如 plib_ifs_db_get No Run Info 这条,几百行都在重复;还有一堆 jffs2 CRC failed 和 Bad rule。看着吓人,其实都是这类光猫的日常噪音,不影响判断。真正有信息量的,就下面这几段。
先是上电第一屏。芯片还没引导系统,已经在报自己的硬件底子了:

Boot NAND、non secure boot(记住这四个字,它没开安全启动)、DDR 初始化 rate is 1066 Mbps、容量 0x20000000——换算过来正好 512MB紧接着是 U-Boot 横幅,一屏把 CPU、内存、闪存全交代了:

CPU : ZX279127S@A9, Board: ZXIC zx279127sevb、DRAM: 512 MiB。往上还有一行 1000MHZ。主频和内存容量,这一屏就齐了U-Boot 2013.04 (Mar 17 2025 - 19:37:58)
CPU : ZX279127S@A9,Board: ZXIC zx279127sevb
CONFIG_SYS_SDRAM_SIZE = 0x20000000
DRAM: 512 MiB
NAND: boot mode: 1
find: XT27G02BTSIGA
Manu ID: 0x98, Chip ID: 0xda (Toshiba NAND 256MiB 3,3V 8-bit)
256 MiB
这里有个小怪事:报 NAND 的时候,U-Boot 先打了一句 find: XT27G02BTSIGA,然后又老老实实按厂商 ID 报了 Toshiba NAND 256MiB。前者是它自己表里的型号名,后者是按 0x98 / 0xda 这两个 ID 查出来的通用名。而板子上焊的又是铠侠的丝印——同一颗闪存,三个名字。这种「名字对不上」在这类设备里太常见了,所以我一直强调:别拿丝印互相抄,看它自己报什么。
接下来 U-Boot 会读厂商私有参数区,这里出现了这台机器的第一个身份:

ZXIC_SOFT_VID:0x00010492、product_vid = 0x00010492。而它上面几行先报了个默认值——invalid vid!!! use default!!!,然后 vid=0x00050001-F627S注意这个细节:U-Boot 阶段它一度「没认出自己」,用了兜底的 VID;真正的定制标识要等内核起来才读得出来。同一台机器、同一个开机过程,前后报了两套身份——这也是为什么我不建议只看一段日志就下结论。
然后从闪存读内核:

Image Name: Linux Kernel Image、Data Size: 26089627 Bytes = 24.9 MiB。一台只用来上网的光猫,内核本体 24.9MB内核起来之后,最先要盯的是这几行:
Linux version 4.1.25 (cmdc@zte) (gcc version 4.9.4 (Buildroot 2017.05-svn2186) ) #3 SMP PREEMPT Wed Jun 12 20:48:58 CST 2024
Machine model: ZTE ZX279128S
Memory: 462660K/524288K available
CPU1: failed to come online
Brought up 1 CPUs
SMP: Total of 1 processors activated (1987.37 BogoMIPS).
信息量最大的一段,逐行说:
第一,系统三件套和编译时间。内核 Linux 4.1.25,编译器 gcc 4.9.4,Buildroot 2017.05,编译时间 2024 年 6 月 12 日,构建账号 cmdc@zte。也就是说,这套固件是中兴自己的编译机搓出来的,而且 2024 年年中还在更新。U-Boot 那边也印着 Mar 17 2025——比内核还新。一台 2024 年就停产的猫,固件一直在动。
第二,同一颗芯片、两套名字。内核报的是 Machine model: ZTE ZX279128S,和 U-Boot 报的 ZX279127S 不一样。这事我不打算替它圆:以芯片丝印 ZX279127S 为准,同时记住内核里它叫 ZX279128S——以后翻固件、查资料,两个名字都得搜一遍。
第三,512MB 内存的实际可用量。Memory: 462660K/524288K available,系统起来后可用 462660K 左右,剩下六十多兆被内核和保留区吃掉了。这个数字在判断「能不能跑得动额外服务」的时候很有用。
第四,也是最关键的一条:双核设计,单核运行。日志里清晰写着 num_possible_cpus:2、num_present_cpus:2、num_active_cpus:1,中间夹一句 CPU1: failed to come online,最后 Brought up 1 CPUs。BogoMIPS 1987,也就是单核 1GHz 的水平。后面还有旁证:看门狗初始化时打的是 wdt debug: nr_cpu_ids= 2,还有一段 tdm binding cpu1....——代码全都是照两颗核写的。硬件给你两颗核,固件只点亮一颗,省下来的那颗核就一直在那儿躺着。
再往后是分区。这一段直接决定一台光猫是「刷不死」还是「刷一次变砖」:
Creating 15 MTD partitions on "denali-nand":
0x000000000000-0x000010000000 : "whole flash"
0x000000000000-0x000000200000 : "u-boot"
0x000000200000-0x000002200000 : "kernel0"
0x000002200000-0x000004200000 : "kernel1"
0x000004200000-0x000004800000 : "others"
0x000004800000-0x000004c00000 : "parameter tags"
0x000004c00000-0x000005400000 : "usercfg"
0x000005400000-0x000005800000 : "middleware"
0x000005800000-0x000005c00000 : "wlan"
0x000005c00000-0x000005e00000 : "phoneapp"
0x000005e00000-0x000006000000 : "phoneapp1"
0x000006000000-0x000007e00000 : "osgi"
0x000007e00000-0x000009c00000 : "osgi1"
0x000009c00000-0x00000ff60000 : "plugin_data"
0x00000ff60000-0x000010000000 : "GN25L95_datas"
这 15 行里其实只有 14 个是真分区,第 0 个 whole flash 是整片映射。我照着这份表画了一张图,把偏移和大小按比例摆出来,比看十六进制舒服多了:

plugin_data,99MiB,比内核还大——那是给移动插件留的数据区这张图里有意思的地方是「双份」:kernel0 / kernel1、osgi / osgi1、phoneapp / phoneapp1 全是 A/B 两套,另外还单独有一个 middleware 当中间件备份。运营商推固件时先写备用区,校验过了才切过去;写坏了,还能从另一套起来。分区表还顺手交代了两件事:这型号的固件里写着 wlan 和 phoneapp 两个分区,说明它是从一个「带无线、带语音」的完整平台上裁剪下来的;而 plugin_data 一个分区 99MiB,比内核还大,可见运营商那套后台在固件里占了多少份量。最后 640KiB 的 GN25L95_datas 是光模块自己的标定数据,哪天光模块坏了换一颗,这块数据也得跟着搬。
再往后,它就把三件事一块儿招了:
vid=0x00010492-CHANGHONG_H5_9_S1
region code:310
region name:Guangdong
slic total_line_num: 0
cp: can't stat '/etc/vendor/0x1049/Wireless/*': No such file or directory
Call pm_wlan_list_config error, ret = -4
第一行是它的真名。vid=0x00010492-CHANGHONG_H5_9_S1。CHANGHONG 就是长虹。这是一台长虹代工的移动 H5-9,版本 S1。前面那些「看外壳像谁做的」的讨论,到这儿可以收工了。顺带一提,我在本站拆过的另一台移动光猫 H50G(星网锐捷那台)用的是同一颗主控 ZX279127S——同一条产品线,方案一样,代工厂不一样。
第二行是省份。region code:310 后面跟着 region name:Guangdong。移动是按省定制的,同一个型号名,不同省的固件不一样,这一点铭牌和丝印都看不出来。
第三、四行回答「到底有没有语音和无线」。语音这边 slic total_line_num: 0,一条线路都没认到;无线那边,固件直接去找 /etc/vendor/0x1049/Wireless/ 下的东西,发现目录根本不存在,后面 WLAN 配置调用再报一次错。这台机器在软件层面就没有无线——不是「没焊」,是「本来就没有」。
最后是插件、网口、telnet 和光口状态:
Init switch module Success
zy uni num:4
switch config 9127/9128 GPON mode!
VendorId=38c,ChipModel=1271,Revision = 28
ZX279511 found.
vendor name = ZTE_PX20+_G
do action with cfg:enable=0,port=23,maxcon=5,usr=CMCCAdmin,pwd=J%e5rwmFZ,ProcType=0
[OSS_telnetd] stop telnetd success
关于那四个网口:它们不是外挂交换芯片给的,是主控内部那颗交换模块吐出来的。日志写着 Init switch module、zy uni num:4、switch config 9127/9128 GPON mode——这颗 SoC 内部一共 7 个交换口,对外放 4 个给你。旁边那行 VendorId=38c,ChipModel=1271 也是这颗主控的标识。说白了,这台猫的转发上限锁死在主控自己身上,跟那种外挂一颗交换芯片的老式猫是两种结构。
关于插件:这台机器跑着一整套中国移动的家底。日志里能看到 OSGi 框架(Felix)、Java 运行环境,以及一组 com.chinamobile.smartgateway 开头的插件——andlink(和家亲、智能家居那一套)、cmccdpi(DPI 流量识别)、appcore(应用容器),JVM 的 CPU 占用还被限到 80%(SrmInit g_java_cpulimit=80)。一颗 1GHz 的单核,一边扛 PPPoE、NAT、OMCI,一边跑一整套 Java 插件,你现在大概能理解它为什么只点亮一个核还这么忙了。
关于权限:顺着日志还能看到一个细节。httpd、dnsmasq、phoneapp、telnetd 这些用户态程序启动时,全都在报 setuid / setgid,还夹着一句 enter set normal user, flag has MGR_PC_NOTROOT!。意思是它们以非 root 身份运行。光猫把权限分得比很多家用路由器都细。
最后一条,也是全篇最有意思的一条:telnet 的凭据是明文。看这一行——开关、端口、最大连接数、账号、密码,原样打出来了。注意 enable=0:这台机器默认是关着 telnet 的,下一行紧接着就是 stop telnetd success。但密码就藏在固件里,而且每次开机都会被打进日志。芯片丝印永远不会告诉你密码,日志会。这就是「听」和「看」最直白的差别。
光这边日志也报了状态:the pon mode is 8、state o1 =>o2、gpon_omci start,OMCI 侧最多支持 7 条 Tcont、每条 8 个队列,队列对 CPU 的限速设在 4000pps。这些都是运营商侧下发的口径。
日志给出的结论:硬件反推推不出来的那些
把「看板子能推出的」和「日志实际报的」摆一张表对照。左边是硬件,右边是设备自述——你会发现右边明显更具体,也更可信。
| 项目 | 只看板子能推出什么 | 日志实际报了什么 |
|---|---|---|
| 主控 | ZXIC ZX279127S,Cortex-A9,几核几频未知 | 1000MHZ;内核里叫 ZTE ZX279128S;可见 2 核、只起来 1 核 |
| 内存 | RamMonster RS5128B-18E,容量要自己算 | DRAM: 512 MiB、ddr rate is 1066 Mbps |
| 闪存 | 铠侠 TC58BVG1S3HTA00,容量靠查料号 | 256 MiB, SLC, page size: 2048, OOB size: 64,并报出 3 个出厂坏块 |
| 接口类型 | 封装是 TSOP-48,但看不出走哪条总线 | 驱动名 denali-nand,并行接口;SPI 侧报 spi nand not exist! |
| 分区 | 看不到 | 15 个 MTD 分区,含 kernel0/1、osgi/1、phoneapp/1 双份 |
| 系统版本 | 看不到 | U-Boot 2013.04 + Linux 4.1.25 + Buildroot 2017.05 |
| 编译时间 | 看不到 | 内核 2024-06-12(cmdc@zte),U-Boot 2025-03-17 |
| 固件标识 | 看不到 | ZXIC 1GPON UNI V32.AA1.01 |
| 代工厂 | 只能靠外壳和网友说法猜 | 定制标识 CHANGHONG_H5_9_S1=长虹 |
| 地区 | 看不到 | region code:310=广东 |
| 无线 | 板上没有无线芯片,但可能只是没焊 | pm_wlan_list_config error,软件层面确认没有 |
| 语音 | 语音芯片位置空着 | slic total_line_num: 0,SLIC 一条线路没认到 |
| 网口来源 | 数得出 4 个 RJ45,但不知道谁在转发 | SoC 内部交换模块(zy uni num:4),非外挂交换芯片 |
| 安全启动 | 看不到 | non secure boot,未启用 |
| telnet | 完全看不到 | enable=0,port=23,usr=CMCCAdmin,pwd=***,明文 |
| 光模块 | 只看到一颗芯片,认不出型号 | BOB 认 ZX279511,标识 ZTE_PX20+_G |
挑几条展开说说。
一、双核只跑一核,是这台机器最被低估的一条。网上关于 H5-9 的讨论里,有人猜它「单核双线程」,有人猜它「双核」——都是靠看跑分和摸温度猜的。日志把话说死了:SoC 报出两颗核,第二颗 failed to come online。是供电不足、是固件刻意关掉、还是那一路核压根没在 Package 里,日志没说,我也不替它猜。但「按两颗核设计、实际只用一颗」这个事实本身,已经能解释很多事情了——包括它跑着一整套 Java 插件之后为什么那么吃紧。
二、「一个东西三个名字」在这类设备里是常态。主控:U-Boot 叫 ZX279127S,内核叫 ZX279128S。闪存:板子上印铠侠 TC58BVG1S3HTA00,U-Boot 表里叫 XT27G02BTSIGA,按 ID 又报 Toshiba NAND。这不是谁写错了,是「丝印 / 引导程序 / 操作系统」三套命名体系各说各话。所以看到一篇拆解只有一个名字,多半是只抄了一处。
三、同型号、不同配置,是真实存在的。前面提过:湖北版有网友记的是 512M + 128M,我这台广东版日志报的是 512M + 256M。这不是谁写错,是配置真的不一样。想确认自己那台,别看别人的文章,让它自己说一遍。
四、15 个分区里藏着这台机器的出身。它明明没有无线、没有语音,分区表里却留着 wlan 和 phoneapp。这说明固件是从全功能平台上裁下来的,硬件按订单砍。对运维来说这有实际意义:这些分区是空的,但位置在,将来要改固件布局,得先知道原始设计长什么样。另一个更直观的数字是 plugin_data 99MiB——运营商那套后台,在闪存里占的位置比内核大三倍。
五、没开安全启动这件事,比密码泄露更值得记。non secure boot 翻译过来就是:引导的时候 U-Boot 不校验内核镜像的数字签名。对日常上网没影响,但对想动固件的人来说,门槛比很多人以为的低得多。这条铭牌不会写、丝印看不出来,只有设备自己开机那一句会告诉你。至于日志里那行明文 telnet 凭据,是同一个道理——它证明的不是「这台机器有漏洞」,而是「这些设备的开机日志值得读」。
总结:这台 H5-9 值不值得留
先把它的真实水平连成一句话:一台长虹代工、广东定制、单核 1GHz、512MB 内存、256MB 闪存的四口千兆 GPON 光猫,没无线、没语音,跑着一整套中国移动的 Java 插件。
- 主控:中兴微 ZX279127S(内核平台名 ZTE ZX279128S),Cortex-A9,1000MHz,双核设计、单核运行
- 内存:512MiB,DDR 速率 1066 Mbps;系统起来后可用约 452MB
- 闪存:256MiB SLC 并行 NAND(铠侠 TC58BVG1S3HTA00),15 个分区、核心区 A/B 双份,3 个出厂坏块
- 光:GPON,B+ 光功率等级,BOB 芯片 ZX279511,固件标识
ZTE_PX20+_G - 业务口:4×GE(SoC 内部交换模块)+ 1×USB2.0;无无线、无语音
- 系统:U-Boot 2013.04 / Linux 4.1.25 / Buildroot 2017.05,固件 V32.AA1.01,内核编译于 2024-06
- 定制与地区:CHANGHONG_H5_9_S1(长虹代工),region 310 广东
- 安全:未启用安全启动;telnet 默认关闭,但账号密码以明文存在固件里,并会随开机打进日志
怎么用它,我按场景分开说:
当光猫用,它是一台规矩的设备:四个千兆口给得实在,做桥接最舒服,把拨号交给下游自己的路由器,它只负责光电转换。当路由用就要有预期——1GHz 单核,还要分出一部分去跑运营商那套 Java 插件,带几台手机看看视频没问题,想扛 NAS 到大流量传输、或者开一堆端口映射,就别难为它了。
当交换机用,四个口能跑千兆,但它们是从主控内部交换模块出来的,转发能力和主控绑在一起。真当核心交换机使不合适,当个「顺手多出来的端口」是可以的。
当研究对象用,这是它最大的价值。板子上留了调试焊盘,固件没开安全启动,日志里连 telnet 密码都给你——一台几十块钱的二手设备,能让你把 xPON 网关从 U-Boot 到 OMCI 的全流程看一遍。对我这种想搞明白「运营商最后一公里到底怎么实现的」的人来说,这比它能不能跑满千兆重要得多。同一条线路上,我还拆过 诺基亚贝尔代工的 G-140W-MD,两台的启动流程、OMCI 逻辑、运营商插件几乎是一个模子——这说明现在这些光猫,硬件方案可能换厂家,但「软件那一层」早就被运营商收编得整整齐齐了。
最后说一句立场:这篇里所有结论都能在日志或丝印里找到出处,凡是没依据的地方,我要么标了「猜」、要么干脆没写。如果哪天你拆自己的 H5-9,发现内存闪存和这篇不一样,那很正常——同型号不同省份、不同批次都可能换料。真想确认自己那台,唯一靠谱的办法是让它自己说一遍:焊个口,读日志。
下一步我打算做的是「动手改」的那部分:在这台机器上把 telnet 打开、拿到 root、把整片闪存 dump 出来,顺便看看那枚一直在睡觉的第二颗核到底能不能叫醒。这跟「看硬件」是两码事,等实操完再写。还是那句老话——只在自己名下的设备上折腾。
如果你觉得这篇文章不错,有用的话可以点击下面的“赞赏”支持作者,你的支持是我更新的动力(饿饿吃饭)。


Comments NOTHING