diff options
author | Davide Fioravanti <pantanastyle@gmail.com> | 2019-05-20 05:20:37 +0200 |
---|---|---|
committer | Christian Lamparter <chunkeey@gmail.com> | 2019-05-31 10:36:36 +0200 |
commit | 7c91144ae6a45dc8d7ca6b68b3403e166185a498 (patch) | |
tree | 181e12347d7adee2f75cf39b1a3f82043a5b128d /target/linux | |
parent | 62ce6d58f2ed280744ea6ef793c2342494b12ce7 (diff) | |
download | upstream-7c91144ae6a45dc8d7ca6b68b3403e166185a498.tar.gz upstream-7c91144ae6a45dc8d7ca6b68b3403e166185a498.tar.bz2 upstream-7c91144ae6a45dc8d7ca6b68b3403e166185a498.zip |
ramips: add CUDY WR1000 support
Cudy WR1200 is an AC1200 AP with 3-port FE and 2 non-detachable antennas
Specifications:
MT7628 (580 MHz)
64 MB of RAM (DDR2)
8 MB of FLASH
2T2R 2.4 GHz (MT7628)
2T2R 5 GHz (MT7612E)
3x 10/100 Mbps Ethernet (2 LAN + 1 WAN)
2x external, non-detachable antennas (5dbi)
UART header on PCB (57600 8n1)
7x LED, 2x button
Known issues:
The Power LED is always ON, probably because it is connected
directly to power.
Flash instructions
------------------
Load the ...-factory.bin image via the stock web interface.
Openwrt upgrade instructions
----------------------------
Use the ...-sysupgrade.bin image for future upgrades.
Revert to stock FW
------------------
Warning! This tutorial will work only with the following OEM FW:
WR1000_EU_92.122.2.4987.201806261618.bin
WR1000_US_92.122.2.4987.201806261609.bin
If in the future these firmwares will not be available anymore,
you have to find the new XOR key.
1) Download the original FW from the Cudy website.
(For example WR1000_EU_92.122.2.4987.201806261618.bin)
2) Remove the header.
dd if="WR1000_EU_92.122.2.4987.201806261618.bin" of="WR1000_EU_92.122.2.4987.201806261618.bin.mod" skip=8 bs=64
3) XOR the new file with the region key.
FOR EU: 7B76741E67594351555042461D625F4545514B1B03050208000603020803000D
FOR US: 7B76741E675943555D5442461D625F454555431F03050208000603060007010C
You can use OpenWrt's tools/firmware-utils/src/xorimage.c tool for this:
xorimage -i WR1000..bin.mod -o stock-firmware.bin -x -p 7B767..
Or, you can use this tool (CHANGE THE XOR KEY ACCORDINGLY!):
https://gchq.github.io/CyberChef/#recipe=XOR(%7B'option':'Hex','string':''%7D,'',false)
4) Check the resulting decrypted image.
Check if bytes from 0x20 to 0x3f are:
4C 69 6E 75 78 20 4B 65 72 6E 65 6C 20 49 6D 61 67 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Alternatively, you can use u-boot's tool dumpimage tool to check
if the decryption was successful. It should look like:
# dumpimage -l stock-firmware.bin
Image Name: Linux Kernel Image
Created: Tue Jun 26 10:24:54 2018
Image Type: MIPS Linux Kernel Image (lzma compressed)
Data Size: 4406635 Bytes = 4303.35 KiB = 4.20 MiB
Load Address: 80000000
Entry Point: 8000c150
5) Flash it via forced firmware upgrade and don't "Keep Settings"
CLI: sysupgrade -F -n stock-firmware.bin
LuCI: make sure to click on the "Keep settings" checkbox
to disable it. You'll need to do this !TWICE! because
on the first try, LuCI will refuse the image and reset
the "Keep settings" to enable. However a new
"Force upgrade" checkbox will appear as well.
Make sure to do this very carefully!
Signed-off-by: Davide Fioravanti <pantanastyle@gmail.com>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
[added wifi compatible, spiffed-up the returned to stock instructions]
Diffstat (limited to 'target/linux')
-rwxr-xr-x | target/linux/ramips/base-files/etc/board.d/01_leds | 5 | ||||
-rwxr-xr-x | target/linux/ramips/base-files/etc/board.d/02_network | 4 | ||||
-rw-r--r-- | target/linux/ramips/dts/WR1000.dts | 144 | ||||
-rw-r--r-- | target/linux/ramips/image/mt76x8.mk | 13 |
4 files changed, 166 insertions, 0 deletions
diff --git a/target/linux/ramips/base-files/etc/board.d/01_leds b/target/linux/ramips/base-files/etc/board.d/01_leds index ccbe53d770..24234dfddd 100755 --- a/target/linux/ramips/base-files/etc/board.d/01_leds +++ b/target/linux/ramips/base-files/etc/board.d/01_leds @@ -91,6 +91,11 @@ cf-wr800n) ucidef_set_led_netdev "lan" "lan" "$boardname:white:ethernet" eth0.1 set_wifi_led "$boardname:white:wifi" ;; +cudy,wr1000) + ucidef_set_led_switch "wan" "wan" "$boardname:blue:wan" "switch0" "0x10" + ucidef_set_led_switch "lan1" "lan1" "$boardname:blue:lan1" "switch0" "0x08" + ucidef_set_led_switch "lan2" "lan2" "$boardname:blue:lan2" "switch0" "0x04" + ;; d240) set_wifi_led "$boardname:blue:wifi" ;; diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network index dcc7b4a747..48ba1ba6a6 100755 --- a/target/linux/ramips/base-files/etc/board.d/02_network +++ b/target/linux/ramips/base-files/etc/board.d/02_network @@ -298,6 +298,10 @@ ramips_setup_interfaces() ucidef_add_switch "switch0" \ "4:lan" "6t@eth0" ;; + cudy,wr1000) + ucidef_add_switch "switch0" \ + "2:lan:2" "3:lan:1" "4:wan" "6@eth0" + ;; cy-swr1100) ucidef_add_switch "switch0" \ "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "9@eth0" diff --git a/target/linux/ramips/dts/WR1000.dts b/target/linux/ramips/dts/WR1000.dts new file mode 100644 index 0000000000..ff0b9badd1 --- /dev/null +++ b/target/linux/ramips/dts/WR1000.dts @@ -0,0 +1,144 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "mt7628an.dtsi" + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> + +/ { + compatible = "cudy,wr1000", "mediatek,mt7628an-soc"; + model = "Cudy WR1000"; + + aliases { + led-boot = &led_wps; + led-failsafe = &led_wps; + led-upgrade = &led_wps; + }; + + keys { + compatible = "gpio-keys-polled"; + poll-interval = <20>; + + reset { + label = "reset"; + gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; + linux,code = <KEY_RESTART>; + }; + + wps { + label = "rfkill"; + gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; + linux,code = <KEY_WPS_BUTTON>; + }; + }; + + leds { + compatible = "gpio-leds"; + + lan1 { + label = "wr1000:blue:lan1"; + gpios = <&gpio1 8 GPIO_ACTIVE_LOW>; + }; + + lan2 { + label = "wr1000:blue:lan2"; + gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; + }; + + wan { + label = "wr1000:blue:wan"; + gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; + }; + + wlan2g { + label = "wr1000:blue:wlan2g"; + gpios = <&gpio1 12 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0tpt"; + }; + + led_wps: wps { + label = "wr1000:blue:wps"; + gpios = <&gpio1 5 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&spi0 { + status = "okay"; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <10000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "u-boot"; + reg = <0x0 0x30000>; + read-only; + }; + + partition@30000 { + label = "u-boot-env"; + reg = <0x30000 0x10000>; + read-only; + }; + + factory: partition@40000 { + label = "factory"; + reg = <0x40000 0x10000>; + read-only; + }; + + partition@50000 { + compatible = "denx,uimage"; + label = "firmware"; + reg = <0x50000 0x7b0000>; + }; + + }; + }; +}; + +&pinctrl { + state_default: pinctrl0 { + gpio { + ralink,group = "i2s", "refclk", "wdt", "p4led_an", + "p3led_an", "p2led_an", "wled_an"; + ralink,function = "gpio"; + }; + }; +}; + +&pcie { + status = "okay"; +}; + +&pcie0 { + wifi@0,0 { + compatible = "mediatek,mt76"; + reg = <0x0000 0 0 0 0>; + mediatek,mtd-eeprom = <&factory 0x8000>; + ieee80211-freq-limit = <5000000 6000000>; + + led { + led-sources = <2>; + led-active-low; + }; + }; +}; + +&wmac { + status = "okay"; + ralink,mtd-eeprom = <&factory 0x4>; +}; + +ðernet { + mtd-mac-address = <&factory 0x2e>; + mediatek,portmap = "llllw"; +}; diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk index 22d79bad39..ca279a7d61 100644 --- a/target/linux/ramips/image/mt76x8.mk +++ b/target/linux/ramips/image/mt76x8.mk @@ -27,6 +27,19 @@ define Device/alfa-network_awusfree1 endef TARGET_DEVICES += alfa-network_awusfree1 +define Device/cudy_wr1000 + DTS := WR1000 + IMAGE_SIZE := $(ralink_default_fw_size_8M) + IMAGES += factory.bin + IMAGE/factory.bin := \ + $$(sysupgrade_bin) | check-size $$$$(IMAGE_SIZE) | jcg-header 92.122 + JCG_MAXSIZE := 8060928 + DEVICE_TITLE := Cudy WR1000 + DEVICE_PACKAGES := kmod-mt76x2 + SUPPORTED_DEVICES += wr1000 +endef +TARGET_DEVICES += cudy_wr1000 + define Device/tama_w06 DTS := W06 IMAGE_SIZE := 15040k |