家里面有一台闲置的中国联通的V175型号的主光猫,既然闲置了那么直接拆开看一下做工用料怎样。
这台是联通智家定制的 FTTR 主光猫,面板上印着联通智家的标志,硬件底子和零售的华为 F50 青春版是同一套。下面先把这台机器能确认的参数集中列一下,方便对照,后面再逐项说这些数字是怎么来的。
规格速查
| 主控 | 华为海思 SD1156E(丝印 ATQM1M1L6 / N28326L2B) |
| CPU | 双核 ARMv7,内核识别为 Cortex-A55 |
| 内存 | 512MB DDR3,系统可见约 394MB |
| 闪存 | 512MB NAND(实测分区合计 494 MiB) |
| 上行光 | XG-PON / 10G-EPON |
| 下联光 | 1 个,用于级联 FTTR 从光猫 |
| 网口 | 4 个千兆 RJ45,带编号指示灯 |
| 无线 | 2.4G 与 5G 各一路,芯片为 Hi1156E |
| 天线 | 共 6 根:2 根可调外置,4 根贴壳定向(黑、蓝、白各两根) |
| 电话口 | 1 个,语音芯片 N681389 |
| 系统 | Linux 5.10.0,32 位 armv7l |
| 供电 | 12V 1.5A 外置电源 |
表里有几项(无线芯片、语音芯片、光 PHY)这台机器上被屏蔽罩或者位置挡着看不见丝印,是对照同型号别的机器上 display chipinfo 的输出补的 —— 这条命令在这台 V175 上并不存在,后面会说到。主控、内存、闪存、系统这几项后面都有实测数据,其中闪存那一项原来写错了,已按分区表更正。
外观&拓展
外观为白色,边缘类似手机一样做了圆弧处理,整体观感上去还是比较有质感的。
正面面板下方排了一整排指示灯,从左到右依次是电源、注册、光信号、1-千兆、2-千兆、3-千兆、4-千兆、电话、USB、无线、WPS、下联光,一共十二个。四个网口各自有独立的状态灯,这一点比很多只给一个网络灯的光猫要直观,插哪一口亮哪一口,排查时省事。「光信号」灯闪红或熄灭通常意味着收光太低、甚至根本没收到光;这时可以先用本站的《PON 光功率 / 光衰计算器》按现场的分光比与光纤长度估一遍,看这条链路还剩多少余量,再决定要不要动光纤。

机身两侧各伸出一根白色天线,一共两根,都可以折起来。这个规格在光猫里面不算多,但是并非所有“天线”都有这种物理的天线,这款光猫部分天线是贴片在外壳上的,并非看到的这两根,所以实测下来信号很不错。
背面这一排接口从左到右是:下联光、USB、电话、4-千兆、3-千兆、2-千兆、1-千兆、电源,最右边还有一个独立的电源开关。有实体开关这点挺实用,不用每次拔插头。
其中下联光就是 FTTR 用来串从光猫的那个口,用的时候接光纤,不接从猫就是空的。电源口是 12V 1.5A 的 DC 圆口。

顺带一提,拆开后能在主板上看到指示灯位号一共有十三个,除了面板上那十二个之外还有一个 CATV。这台机器的面板上没有对应的孔位,应该是同系列另一个型号的功能,公版方案留了丝印没去掉。
内部结构
拆机并不难,底部有两颗螺丝,卸下螺丝后,在电源开关位置上的有一个缺口,使用撬棒从缺口出沿边缘一点点撬开,华为的这个光猫塑料材质比较有弹性,不太容易拆坏,重量来说是200元路由器的感觉,散热应该是不会太差的。才开之后内部结构如图所示:
整块主板是绿色的四层板,中间最显眼的就是那块带鳍片的黑色铝散热片,下面压着主控。左侧是光模块的位置,带一根白色排线连过去;右侧有一块独立的白色金属屏蔽罩,罩的是射频部分。
粗略地数了一下,连接天线的接线端子一共有6个,这款是支持MIMO2X2规格的,所有是三个2.4GHz和3个5Ghz的搭配应该是,其中一组2.4G和5G应该是用于无线Mesh通信。

做工用料&散热
散热片非常大,这个散热片面积已经赶上200元级别的路由器了,而且对应的芯片都有导热垫作为导热介质,散热能力还是不错的。不过实际用下来还是感觉有点热,这个原因后面会说。
把散热片翻过来看内侧,一共贴了五块导热垫,其中正对主控的那块面积最大、也最厚,另外四块分别对应旁边几颗发热芯片。
散热片本身是压铸铝的,不是那种薄铁片,拿在手里有分量,鳍片也做得比较密。这个规格在光猫里算是舍得堆料的,很多同价位的光猫主控是直接裸奔的。

芯片方案
处理器
华为V175主光猫的核心SoC型号是ATQM1M1L6N28326L2B30,是来自华为海思团队研发的SD1156E,转为XG-PON/10G-EPON光终端设计的SoC,集成了PON MAC、网络包引擎、双核Cortex-A9等各种电路。其中双核A9的主频为1.3GHz,支持512M-1GB的DDR3/4内存。
关于SoC更为详细的信息,作者后面开启telnet之后查询到CPU的参数为:双核ARM Cortex-A9,属于ARMv7架构、MIPS为48,基础频率1.0GHz,最大内存寻址空间512MB,最大存储空间256MB(这一项跟后面实测出来的 512MB 闪存对不上,下面「内存&存储」那节会说到)。通过更为详细的查询发现其制造工艺属于14nm工艺,所以发热确实会大一点。
这里要更正一下我最早写这篇时的判断。当时看到 /proc/cpuinfo 最后一行写着 Hardware : Hisilicon A9,就直接认为核心是 Cortex-A9 了。实际上那一行是设备树里的平台标识,不是 CPU 核心型号。
真正能说明核心的是同一份 cpuinfo 里的 CPU part 字段,值写的是 0xd05 —— 这个 ID 对应的核心是 Cortex-A55,不是 A9。
另外前面写的「MIPS 为 48」也是我读错了,那一行完整写的是 BogoMIPS : 48.00,是个循环延时校准值,跟 MIPS 架构没有关系。
14nm 配上 A55 这个组合也讲得通,A9 是 28nm 时代的核心,出现在 14nm 的万兆 PON 方案里反而说不通。

下面是 telnet 里 /proc/cpuinfo 的完整输出,两个核心各一段,信息一致,可以对照着看。

SoC 里到底集成了些什么
型号只能说明它是谁,说明不了里面装了什么。/proc/iomem 会把每个硬件控制器占的寄存器地址段逐个列出来,这份清单才是「集成度」的凭据。
- 无线是片内的,不是外挂。地址表里跟无线相关的段足有七段:
WIFI_GLB_CTL、WIFI_RAM、WIFI_PKTRAM、WIFI_PERI、WIFI_DDR、WIFI_DDR_NOACP、WIFI_RAM_NOACP,全落在 SoC 自己的地址空间里,其中WIFI_DDR一段就给了 4 MiB 专用内存。所以那颗 Hi1156E 是长在 SD1156E 里面的,不是 PCIe 上另挂一颗。 - 两个 USB3 控制器,机身却只有一个口。
usb0_xhci和usb1_xhci各占一段,都是 xHCI(USB 3.0)。背面只引出来一个,另一个多半是没接线,或者留给同系列别的型号。 - NAND 控制器出现了三次(都叫
hinand),集中在102a0000和10800000附近;另外0x0开头那一小段是 BootROM。 kbox_ram,628 KiB。这套固件专门留出来存内核崩溃转储的地方。机器死机之后能回捞现场,靠的就是它。
再配上看 /proc/interrupts,这张表能告诉你哪些模块是真的在跑。几个值得记的:

- 中断控制器赫然写着
GICv3。这条顺手又给前面那个「A9 改 A55」的更正补了一道佐证 —— Cortex-A9 那个年代配的是 GICv2,GICv3 是 A53 / A55 这一代才有的。两份文件对上了。 - 双核是真的两个核。表头 CPU0、CPU1 两列分开计数;
PIE-0只落在 CPU0(12778 次)、PIE-1只落在 CPU1(10607 次),两个核各领一个,像是做转发负载分担的(PIE 具体是什么缩写这份输出里没写全称)。 - 光口双模被硅片证实了。中断名里同时出现
xpon_awake、xpon_lp_int和eps_pon,还有一条叫3ah的 —— 802.3ah 就是 EPON 的 OAM 层。规格书上那句「XG-PON / 10G-EPON」在这里落到了实处,不再是纸面参数。 - 硬件加速是齐的:
napt(NAT 转换)、ipsec、rogue各占一条中断。千兆转发不吃 CPU,靠的就是这些。 - 无线中断一共八条(
WIFI_INT_0到_7),但真正有计数的只有_0(2028 次)和_3(2044 次),其余全是 0 —— 这台机器上跑起来的就这两条。 - 两个 USB 控制器一条中断都没触发(
xhci-hcd:usb1、xhci-hcd:usb3都是 0),跟上面「机身只引出一个口」对得上。
内存&存储
内存和存储芯片被金属屏蔽罩封闭起来了,无法查到有效信息。不过后面登录telnet之后查询到,内存容量 512MB,闪存容量也是 512MB。内存是DDR3L的内存颗粒,工作频率1033MHz。闪存走的是串行接口(启动参数里写的是 flash_chip=spinand),至于颗粒本身是 MLC 还是 TLC 没查到。

但这里有个对不上的地方值得记一笔:颗粒是 512MB,可系统里查 /proc/meminfo,MemTotal 只有 403276 kB,换算下来大约 394MB。
两个数字差了一百多兆,说明有一部分内存没有交给通用系统使用。至于具体是划分给了 PON 硬件还是被硬件保留,从外面看不出来,这点就不乱猜了。

后来又翻了 /proc/iomem,这一层能把内存的去向看得更细。它把系统拿到的物理内存窗口写得很明确:86700000-9fffffff,一共 409 MiB。

于是这条链从两级变成三级:512MB 颗粒 → 物理地址窗口 409 MiB → MemTotal 394 MiB。第二级到第三级之间差的 15 MiB,在 iomem 里能对上号 —— 内核代码段 86708000-871fffff 占了 11 MiB,内核数据段再占 0.9 MiB,剩下的归保留区。这一层算是说清楚了。
这一级后来也落地了。翻内核启动参数 cat /proc/cmdline,里面写着 ddr_realsize=512M —— 颗粒的确是 512MB,这不是标称值,是开机时自己报出来的。紧挨着还有一条 mem=409M,跟上面那个 409 MiB 的窗口严丝合缝。
再往下算一步,那 103 MiB 的位置就精确了:DDR 的物理基址是 0x80000000,512MB 一路排到 0x9fffffff;而系统内存窗口是从 0x86700000 起步的。中间空出来的那一段,正好 103.000 MiB,一个字节都不差。
这 103 MiB 里能对上名字的只有两块:崩溃转储用的 kbox_ram 628 KiB,无线专用的 WIFI_DDR_NOACP 4 MiB,加起来还不到 5 MiB。剩下约 98 MiB 在 /proc/iomem 里连名字都没登记 —— 是给了 PON、给了安全区,还是纯粹预留着,依旧查不出来,这个我不猜。
所以前面那句「看不出来」得收回一半:位置现在精确已知(DDR 最前面那 103 MiB),说不清的只是里面装了什么。
但是在电路板的右上角有一个很像ROM的芯片,但是也没有具体型号,网上也查不到信息。把丝印抄下来是 SB23T06 和 SS225S02A 两行,位号 U600。
同型号机器的配置清单里只报了一路 256MB 的 NAND,所以这颗到底是不是独立的启动存储,暂时没有确证,先记下丝印等有资料再补。

不过闪存这块,telnet 里能直接把分区表读出来,比对着芯片猜准得多。跑 cat /proc/mtd,这台机器一共划了 15 个分区:

| 分区 | 大小 | 从名字能看出来的用途 |
|---|---|---|
bootcode | 1.00 MiB | 启动代码 |
ubilayer_v5 | 255.00 MiB | 最大的一块。名字带 ubi,是 UBI 层的数据区 |
flash_configA / B | 各 124 KiB | 闪存配置 |
slave_paramA / B | 各 124 KiB | 从光猫参数。这台是主猫,slave 那一栏对应的就是它下面挂的从机 |
allsystemA / B | 各 66.00 MiB | 主系统镜像 |
keyfile | 1.09 MiB | 密钥文件 |
frameworkA / B | 各 16.23 MiB | 框架层 |
wifi_paramA / B | 各 124 KiB | 无线参数 |
file_system | 10.05 MiB | 文件系统 |
apps | 62.24 MiB | 应用 |
把这些加起来是 494.55 MiB,也就是说这颗 NAND 的实际容量是 512MB。这里要更正前面写的一个数字:规格表里原来写的「256MB 闪存」是照着 SoC 规格书抄的,实际装机量翻了一倍。
那个 256MB 是怎么来的,现在大概能猜到:分区表里有一块 ubilayer_v5,正好 255.00 MiB。同型号机器的配置清单里「只报了一路 256MB」,报的很可能就是这一块,而不是整颗闪存 —— 两个数字太接近,不像巧合。不过这只是从数字上推断,我没法确证。
表里还有个更值得说的结构:flash_config、slave_param、allsystem、framework、wifi_param 这五组全是 A/B 双份,两份大小一模一样。这是典型的双分区冗余 —— 升级或者写配置时只动其中一份,出问题能退回另一份。光猫这种常年无人值守、还要被远程推送升级的设备,这套设计几乎是必需的,但拆机看不到,只有读分区表才看得出来。
启动参数里的两个佐证
/proc/cmdline 里还有几条跟存储有关,也都对得上。

flash_chip=spinand—— 这颗是 SPI NAND,不是并行 NAND。板子上那颗走的是串行接口,前面在 iomem 里出现过三次的hinand就是海思的 SPI NAND 控制器。root=/dev/mtdblock7—— 根文件系统挂在mtdblock7上,按上面的分区表数下来第 7 个正好是allsystemB。
第二条顺手把 A/B 那套设计从「看着像」变成了「正在用」:这台此刻跑的是 B 份,A 份(mtd6)整份躺在那儿当退路。哪天升级把 B 写坏了,理论上从 A 起来就行。
另外 flashsize=0x10000000 换算过来是 256 MiB,跟实测的 494.55 MiB 差了将近一倍。这大概就是「256MB 闪存」这个说法的第三个出处 —— 外面配置清单报一路、内核启动参数又写一路,可真去数分区,容量是 512MB。这两个数为什么对不上,我没查到原因。
再看 ls /mnt,这台挂了四个目录:jffs2、jffs2_bak、pcdn、usb。前两个是配置区和它的备份 —— 开 telnet 那篇里改的 hw_boardinfo 就放在 jffs2 里,usb 是留给 U 盘的。/proc/devices 也能佐证闪存类型:字符设备里有 90 mtd 和 253 ubi0,没有独立的 nand 设备节点,走的就是 MTD 加 UBI 这一套,跟 flash_chip=spinand 对得上。里面还有 254 watchdog(看门狗)和 204 ttyAMA(串口)。

四个目录里 pcdn 最扎眼。PCDN 就是 P2P CDN —— 把缓存节点下沉到用户设备上,拿上行带宽给附近的人分发内容。ls -l 看下来,这个目录是空的,属主是 mgt_ssmp:config,权限 750。
有两点要说清楚。一是这台跑的是自己刷的公版固件,目录是华为固件层本来就留的,不是运营商后来塞进来的;二是目录空着说明不了有没有在跑,进程和网络连出去的才是证据,这一步这次没做,所以不下结论。
语音芯片
在DC电源附近有一颗芯片,编号为N68 E36N VG 42Y AG 2421NG,网上暂时查不到其他有用的信息。然后在主控附近也有一颗芯片,网上也查不到信息,但是也有可能是一个电源管理芯片PMIC。
这颗后来弄清楚了,而且我一开始的定性是错的。放大看丝印,三行其实是 N681389M、4G1 2421M、YG,位号 U3011 —— 之前是把转过来的字看串了。
N681389 这个型号在对得上号的地方是 SLIC,也就是电话口的用户线接口芯片,同型号机器的配置清单里 SLIC 一栏写的正是 N681389,所以它不是电源芯片。
至于主控附近那颗没丝印的,参考同型号机器的清单,这个区域能对应的有光 PHY(UX5171U 与 GNA4215 两颗)和 LAN PHY。手上这台被散热片和屏蔽罩挡着看不到,没法确认到底是哪一颗,具体是哪颗就不断言了。


系统
系统使用的是Linux5.10.0版本的内核,armv7l架构,GUN/Linux的发行版。
把 uname -a 的完整输出贴出来,内核是 5.10.0 的 SMP 版本,编译时间是 2024 年 3 月 22 日。登录进去之后提示符是 WAP(Dopra Linux),Dopra 是华为网关设备上常见的那套系统名,手上另外几台华为光猫也是这个提示符。
需要注意的是这里报的是 armv7l,也就是 32 位模式。A55 本身是支持 64 位的,只是这套固件跑在 32 位下。

想自己查这些参数
上面这些 CPU、内存、内核的信息都不是猜的,是登录 telnet 之后跑命令读出来的。想在自己那台上复现,思路是先把 telnet 打开,具体怎么开、R23 和 R24 版本分别怎么处理,我在《华为 V175 光猫 R23/R24 开 Telnet 刷公版固件》里写过完整流程,那篇是同型号的,命令可以直接照抄。
进去以后有几条命令够用了:uname -a 看内核,cat /proc/cpuinfo 看核心和 CPU part,cat /proc/meminfo 看内存。
网上常看到有人提 display chipinfo,说一条就能把 CPU、DDR、闪存、光 PHY、无线芯片、语音芯片全列出来。这台我实际敲了一下,回的是 ERROR::Command is not existed —— 它在手上这台 V175 上并不存在。规格表里那几项是对照同型号别的机器的输出补的,不是这台读出来的。同样是华为光猫,能用的命令差得很远:display version 敲下去回 ERROR,wl 和 /etc/init.d/ 这套目录确实没有。dmesg、mount、df 敲着也报 ERROR,但那属于另一回事,下面单独说。
后来把 /bin 整个列出来,才发现前面那批「不存在」是我判错了 —— 不是命令不在,是这个 shell 前端不认。

光标前头那个 WAP(Dopra Linux) 是华为自己的命令行,它只处理内建的那批命令,碰上不认识的就回一句 ERROR::Command is not existed,压根不会去 /bin 里翻。所以 dmesg、mount、df 敲进去全是 ERROR,可 ls /bin 一瞧,三个都好好地躺在里面。带上完整路径敲 /bin/dmesg,就出来了。
这台 /bin 下足有四百来个命令,华为的私有工具一大堆:chipspec、chipdebug、ontinfo、ponstat、omci、oam、voice_h248sip、decrypt_boardinfo 都在。无线这块没有 wl,但有 iwpriv、iwconfig、iwlist、wificli。倒是 lspci 和 brctl 是真没有,翻遍 /bin 也不见 —— 前者是因为这台根本没有 PCIe 总线,后者得换个法子看桥。
所以想在自己那台复现,两条路都得走:读 proc 文件(/proc/mtd、/proc/iomem、/proc/interrupts、/proc/cmdline)拿硬件信息,外加给工具补上 /bin/ 前缀绕过 shell。上面那份闪存分区表和 SoC 集成度就是这么来的。
接口这边也实测了一遍。ifconfig -a 在这台能看到五个:

| 接口 | 状态 | 看到的情况 |
|---|---|---|
br0 | UP,192.168.100.1 | 桥接口,四个千兆口都并在这里。收 16433 包 / 发 14642 包 |
br0:2 | UP,172.16.x.x/16 | 桥上挂的第二个地址,仅凭这条命令看不出用途 |
vap0 | UP,有流量 | 无线虚拟接口,收 2555 包 / 发 1887 包 |
vap4 | 未启用,0 流量 | 另一个无线虚拟接口,这台上没开 |
Hisilicon0 | 未启用,MAC 全 0 | 名字直白,没有地址也没跑流量 |
有一点值得记:列表里看不到 eth0 到 eth3 这样的独立接口,四个千兆口在进系统之前就已经被并进 br0 了。想直接确认桥里到底有几个口,brctl 在这台没有,但可以换个路子 —— 读 /sys/class/net/br0/brif/ 这个目录,桥成员会以接口名的形式列在里面。
另外顺带说一句,这台机器配的四个千兆口是接在同一个 LAN PHY 上的,做多拨或者测并发的时候得留意。想测自家宽带到底被限制了多少会话数,可以照着《运营商宽带 CGNAT 会话数测试》那篇的思路来,方法和判断标准都写在里面了。
小结
整体拆下来,这台 V175 的料给得比预期足:六根天线(两根可调外置、四根贴壳定向)、压铸铝的散热片、五处导热垫、512MB 闪存,主控是 14nm 的海思 SD1156E 配双核 A55。放在运营商定制机里算是偏上的一档。
那么缺点也很明显:支持GPON及以上协议,却没有给2.5G电口,也就是有线设备下载最高也只能跑1000M。即使使用FTTR一起组合,受限于GPON上下行不对等(1.25Gbps/2.5Gbps),全屋2.5G也会受影响。其实是主控芯片发热会明显一些 —— 一方面核心是 14nm,另一方面外壳本身没有开主动散热的口子,全靠被动散热,长期满载摸着温热是正常的。
同类型的拆解我还写过另外几台,移动的 H5-9 和广东广电的 GDHG-CW5100 都在站内,感兴趣可以对着看做工差别:《中国移动 H5-9 光猫拆解》、《广东广电光猫拆解 GDHG-CW5100》。
文中所有丝印、命令输出都拍了图,有认错的型号或者漏掉的芯片欢迎留言指正,回头补进正文。
如果你觉得这篇文章不错,有用的话可以点击下面的“赞赏”支持作者,你的支持是我更新的动力(饿饿吃饭)。


Comments 9 条评论
你们那里不用宽带了这猫和路由器不用交还运营商吗?
@Lugede 一半不交
看了一下你的博客,发现你有的猫我也有… 另外V175这猫可以开WiFi7,哈哈
@zydia 从哪里开啊,有没有教程😭
@1027515023 用撬棍撬,不过比较麻烦,先找个突破口,建议从比较薄的地方开始,比如网口那边,比较薄
@Zou, Ning 博主博主,这个可以和华为自家路由器做有线mesh组网吗,还是说只能改主光猫成桥接模式才可以,我想让他在客厅当主路由,我的卧室装副路由mesh组网
@1027515023 不可以,华为路由器的组网比较严格,需要同型号的才能有效组网,要不然AP Mesh切换有一定延迟。中兴是为数不多把802.11K/V/R协议下放到消费级的路由器,如果你对漫游有需求,可以考虑中兴路由器。
大佬有没有华为 联通 V173 F30的教程。 谢谢
@807865292 回考虑出