前言
OpenWrt是Linux的一个发行版, 主流的路由器固件, 2019年11月10号release了 18.06.5, 封存版本有:
OpenWrt 18.06.4
OpenWrt 18.06.3
OpenWrt 18.06.2
OpenWrt 18.06.1
OpenWrt 18.06.0
LEDE 17.01.6
LEDE 17.01.5
LEDE 17.01.4
LEDE 17.01.3
LEDE 17.01.2
LEDE 17.01.1
LEDE 17.01.0
Chaos Calmer 15.05.1
Chaos Calmer 15.05
Barrier Breaker 14.07
Attitude Adjustment 12.09
Backfire 10.03.1
Backfire 10.03
Kamikaze 8.09.2
Kamikaze 8.09.1
Kamikaze 8.09
Kamikaze 7.09
Kamikaze 7.07
Kamikaze 7.06
Whiterussian 0.9
Chaos Calmer 15.05.1
是最经典的版本, 但15.05.1之后一帮人单干了, 搞出了LEDE, 后来又和OpenWrt合并了.
早期的路由器大部分是MIPS架构, 后来ARM在高性能路由器上崭露头角, 现在也流行x86上直接跑软路由, 性能卓越.
硬件上市面上常见的小米/360/水星/极路由/tplink等, 价位相近的用的芯片/方案基本一致, 科技换壳为本, 界面上稍微做了改动. 淘宝OpenWrt开发板, 主要方案有MT7620/MT7628/MT7688/RT5350等, ARM的一些板子如树莓派/全志等也能装, 搜软路由有各种旧x86主板改造的价格低性能高的软路由.
本篇以经典便宜的MT7688为例先介绍硬件, 然后后面几天试着用OpenWrt新的tag 18.06.5实现一下4G路由器的功能, 不保证成功.
硬件
某宝淘了块4G路由器的板子, 插上手机卡就能4G网络连网, 通过LAN口或者WiFi共享, 没有4G卡, 可以用网线连接网络到WAN口当普通路由器用. 系统用的是OpenWrt Chaos Calmer 15.05.1
, Model改自MediaTek LinkIt Smart 7688(Seeed出的另一款MT7688+Arduino的板子)
:
蓝色的核心板有:
- 联发科的
MT7688AN
, MIPS24KEc架构, 580MHz, 带 - 128MB DDR2, 型号是
Winbond
的W9751G6KB-25
, - 16MB Flash, 型号是
MXIC
的MX25L12835FM2I-10G
- 留出了1路WiFi IPEX座, 白色的板子上焊了2.4G的陶瓷天线
MT7688的Features:
作为设备时(1个网口, 多个SPI):
作为网关时(5个网口):
4G模块用的是Mini PCIe接口, 移远的EC20, 外扩了大的SIM卡座. 蓝色的网络指示灯, EC20的USB口经过USB HUB芯片FE 8.1
连到核心板MT7688 USB上, 注意4G天线需要单独插上去:
核心板的调试串口0通过USB转串口芯片CP2104
连接到mini USB上.
板子外扩了1个LAN口, 1个WAN口.
OpenWrt官网
OpenWrt官网: https://openwrt.org/
右上角可选中文语言, 英文版资料较新, 中文版落后一点点.
如果知道一个路由器的芯片型号, 可以直接在Download里面下载相应编译好的固件, 如MT76x8的: https://downloads.openwrt.org/releases/18.06.5/targets/ramips/mt76x8/.
Documentation
给出了详细的用户手册和开发者指南, 如果只是想熟悉下Openwrt的使用, 看User Guide就可以了, 如果想自己拉源码编译, 当然要看Developer Guide
了.
环境配置源码下载编译
使用的工控机E3-1275 V5, 32G内寸, SATA接口的SSD, 一般的配置吧, 环境是Ubuntu 16.04. 改成了阿里云的源, 挂了梯子, sudo apt update
.
先安装一些依赖:
sudo apt install subversion g++ zlib1g-dev build-essential git python python3
sudo apt install libncurses5-dev gawk gettext unzip file libssl-dev wget
sudo apt install libelf-dev ecj fastjar java-propose-classpath
# for Ubuntu 18.04 or later
# sudo apt install build-essential libncursesw5-dev python unzip
拉18.06.5分支的源码:
# Clone, 挂梯子, 2分钟
git clone --branch v18.06.5 https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
./scripts/feeds update -a # 挂梯子, 3分钟
./scripts/feeds install -a # < 30s
make menuconfig # 开始配置
选择联发科, MT76x8:
为确保编译成功, 其他先保持不变, 保存退出, 输入:
# make过程需要联网, 11:44开始, 13:02结束, 花费约78分钟
make V=99
这个看电脑配置, 中间需要联网, 可以去吃个饭, 干其他事情. 编译完成后, 可以在openwrt的/bin/targets/ramips/mt76x8
目录下面找到一堆bin文件和package(里面有多个ipk包), 可以选常用的路由器硬件相近的如歪朵拉的openwrt-ramips-mt76x8-widora_neo-16m-squashfs-sysupgrade.bin
或者常用的openwrt-ramips-mt76x8-LinkIt7688-squashfs-sysupgrade.bin
(32MB Flash).
刷机
重点是电脑和开发板处于同一局域网中, 通过tftp协议传输固件, 连接方式推荐: 电脑-路由器-开发板
Windows系统为例, 接上板子的USB调试口, 打开设备管理器, 查看COM口(每台电脑不一样):
打开putty
, 选择Serial, 填入串口号, 波特率自己57600, 115200之类的试一下, 保证开机不乱码, 这里是57600, 点击Open:
然后给板子上电, 噼里啪啦出现一堆东西:
这里是刷机选项, 会停顿几秒, 通过网络TFTP刷机的话就按个2, 这里先不按, 默认3, 从Flash启动, 让它继续刷, 40多秒后卡住不动了, 打个回车, 出现类似SSH的登录选项, 输入用户名root
(可能不一样), 密码123456
:
找根网线连接开发板的WAN口到路由器上/局域网中, 输入ifconfig
, 查看网络配置, 看到eth0.2的IP为192.168.3.152
(不同局域网可能不一样, 所以通过调试串口看最靠谱, 有时刷坏启动不了, 这个IP暂时不会变, 仍可以用这个IP把砖刷回来):
eth0.2 Link encap:Ethernet HWaddr 02:0C:56:3C:28:91
inet addr:192.168.3.152 Bcast:192.168.3.255 Mask:255.255.255.0
inet6 addr: fe80::c:56ff:fe3c:2891/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:647 errors:0 dropped:6 overruns:0 frame:0
TX packets:111 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:62980 (61.5 KiB) TX bytes:26996 (26.3 KiB)
Windows电脑通过有线/WiFi也连到统一路由器/局域网上, cmd中输入ipconfig
查看ip为192.168.3.139
. 打开tftpd64
软件, 把上节编译的.bin文件放到桌面, 服务接口选电脑IP192.168.3.139
, 选127.0.0.1
似乎也行:
给开发板断电, 然后重新上电, 当出现default: 3
时, 按下键盘的2, Y, device IP输入之前开发板的IP: 192.168.3.152
, server IP输入电脑IP: 192.168.3.139
, filename粘贴进去.bin文件全称openwrt-ramips-mt76x8-widora_neo-16m-squashfs-sysupgrade.bin
, 回车, 可以看到刷机开始:
如果出现T T T
一直等待, 可能哪里没配置对, 也可以断电重来. 也可以用同样的方法刷回原来支持4G的固件.
刷机完成后发现串口打印乱码, 是因为波特率变了, 关掉串口, 重新用putty打开串口, 试试115200, 可以(固件刷回去还用57600波特率):
提示设置密码, 先不管, 电脑连接开发板的LAN口, WAN口保持插着局域网, 断掉电脑的WiFi, 发现可以正常上网, 但IP是局域网IP, 这个固件LAN/WAN直通, 默认成交换机了…至于4G, 改日折腾.
微信公众号
欢迎扫描二维码关注本人微信公众号, 及时获取或者发送给我最新消息: