前言
OpenWrt 硬件 环境配置 编译
上节粗略介绍了MT7688板子的硬件, 源码下载及编译, 可以看到使用的都是其它家的板子, 那么可不可以自己定制一个OpenWrt固件, 当然是可以的, 大家都是基于官方的板子改过来的, 下面就开始. 先来回顾下硬件
硬件回顾
MT7688AN, 128MB RAM, 16MB Flash, 串口0为调试串口, 网口0对应WAN, 网口1对应LAN, USB扩展了4G模块(EC20), 没有LED. 至于多出来的USB口, TF卡之类的, 先不考虑, 先把基本的网络功能实现再说.
添加新的Target Profile
这部分就是在make menuconfig
之前, 为了在界面添加自己的设备, 以wrtnode2r
(淘宝有这个开发板, 可以去看下)为例, 搜索定制一个固件需要改动的东西:
嗯, 可以依葫芦画瓢开始了.
添加设备树
到openwrt的源码文件夹里面, target/linux/ramips/dts
目录下添加新的设备树文件DQ7688.dts, 可直接复制LINKIT7688.dts, 改动如下:
//compatible = "mediatek,linkit-smart-7688", "mediatek,mt7628an-soc";
compatible = "mediatek,dq-7688", "mediatek,mt7628an-soc";
//model = "MediaTek LinkIt Smart 7688";
model = "MediaTek DQ-7688";
//bootargs = "console=ttyS2,57600";
bootargs = "console=ttyS0,57600";
//删掉
//aliases {
// serial0 = &uart2;
// };
//内存128MB. 不变
memory@0 {
device_type = "memory";
reg = <0x0 0x8000000>;
};
//删掉
// bootstrap {
// compatible = "mediatek,linkit";
//
// status = "okay";
// };
//LED删掉
// gpio-leds {
// compatible = "gpio-leds";
//
// wifi {
// label = "linkit-smart-7688:orange:wifi";
// gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
// };
// };
//Flash 16MB
//reg = <0x50000 0x1fb0000>; //32MB
reg = <0x50000 0xfb0000>;
其中, reg = <0x0 0x8000000>;
表示128MB RAM; reg = <0x50000 0xfb0000>;
表示支持的16MB Flash, 区间位置如下:
partition@50000 {
label = "firmware";
reg = <0x50000 0xfb0000>;
};
修改Makefile
修改Makefile文件: target/linux/ramips/image/mt76x8.mk
, 参考wrtnode2r
的写法, 添加:
define Device/dq7688
DTS := DQ7688
IMAGE_SIZE := $(ralink_default_fw_size_16M)
DEVICE_TITLE := MediaTek DQ-7688
DEVICE_PACKAGES:= kmod-usb2 kmod-usb-ohci
endef
TARGET_DEVICES += dq7688
网络配置
修改: /target/linux/ramips/base-file/etc/board.d/02_network
找到wrtnode2r
后面添加
dq7688 | \
//实际的网络配置
//ucidef_add_switch "switch0" \
// "1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "6@eth0"
// ;;
修改sh
修改 /target/linux/ramips/base-files/lib/ramips.sh
找到wrtnode2r后面添加:
*"DQ7688")
name="dq7688"
;;
修改 /target/linux/ramips/base-files/lib/upgrade/platform.sh
找到wrtnode2r |\后面添加:
dq7688 |\
配置menuconfig
Target选择
上面做了改动, 需要删除openwrt源码目录下之前生成的tmp
文件夹, 然后重新make menuconfig
, 选择如下, 可以看到先前定制的DQ-7688
的设备:
添加LuCI
LuCI选项, 网页界面启用, Modules—>Translations添加了简体中文, Applications
按需选择, 主题默认:
LuCI --->
1. Collections --->
<*> luci................... LuCI interface with Uhttpd as Webserve
2. Modules --->
Translations --->
<*> English (en)
<*> Chinese (zh-cn)
3. Applications --->
<*> luci-app-commands
<*> luci-app-samba
<*> luci-app-uhttpd
<*> luci-app-upnp.
<*> luci-app-vnstat
4. Themes --->
-*- luci-theme-bootstrap
添加4G支持
主要参考官方的这个链接: Building image with support for 3g/4g and usb tethering
对于特定型号特定应用, 可能过于繁杂, 可自己适当裁剪, 摘录一下全部配置.
Kernel Modules → USB Support
:
Kernel Modules -> USB Support
<*> kmod-usb2
<*> kmod-usb-ohci
<*> kmod-usb-uhci
<*> kmod-usb-acm # For ACM based modem, such as Nokia Phones
<*> kmod-usb-net # For tethering and rndis support
其中kmod-usb-net
可以展开:
<*> 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-cdc-eem..................... Support for CDC EEM connections
-*- kmod-usb-net-cdc-ether.............. Support for cdc ethernet connections
<*> kmod-usb-net-cdc-mbim..................... Kernel module for MBIM Devices
-*- kmod-usb-net-cdc-ncm..................... Support for CDC NCM connections
<*> kmod-usb-net-cdc-subset...... Support for CDC Ethernet subset connections
<*> kmod-usb-net-dm9601-ether........ Support for DM9601 ethernet connections
<*> kmod-usb-net-hso.. Kernel module for Option USB High Speed Mobile Devices
<*> kmod-usb-net-ipheth..................... Apple iPhone USB Ethernet driver
<*> kmod-usb-net-kalmia................... Samsung Kalmia based LTE USB modem
<*> kmod-usb-net-kaweth.. Kernel module for USB-to-Ethernet Kaweth convertors
<*> kmod-usb-net-mcs7830
<*> kmod-usb-net-pegasus
<*> kmod-usb-net-qmi-wwan.................................... QMI WWAN driver
<*> kmod-usb-net-rndis......................... Support for RNDIS connections
<*> kmod-usb-net-sierrawireless.......... Support for Sierra Wireless devices
<*> kmod-usb-net-smsc95xx. SMSC LAN95XX based USB 2.0 10/100 ethernet devices
其中注意rndis, 一些较新的4G模块用USB接口usb network interface (rndis)
替代传统的串口协议.
kmod-usb-serial
支持传统的3G加密狗, 也有展开:
<*> kmod-usb-serial..................... Support for USB-to-Serial converters
<*> kmod-usb-serial-ark3116........ Support for ArkMicroChips ARK3116 devices
<*> kmod-usb-serial-belkin........................ Support for Belkin devices
<*> kmod-usb-serial-ch341.......................... Support for CH341 devices
<*> kmod-usb-serial-cp210x........... Support for Silicon Labs cp210x devices
<*> kmod-usb-serial-cypress-m8.............. Support for CypressM8 USB-Serial
<*> kmod-usb-serial-ftdi............................ Support for FTDI devices
<*> kmod-usb-serial-ipw.................... Support for IPWireless 3G devices
<*> kmod-usb-serial-keyspan........ Support for Keyspan USB-to-Serial devices
<*> kmod-usb-serial-mct.............. Support for Magic Control Tech. devices
<*> kmod-usb-serial-mos7720.............. Support for Moschip MOS7720 devices
<*> kmod-usb-serial-motorola-phone............ Support for Motorola usb phone
<*> kmod-usb-serial-option................... Support for Option HSDPA modems
<*> kmod-usb-serial-oti6858...... Support for Ours Technology OTI6858 devices
<*> kmod-usb-serial-pl2303............... Support for Prolific PL2303 devices
<*> kmod-usb-serial-qualcomm................. Support for Qualcomm USB serial
<*> kmod-usb-serial-sierrawireless....... Support for Sierra Wireless devices
<*> kmod-usb-serial-ti-usb...................... Support for TI USB 3410/5052
<*> kmod-usb-serial-visor............... Support for Handspring Visor devices
-*- kmod-usb-serial-wwan..................... Support for GSM and CDMA modems
上面是Kernel Modules → USB Support
的选项, 下面要回去, 切回Network
区域:
Network
<*>chat
<*>ppp
<*>uqmi
其中uqmi
支持qmi接口, ppp
支持标准的点对点协议(point-to-point protocol), chat
建立串行通行是需要的, 为PPP连接做准备. 实际测试发现uqmi位置有变动, 移到了Network > WWAN > uqmi
:
一些加密狗用mbim
协议:
Network
<*>umbim
下面要退出Network
, 切到Utilities
区:
Utilities
<*>comgt
<*>usb-modeswitch
compt
提供3g接口控制, usb-modeswitch
提供虚拟cd-rom接口到串口的模式转换. 实际测试compt
没有找到, 找到的可以评论下.
如果需要调试串口, 需要串口终端, 可以选择minicom
之类的, 推荐小体积的picocom
:
Utilities --> Terminal
<*>picocom
如果想在LuCI界面中控制通信模块, 切到LuCI
区:
Luci
1. Collections
<*> luci
3. Applications
<*> luci-app-multiwan (optional to support multiple 3g dongles)
<*> luci-app-qos (optional to provide QOS support)
6. Protocols
<*> luci-proto-3g
-*- luci-proto-ppp
实际测试luci-app-multiwan
改成了luci-app-mwan3
:
自己增添了qmi
(未测试):
编译
配置完毕, 保存, 退出, 输入make -j8 V=99
编译, 中间需要联网下载, 从luci-app-vnstat
开始, 速度变慢, luci-app-qos
, samba
等, 奇慢无比, 还下载失败了, 不需要的不要选了, 直到这篇文章写完, 还在联网下载… 不知道能不能编译通过.
微信公众号
欢迎扫描二维码关注本人微信公众号, 及时获取或者发送给我最新消息: