|
本帖最后由 ROOTQb 于 2025-7-8 00:45 编辑
为啥要在2025年的现在搞这个7621,16m闪存,64m内存的玩意呢,因为有它。家里nas虚拟机开的旁路由业已实现一切所需,正好有一个8年前电信宽带送的E8820V2,就拿出来折腾了,不准备硬改,因为可预见的将来不会再搞这类硬路由硬改,所以硬改一套设备要是买来就用一次,还不如直接来个rax3000m或者360T7,还不用如此艰苦卓绝的适配DTS。
总而言之,经历了长达一年断断续续的研究和编译,终于搞出来一个比较完美的DTS了,但是主要适配21.02.7版本,稳定版更好在国内源装软件包,snapshot的软件包后续再想装真的很烦(也因此没有去折腾LEDE,他的配置很不一样,尤其是交换机,要调蛮多东西的),最后用了immortalwrt,目前稍作修改搞了一个能适配24.10.1版本编译成功的DTS,但是23和24版本无论如何都会oom,除非深度极限精简,不然不硬改内存大概率搞不了23和24版本了。
前期准备工作参考了中兴E8820V2(电信天翼宽带类似新路由3歌华链)-拆机及OpenWrt固件-OPENWRT专版-恩山无线论坛,来自yumeimm,github上的siwind,一直有在增补E8820V2的DTS,但是有些小问题,最新6.6内核版本也会oom,此外kwrt也就是openwrt.ai中也有E8820V2,但是应该也是自动编译的,目前没有不硬改内存能用的版本。
注意mac和eeprom中无线参数的复制。BREED没有适配E8820V2,而且闭源,需要HEX修改,不过已经有人分享了改好的。
以下是DTS
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "mt7621.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
/ {
compatible = "zte,e8820v2", "mediatek,mt7621-soc";
model = "ZTE E8820V2";
aliases {
led-boot = &led_sys;
led-failsafe = &led_sys;
led-running = &led_sys;
led-upgrade = &led_sys;
label-mac-device = &gmac0;
};
chosen {
bootargs = "console=ttyS0,115200 rootfstype=squashfs,jffs2"; // 定义了TTL,没有这个TTL不能用,yumeimm的固件ttl乱码就是缺这个,此外注意不要添加ethphy0中断
};
memory@0 {
device_type = "memory";
reg = <0x0 0x4000000>;
};
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
pcie_mem: pcie-mem@60000000 {
compatible = "shared-dma-pool";
reg = <0x60000000 0x800000>;
no-map;
};
};
leds {
compatible = "gpio-leds";
led_sys: sys {
label = "white:system";
gpios = <&gpio 29 GPIO_ACTIVE_LOW>;
};
power {
label = "white:power";
gpios = <&gpio 31 GPIO_ACTIVE_LOW>;
};
};
keys {
compatible = "gpio-keys";
reset {
label = "reset";
gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
};
wps {
label = "wps";
gpios = <&gpio 24 GPIO_ACTIVE_LOW>;
linux,code = <KEY_WPS_BUTTON>;
};
};
};
&spi0 {
status = "okay";
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <25000000>;
broken-flash-reset;
m25p,fast-read;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x0 0x30000>;
read-only;
};
partition@30000 {
label = "u-boot-env";
reg = <0x30000 0x10000>;
read-only;
};
factory: partition@40000 {
label = "factory";
reg = <0x40000 0x10000>;
read-only;
};
partition@50000 {
compatible = "openwrt,uimage", "denx,uimage";
label = "firmware";
reg = <0x50000 0xfb0000>;
};
};
};
};
&pcie {
status = "okay";
ranges = <0x02000000 0 0x60000000 0x60000000 0 0x1000000>,
<0x01000000 0 0x00000000 0x1e160000 0 0x00010000>;
memory-region = <&pcie_mem>;
reset-gpios = <&gpio 19 GPIO_ACTIVE_LOW>,
<&gpio 4 GPIO_ACTIVE_LOW>;
};
&gmac1 {
status = "disabled"; // mt7621有2个gmac但是E8820V2有一个未连接,不确定是否可以通过硬改启用
};
&switch0 {
mediatek,mcm;
mediatek,portmap = "llllw"; // 4个LAN + 1个WAN
reset-gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
mediatek,init-delay-ms = <100>; // 增加100ms初始化延迟
ports {
port@0 {
status = "okay";
label = "lan1";
phy-mode = "auto";
};
port@1 {
status = "okay";
label = "lan2";
phy-mode = "auto";
};
port@2 {
status = "okay";
label = "lan3";
phy-mode = "auto";
};
port@3 {
status = "okay";
label = "lan4";
phy-mode = "auto";
};
port@4 {
status = "okay";
label = "wan";
phy-mode = "auto";
};
cpu_port: port@6 {
status = "okay";
label = "cpu";
ethernet = <&gmac0>;
phy-mode = "rgmii"; // 固定CPU连接参数,这个交换机是内置的,直连的,没有自动协商,网口再多总带宽也就1g
fixed-link {
speed = <1000>;
full-duplex;
};
};
};
};
&gmac0 {
status = "okay";
label = "eth0";
phy-mode = "rgmii";
mtd-mac-address = <&factory 0xe000>;
mtd-mac-address-increment = <1>;
};
&pcie0 {
wifi@0,0 {
compatible = "pci14c3,7603";
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&factory 0x0>;
ieee80211-freq-limit = <2400000 2500000>;
led {
led-active-low;
};
};
};
&pcie1 {
wifi@0,0 {
compatible = "pci14c3,7662";
reg = <0x0000 0 0 0 0>;
mediatek,mtd-eeprom = <&factory 0x8000>;
ieee80211-freq-limit = <5000000 6000000>;
led {
led-sources = <2>;
led-active-low;
};
};
};
&state_default {
gpio {
groups = "i2c", "uart2", "uart3", "wdt";
function = "gpio";
};
};
仍需要在/target/linux/ramips/image中修改mt7621.mk
define Device/zte_e8820v2
$(Device/dsa-migration)
$(Device/uimage-lzma-loader)
IMAGE_SIZE := 16064k
DEVICE_VENDOR := ZTE
DEVICE_MODEL := E8820V2
DEVICE_PACKAGES := kmod-mt7603 kmod-mt76x2 kmod-usb2 \
kmod-usb-ledtrig-usbport
endef
TARGET_DEVICES += zte_e8820v2
可以在里面加上kmod-usb3或者编译的时候自己选上,虽然是2.0的口,但是usb打印机需要
在/target/linux/ramips/mt7621/base-files/etc/board.d/01_leds中可以添加led参数,主要控制电源和系统灯,至于无线网络的两个灯,没找到对应的gpio,交给#include <dt-bindings/leds/common.h>就好
zte,e8820v2)
ucidef_set_led_netdev "sys" "SYS_LED" "white:system" "eth0" "tx rx"
ucidef_set_led_timer "power" "POWER_LED" "white:power" "100" "8000"
;;
至于编译好的immortalwrt21.02.7,里面加入了桥接依赖,用来无线连接主路由,还有usb打印机和kms,基本没加别的了,反正稳定版,后面再装也不难。
2025-07-01更新,之前没发现,E8820V2虽然只有一个usb2.0接口,但MT7621是内置一个3.0和一个2.0控制器的,不知道中兴是咋搞的,这个usb2.0的接口实际上似乎用了3.0向下兼容,要安装kmod-usb3,不然接口不能用
之前以为只是打印机不能用是错误的理解,不装kmod-usb3是完全不能用usb接口。
MT7621AT,双核四线程,用breed超频大部分应该都能稳1100mhz,可以冲一下1200mhz,目前没发现时间异常,也许是老版本才会有的问题
需要注意21.02.7是5.4内核,mt76开源驱动版本也没有完全支持WPA3,注意手动调整为WPA2并关闭管理帧保护,如果强开wpa3有几率让mt7612en掉驱动
最近试了一下用usb外接扩展,编译去掉了网络打印机,增加了猫猫的支持,用外接usb扩展根目录,加上手动分配swap区,整体流畅度跃升,甚至可以稳定跑猫,不过因为实际需求只是加速一下github,所以转发速度没有做测试。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|