达发 airoha en7529/en7562/an7563 等基于 en7523 的 SoC 构成分析以及 OpenWrt 支持研究(下)

接上文 SDG320 en7562ct ax3000 研究(上)

SoC 构成研究

相关文件

有兴趣就研究一下吧!

下载
点击展开相关研究过程

从原厂的编译信息分析

/userfs/profile.cfg 有着一些编译信息。

1
"512k[bootloader],12m[rescue],1280k[reservearea],256k[romfile],5m[kernela],33m[rootfsa],5m[kernelb],33m[rootfsb],6m[data],50m[java],78m[osgi]"

这个分区信息是移动版本的,其他版本的是下面这样的

1
"512k[bootloader],12m[rescue],1280k[reservearea],256k[romfile],5m[kernela],33m[rootfsa],5m[kernelb],33m[rootfsb],6m[data],16m[plugin1],16m[plugin2],96m[plugin3]"

UBOOT 2014 版本 ATF2_1

1
2
TCSUPPORT_ARM_SECURE_BOOT=y
# TCSUPPORT_SECURE_BOOT is not set

这两个 SECURE_BOOT 有什么区别吗?应该上面这个是 ATF 的。

如果有高手,可以结合开源的 ATF 代码,尝试制作一个多功能 UBOOT,就像 uboot-mt798x 一样

1
2
3
4
5
6
TCSUPPORT_ETHPHY=5R_DIS
TCSUPPORT_7562_CD=y
TCSUPPORT_GCC10_3_0_GLIBC2_32_KERNEL5_4=y
# WAN Transfer Mode Support
TCSUPPORT_SWITCH_8850=y
TCSUPPORT_BUSYBOXCONFIG_TC3262=y

这里只选取了最重要的差别,其他系统定义上的差别、驱动特性的差别没有给出。

TCSUPPORT_BUSYBOXCONFIG_TC3262=y 指定了使用了 TC3262 的 BusyBox 配置。TC3262 是 TrendChip 的一个 SoC 系列,可能是为了兼容性或特定功能。

TcBoot 是从 TrendChip 的 TC3262 衍生而来的极简引导加载程序。可能是为了支持 A/B 分区的相关特性,或是 NAND BBT/BMT 相关功能。

某些编译信息,来自固件里打包的某些文件,这应该是编译 Airoha SDK 的工具链。

1
2
3
4
5
6
7
8
9
root@Ubuntu:tmp# /home/sdks/OEM/airoha_en75xx-evb2023/bin/arm-linux-gcc -v
Using built-in specs.
COLLECT_GCC=/home/sdks/OEM/buildroot-gcc1030-glibc232_kernel5_4/bin/arm-linux-gcc.br_real
COLLECT_LTO_WRAPPER=/home/sdks/OEM/buildroot-gcc1030-glibc232_kernel5_4/bin/../libexec/gcc/arm-buildroot-linux-gnueabi/10.3.0/lto-wrapper
Target: arm-buildroot-linux-gnueabi
Configured with: ./configure --prefix=/opt/trendchip/buildroot-gcc1030-glibc232_kernel5_4 --sysconfdir=/opt/trendchip/buildroot-gcc1030-glibc232_kernel5_4/etc --enable-static --target=arm-buildroot-linux-gnueabi --with-sysroot=/opt/trendchip/buildroot-gcc1030-glibc232_kernel5_4/arm-buildroot-linux-gnueabi/sysroot --enable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib --disable-decimal-float --with-gmp=/opt/trendchip/buildroot-gcc1030-glibc232_kernel5_4 --with-mpc=/opt/trendchip/buildroot-gcc1030-glibc232_kernel5_4 --with-mpfr=/opt/trendchip/buildroot-gcc1030-glibc232_kernel5_4 --with-pkgversion='Buildroot -g413d1bb' --with-bugurl=http://bugs.buildroot.net/ --without-zstd --disable-libquadmath --disable-libquadmath-support --enable-tls --enable-plugins --enable-lto --enable-threads --without-isl --without-cloog --with-float=soft --with-abi=aapcs-linux --with-cpu=cortex-a7 --with-float=soft --with-mode=arm --enable-languages=c,c++ --with-build-time-tools=/opt/trendchip/buildroot-gcc1030-glibc232_kernel5_4/arm-buildroot-linux-gnueabi/bin --enable-shared --disable-libgomp
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.3.0 (Buildroot -g413d1bb)

没有源码,看个乐呵。

设备树构建猜想

以下是进行推测的过程,可以直接跳到末尾最新的部分。

当然,这些都是推测,不保准准确,没有看到 dieshot 时,谁也不能确定


airoha: add support for Gemtek W1700K

这个提交展示了如何在带有 Secure Boot 的达发设备上引导系统。W1700K 是一个基于 an7581 的设备,使用了 Secure Boot 机制。

我感觉有戏,感觉可以为该设备提供 OpenWrt 支持。但是主线上的 en7523 只有验证样品的 DTS 文件,没有模板。

不过话又说会来了,这个 dts 貌似不太完整,比如 keys、led 的 GPIO 都没有,而且也没有分区信息,应该是藏在内核脚本里了,还是要ttl看启动信息。

见参考资料 [1]

gdma 应该是一个 dma 设备,而 gdm 是一个以太网 mac 设备,frame_engine 集成了以太网相关的部分。

[2] 中提到:

R5408M 的四个 2.5G 口是直通 CPU 的,…CPU EN7562C 里面集成有一个千兆交换机,5-8 号千兆口就是走这个交换芯片。…

参考[3]:

…CPU型号是EN7652CT,双核A53架构,频率1GHz,集成4个千兆PHY。…

以及原厂编译配置文件中的

1
TCSUPPORT_HSGMII_LAN=y

结合 [4][5] 的信息以及使用 ifconfig/iwconfig 命令查看到的网口信息

1
2
3
4
eth0
eth0.2
eth0.3
eth0.4

可以确定,这确实是有一个千兆交换机内置在 en7562ct SoC 之中。GMAC1 扩展支持 SGMII 和 HSGMII

估计应该和 EN8850DRE 差不多

而设备树中包含了 wdmawed,设备树中使用 en751221 作为兼容硬件,可能同样兼容 EN7526。

Pcie 方面,en7562ct 使用了兼容 mt7520 的 pcie 通道

而 hsgmii 是提供 2.5Gbps 内部接口(Interface),或为 pon/xpon 提供支持。

参考[3:1]:

…T和U的差别,从价格和扩展性来看,就差在3个HSGMII接口上。…

千兆网口(PHY)来自内部的以太网交换机芯片。

额外发现,airoha 的交换机芯片,后缀不一样,它们的结构可能也不相同,故此驱动可能也并不通用,特定型号只能期待 MTK/AIROHA 开源了。

以及可以发现,小米 BE5000,使用了 en7563PT 处理器,推测该芯片应该是 en7562 的更新换代。以及还有一款 极客AP 也使用了 en7563pt 方案。

解包小米固件后,发现该 dts 与 an7562 的内核提取 dts 非常相似,也是基于 an7523 的设备树,但是多了 an7581 的 oop-table 频率表,GPIO、分区表、thermal-zones等。

另外,我们也可以查看另一个不同架构 SoC en751221 的相关资料,已经有人发表相关的文章。具体见参考资料 [1:1]。也已经有人为其适配 Linux/OpenWrt。


en7561 一般搭配 MT7905DEN+MT7975DN 配置成 ax1800
en7562 一般搭配 MT7976DN+MT7916AN 配置成 ax3000
an7963 一般搭配 MT7976CN+MT7991AV/BV 配置成 be3600/be5000

EN7562 是 28nm 的处理器,AN7563 则是 14nm 的处理器。

另外,airoha 的命名很混乱,en7561 是 mips 架构的,en7562/7563 是 arm 架构的,据说 en7561 是 mt7621 的改版,如果要尝试为 en7561 提供 OpenWrt 支持,可以参考 mt7621 的相关代码。

结论

7月9日更新

概述:

EN7562CT 是用于 xPON 应用的高度集成的单芯片解决方案。

它集成了四个以太网 GPHY、一个 DDR3 控制器、一个 USB3.0 Host、一个 USB2.0 Host、两个 PCIe Gen2 端口,以及用于 VoIP 应用的具有 ISI/ZSI 兼容接口的 PCM 控制器,从而完全满足未来智能家居网关的要求。

EN7562CT 采用 1.0GHz ARM CA53 双核 CPU 和强大的 Xmart PacketAccelerator(XPA),它可以支持无与伦比的网络功能,具有极高的数据包处理能力。

通过 XPA,EN7562CT 执行高级 QoS、安全性和灵活的协议管理。

EN7562CT 还集成了三个专有的 RISC-V 内核,以加速 WiFi 和安全应用程序。

EN7562CT 采用领先的节能技术制造系统板设计简单易行,提供系统成本低、超低能耗的独特消费者解决方案


特性:

高度集成的广域网接口

  • 符合 ITU-T G.984/G.988和IEEE802.3ah 标准

  • 支持主动以太网

  • 提供 MIB 计数器和嗅探器功能,用于快速现场调试非匹配和 Xmart 数据包处理引擎

  • Xmart packet 加速器可以支持线速数据包处理和转发无需 CPU 参与的能力

  • 支持高达 32K 的流量,包括 L2 网桥、IPv4 NAT/路由、IPv4 NAPT、IPv6
    3/5 元组路由、6RD 和 DS-LITE、NPTv6、VxLAN、NVGRE

  • 强大的流量分类引擎解析 L2 到 L4 头信息

  • TR-156 和 CTC Spec 中定义的灵活 VLAN 转换功能。

  • 支持 L2 和 L3 组播流和组播 VLAN 转换

  • 可配置的数据包缓冲区位置,具有高效的基于页面的链表缓冲区管理

  • 有效的 QoS 方案,包括按流 TrTCM 流量整形、SP/WRR/SP+WRR
    用于交通调度,尾部下降和红色用于拥堵处理

  • 支持高达 16K 的 jumboframe
    高度集成的局域网接口

  • x4 GEPHY

  • x3 HSGMII 与 PCIE/USB SerDes 的组合。强大的 SoC 平台

  • 1.0GHz ARM CA53 双核 CPU,256K L2 缓存

  • 集成三个专有的 RISC-V 内核,用于 WiFi 和安全加速

  • 支持高达 1GB DDR3-1866 SDRAM

  • 支持 SPI NOR/NAND 闪存

  • 两个用于双频 WiFi 应用的 PCIe Gen2 接口

  • 一个 USB3.0 接口和一个 USB2.0 接口

  • 提供一个 PCM 或两个 ZSI/ISI 接口

  • 用于安全应用的内置加密引擎

  • 两个 UART

  • 一个 I2C 主机和一个 I2C slave


方框图:

注意:图中相关组件标注的型号只是代表该组件的功能相近,并不带不一定是该型号的组件或兼容组件。

SerDes配置:

SerDes 名称模式
PONSerDesPON/HSGMII/5GBASE-R
PCIe Gen2 SerDesPCIe Gen2/HSGMII
USB3 SerDesUSB3/HSGMII

封装工艺:

LFBGA-361


基于 en7523 的 SoC

EN7529DU = EN7523_BASE,

EN7523DT
EN7523DTM
EN7523DU
EN7523GU
EN7523SU

EN7529CT
EN7529CTM
EN7529CU
EN7529DT
EN7529DTM
EN7529DU
EN7529GTH
EN7529GTS
EN7529IT
EN7529ITM

EN7562CT
EN7562CTM
EN7562CU
EN7562DT
EN7562DTM
EN7562DU
EN7562GTH
EN7562GTS

达发 ARM(a53/v7l) 命名规则:

第一位后缀代表频率,从默认频率到最高频率依次为 C(1GHZ)、D(1.2GHZ)、G(1.3GHZ)、P(1.4GHZ),其中 S/I 是特殊版本(一般是性能更强)。注:括号内的频率并不一定是实际频率,只是为了便于理解。

第二位后缀代表内存封装,T 代表使用外置 DDR,U 代表使用内置 DDR。

第三位后缀 H/S,H 代表 Host,S 代表 Slave。

其实这个频率,他是可以超频的,也是可以降频的。如果未来有人研究的话,是可以将最基础的 C 版本超频到 1.4GHz 的,只要你想,改 bl2 的源码,超到 2GHZ 都不是问题,不过这颗芯片发热量巨大,即使降频也很难控制温度。不过用其他版本的厂商实在不多,也没有源码。此外,目前 airoha 新版 SDK(airoha SDK 7.3 kernel 5.4) 是统一 SDK,也就是说,只要你能拿到这个 SDK 的源码,你就可以编译出所有版本的 SoC 的固件(通过不同的 mak 配置)。


基于 EN7528 的 SoC

EN7528HU
EN7528DU
EN7561DU
EN7526FH_EN7528DU
EN7521G_EN7528DU

基于 EN7580 的 SoC

EN7580GT
EN7580ST
EN7580GAT
EN7565

基于 EN7516 的 SoC

EN7516G

基于 EN7527 的 SoC

EN7527G
EN7561G

基于 EN7512 的 SoC

EN7512
EN7513
EN7513G

基于 EN7521, EN7521FC 的 SoC

EN7521FCUD
EN7521F
EN7521S
EN7526D
EN7526F
EN7526G
EN7526FT
EN7526FP
EN7526FT_C

基于 AN7581 的 SoC

AN7581_BASE,
AN7581GT = AN7581_BASE,
AN7566GT,
AN7581PT,
AN7581ST,
AN7551PT,
AN7581CT,
AN7581DT,
AN7581FG,
AN7581FP,
AN7581FD,
AN7551GT,
AN7566PT,
AN7581IT,
AN7581SIT,

基于 AN7552 的 SoC

AN7552_BASE,
AN7552CT = AN7552_BASE,
AN7552ST,
AN7552FT,
AN7563CT,
AN7563PT,

基于 AN7583 的 SoC

AN7583_BASE,
AN7583GT = AN7583_BASE,
AN7583GIT,
AN7583CT,
AN7583DT,
AN7583ST,
AN9510GT,
AN7553GT,
AN7553CT,
AN7567GT,
AN7567CT,
AN7583ET,
AN7583EIT,
AN7583FG,
AN7583FP,
AN7583FD,
AN7583FS,
AN7583FF,

OpenWrt 支持的可能性

点击展开相关研究过程

6月13日记录

今天有一个新的发现:airoha_ml

随后,我又从这些文件中发现了一个名为 IOWRT Airoha integration,目的是移植 Airoha SDK 到 IOWrt(Based On Openwrt)。

6月15日记录

今天我又发现了一款使用 en7562ct 的设备(不过无线使用 7915)的 make config 文件,发现这是使用21年11月的编译配置,此时它直接使用了 en7523 相关配置,全然没有使用 8850 交换机选项和其他有区别于 en7523 的配置。

而这些变化发生于 22 年某个时间,发生这些变化的 SDK 来自 23 年,所以我更能确定了,早期的 en7562 设备直接使用 en7523 的设备树进行编译。

关于交换机,在设备树中的 Frame_Engine 设备中,就有一个交换机的节点。起初查看 /proc/device-tree/ 目录下的设备树文件时,没有发现交换机设备/以太网设备,我还以为是 airoha SDK 的原因,认为实际存在但没在设备树中显示,因为这些设备树的命名难以猜测,以及该设备运行的系统与寻常 linux 不同,似乎叫 tclinux。

即便不启用属于 en7562 家族的特性,它照样能够运行。

是否好奇没有分区表要怎么启动?我也很好奇,然后查阅了文档,像一些 gpio,分区表,都可以写在 uboot 的环境变量/启动命令中。所以不必纠结分区表了和设备树了。这倒是提醒我备份 u-boot 环境变量十分重要。

此外,我发现,userfs/ 目录下,存在:7523duled.conf、7523guled.conf、7529_62led.conf、7529_cd.conf、led.conf、led_fpga.conf 等文件,这些文件可能是用于配置 LED 灯的。所以,达发的 led gpio 可能是通用的,但也可能是厂商内部定义的。

通过查看 IOWrt Airoha integration 的代码,发现他们的也使用类似 airoha 的 led 配置方式。同样存在于 userfs/led.conf 文件中。

通过比较,可以确定 led.conf 并非是通用的,而是特定于某个设备的配置文件。适配系统时,需要通过 patch 的方式来修改该文件。

6月29日更新

今天抽空连接了 TTL,看了一下 uboot 和 启动 log,看到了一下内容

1
2
3
4
5
6
7
8
9
10
11
(1) insmod mdio_arht.ko
insmod: cannot open module `/lib/modules/mdio_arht.ko': No such file or directory
(2) insmod air_en8811h.ko writeflash: total write 0x2ac5 bytes

insmod: cannot open module `/lib/modules/air_en8811h.ko': No such file or directory
[tcPhyInit] in [tcPhyInit] out , r31 = (10, 0x0)
(3) insmod 8811_bbu_api.ko
insmo GE R45 AnaCal zcal_idx(before table) (dec: 43) (hex: 0x2b)
GE R45 AnaCal Done! (cnt:11)(after table) ([7][6:0]:0x56) ([6:0]:0xd6)
d: cannot open module `/lib/modules/8811_bbu_api.ko': No such file or directory
an8811 end

这三个模块都是不存在的,但是系统想要加载它们。en8811h 是一个以太网 PHY 驱动,8811_bbu_api 是一个 BBU 驱动,mdio_arht 是一个 MDIO 驱动。

实际上交换机使用 mt753x 的魔改驱动,如果存在 8811 phy 则会有相应的驱动代码,但是该设备没有该 phy,系统也去加载了该驱动,看起来是写死了。

然后就是,它真的有 efuse。

还有一个就是 led 相关的了

1
2
3
tcledctrl version: tcledctrl V1.1.0.0 (Nov 10 2023-16:08:25).
ot not found led.conf
led path:/userfs/7529_cd.conf

以及相关的分区表和 gpio 确实存储在 uboot-env 中。

1
2
3
4
5
6
7
8
9
bootdelay=3
bootfile=tclinux.bin
bootpart=512k[bootloader],12m[rescue],1280k[reservearea],256k[romfile],5m[kernela],33m[rootfsa],5m[kernelb],33m[rootfsb],6m[data],50m[java],78m[osgi]
...
dsl_gpio=0b
ether_gpio=0c
internet_gpio=02
multi_upgrade_gpio=0b020400000000000000000000000000
power_gpio=0b0b

OpenWrt 实战研究

7月3日更新

近几日尝试编译了基于 Linux 6.6 的固件,以及解决相关驱动问题。

结果是可以启动,但是以太网部分瘫痪,eth、switch、wlan 都无法正常工作。

另外编译过程中 airoha_eth.c 存在问题,使用 patch 解决了(编译报错,但是无法判断该驱动是否正确),不知道是否是因为这个问题导致以太网无法工作。还有 Airoha spi 驱动的问题需要解决。

IOWrt Airoha integration 项目可以当作参考,虽然他们开源了一部分代码,但是仍然有很多门槛,无法一步到位直接使用。


7月6日更新

这个 SoC 网络部分的驱动或许可以结合 en7521 和 an7581 的驱动代码,en7562 很明显是迭代过程的产品,en7521 有泄露的驱动代码,an7581 的驱动代码是官方开源的,但是这种没有 datasheet 的产品,寄存器地址、寄存器位的含义都不清楚,无法进行驱动开发。

还有我尝试在编译了 arm64 的内核,因为某些驱动原生是 arm64 开发的,不清楚是否兼容 v7l 内核,但是编译出来的内核无法正常开机,启动内核后直接 reset cpu。

捋一捋,可以发现:

  • frame_engine 基于 en7521 的 frame_engine 并加上了一些 PPE/NPU 还有一些 ONU 相关的特性

  • wed/wdma 兼容 en751221

  • npu 可能是 an7581 npu 的前身

  • watchdog 兼容 en7521 的 watchdog

关键的 system-control 部分,我不太清楚,因为 reset-controller/clock-controller 令人折磨,不清楚这个 SoC 是如何工作的。

但是 an7581 的以太网已经是 eth + switch 的形式了,而加速器部分貌似只使用了 npu,wed、wdma 没有看见相关定义

wed 见于 mt7622,而 mt7622 上有 wed0、wed1,而该 SoC 上是 wed0、wed2、wed_test,暂时不知道他们的关系。wdma 见于 mt7623。


真是无语了,明明他们每个芯片都在迭代更新,增加了很多特性,结果相关代码名称都叫 ecnt_eth/airoha-eth/etc.,导致我以为他们是同一个驱动,结果不是的,寄存器地址、寄存器位的含义都不一样,实际上是不能通用的,甚至是不能兼容的。

关于 uboot

目前该 uboot 是配合 5.4 内核使用的,采用 a/b 分区的方式,使用了 ATF2_1 的 U-Boot2014。

但是据说他们内部有一个基于 uboot-2023 开发的版本,但是似乎没有给消费者使用。

github 上有一个 atf-airoha 提供了一个基于 airoha 的 atf,可以尝试移植。

这个是给 ATF-2024 版本使用的,看似他开源了,但是实际上缺少了关键的 DRAMC 初始化代码以及 EFUSE/EFUSE_LOAD 相关的代码,所以无法使用。

但是其实无所谓的,因为uboot该有的功能原版都有。只需要使用时注意备份 uboot 环境变量就行。

虽然 tftpboot 启动不会破坏分区结构并且还是只读的,但是可能会破坏 uboot 环境变量。

所以需要在启动前备份 uboot 环境变量。

1
printenv

将输出的内容保存到一个文件中。

当环境变量被破环导致无法启动后,可以使用以下命令恢复:

1
2
env default -a # 恢复默认环境变量
saveenv

然后参照之前的环境变量,重新设置。

1
2
3
env delete <variable_name> # 删除某个变量
setenv <variable_name> <value> # 设置某个变量
saveenv # 保存环境变量

然后启动

1
flash imgread 2048;\bootm

总结

目前的结论是:

目前主线 Linux/OpenWrt 可以直接启动所有 airoha mips/arm 的设备。

但是其他部分,比如 pcie/usb/eth/switch/gpio/watchdog/pinctrl/pwm/wed/npu/etc. 都需要特定的驱动支持。而这些驱动可以期待 airoha/mediatek 开源,或是从大厂的 gpl 代码中获取。

相关开源

8月4日更新

通过大厂的gpl开源,我们仍然能够获取一些东西

比如:

  • netgear gpl 机型 EXS27(BE5000, AN7563PT) 基于 OPENWRT 21.02 mediatek feeds, kernel 5.4

  • zyxel gpl 机型 px3321-t1(AX3000, AN7529CT) 基于 OPENWRT 14.07, kernel 4.4

netgear的代码倒是比较规范,可以直接使用,但是环境官方没有说明,按照本博客最前面提供的环境进行配置,结合zyxel的环境配置即可,zyxel 的代码需要移植 itb 镜像的打包方法,并且禁用 lzma,改用 gzip 压缩

TP-Link(联州) 也有一些 GPL 开源,但是实际上代码编译不出来,也全是类似 .obj 的文件,无法使用。

比如 XC220, XX230V 等等

可以通过移植来支持其他机型,两款机型的 GPL 代码应该能够支持 airoha wifi6/7 基于 en7523 的机型(en7529ct/en7562ct/an7563pt)

以及一些开源的项目

比如:

  • atf-airoha, 适用于 Airoha SoC 的 ARM Trusted Firmware

  • keenetic sdk, 适用于 Keenetic 路由器的开源项目,目前适配了 en7512/en7516/en7528

但是呢,由于不知道这些基于 en7523 的型号更新了什么东西,所以驱动也不一定通用,目前可以知道的是,en7529/en7562 是同代产品,但是是否能够用于最初的 en7523 吗,这不一定,至于 en7562 -> en7563,虽然是改进后支持 wifi7,但是有新增了很多特性。

我收集制作了一个基于 en7523 的 SoC 的相关资料的合集,里面包含了相关的文档、代码、以及一些分析资料。还有一个 bootloader 的项目

  • airoha-collection

  • bootloader-en75xx

参考资料

  • TrendChip

  • EcoNet

  • MediaTek/SoC

  • Quantum Fiber W1700k support - For Developers - OpenWrt Forum

  • test_devkit_en7521_20161129.tgz

  • cjdelisle’s openwrt

  • Support for Zyxel - PX3321-T1

  • Zyxel PMG5617GA router OEM GPL source code a.k.a. OPAL based on OpenWRT 14.07

  • OpenWrt support for Zyxel PMG5617GA and Econet SoCs, first GPON support !?

  • atf-airoha

  • kernel-49

  • keenetic-sdk


  1. econet-linux-wiki ↩︎ ↩︎

  2. TL-R5408M 拆机 芯片设计评测 ↩︎

  3. 烽火SR1041FU拆机,AX3000无线路由器 ↩︎ ↩︎

  4. TL-R5408M易展路由器拆机和小包转发测试 ↩︎

  5. TL-R5010PE-EN拆机全2.5G POE一体机,弱电箱好野 ↩︎