From 3ad229db0b0ed8538eadcdc2a1c3faf964f239be Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Sat, 9 Oct 2021 20:13:25 +0200 Subject: ipq40xx: add support for MikroTik hAP ac3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds support for the MikroTik RouterBOARD RBD53iG-5HacD2HnD (hAP ac³), a indoor dual band, dual-radio 802.11ac wireless AP with external omnidirectional antennae, USB port, five 10/100/1000 Mbps Ethernet ports and PoE passthrough. See https://mikrotik.com/product/hap_ac3 for more info. Specifications: - SoC: Qualcomm Atheros IPQ4019 - RAM: 256 MB - Storage: 16 MB NOR + 128 MB NAND - Wireless: · Built-in IPQ4019 (SoC) 802.11b/g/n 2x2:2, 3 dBi antennae · Built-in IPQ4019 (SoC) 802.11a/n/ac 2x2:2, 5.5 dBi antennae - Ethernet: Built-in IPQ4019 (SoC, QCA8075) , 5x 1000/100/10 port, passive PoE in, PoE passtrough on port 5 - 1x USB Type A port Installation: 1. Boot the initramfs image via TFTP 2. Run "cat /proc/mtd" and look for "ubi" partition mtd device number, ex. "mtd1" 3. Use ubiformat to remove MikroTik specific UBI volumes * Detach the UBI partition by running: "ubidetach -d 0" * Format the partition by running: "ubiformat /dev/mtdN -y" Replace mtdN with the correct mtd index from step 2. 3. Flash the sysupgrade image using "sysupgrade -n" Signed-off-by: Robert Marko Tested-by: Mark Birss Tested-by: Michael Büchler Tested-by: Alex Tomkins --- target/linux/ipq40xx/base-files/etc/board.d/01_leds | 8 ++++++++ .../linux/ipq40xx/base-files/etc/board.d/02_network | 4 +++- .../ipq40xx/base-files/etc/board.d/03_gpio_switches | 3 +++ .../etc/hotplug.d/firmware/11-ath10k-caldata | 6 ++++-- .../ipq40xx/base-files/lib/upgrade/platform.sh | 21 +++++++++++++++++++++ 5 files changed, 39 insertions(+), 3 deletions(-) (limited to 'target/linux/ipq40xx/base-files') diff --git a/target/linux/ipq40xx/base-files/etc/board.d/01_leds b/target/linux/ipq40xx/base-files/etc/board.d/01_leds index b2545f41e1..8942ad2000 100644 --- a/target/linux/ipq40xx/base-files/etc/board.d/01_leds +++ b/target/linux/ipq40xx/base-files/etc/board.d/01_leds @@ -45,6 +45,14 @@ engenius,ens620ext) ucidef_set_led_netdev "lan1" "LAN1" "green:lan1" "eth0" ucidef_set_led_netdev "lan2" "LAN2" "green:lan2" "eth1" ;; +mikrotik,hap-ac3) + ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth1" + ucidef_set_led_switch "lan1" "LAN1" "green:lan1" "switch0" "0x10" + ucidef_set_led_switch "lan2" "LAN2" "green:lan2" "switch0" "0x08" + ucidef_set_led_switch "lan3" "LAN3" "green:lan3" "switch0" "0x04" + ucidef_set_led_switch "lan4" "LAN4" "green:lan4" "switch0" "0x02" + ucidef_set_led_gpio "poe" "POE" "red:poe" "452" "0" + ;; mikrotik,sxtsq-5-ac) ucidef_set_rssimon "wlan0" "200000" "1" ucidef_set_led_rssi "rssilow" "rssilow" "green:rssilow" "wlan0" "1" "100" diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network index 5d123109a2..7ccdf97a60 100644 --- a/target/linux/ipq40xx/base-files/etc/board.d/02_network +++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network @@ -50,6 +50,7 @@ ipq40xx_setup_interfaces() ;; asus,rt-ac58u|\ mikrotik,hap-ac2|\ + mikrotik,hap-ac3|\ p2w,r619ac-64m|\ p2w,r619ac-128m|\ zyxel,nbg6617) @@ -182,7 +183,8 @@ ipq40xx_setup_macs() wan_mac=$(mtd_get_mac_ascii devinfo hw_mac_addr) lan_mac=$(macaddr_add "$wan_mac" 1) ;; - mikrotik,hap-ac2) + mikrotik,hap-ac2|\ + mikrotik,hap-ac3) wan_mac=$(cat /sys/firmware/mikrotik/hard_config/mac_base) lan_mac=$(macaddr_add $wan_mac 1) label_mac="$wan_mac" diff --git a/target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches b/target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches index 9029eb3a82..4036e5356f 100644 --- a/target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches +++ b/target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches @@ -18,6 +18,9 @@ cilab,meshpoint-one) compex,wpj428) ucidef_add_gpio_switch "sim_card_select" "SIM card select" "3" "0" ;; +mikrotik,hap-ac3) + ucidef_add_gpio_switch "poe_passtrough" "PoE Passthrough" "452" "0" + ;; esac board_config_flush diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index f90c558015..1e1b445924 100644 --- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -149,7 +149,8 @@ case "$FIRMWARE" in caldata_valid "202f" || caldata_extract "ART" 0x1000 0x2f20 ath10k_patch_mac $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 0x66) 2) ;; - mikrotik,hap-ac2) + mikrotik,hap-ac2 |\ + mikrotik,hap-ac3) wlan_data="/sys/firmware/mikrotik/hard_config/wlan_data" ( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0x0 0x2f20 ) || \ ( [ -d "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data/data_0" 0x0 0x2f20 ) @@ -266,7 +267,8 @@ case "$FIRMWARE" in caldata_valid "202f" || caldata_extract "ART" 0x5000 0x2f20 ath10k_patch_mac $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 0x66) 3) ;; - mikrotik,hap-ac2|\ + mikrotik,hap-ac2 |\ + mikrotik,hap-ac3 |\ mikrotik,sxtsq-5-ac) wlan_data="/sys/firmware/mikrotik/hard_config/wlan_data" ( [ -f "$wlan_data" ] && caldata_sysfsload_from_file "$wlan_data" 0x8000 0x2f20 ) || \ diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh index 605b1e7881..02833ebc3d 100644 --- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh @@ -55,6 +55,24 @@ zyxel_do_upgrade() { fi } +platform_do_upgrade_mikrotik_nand() { + local fw_mtd=$(find_mtd_part kernel) + fw_mtd="${fw_mtd/block/}" + [ -n "$fw_mtd" ] || return + + local board_dir=$(tar tf "$1" | grep -m 1 '^sysupgrade-.*/$') + board_dir=${board_dir%/} + [ -n "$board_dir" ] || return + + local kernel_len=$(tar xf "$1" ${board_dir}/kernel -O | wc -c) + [ -n "$kernel_len" ] || return + + tar xf "$1" ${board_dir}/kernel -O | ubiformat "$fw_mtd" -y -S $kernel_len -f - + + CI_KERNPART="none" + nand_do_upgrade "$1" +} + platform_do_upgrade() { case "$(board_name)" in 8dev,jalapeno |\ @@ -119,6 +137,9 @@ platform_do_upgrade() { [ "$(rootfs_type)" = "tmpfs" ] && mtd erase firmware default_do_upgrade "$1" ;; + mikrotik,hap-ac3) + platform_do_upgrade_mikrotik_nand "$1" + ;; netgear,rbr50 |\ netgear,rbs50 |\ netgear,srr60 |\ -- cgit v1.2.3