ramips: add support for I-O DATA WN-AX1167GR2
authorINAGAKI Hiroshi <musashino.open@gmail.com>
Mon, 26 Aug 2019 11:27:22 +0000 (20:27 +0900)
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>
Wed, 5 Feb 2020 16:03:34 +0000 (17:03 +0100)
I-O DATA WN-AX1167GR2 is a 2.4/5 GHz band 11ac router, based on MediaTek
MT7621A.

Specification:

- SoC : MediaTek MT7621A
- RAM : DDR3 128 MiB
- Flash : NAND 128 MiB
- WLAN : MediaTek MT7615D (2.4/5 GHz, 2T2R)
- Ethernet : 5x 10/100/1000 Mbps
  - Switch : MediaTek MT7621A (MT7530)
- LEDs/Input : 2x/3x (2x buttons, 1x slide-switch)
- UART : through-hole on PCB
  - J5: Vcc, TX, RX, NC, GND
  - 57600 bps

Flash instruction using initramfs image:

1. Boot WN-AX1167GR2 normally
2. Access to "http://192.168.0.1/" and open firmware update page
("ファームウェア")
3. Select the OpenWrt initramfs image and click update ("更新")
button to perform firmware update
4. On the initramfs image, perform sysupgrade with squashfs-sysupgrade
image
5. Wait ~120 seconds to complete flashing

Notes:

- configuration in DeviceTree of DBDC (Dual-Band-Dual-Concurrent) mode
for MT7615D chip is not supported in mt76 driver
- last 0x80000 (512 KiB) in NAND flash is not used on stock firmware
- stock firmware requires "customized uImage header" by MSTC
(MitraStar Technology Corp.), but U-Boot doesn't
  - uImage magic (0x0 - 0x3) : 0x434F4D42 (COMB)
  - header crc32 (0x4 - 0x7) : with data length and data crc32
  - image name (0x20 - 0x37) : model ID and firmware versions
  - data length (0x38 - 0x3b): kernel + rootfs
  - data crc32 (0x3c - 0x3f) : kernel + rootfs

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Reviewed-by: Sungbo Eo <mans0n@gorani.run>
target/linux/ramips/dts/mt7621_iodata_wn-ax1167gr2.dts [new file with mode: 0644]
target/linux/ramips/image/mt7621.mk
target/linux/ramips/mt7621/base-files/etc/board.d/02_network
target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh

diff --git a/target/linux/ramips/dts/mt7621_iodata_wn-ax1167gr2.dts b/target/linux/ramips/dts/mt7621_iodata_wn-ax1167gr2.dts
new file mode 100644 (file)
index 0000000..251caf4
--- /dev/null
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "mt7621_iodata_wn-xx-xr.dtsi"
+
+/ {
+       compatible = "iodata,wn-ax1167gr2", "mediatek,mt7621-soc";
+       model = "I-O DATA WN-AX1167GR2";
+};
+
+&partitions {
+       partition@6b00000 {
+               label = "Backup";
+               reg = <0x6b00000 0x1480000>;
+               read-only;
+       };
+};
+
+&pcie1 {
+       wifi@0,0 {
+               compatible = "mediatek,mt76";
+               reg = <0x0000 0 0 0 0>;
+               mediatek,mtd-eeprom = <&factory 0x0>;
+       };
+};
index b66842e..17b3265 100644 (file)
@@ -352,6 +352,22 @@ define Device/iodata_wn-ax1167gr
 endef
 TARGET_DEVICES += iodata_wn-ax1167gr
 
+define Device/iodata_wn-ax1167gr2
+  BLOCKSIZE := 128k
+  PAGESIZE := 2048
+  UBINIZE_OPTS := -E 5
+  UIMAGE_MAGIC := 0x434f4d42
+  KERNEL_SIZE := 4096k
+  IMAGE_SIZE := 51200k
+  DEVICE_VENDOR := I-O DATA
+  DEVICE_MODEL := WN-AX1167GR2
+  KERNEL_INITRAMFS := $(KERNEL_DTB) | custom-initramfs-uimage 3.10(XBC.1)b10 | \
+       iodata-mstc-header
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+  DEVICE_PACKAGES := kmod-mt7615e wpad-basic
+endef
+TARGET_DEVICES += iodata_wn-ax1167gr2
+
 define Device/iodata_wn-dx1167r
   BLOCKSIZE := 128k
   PAGESIZE := 2048
index ffe5793..c041262 100755 (executable)
@@ -72,6 +72,7 @@ ramips_setup_interfaces()
        elecom,wrc-1900gst|\
        elecom,wrc-2533gst|\
        iodata,wn-ax1167gr|\
+       iodata,wn-ax1167gr2|\
        iodata,wn-dx1167r|\
        iodata,wn-gx300gr|\
        iodata,wnpr2600g|\
@@ -223,6 +224,7 @@ ramips_setup_macs()
        xiaoyu,xy-c5)
                wan_mac=$(macaddr_add "$(mtd_get_mac_binary factory 0x4)" 1)
                ;;
+       iodata,wn-ax1167gr2|\
        iodata,wn-dx1167r|\
        xiaomi,mir3g-v2)
                wan_mac=$(mtd_get_mac_binary factory 0xe006)
index e27f9df..6e0e8a6 100755 (executable)
@@ -53,6 +53,7 @@ platform_do_upgrade() {
        xiaomi,mir3p)
                nand_do_upgrade "$1"
                ;;
+       iodata,wn-ax1167gr2|\
        iodata,wn-dx1167r)
                iodata_mstc_upgrade_prepare
                nand_do_upgrade "$1"