发作品签到
专业版

MT7628超低成本路由器

工程标签

1.5w
0
0
66

简介

MT7628超低成本路由器

简介:MT7628超低成本路由器

开源协议

GPL 3.0

创建时间:2023-11-11 12:39:20更新时间:2023-11-23 14:44:29

描述

写在开头

本项目基于亿佰特E103-W20 MT7628模组,实现了一款超低成本路由器。MT7628是一款高性价比的路由器芯片,推出时间较长,资料比较丰富,可以用来当作学习Openwrt的入门芯片,也可以用于物联网网关,实现设备到云端的联网。

参考项目

感谢大佬的项目,致谢大佬:https://oshwhub.com/toolchen/mini-router

更新日志

2023-11-19 首次发布

2023-11-22 增加5.10内核固件,增强WIFI稳定性,推荐更新

基本特性

  • 五个10M/100M以太网口,内部集成交换机(其中一个默认用于WAN口,四个默认用于WAN口)
  • 2.4G Wifi 2T2R
  • 580Mhz MIPS内核处理器
  • USB 5V供电
  • USB 2.0接口,可用于外挂网口或USB存储器
  • 32MB Flash
  • 128M DDR2 RAM
  • 2个TTL串口,其中一个用于Linux日志打印
  • 1个I2C接口

芯片方案

  • 主芯片模组:E103-W20 MT7628模组
  • SY8089A1AAC 5V TO 3V3 DCDC
  • SY6280 USB 2A限流保护芯片
  • HR911105A 网口内置网络变压器

OpenWRT固件的烧录

MTK Breed,不死Uboot的烧录

由于模组本身自带的uboot比较难用,而且无法查看烧录进度,为了便于固件开发,我们选择烧录大神开发的不死uboot

刷入前首先需要进入自带的uboot,下面说明刷写流程:

首先将设备LAN口接入网线,另外一端接入电脑,确保连接正常,然后修改网口地址与uboot更新地址保持一致(如下图)。

设置完成后,按住PERST_N按键,将设备连入USB供电,等待几秒,等UBOOT启动后打开浏览器访问192.168.1.111,正常情况下可以看到已经进入了自带的UBOOT更新界面:

按照上方图片所示,选择breed固件(附件中breed-mt7688-reset38.bin给出),然后点击Update U-Boot,等待更新完成,更新过程如下图所示:

烧写完成后,系统自动重启,由于这边没有进度显示,建议多等待几秒钟,防止刷坏UBOOT!!

不死Uboot界面的进入,选项修改

等待上方烧录完成后,我们重新断开板子的电源,将网口IP改成自动获取

接着按住PERST_N(与刚刚按键一致)按键,将板子连入电源,如果正常进入Uboot,可以发现网口灯会闪几下,同时以太网会分配到IP。

在浏览器中输入192.168.1.1,进入不死Uboot界面,界面参数应显示正常

(可选)点击固件备份,对当前的系统分区进行备份(系统分区内有原厂EEPROM,这部分普通用户是拿不到的,只有厂商开发的时候才能拿到,出厂的时候烧录进去),后续如果刷坏需要使用编程器救砖。

点击固件更新,刷入新版OpenWRT固件,如图所示(可用附件中的测试固件)

更新过程如下图所示:

更新完成后,系统自动重启,如果使用测试固件,系统启动后能搜索到名为OpenWRT的WIFI热点,连入后输入密码password即可进入后台

测试固件说明

基于LEDE最新源码编译,包含了基本插件以及Flow Offloading提高转发效率,适合养老使用。

OpenWRT固件的开发

基本环境的搭建

本文将使用WSL(Windows Subsystem for Linux)来实现OpenWRT固件的开发以及编译,需要先开启WSL(具体过程可参考百度资料),开启后在应用商店中下载Ubuntu20,下载完成后启动完成初始密码等配置。

关闭Windows路径包含

该配置会导致源码编译失败,需要关闭

编辑/etc/wsl.conf,增加以下内容

[interop]
appendWindowsPath = false

接着在Windows终端下输入wsl --shutdown,重启wsl环境。

重启后输入以下命令,安装基础的编译环境:

sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \
vim wget xmlto xxd zlib1g-dev python3-setuptools

源码源码的下载

由于官方OpenWRT的MT7628 WIFI使用的是开源驱动,无法解锁更高的功率,同时官方最新版不支持5.4内核,最新内核会导致WIFI频繁掉线,所以选用lean大佬的lede源码,本项目基本兼容openwrt,可以完全替代开发。

源码GITHUB地址:https://github.com/coolsnowwolf/lede

输入下列命令,下载lede仓库,同时下载附带的库,然后进入配置界面:

git clone https://github.com/coolsnowwolf/lede
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig

选择要开发的目标

参考下图

Luci插件配置

Luci用于在网页上配置OpenWRT的相关信息,lede提供的一系列插件也是以网页的形式提供,我们可以开启需要的插件,如下图所示:

测试固件中开启的Application

 <*> luci-app-arpbind............................................. ARP Binding
 <*> luci-app-autoreboot.................... LuCI support for Scheduled Reboot
 <*> luci-app-filetransfer........................... LuCI page for IPK upload
 -*- luci-app-firewall................ Firewall and Portforwarding application
<*> luci-app-ttyd...................................... LuCI support for ttyd
<*> luci-app-turboacc............ LuCI support for Flow Offload / Shortcut-FE
[*] Include Flow Offload
[*] Include BBR CCA
[*] Include Pdnsd
<*> luci-app-upnp................. Universal Plug & Play configuration module
<*> luci-app-vnstat.................................. LuCI Support for VnStat

内核模块的配置

在第一个界面选择Kernel modules,进入内核模块配置界面

USB存储设备的配置

Block Devices  --->

-*- kmod-scsi-core....................................... SCSI device support

Filesystems  --->

<*> kmod-fs-ext4..................................... EXT4 filesystem support

<*> kmod-fs-ntfs3.......... NTFS filesystem read & write (new driver) support

<*> kmod-fs-vfat..................................... VFAT filesystem support

USB Support  --->

<*> kmod-usb2................................... Support for USB2 controllers

-*- kmod-usb-storage..................................... USB Storage support
<*> kmod-usb-storage-extras.................... Extra drivers for usb-storage
<*> kmod-usb-storage-uas.................... USB Attached SCSI (UASP) support

开启USB网卡

USB Support  --->

-*- kmod-usb-net............... Kernel modules for USB-to-Ethernet convertors

<*> kmod-usb-net-asix...... Kernel module for USB-to-Ethernet Asix convertors
<*> kmod-usb-net-asix-ax88179

<*> kmod-usb-net-rndis......................... Support for RNDIS connections

OCHI

USB Support  --->

<*> kmod-usb-ohci............................... Support for OHCI controllers

按钮

Input modules  --->

<*> kmod-input-gpio-keys.................................... GPIO key support

相关工具的配置

Utilities  --->

<*> usbutils................................... USB devices listing utilities

Network  --->

<*> iperf3........................ Internet Protocol bandwidth measuring tool

内核版本的配置

降级内核到5.4

vim target/linux/ramips/Makefile

将以下两个选项配置为5.4,参考下列内容:

KERNEL_PATCHVER:=5.4
KERNEL_TESTING_PATCHVER:=5.4

设备树的配置

我们可以在原版配置的基础上,按照需求配置IO映射,相关的节点可以参考mt7628an.dtsi文件,我们需要修改的是mt7628an_hilink_hlk-7628n.dts(建议用附件中的文件),位于lede\target\linux\ramips\dts,可以参考下方我修改好的文件:

// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
#include "mt7628an.dtsi"
 
#include
#include
 
/ {
compatible = "hilink,hlk-7628n", "mediatek,mt7628an-soc";
model = "HILINK HLK-7628N";
 
keys {
compatible = "gpio-keys";
 
reset {
label = "reset";
gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
linux,code = ;
};
};
 
leds {
compatible = "gpio-leds";
 
wlan {
label = "green:wlan";
gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
};
led1 {
label = "led1";
gpios = <&gpio 42 GPIO_ACTIVE_LOW>;
};
led2 {
label = "led2";
gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
};
led3 {
label = "led3";
gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
};
led4 {
label = "led4";
gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
};
};
};
 
&state_default {
gpio {
groups = "refclk", "wdt", "wled_an", "p1led_an", "p2led_an","p3led_an", "p4led_an";
function = "gpio";
};
};
 
&i2c {
status = "okay";
};
 
&i2s {
status = "okay";
};
 
&gdma {
status = "okay";
};
 
&uart1 {
status = "okay";
};
 
&spi0 {
status = "okay";
 
pinctrl-names = "default";
pinctrl-0 = <&spi_pins>, <&spi_cs1_pins>;
 
flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <40000000>;
broken-flash-reset;
 
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 = "denx,uimage";
label = "firmware";
reg = <0x50000 0x1fb0000>;
};
};
};
};
 
ðernet {
mtd-mac-address = <&factory 0x28>;
};
 
&wmac {
status = "okay";
};

编译

输入下列命令开始编译:

make download -j8
make V=s -j16

编译完成的文件存放在targets\ramips\mt76x8中,sysupgrade.bin结尾的文件就是要烧录的文件

展示图片

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
breed-mt7688-reset38.bin
159
2
(20231109)openwrt-ramips-mt76x8-hilink_hlk-7628n-squashfs-sysupgrade.bin
224
3
mt7628an_hilink_hlk-7628n.dts
116
4
(20231122KERNEL510)openwrt-ramips-mt76x8-hilink_hlk-7628n-squashfs-sysupgrade.bin
354
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航