如今市面上一两百元的双频(2.4G和5G,802.11ac)智能路由,几乎全部都是联发科的MT7620(2.4G+交换机)加上MT7612EN(PCIE接口,5G)的解决方案,软件也几乎千篇一律是OpenWrt(可以看做是一个专门针对路由器做的Linux发行版)定制而成,所以这就大大降低了我们玩机的门槛。国内又有OpenWrt的变种Pandroabox,但可惜的是,很多关键的定制内容并未公开,只提供一个二进制文件(其部分主要贡献者也就职于相关商业公司),所以这里使用OpenWrt官方的源码构建。既然是快速开始,就废话少说,动手为先。这里就以Newifi为例制作固件,其他的做法都是差不多的。
一. 相关准备
1. 电脑:安装有Ubuntu(建议使用14.04 LTS的x64版本;当然,使用Fedora之类的发行版也是可以的,前提是你能解决所有可能遇到的编译问题)发行版的PC,或者安装Windows(或者OSX)的PC(或者Mac)加上安装Ubuntu的虚拟机(VMware、VirtualBox或者Qemu)。并在其中安装有tftp服务(用于路由下载固件),以及串口和SSH工具(如超级终端、minicom、Xshell、SecureCRT、Putty等)。至少准备30G的空余硬盘空间,8G的内存,可以连接国外的互联网。
2. 网络:最好有一个路由器组建一个局域网,将Newifi和PC处于一个子网内,这样的话,烧写程序时也可以访问外部网络。我这里路由器ip为192.168.99.1,电脑的IP为192.168.99.10,Newifi的IP为192.168.99.9。
3. 工具:电烙铁等焊接拆机工具,杜邦线若干,USB转TTL电平串口(PL2303或者FT232均可)
推荐的配置示意图(后面的操作均以该图为例):
二. 编译固件
在安装有Ubuntu的虚拟机中打开一个命令行终端($开头为命令,#开头为注释):
# 安装必要的软件包
$ sudo apt-get install git-core libssl-dev
$ sudo apt-get install subversion g++
$ sudo apt-get install ccache gettext
$ sudo apt-get install make gawk python wget
$ sudo apt-get install libncurses5-dev
$ sudo apt-get install zlib1g-dev
$ sudo apt-get install build-essential unzip xz-utils
# 因为OpenWrt不能在root用户下编译,所以先创建一个用户。
# 如果已经在非root用户下,也可忽略此步骤。
$ useradd –g root –m openwrt
$ passwd openwrt
# 输入密码
$ su – openwrt
# 创建一个用于下载软件包的目录(便于多个编译目录共用),如果从网上下载了我打包的软件包,可以解压到此目录,减少因下载软件包而浪费时间。
$ mkdir /opt/develop/openwrt/download -pv
$ cd /opt/develop/openwrt
# 克隆官方最新的发行版本
$ git clone git://git.openwrt.org/15.05/openwrt.git 15.05
$ cd 15.05
# 创建下载目录的软链接,几个不同的编译共享使用同一个下载目录。
$ ln -s /opt/develop/openwrt/download dl
$ make menuconfig
# 选择以下三项即可
# Target System -> Ralink RT288x/RT3xxx
# Subtarget -> MT7620 based boards
# Target Profile -> Default Profile
# 如下图所示,最后退出,并保存。
# 开始编译,使用V=99可以显示更多编译日志,便于排除错误,
# 使用–j2可以使用两个CPU核编译,加快编译速度。
$ make V=99 –j2
# 这期间你可以出去玩几把游戏了,具体时间取决于电脑速度和网速。
# 如果中间有下载出错(如果实在下载不下来,可以看一下他的url,然后手动下载后放在dl目录下即可),重新make即可。
# 如果是编译错误,仔细看是少了什么包,使用apt-get安装一下即可。
# 如果一切顺利,就会在bin/ramips目录下看到编译好的固件
# 其中的openwrt-ramips-mt7620-Lenovo-y1-squashfs-sysupgrade.bin就是我们编译好的固件,通过共享文件夹复制到Windows中的tftp服务器根目录下即可。
三. 烧写固件
Newifi没有使用螺丝固定外壳,所以直接使用一个平口螺丝刀撬开既可。
如下如所示线序焊接TTL线:
最终效果图:
接线时,Newifi的RX接TTL线的TX,TX接RX,USB转TTL不要连接VCC。如果使用的是RS232转TTL则必须连接VCC。
打开Tftp服务器,保证之前编译的固件放在tftp所设定的根目录处。
在PC上使用Xshell或者minicom之类的串口软件使用115200 8n1,无硬件控制流模式打开对应的串口,然后连接Newifi电源,就会看到Uboot的打印信息。
在出现菜单时快速按键盘上的“2”键进入tftp烧写模式,然后按“y”键,最后分别输入Newifi的IP,本机的IP(Tftp服务器IP),以及要下载的固件名称“openwrt-ramips-mt7620-Lenovo-y1-squashfs-sysupgrade.bin”。
如果一切正常,烧写完毕后会重启进入Linux。当屏幕不再滚动时按下回车,当看到如下画面时,就可以宣告成功了。
四. 基本配置
(“Newifi”开头的操作为Newifi的串口,“Host”开头的操作为PC的命令终端)
# 配置防火墙,由于是Newifi的WAN口接在路由器上,PC是通过外网访问
# Newifi的,所以要全部打开WAN口的防火墙,方便SSH登陆等操作。
Newifi $ vi /etc/config/firewall
# 把红色框内全部改为ACCEPT,然后重启防火墙。
Newifi $ /etc/init.d/firewall restart
# 设置Newifi的WAN口IP,以及打开无线网络。
Newifi $ vi /etc/config/network
# 改为
Newifi $ vi /etc/config/wireless
# 改为(注意:注释掉红框最上面一行),使用WAP的PSK2加密方式,密码自己改。
# 最后保存并重启网络
Newifi $ /etc/init.d/network restart
# 测试一下网络
Newifi $ ping 192.168.99.1
# 如果这个不通,检查一下WAN口IP掩码配置是否正确。
Newifi $ ping 114.114.114.114
# 如果这个不通,检查一下网关是否正确,以及路由是否能连接到Internet。
Newifi $ ping www.baidu.com
# 如果这个不通,检查一下WAN口的DNS是否配置正确。
# 如果都没问题,可以继续了下面的。
# 设置root用户密码,以便可以使用ssh登陆
Newifi $ passwd
# 如果是在Windows下,可以使用Putty和Xshell之类的软件登陆。
Host $ ssh [email protected]
使用手机连接Wifi试试是否可以正常上网。
如果都没问题,这个固件就初步完成了(当然,功能还很简陋)。
五. 遗留问题
这个固件虽然可以“使用”,但还有许多问题:
1. 只能通过命令行进行配置修改,最好能有一个Web管理界面;
2. 不支持5G信号,因为OpenWrt官方的Wifi驱动使用的是compact-wireless项目提供的,里面没有MT7612EN的驱动;
3. 没有QoS、PPPoE拨号、离线下载等功能。
还有很多很多,未完待续。。。。。。
六. 相关资源
OpenWrt官方文档 http://wiki.openwrt.org/doc/start