小米路由器4 刷Openwrt踩坑记录 (未完待续...)

写在前面

  • 当然刷是不能瞎鸡儿乱刷的,这个米4路由器是个MT7621的板子,刚好Openwrt支持

小米路由器4刷Openwrt

  • 路由器:XIaomi route 4
  • 开发板:MT7621

连接USB串口,并安装驱动

  • 插入USB串口线,注意RT和TX互换位置

  • 右键计算机 --> Manage --> Device Manager --> Other devices --> 未知设备 --> 右键属性 --> Details --> Hardware Ids --> 搜索引擎搜索相关Value,得出串口型号,并下载相关驱动文件

  • 之后在Device Manager找到Ports(COM & LPT),查看设备后面的COM值

查看板子型号

  • 打开putty,点击Serial,串口号COM xx,速率115200 --> 提取码: e7ar

  • 路由器上电,先进入刷好的mi4,之后回车,进入busybox,回车

  • 根据cpu型号,搜索开发板型号
    cat /prox/cpuinfo

  • 找到路由器默认网关地址
    ip addr

  • 拔掉路由器电源

下载开发板对应已生成的bin文件

创建本地TFTP服务器

  • 修改网关静态ip,与路由器同网段

    192.168.31.102
    
    255.255.255.0
    
    192.168.31.2
    
  • 打开TFTP Server TFTPDWIN,关闭启动,点击配置按钮,Output,Browse…找到你存放bin文件的位置 --> 提取码: 6e3d

  • 然后点启动按钮

刷入新的Openwrt

  • 路由器上电

  • 按键盘2,选择

  • 2:Load system code then write to Flash via TFTP

  • 之后:

    Input device IP (192.168.31.1) ==:192.168.31.2
    Input server IP (192.168.31.100) ==:192.168.31.102
    Input Linux Kernel filename () ==:abc.bin
    
  • 等待路由器刷机完成

  • openwrt刷完之后,按回车,就可以进入busybox,此时openwrt处于一个初始状态,所以这才有了定制!

  • 路由器掉电,上电,进入busybox,修改root密码
    passwd root

  • 浏览器打开http://192.168.1.1/cgi-bin/luci,密码登陆是你自己修改的那个,当然此时你也可以用ssh连接了!

编译Openwrt

  • OS: ParrotSecOS 4.5.1 (debian)

  • 安装软件:
    sudo apt install g++ libncurses5-dev zlib1g-dev bison flex unzip autoconf gawk make gettext gcc binutils patch bzip2 libz-dev asciidoc subversion sphinxsearch libtool sphinx-common libssl-dev libssl1.1 -y

  • 下载最新源码

    git clone git://github.com/openwrt/openwrt.git
    
    cd openwrt
    
    cp feeds.conf.default feeds.conf
    
  • 更新feeds扩展
    ./scripts/feeds update -a

  • 安装feeds扩展
    ./scripts/feeds install -a

  • 测试编译环境
    make defconfig

  • 编译固件,进入定制界面
    make menuconfig

配置Menu

  • 空格选中,sava保存为.config配置文件

    Target System –> 选择路由器CPU (我的是雷凌)
    
    Subtarget –> 选择板子型号 (选择的MT7621)
    
    Target Profile –> 选择路由器型号 (小米 3G)
    
    LuCI –> Modules –> <*> luci-base………LuCI core libraries 然后进入下面的Translations –> 选择语言
    
    # 添加LuCI界面
    LuCI –> Collections –> <*> luci
    
    LuCI—>Translations—- <*> luci-i18n-chinese
    
    # 添加UTF-8编码
    Kernel modules –> Native Language Support –> <*> kmod-nls-utf8
    
    # 添加硬盘支持格式
    Kernel modules —> Filesystems —> <*> kmod-fs-ext4
    
  • 设置LuCI默认语言

    vi feeds/luci/modules/luci-base/root/etc/config/luci

    config core main
      option lang auto //此处修改为option lang zh_cn
      option mediaurlbase /luci-static/bootstrap
      option resourcebase /luci-static/resources
      
    config extern flash_keep
      option uci         "/etc/config/"
      option dropbear "/etc/dropbear/"
      option openvpn    "/etc/openvpn/"
      option passwd    "/etc/passwd"
      option opkg        "/etc/opkg.conf"
      option firewall    "/etc/firewall.user"
      option uploads    "/lib/uci/upload/"
      
    config internal languages
      option zh_cn chinese //新增
      option en English //新增
      
    config internal sauth
      option sessionpath "/tmp/luci-sessions"
      option sessiontime 3600
      
    config internal ccache
      option enable 1
          
    config internal themes
    
  • 设置默认开启WIFI

    vi package/kernel/mac80211/files/lib/wifi/mac80211.sh

    $ht_capab
        # REMOVE THIS LINE TO ENABLE WIFI:
        # option disabled 1
    
    config wifi-iface
        option device    radio$devidx
        option network    lan
        option mode ap
        option ssid    OpenWrt
        option enctvption none
        option disabled 0
    
    
  • 修改固件大小

    vi target/linux/ar71xx/image/Makefile

  • 修正网口顺序问题

    vi target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v8.c

    ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP);
    改为
    ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE);
    
    
    ath79_switch_data.phy_poll_mask = BIT(0);
    改为
    ath79_switch_data.phy_poll_mask = BIT(4);
    
    
    ath79_eth0_data.phy_mask = BIT(0);
    改为
    ath79_eth0_data.phy_mask = BIT(4);
    
  • 由于网速不够,所以先下载编译过程所需的资源:

    make download

  • 开始编译,当然最初的编译不建议用多线程,毕竟很有可能会出错(V=99输出debug信息):

    make V=99

  • 或者编译时保存本地日志

    make -j1 V=s 2>&1 | tee build.log

  • 之后当然是开始交叉多线程编译了(make -jN,其中N是CPU核心数+ 1),我给了虚拟机4个线程数,所以编译时:

    make -j5 V=99

  • 当然了,你也可以后台利用空闲I/O和CPU编译:

    ionice -c 3 nice -n19 make -j5

配置Feeds

配置GUI

  • 未配置…

其他

3 个赞

你好,小米路由4是没有USB接口的,请问你是怎么连接到电脑的

就是TTL串口 和 网线口啊

楼主,求助……
我小米路由4通电后启动太快,根本来不及按键,就进入后面的启动程序了。
我写了个按键脚本都没用,求支招呀:weary:

我就是串口putty然后一直按2,然后进刷机命令框

您好,请教一下想要修改默认的时区(默认是UTC,想改为ShangHai)应该怎么做呢?

我知道个地方有一堆汉化处理好的包,老毛子,潘多拉,openwrt等都有
网址

你自己到里面下吧

潘多拉,不禁让我想起了蝴蝶路由器

似乎都是基于openwrt。装个ss就能卖上钱。韭菜太好割了吧

嘘,傻子的钱好赚,蝴蝶跑路之后,国内贴吧大肆敛钱(傻吊的钱),就是改改潘多拉,然后再搞个梯子

小米路由器4——两天折腾现在被刷的出故障了。查了恩山论坛教程帖子刷的3G与4同引导的不死(breed web)这一步成功了,后来固件升级(上传)就一直失败。又重新尝试刷原厂bootloader(从论坛里找的),接着就用小米路由器修复工具上传官方固件(失败报错,显示网卡IP的这一步就卡住了);现在路由器橘色的灯频闪,处于刷机状态。该怎么拯救一下?


服务器资源由ZeptoVM赞助

Partners Wiki Discord