找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 1284|回复: 0

OpenWrt 固件定制

[复制链接]

皇家娱乐wwwhj7878com【電:⒙0★8804★5700】前言硬件回顾添加新的Target Profile    添加设备树    修改Makefile    网络配置    修改sh配置menuconfig    Target选择    添加LuCI    添加4G支持编译微信公众号

前言

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源码中全局搜索关键字, 看下定制一个固件需要改动的东西:

嗯, 可以依葫芦画瓢开始了.

添加设备树

到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-7688range:wifi";
  • //            gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
  • //        };
  • //    };

  • //Flash 16MB
  • //reg = <0x50000 0x1fb0000>;    //32MB
  • reg = <0x50000 0xfb0000>;

其中, reg=<0x00x8000000>;表示128MB RAM; reg=<0x500000xfb0000>;表示支持的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 |\

配置menuconfigTarget选择

上面做了改动, 需要删除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

对于特定型号特定应用, 可能过于繁杂, 可自己适当裁剪, 摘录一下全部配置.

KernelModules→USBSupport:

  • 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 networkinterface(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

上面是 KernelModules→USBSupport的选项, 下面要回去, 切回 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:


我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-28 16:19

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表