Mercury MW305R v3.0 路由器改造 LEDE(OpenWRT)
说明
1. 改造 Mercury MW305R v3.0(芯片 9533)
2. OpenWRT 版本:LEDE 17
3. 环境:Ubuntu 16.04 x64
第一步:修改硬件
1. 换 RAN 为 64M
2. 换 flash 为 16M
注:本教程主要说明制作镜像部分,具体修改硬件步骤请参考:链接
第二步:获取源码
使用以下命令克隆我当时使用的版本源码:
git clone -b lede-17.01 https://github.com/lede-project/source.git lede
第三步:target profile 添加新路由器
修改文件:/target/linux/ar71xx/image/tp-link.mk
添加以下内容:
define Device/mc-mw305r-v3$(Device/tplink-16mlzma)DEVICE_TITLE := MERCURY MC-MW305R v3BOARDNAME := MC-MW305R-v3TPLINK_HWID := 0x30500003
endef
TARGET_DEVICES += mc-mw305r-v3
删除 /tmp 目录,使用以下命令配置:
make menuconfig
在 Target System 里选择 Atheros AR7xxx/AR9xxx,然后在 Target Profile 里找到 MERCURY MC-MW305R v3 并选中。相关配置此时,编译一下,看看有没有错误。
make
make 成功后,/bin/targets/ar71xx/generic/ 目录下面会生成 MW305R 的 factory.bin,但是这时候下载到 flash 还不能启动,因为内核并没有支持 MW305R,继续下面的步骤。
第四步:kernel arch machine 新增路由器
新建文件:/build_dir/target-mips_24kc_musl/linux-ar71xx_generic/linux-4.4.74/arch/mips/ath79/mach-mc-mw305r-v3.c
文件内容:
/** Mercury MW305R v3** Copyright (C) 2014 Matthias Schiffer <mschiffer@universe-factory.net>** This program is free software; you can redistribute it and/or modify it* under the terms of the GNU General Public License version 2 as published* by the Free Software Foundation.*/#include <linux/gpio.h>
#include <linux/platform_device.h>#include <asm/mach-ath79/ath79.h>
#include <asm/mach-ath79/ar71xx_regs.h>#include "common.h"
#include "dev-eth.h"
#include "dev-gpio-buttons.h"
#include "dev-leds-gpio.h"
#include "dev-m25p80.h"
#include "dev-wmac.h"
#include "machtypes.h"#define MC_MW305RV3_GPIO_LED_WLAN 13
#define MC_MW305RV3_GPIO_LED_WAN 4
#define MC_MW305RV3_GPIO_LED_LAN4 11
#define MC_MW305RV3_GPIO_LED_LAN3 14
#define MC_MW305RV3_GPIO_LED_LAN2 15
#define MC_MW305RV3_GPIO_LED_LAN1 16#define MC_MW305RV3_GPIO_BTN_RESET 12
#define MC_MW305RV3_GPIO_BTN_WIFI 17#define MC_MW305RV3_KEYS_POLL_INTERVAL 20 /* msecs */
#define MC_MW305RV3_KEYS_DEBOUNCE_INTERVAL (3 * MC_MW305RV3_KEYS_POLL_INTERVAL)static const char *mc_mw305r_v3_part_probes[] = {"tp-link",NULL,
};static struct flash_platform_data mc_mw305r_v3_flash_data = {.part_probes = mc_mw305r_v3_part_probes,
};static struct gpio_led mc_mw305r_v3_leds_gpio[] __initdata = {{.name = "mercury:green:lan1",.gpio = MC_MW305RV3_GPIO_LED_LAN1,.active_low = 1,}, {.name = "mercury:green:lan2",.gpio = MC_MW305RV3_GPIO_LED_LAN2,.active_low = 1,}, {.name = "mercury:green:lan3",.gpio = MC_MW305RV3_GPIO_LED_LAN3,.active_low = 1,}, {.name = "mercury:green:lan4",.gpio = MC_MW305RV3_GPIO_LED_LAN4,.active_low = 1,}, {.name = "mercury:green:wan",.gpio = MC_MW305RV3_GPIO_LED_WAN,.active_low = 1,}, {.name = "mercury:green:wlan",.gpio = MC_MW305RV3_GPIO_LED_WLAN,.active_low = 1,.default_trigger = "heartbeat",},
};static struct gpio_keys_button mc_mw305r_v3_gpio_keys[] __initdata = {{.desc = "Reset button",.type = EV_KEY,.code = KEY_RESTART,.debounce_interval = MC_MW305RV3_KEYS_DEBOUNCE_INTERVAL,.gpio = MC_MW305RV3_GPIO_BTN_RESET,.active_low = 1,}, {.desc = "WIFI button",.type = EV_KEY,.code = KEY_RFKILL,.debounce_interval = MC_MW305RV3_KEYS_DEBOUNCE_INTERVAL,.gpio = MC_MW305RV3_GPIO_BTN_WIFI,.active_low = 1,}
};static void __init tl_ap143_setup(void)
{u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);u8 tmpmac[ETH_ALEN];ath79_register_m25p80(&mc_mw305r_v3_flash_data);ath79_setup_ar933x_phy4_switch(false, false);ath79_register_mdio(0, 0x0);/* LAN */ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;ath79_eth1_data.duplex = DUPLEX_FULL;ath79_switch_data.phy_poll_mask |= BIT(4);ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);ath79_register_eth(1);/* WAN */ath79_switch_data.phy4_mii_en = 1;ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;ath79_eth0_data.duplex = DUPLEX_FULL;ath79_eth0_data.speed = SPEED_100;ath79_eth0_data.phy_mask = BIT(4);ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);ath79_register_eth(0);ath79_init_mac(tmpmac, mac, 0);ath79_register_wmac(ee, tmpmac);
}static void __init mc_mw305r_v3_setup(void)
{tl_ap143_setup();ath79_gpio_output_select(3, AR934X_GPIO_OUT_GPIO);ath79_gpio_output_select(4, AR934X_GPIO_OUT_GPIO);ath79_gpio_output_select(11, AR934X_GPIO_OUT_GPIO);ath79_gpio_output_select(14, AR934X_GPIO_OUT_GPIO);ath79_gpio_output_select(15, AR934X_GPIO_OUT_GPIO);ath79_gpio_output_select(16, AR934X_GPIO_OUT_GPIO);ath79_register_leds_gpio(-1, ARRAY_SIZE(mc_mw305r_v3_leds_gpio),mc_mw305r_v3_leds_gpio);ath79_register_gpio_keys_polled(1, MC_MW305RV3_KEYS_POLL_INTERVAL,ARRAY_SIZE(mc_mw305r_v3_gpio_keys),mc_mw305r_v3_gpio_keys);
}MIPS_MACHINE(ATH79_MACH_MW_MW305R, "MW-MW305R-v3", "MERCURY MW-MW305R v3",mc_mw305r_v3_setup);
修改文件:/build_dir/target-mips_24kc_musl/linux-ar71xx_generic/linux-4.4.74/arch/mips/ath79/Kconfig
添加以下内容:
config ATH79_MACH_MC_MW305Rbool "MERCURY MC-MW305R v3 support"select SOC_AR933Xselect ATH79_DEV_ETHselect ATH79_DEV_GPIO_BUTTONSselect ATH79_DEV_LEDS_GPIOselect ATH79_DEV_M25P80select ATH79_DEV_WMAChelpSay 'Y' here if you want your kernel to support theMERCURY MC-MW305R v3.
修改文件:/build_dir/target-mips_24kc_musl/linux-ar71xx_generic/linux-4.4.74/arch/mips/ath79/machtypes.h
添加以下内容:
ATH79_MACH_MC_MW305R,
修改文件:/build_dir/target-mips_24kc_musl/linux-ar71xx_generic/linux-4.4.74/arch/mips/ath79/Makefile添加以下内容:
obj-$(CONFIG_ATH79_MACH_MC_MW305R) += mach-mc-mw305r-v3.o
使用以下命令配置:
make kernel_menuconfig
-> Machine selection
-> Atheros AR71XX/AR724X/AR913X machine selection
MERCURY MC-MW305R v3 support
此时,编译一次看看有没有问题:
make
make 成功后,如果直接固件下载到 flash,已经能启动了,但会出现网络问题,继续看第五步。
第五步:network 配置问题(ar71xx系列)
修改文件:/target/linux/ar71xx/base-files/etc/board.d/02_network
添加以下内容:
mc-mw305r-v3)ucidef_set_interfaces_lan_wan "eth0" "eth1"ucidef_add_switch "switch0" \"0@eth0" "1:lan" "2:lan" "3:lan" "4:lan";;
修改文件:/target/linux/ar71xx/base-files/lib/ar71xx.sh
添加以下内容:
*"MC-MW305R v3"*)name="mc-mw305r-v3";;
此时,再编译一次看看有没有问题:
make
make 成功后,如果下载固件到 flash,网络已经没问题了,但是会发现 LED 灯工作得不正常,继续看第六步。
第六步:LED 灯问题
修改文件:/target/linux/ar71xx/base-files/etc/board.d/01_leds
添加以下内容:
mc-mw305r-v3)ucidef_set_led_netdev "wan" "WAN" "mercury:green:wan" "eth1"ucidef_set_led_switch "lan0" "LAN0" "mercury:green:lan1" "switch0" "0x10"ucidef_set_led_switch "lan1" "LAN1" "mercury:green:lan2" "switch0" "0x08"ucidef_set_led_switch "lan2" "LAN2" "mercury:green:lan3" "switch0" "0x04"ucidef_set_led_switch "lan3" "LAN3" "mercury:green:lan4" "switch0" "0x02"ucidef_set_led_wlan "wlan" "WLAN" "mercury:green:wlan" "phy0tpt";;
这时候已经大功告成了,最后编译一次:
make
Mercury MW305R v3.0 路由器改造 LEDE(OpenWRT)相关推荐
- mercurymw305r虚拟服务器,Mercury MW305R v3.0 路由器改造 LEDE(OpenWRT)
說明 1. 改造 Mercury MW305R v3.0(芯片 9533) 2. OpenWRT 版本:LEDE 17 3. 環境:Ubuntu 16.04 x64 第一步:修改硬件 1. 換 RAN ...
- 知道创宇研发技能列表v3.0
Expand - Collapse 知道创宇研发技能表v3.0 2015/8/21 发布 by @知道创宇(www.knownsec.com) @余弦 & 404团队 后续动态请关注微信公众号 ...
- 【cocos2d-js官方文档】二十五、Cocos2d-JS v3.0中的单例对象
为何将单例模式移除 在Cocos2d-JS v3.0之前.全部API差点儿都是从Cocos2d-x中移植过来的,这是Cocos2d生态圈统一性的重要一环.可惜的是,这样的统一性也在非常大程度上限制了C ...
- 低代码平台,JeecgBoot v3.0版本发布—新里程牌开始,迎接VUE3版本到来
项目介绍 JeecgBoot是一款基于代码生成器的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shi ...
- 【保姆级!完整详细!】小米路由器3 刷openwrt固件并连接上校园网
小米路由器3 刷openwrt固件并连接上校园网 本篇参考: https://www.bilibili.com/video/BV1dL411A72f https://blog.csdn.net/adi ...
- 小米路由器AX9000刷写OpenWrt官网发布的固件
准备工作 从官网(OpenWrt Firmware Selector)下载下图标注的两个文件 由于OpenWrt官网发布的固件会改写MTD分区布局,不支持原厂和OpenWrt共存,需要先刷入openw ...
- 创宇技能表_知道创宇研发技能表v3.0 来了!
这次是时隔1年多了,我们终于发布了知道创宇研发技能表v3.0,来自知道创宇团队的良心出品.这一年来,我们都更新了哪些技能呢? ## Changelog * 通用技能,做了重构性更新,更有脉络章法 * ...
- MKS Robin nano V3.0 主板使用Klipper固件教程
MKS Robin nano V3.0 主板使用Klipper固件教程 文章目录 一.准备 1.1硬件板卡准备 1.2镜像文件下载 1.3镜像文件安装 1.4无线网络配置 1.5连接树莓派 1.6 O ...
- 运维知识体系-V3.0
运维知识体系-V3.0 By:赵舜东(赵班长) [转载请注明来自于-运维社区:https://www.unixhot.com/] 运维架构层级/运维角度 内容描述/主要技术关键词 监控体系 自动化/D ...
最新文章
- 独家|测量、建议、快速上手!你所使用的Python对象占用了多少内存?(附代码)...
- 三行情书代码_用三行代码优化您的交易策略
- java ee maven_针对新手的Java EE7和Maven项目–第7部分
- 如何利用云服务器挖矿_企业如何选择云服务器
- uni一t 说明书_不输特斯拉,站在UNI-T背后的长安「超级工厂」
- 2.设计模式-桥接模式
- java instanceof运算符_Java 中的instanceof 运算符
- 如何轻松除掉肠道废物
- Python 集体智慧编程PDF
- 中英文停用词(stop word)列表
- qt 设置按钮大小_QT使用教程(四)之初体验
- linux 性能测试 跑分,测试10秒钟,分析8小时,性能评估只看跑分可不够
- 计算机组成原理——中央处理器
- C++if嵌套语句判断闰年
- 【读书笔记】吴军阅读与写作讲义
- python调整图片亮度_python 调整图片亮度的示例
- IDEA设置一键导包
- 微信热搜榜、订阅热词API
- [文摘20080131]89个管理定律及点评
- 河边的小屋原来是这么俗气的一个名字
热门文章
- python pyplot 宽高等比_如何使pyplot分散中的markersize不依赖于图形的比例?
- 2076:时针分针的夹角
- 记一次英伟达驱动踩坑
- matlab 生成audio vst plugin
- REVEAL APP FOR IOS 永久试用
- oracle 11g system01.dbf,oracle数据文件system01.dbf上有坏块,如何修复
- K-L变换(Karhunen-Loève Transform)
- 写在5G边缘:2B本质是2C
- Oracle学习1.0
- RMQ的ST算法(区间最值)