找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888广告投放联系QQ68610888
查看: 4995|回复: 94

OpenWrt 主线编译与 DTS 修改教程 (适配 XG-040G-MD)

 火 [复制链接]
发表于 2026-5-4 06:15 | 显示全部楼层 |阅读模式
本帖最后由 yangkecapf 于 2026-6-30 16:11 编辑


2026-06-30 openwrt主线已经支持040g-md机型,本教程已过时! 仅供参考!






非嵌入式开发从业者,如有不对的地方请指正。谢谢!

【感谢】
    * c01              https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=8464914&extra=page%3D1&page=23//在345楼
    * xiangtailiang https://github.com/xiangtailiang/OpenWrt-for-XG-040G-MD

1、准备工作。
使用Ubuntu普通用户,相应的编译环境请参考官方文档。
  1. git clone https://github.com/openwrt/openwrt.git
  2. cd openwrt
复制代码
  1. ./scripts/feeds update -a
  2. ./scripts/feeds install -a
复制代码


(1)加入xg-040g-md机型支持
    相关文件见附件
(2)集成第三方包
  1. vi feeds.conf.default
  2. //添加rtp2httpd iptv
  3. # 使用 main 分支最新代码
  4. src-git rtp2httpd https://github.com/stackia/rtp2httpd.git]https://github.com/stackia/rtp2httpd.git

  5. cd package/
  6. //下载aurora和argon主题,以及npu状态插件
  7. git clone https://github.com/eamonxg/luci-theme-aurora.git]https://github.com/eamonxg/luci-theme-aurora.git
  8. git clone https://github.com/eamonxg/luci-app-aurora-config.git]https://github.com/eamonxg/luci-app-aurora-config.git
  9. git clone https://github.com/jerrykuku/luci-theme-argon.git]https://github.com/jerrykuku/luci-theme-argon.git
  10. git clone https://github.com/jerrykuku/luci-app-argon-config.git]https://github.com/jerrykuku/luci-app-argon-config.git

  11. git clone https://github.com/rchen14b/luci-app-airoha-npu.git]https://github.com/rchen14b/luci-app-airoha-npu.git

  12. //修改luci-app-airoha-npu插件的Makefile(不修改编译的时候会找不到路径报错)
  13. vi luci-app-airoha-npu/Makefile
  14. include $(TOPDIR)/feeds/luci/luci.mk

  15. //选择好需要软件包
  16. make menuconfig
  17. make download -j8
  18. make V=s -j1
复制代码


2、DTS修改
  1. vi target/linux/airoha/dts/an7581.dtsi
复制代码

//NPU内存预留缩减:原机留了180M左右,猜测是适配8核NPU,减少后测速也没有问题(未测试bt等高并发场景)
  1. reserved-memory {
  2.                 #address-cells = <2>;
  3.                 #size-cells = <2>;
  4.                 ranges;

  5.                 atf@80000000 {
  6.                         no-map;
  7.                         reg = <0x0 0x80000000 0x0 0x200000>;
  8.                 };

  9.                 npu_binary: npu-binary@84000000 {
  10.                         no-map;
  11.                         reg = <0x0 0x84000000 0x0 0xa00000>;
  12.                 };

  13.                 qdma0_buf: qdma0-buf@87000000 {
  14.                         no-map;
  15.                         reg = <0x0 0x87000000 0x0 0x1000000>;
  16.                 };

  17.                 qdma1_buf: qdma1-buf@89000000 {
  18.                         no-map;
  19.                         reg = <0x0 0x89000000 0x0 0x800000>;
  20.                 };

  21.                 npu_pkt: npu-pkt@8a000000 {
  22.                         no-map;
  23.                         reg = <0x0 0x8a000000 0x0 0x1800000>;
  24.                 };

  25.                 npu_txpkt: npu-txpkt@8cc00000 {
  26.                         no-map;
  27.                         reg = <0x0 0x8cc00000 0x0 0x2000000>;
  28.                 };

  29.                 npu_txbufid: npu-txbufid@90c00000 {
  30.                         no-map;
  31.                         reg = <0x0 0x90c00000 0x0 0x6800>;
  32.                 };

  33.                 npu_ba: npu-ba@90c06800 {
  34.                         no-map;
  35.                         reg = <0x0 0x90c06800 0x0 0x200000>;
  36.                 };
  37.         };
复制代码

//给硬件crypto加个标签,后续在机型dts中引用(不支持AES-GCM,CBC好像是可以。)
  1. crypto: crypto@1e004000 {
  2.                         compatible = "inside-secure,safexcel-eip93ies";
  3.                         reg = <0x0 0x1fb70000 0x0 0x1000>;

  4.                         interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
  5.                 };
复制代码

//给NPU加个状态:开启。当然加个标签然后在机型dts中引用更规范吧!
  1. npu: npu@1e900000 {
  2.                         compatible = "airoha,en7581-npu";
  3.                         reg = <0x0 0x1e900000 0x0 0x313000>;
  4.                         interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
  5.                                      <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
  6.                                      <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
  7.                                      <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
  8.                                      <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
  9.                                      <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
  10.                                      <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
  11.                                      <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
  12.                                      <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
  13.                                      <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
  14.                                      <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
  15.                                      <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
  16.                                      <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
  17.                                      <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
  18.                                      <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
  19.                         memory-region = <&npu_binary>, <&npu_pkt>, <&npu_txpkt>,
  20.                                         <&npu_txbufid>, <&npu_ba>;
  21.                         memory-region-names = "binary", "pkt", "tx-pkt",
  22.                                               "tx-bufid", "ba";
  23.                         status = "okay";
  24.                 };
复制代码

//内部中断控制器逻辑循环? 系统启动会有报错信息。
  1. gic: interrupt-controller@9000000 {
  2.                         compatible = "arm,gic-v3";
  3.                         interrupt-controller;
  4.                         #interrupt-cells = <3>;
  5.                         #address-cells = <1>;
  6.                         #size-cells = <1>;
  7.                         reg = <0x0 0x09000000 0x0 0x20000>,
  8.                               <0x0 0x09080000 0x0 0x80000>,
  9.                               <0x0 0x09400000 0x0 0x2000>,
  10.                               <0x0 0x09500000 0x0 0x2000>,
  11.                               <0x0 0x09600000 0x0 0x20000>;
  12.                         /* interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>; */ //把这行删除
  13.                 };
复制代码

  1. vi target/linux/airoha/dts/an7581-bell_xg-040g-md.dts
复制代码

//内存扩容,支持最大2G
  1. chosen {
  2.                 bootargs = "ubi.mtd=ubi root=ubi0:rootfs rootfstype=squashfs ro rootwait console=ttyS0,115200 earlycon";
  3.                 stdout-path = "serial0:115200n8";
  4.                 /* linux,usable-memory-range = <0x0 0x80200000 0x0 0x1fe00000>; */ //删除这一行可用内存限制 or 修改第4个参数使其支持1g: 0x3FE00000 2g:  0x7FE00000
  5.         };

  6.         memory@80000000 {
  7.                 device_type = "memory";
  8.                 reg = <0x0 0x80000000 0x0 0x80000000>; //修改第4个参数使其支持2G内存,对于512m 1g 2g通用
  9.         };
复制代码

//修改ubi分区大小,因为更换了更大的512M nand存储。原机256M的不用修改
  1. &spi_nand {
  2.         partitions {
  3.                 compatible = "fixed-partitions";
  4.                 #address-cells = <1>;
  5.                 #size-cells = <1>;

  6.                 partition@0 {
  7.                         label = "bootloader";
  8.                         reg = <0x00000000 0x00080000>;
  9.                 };

  10.                 partition@80000 {
  11.                         label = "env";
  12.                         reg = <0x00080000 0x00080000>;
  13.                 };

  14.                 partition@100000 {
  15.                         label = "ubi";
  16.                         reg = <0x00100000 0x1ff00000>; //修改这一行第2个参数
  17.                 };
  18.         };
  19. };
复制代码

//开启硬件crypto
  1. &crypto {
  2.         status = "okay";
  3. };
复制代码


3、CPU变频
前置条件:使用了pll方式调频,所以要在make kernel_menuconfig和make meuconfig开启devmem依赖,自行搜索。

  1. vi target/linux/airoha/dts/an7581.dtsi
复制代码

//使其支持700m ~ 1.4g变频范围,注意1.2g ~ 1.4g都使用&smcc_opp14电压
  1. cpu_opp_table: opp-table {
  2.                 compatible = "operating-points-v2";
  3.                 opp-shared;

  4.                 opp-700000000 {
  5.                         opp-hz = /bits/ 64 <700000000>;
  6.                         required-opps = <&smcc_opp4>;
  7.                 };

  8.                 opp-750000000 {
  9.                         opp-hz = /bits/ 64 <750000000>;
  10.                         required-opps = <&smcc_opp5>;
  11.                 };

  12.                 opp-800000000 {
  13.                         opp-hz = /bits/ 64 <800000000>;
  14.                         required-opps = <&smcc_opp6>;
  15.                 };

  16.                 opp-850000000 {
  17.                         opp-hz = /bits/ 64 <850000000>;
  18.                         required-opps = <&smcc_opp7>;
  19.                 };

  20.                 opp-9000000000 {
  21.                         opp-hz = /bits/ 64 <900000000>;
  22.                         required-opps = <&smcc_opp8>;
  23.                 };

  24.                 opp-9500000000 {
  25.                         opp-hz = /bits/ 64 <950000000>;
  26.                         required-opps = <&smcc_opp9>;
  27.                 };

  28.                 opp-10000000000 {
  29.                         opp-hz = /bits/ 64 <1000000000>;
  30.                         required-opps = <&smcc_opp10>;
  31.                 };

  32.                 opp-10500000000 {
  33.                         opp-hz = /bits/ 64 <1050000000>;
  34.                         required-opps = <&smcc_opp11>;
  35.                 };

  36.                 opp-11000000000 {
  37.                         opp-hz = /bits/ 64 <1100000000>;
  38.                         required-opps = <&smcc_opp12>;
  39.                 };

  40.                 opp-11500000000 {
  41.                         opp-hz = /bits/ 64 <1150000000>;
  42.                         required-opps = <&smcc_opp13>;
  43.                 };

  44.                 opp-12000000000 {
  45.                         opp-hz = /bits/ 64 <1200000000>;
  46.                         required-opps = <&smcc_opp14>;
  47.                 };

  48.                 opp-12500000000 {
  49.                         opp-hz = /bits/ 64 <1250000000>;
  50.                         required-opps = <&smcc_opp14>;
  51.                 };

  52.                 opp-13000000000 {
  53.                         opp-hz = /bits/ 64 <1300000000>;
  54.                         required-opps = <&smcc_opp14>;
  55.                 };

  56.                 opp-13500000000 {
  57.                         opp-hz = /bits/ 64 <1350000000>;
  58.                         required-opps = <&smcc_opp14>;
  59.                 };

  60.                 opp-14000000000 {
  61.                         opp-hz = /bits/ 64 <1400000000>;
  62.                         required-opps = <&smcc_opp14>;
  63.                 };
  64.         };
复制代码

//加上相应的系统控制和微控制
  1. cpufreq: cpufreq {
  2.                 reg = <0x0 0x1fa20000 0x0 0x2c0>, <0x0 0x1efbe000 0x0 0x800>;
  3.                 reg-names = "chip-scu", "mcucfg";
  4.                 compatible = "airoha,en7581-cpufreq";

  5.                 operating-points-v2 = <&cpu_smcc_opp_table>;

  6.                 #power-domain-cells = <0>;
  7.                 #clock-cells = <0>;
  8.         };
复制代码

//修改编译结果中的cpu调频驱动,因原文件中并没有固定或者显式调整频率的地方,只看到不同频率的电压被传递了,但硬件实际频率锁定最高1.2g: coremark跑分在4070左右 ,成功到1.4g跑分4755左右。这里使用了npu插件的pll调频逻辑
//最好完成所有修改后,完整编译一次:make V=s -j$(nproc),最后再来修改这个方法


//修改airoha_cpufreq_config_clks_nop函数
  1. vi build_dir/target-aarch64_cortex-a53_musl/linux-airoha_an7581/linux-6.12.80/drivers/cpufreq/airoha-cpufreq.c
复制代码
  1. // SPDX-License-Identifier: GPL-2.0

  2. #include <linux/bitfield.h>
  3. #include <linux/cpufreq.h>
  4. #include <linux/module.h>
  5. #include <linux/platform_device.h>
  6. #include <linux/pm_runtime.h>
  7. #include <linux/slab.h>
  8. #include <linux/io.h>      /* 修正 ioremap, readl, writel */
  9. #include <linux/delay.h>   /* 修正 udelay */
  10. #include <linux/pm_opp.h>  /* 修正 struct dev_pm_opp */

  11. #include "cpufreq-dt.h"

  12. #define REG_SCU_BASE      0x1fa20000
  13. #define REG_MCUCFG_BASE   0x1efbe000

  14. #define CLK_MUX           0x01e0
  15. #define PLL_LOCK_CTRL     0x0268
  16. #define ARMPLL_PCW        0x02b4
  17. #define ARMPLL_CHG        0x02b8
  18. #define MCU_CFG_U         0x0640
  19. #define MCU_CFG_S         0x07c0

  20. static int airoha_cpufreq_config_clks_nop(struct device *dev,
  21.                                           struct opp_table *opp_table,
  22.                                           struct dev_pm_opp *old_opp,
  23.                                           struct dev_pm_opp *opp,
  24.                                           void *data, bool scaling_down)
  25. {
  26.         unsigned long rate = dev_pm_opp_get_freq(opp);
  27.         u32 target_mhz = rate / 1000000;
  28.         u32 pcw_int, posdiv, val;
  29.         void __iomem *scu, *mcu;

  30.         /* 計算 PCW 與 POSDIV */
  31.         if (target_mhz < 1000) {
  32.                 posdiv = 1;
  33.                 pcw_int = target_mhz / 25;
  34.         } else {
  35.                 posdiv = 0;
  36.                 pcw_int = target_mhz / 50;
  37.         }

  38.         scu = ioremap(REG_SCU_BASE, 0x1000);
  39.         mcu = ioremap(REG_MCUCFG_BASE, 0x1000);
  40.         if (!scu || !mcu) return -ENOMEM;

  41.         /* Step 1 & 2: 切換到 PLL2 備用路徑 */
  42.         writel(readl(scu + CLK_MUX) | 0x4, scu + CLK_MUX);
  43.         writel((readl(mcu + MCU_CFG_U) & 0xFFFFFFE0) | 0x12, mcu + MCU_CFG_U);
  44.         writel((readl(mcu + MCU_CFG_S) & 0xFFFFF9FF) | (3 << 9), mcu + MCU_CFG_S);

  45.         /* Step 3 & 4: 解鎖並修改 PCW */
  46.         writel((readl(scu + PLL_LOCK_CTRL) & 0xFFFFFF00) | 0x12, scu + PLL_LOCK_CTRL);
  47.         writel((readl(scu + ARMPLL_PCW) & 0x00FFFFFF) | (pcw_int << 24), scu + ARMPLL_PCW);

  48.         /* Step 5: 切換 POSDIV 並觸發 CHG bit (Toggle 邏輯) */
  49.         val = readl(scu + ARMPLL_CHG);
  50.         if (val & 0x1)
  51.                 writel((val & 0xFFFFFF8E) | (posdiv << 4), scu + ARMPLL_CHG);
  52.         else
  53.                 writel((val & 0xFFFFFF8E) | (posdiv << 4) | 0x1, scu + ARMPLL_CHG);

  54.         /* Step 6: 等待 PLL 穩定 */
  55.         udelay(200);

  56.         /* Step 7 & 8: 切換回 ARMPLL 主路徑 */
  57.         writel(readl(scu + CLK_MUX) | 0x1, scu + CLK_MUX);
  58.         writel((readl(mcu + MCU_CFG_U) & 0xFFFFFFE0) | 0x12, mcu + MCU_CFG_U);
  59.         writel((readl(mcu + MCU_CFG_S) & 0xFFFFF9FF) | (1 << 9), mcu + MCU_CFG_S);

  60.         /* Step 9 & 10: 清理路徑並重新鎖定寄存器 */
  61.         writel(readl(scu + CLK_MUX) & 0xFFFFFFFB, scu + CLK_MUX);
  62.         writel(readl(scu + PLL_LOCK_CTRL) & 0xFFFFFF00, scu + PLL_LOCK_CTRL);

  63.         iounmap(scu);
  64.         iounmap(mcu);

  65.         return 0;
  66. }
复制代码

//把修改过的文件重新编译打包
  1. touch airpha-cpufreq.c //如果直接使用的现在文件更新一下时间
  2. make target/linux/compile -j$(nproc) V=s
  3. make target/linux/install V=s
复制代码


4、NPU卸载
//打包进内核,启动时会报错,用模块的方式加载。
//重点:pppoe接口使用了vlan,哪么vlan的mac和绑定的物理mac一定要一至,不然硬件卸载不完全会占用cpu。ipv6:nat6、npt6方式也会造成硬件无法卸载完全,使用运营商pd下发给lan。

  1. make kernel_menuconfig
  2. //直接按/来查找,按对应数字进入菜单
  3. {M} Airoha NPU support
  4. {M} Airoha SoC Gigabit Ethernet support
复制代码
  1. //补全make menuconfig --> kernel modules --> network devices菜单
  2. vi package/kernel/linux/modules/netdevices.mk

  3. $(eval $(call KernelPackage,phy-airoha-en8811h))

  4. define KernelPackage/airoha-npu
  5.   SUBMENU:=$(NETWORK_DEVICES_MENU)
  6.   TITLE:=Airoha EN7581 NPU support
  7.   DEPENDS:=@TARGET_airoha_an7581
  8.   KCONFIG:=CONFIG_NET_AIROHA_NPU
  9.   FILES:=$(LINUX_DIR)/drivers/net/ethernet/airoha/airoha_npu.ko
  10.   AUTOLOAD:=$(call AutoLoad,18,airoha_npu,1)
  11. endef

  12. define KernelPackage/airoha-npu/description
  13.   Kernel module support for the Airoha EN7581 Network Processor Unit (NPU)
  14. endef

  15. $(eval $(call KernelPackage,airoha-npu))

  16. define KernelPackage/airoha-eth
  17.   SUBMENU:=$(NETWORK_DEVICES_MENU)
  18.   TITLE:=Airoha SoC Ethernet support
  19.   DEPENDS:=@TARGET_airoha_an7581 +kmod-airoha-npu
  20.   KCONFIG:= \
  21.         CONFIG_NET_VENDOR_AIROHA \
  22.         CONFIG_NET_AIROHA \
  23.         CONFIG_NET_AIROHA_FLOW_STATS
  24.   FILES:=$(LINUX_DIR)/drivers/net/ethernet/airoha/airoha-eth.ko
  25.   AUTOLOAD:=$(call AutoLoad,19,airoha-eth,1)
  26. endef

  27. define KernelPackage/airoha-eth/description
  28.   Kernel module support for the Airoha SoC Ethernet controller
  29. endef

  30. $(eval $(call KernelPackage,airoha-eth))

  31. define KernelPackage/phy-aquantia
  32.   SUBMENU:=$(NETWORK_DEVICES_MENU)
  33.   TITLE:=Aquantia Ethernet PHYs
  34.   DEPENDS:=+kmod-libphy +kmod-hwmon-core +kmod-lib-crc-itu-t
  35.   KCONFIG:=CONFIG_AQUANTIA_PHY
  36.   FILES:=$(LINUX_DIR)/drivers/net/phy/aquantia/aquantia.ko
  37.   AUTOLOAD:=$(call AutoLoad,18,aquantia,1)
  38. endef

  39. define KernelPackage/phy-aquantia/description
  40.   Kernel modules for Aquantia Ethernet PHYs
  41. endef
复制代码

  1. //选择加载模块
  2. make menuconfig
  3. //同样的按/来查找

  4. {*} kmod-phy-airoha-en8811h
  5. {*} kmod-airoha-eth
  6. {*} kmod-airoha-npu
复制代码

5、硬件改造
内存:K4AAG165WA-BCWE(2g)K4A8G165WC-BCWE(1g)
存储:W25N04KVZEIR (512M)
散热片:38X38x15 带胶钉(淘宝标的是南北桥芯片散热片)


待办问题
(1)samba4 usb3 2.5 hdd硬盘最高只有17M/17M读写,换成Ksmbd可以到70M左右。使用dd命令测试速度可以到120M,优化过挂载和samba参数无效。
        --2026-05-11 破案了:win11默认强制加密,还是aes-gcm256,所以win11 powershell关闭再测速度就上来了:
      
  1.         Set-SmbClientConfiguration -RequireSecuritySignature $false (按Y)
  2.         Set-SmbClientConfiguration -EnableSecuritySignature $false (按Y)

  3.         //samba4配置
  4.         server signing = disabled
  5.         client signing = disabled
  6.         smb encrypt = off

  7.         use sendfile = yes

  8.         aio read size = 1
  9.         aio write size = 1

  10.         min receivefile size = 16384

  11.         socket options = TCP_NODELAY IPTOS_LOWDELAY
复制代码

(2)内存占用和缓存占用高,同样的配置和软件包在gl mt3000上使用更低。不清楚是不是SNAPSHOT版本的原故。

总结: 使用体验相当不错,如果pon能工作那就更好了。


相关文件下载: 「xg-040g-md适配文件.7z」
游客,如果您要查看本帖隐藏内容请回复




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
发表于 2026-5-4 07:50 来自手机 | 显示全部楼层
牛逼
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-4 09:01 来自手机 | 显示全部楼层
赞啊,很好的总结
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-4 12:53 | 显示全部楼层
终于见到新出的了
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-4 14:25 | 显示全部楼层
谢谢分享!!
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-4 16:09 | 显示全部楼层
点赞支持!!!
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-5 01:48 | 显示全部楼层
感谢分享
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-5 08:10 | 显示全部楼层
固件在哪 我下来试试
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-5 08:13 | 显示全部楼层
看看再说。高手
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-5 09:24 | 显示全部楼层
loid这些参数还是没人折腾哇?
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-5 12:47 | 显示全部楼层
这个必须要顶
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-5 14:50 来自手机 | 显示全部楼层
感谢分享
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-6 13:06 | 显示全部楼层
感谢分享
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-6 13:50 来自手机 | 显示全部楼层
高手啊
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2026-5-6 14:05 | 显示全部楼层
感谢分享!!!!
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-10-14 18:41

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表