From 4713ba9acb56b299719a98dd6ec37bf7cbd25eee Mon Sep 17 00:00:00 2001 From: Shubham Vishwakarma Date: Mon, 6 Oct 2025 16:46:41 +0530 Subject: [PATCH] ipq6018: add support for um-310ax-v1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **SPECIFICATIONS:** SOC: Qualcomm IPQ6018 (64-bit quad-core ARM Cortex-A53 @ 1.8Ghz) Flash: SPI NOR 8MB + NAND 128MB Memory: 1GB 2.4GHz Frequency Band: 2.4GHz ~ 2.484GHz (802.11 b/g/n/ax) 5GHz Frequency Band: 5.150GHz~5.850GHz (802.11 a/n/ac/ax) Wireless Speed: 2.4GHz: 574Mbps, 5GHz: 1201Mbps **BACKUP YOUR STOCK FIRMWARE:** - Put openwrt-*-initramfs-kernel.bin to your TFTP server and rename it to initramfs.bin - Enable serial console and enter to u-boot cli and exec these commands: ``` tftpboot :initramfs.bin bootm ``` - Once boot completed and you get the openwrt shell execute below commands: ``` device= mkdir -p /tmp/fw_backup; cd /tmp/fw_backup rootfs=$(cat /proc/mtd | grep \"rootfs\" | cut -d: -f1) rootfs_1=$(cat /proc/mtd | grep \"rootfs_1\" | cut -d: -f1) dd if=/dev/${rootfs} of=rootfs_${rootfs} bs=1M dd if=/dev/${rootfs_1} of=rootfs_1_${rootfs_1} bs=1M cp /sys/firmware/fdt fdt.dtb md5sum * > md5sum tar -cvzf /tmp/${device}.tar.gz . sum=$(md5sum /tmp/${device}.tar.gz | cut -d' ' -f1) mv /tmp/${device}.tar.gz /tmp/${device}_${sum}.tar.gz echo "stock fw backup saved to: /tmp/${device}_${sum}.tar.gz" ``` - Upload/save your backup to a safe place. **STOCK FIRMWARE RECOVERY:** - Boot initramfs image - Upload your backed-up stock fw tarball to the device using scp or download it from the device using wget. - Enter device ssh cli or tty and exec: ``` cd /tmp && wget /${stock_fw_backup}.tar.gz` tar -xpzf ${stock_fw_backup}.tar.gz rootfs=$(cat /proc/mtd | grep \"rootfs\" | cut -d: -f1) rootfs_1=$(cat /proc/mtd | grep \"rootfs_1\" | cut -d: -f1) ubiformat /dev/${rootfs} -y -f /tmp/rootfs_${rootfs} ubiformat /dev/${rootfs_1} -y -f /tmp/rootfs_1_${rootfs_1} reboot ``` **INSTALLATION:** 1. initramfs method - Put openwrt-*-initramfs-kernel.bin to your TFTP server and rename it to initramfs.bin - Enable serial console and enter to u-boot cli and exec these commands: ``` tftpboot :initramfs.bin bootm ``` - Once boot completed and you get the openwrt shell execute below commands: ``` cd /tmp && wget /factory.ubi` export rootfs=$(cat /proc/mtd | grep rootfs | cut -d: -f1) export rootfs_1=$(cat /proc/mtd | grep rootfs_1 | cut -d: -f1) ubiformat /dev/${rootfs} -y -f factory.ubi ubiformat /dev/${rootfs_1} -y -f factory.ubi reboot ``` 2. u-boot nand-factory.bin image method - Put openwrt-*-squashfs-nand-factory.bin to your TFTP server and enter u-boot cli and exec these commands: ``` tftpboot :factory.bin #After downloading is finished: imxtract 0x44000000 ubi flash rootfs flash rootfs_1 reset ``` Signed-off-by: Shubham Vishwakarma --- .../ipq60xx/base-files/etc/board.d/02_network | 2 + .../etc/hotplug.d/firmware/10-ath11k-caldata | 1 + .../base-files/lib/upgrade/platform.sh | 2 + .../qcom/qcom-ipq6018-indio-um-310ax-v1.dts | 321 ++++++++++++++++++ feeds/ipq807x_v5.4/ipq60xx/image/ipq60xx.mk | 2 +- profiles/indio_um-310ax-v1.yml | 13 + 6 files changed, 340 insertions(+), 1 deletion(-) create mode 100644 feeds/ipq807x_v5.4/ipq60xx/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-indio-um-310ax-v1.dts create mode 100644 profiles/indio_um-310ax-v1.yml diff --git a/feeds/ipq807x_v5.4/ipq60xx/base-files/etc/board.d/02_network b/feeds/ipq807x_v5.4/ipq60xx/base-files/etc/board.d/02_network index 5db02d385..3ef6ca989 100755 --- a/feeds/ipq807x_v5.4/ipq60xx/base-files/etc/board.d/02_network +++ b/feeds/ipq807x_v5.4/ipq60xx/base-files/etc/board.d/02_network @@ -20,6 +20,7 @@ qcom_setup_interfaces() ucidef_set_interface_wan "eth0 eth1" ucidef_set_interface_lan "" ;; + indio,um-310ax-v1|\ yuncore,ax840) ucidef_set_interface_lan "eth0" ucidef_set_interface_wan "eth1" @@ -79,6 +80,7 @@ qcom_setup_macs() emplus,wap386v2) wan_mac=$(cat /sys/class/net/eth0/address) ;; + indio,um-310ax-v1|\ yuncore,ax840) wan_mac=$(cat /sys/class/net/eth1/address) lan_mac=$(macaddr_add "$wan_mac" 1) diff --git a/feeds/ipq807x_v5.4/ipq60xx/base-files/etc/hotplug.d/firmware/10-ath11k-caldata b/feeds/ipq807x_v5.4/ipq60xx/base-files/etc/hotplug.d/firmware/10-ath11k-caldata index aadeef578..714658a2a 100755 --- a/feeds/ipq807x_v5.4/ipq60xx/base-files/etc/hotplug.d/firmware/10-ath11k-caldata +++ b/feeds/ipq807x_v5.4/ipq60xx/base-files/etc/hotplug.d/firmware/10-ath11k-caldata @@ -82,6 +82,7 @@ case "$FIRMWARE" in hfcl,ion4x_2|\ hfcl,ion4x_3|\ hfcl,ion4xe|\ + indio,um-310ax-v1|\ wallys,dr6018|\ wallys,dr6018-v4|\ yuncore,ax840|\ diff --git a/feeds/ipq807x_v5.4/ipq60xx/base-files/lib/upgrade/platform.sh b/feeds/ipq807x_v5.4/ipq60xx/base-files/lib/upgrade/platform.sh index d3073caae..63bf813ca 100755 --- a/feeds/ipq807x_v5.4/ipq60xx/base-files/lib/upgrade/platform.sh +++ b/feeds/ipq807x_v5.4/ipq60xx/base-files/lib/upgrade/platform.sh @@ -119,6 +119,7 @@ platform_check_image() { cig,wf196|\ glinet,ax1800|\ glinet,axt1800|\ + indio,um-310ax-v1|\ wallys,dr6018|\ wallys,dr6018-v4|\ edgecore,eap101|\ @@ -156,6 +157,7 @@ platform_do_upgrade() { ;; glinet,ax1800|\ glinet,axt1800|\ + indio,um-310ax-v1|\ wallys,dr6018|\ wallys,dr6018-v4|\ yuncore,ax840|\ diff --git a/feeds/ipq807x_v5.4/ipq60xx/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-indio-um-310ax-v1.dts b/feeds/ipq807x_v5.4/ipq60xx/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-indio-um-310ax-v1.dts new file mode 100644 index 000000000..b34cacc2c --- /dev/null +++ b/feeds/ipq807x_v5.4/ipq60xx/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-indio-um-310ax-v1.dts @@ -0,0 +1,321 @@ +/dts-v1/; +/* + * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "ipq6018.dtsi" +#include "ipq6018-cpr-regulator.dtsi" +#include + +/ { + #address-cells = <0x2>; + #size-cells = <0x2>; + model = "Indio UM-310AX V1"; + compatible = "indio,um-310ax-v1", "qcom,ipq6018-cp03", "qcom,ipq6018"; + interrupt-parent = <&intc>; + qcom,msm-id = <0x1A5 0x0>; + + aliases { + /* + * Aliases as required by u-boot + * to patch MAC addresses + */ + ethernet0 = "/soc/dp2"; + ethernet1 = "/soc/dp1"; + led-boot = &led_system; + led-failsafe = &led_system; + led-running = &led_system; + led-upgrade = &led_system; + }; + + chosen { + bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; +#ifdef __IPQ_MEM_PROFILE_256_MB__ + bootargs-append = " swiotlb=1"; +#else + bootargs-append = " swiotlb=1 coherent_pool=2M"; +#endif + }; + + /* + * +=========+==============+========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +--------+--------------+-------------------------+ + * | | | | + * | | | | + * | | | | + * | | | | + * | Linux | 0x41000000 | 139MB | + * | | | | + * | | | | + * | | | | + * +--------+--------------+-------------------------+ + * | TZ App | 0x49B00000 | 6MB | + * +--------+--------------+-------------------------+ + * + * From the available 145 MB for Linux in the first 256 MB, + * we are reserving 6 MB for TZAPP. + * + * Refer arch/arm64/boot/dts/qcom/qcom-ipq6018-memory.dtsi + * for memory layout. + */ + +/* TZAPP is enabled only in default memory profile */ +#if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) + reserved-memory { + tzapp:tzapp@49B00000 { /* TZAPPS */ + no-map; + reg = <0x0 0x49B00000 0x0 0x00600000>; + }; + }; +#endif +}; + +&tlmm { + uart_pins: uart_pins { + mux { + pins = "gpio44", "gpio45"; + function = "blsp2_uart"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + spi_0_pins: spi_0_pins { + mux { + pins = "gpio38", "gpio39", "gpio40", "gpio41"; + function = "blsp0_spi"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + button_pins: button_pins { + wps_button { + pins = "gpio9"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; + + mdio_pins: mdio_pinmux { + mux_0 { + pins = "gpio64"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + mux_1 { + pins = "gpio65"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + mux_2 { + pins = "gpio75"; + function = "gpio"; + bias-pull-up; + }; + }; + + leds_pins: leds_pins { + led_blue { + pins = "gpio35"; + function = "gpio"; + drive-strength = <2>; + bias-pull-down; + }; + + led_green { + pins = "gpio37"; + function = "gpio"; + drive-strength = <2>; + bias-pull-down; + }; + + led_red { + pins = "gpio32"; + function = "gpio"; + drive-strength = <2>; + bias-pull-down; + }; + }; + + button_pins: button_pins { + rst_button { + pins = "gpio19"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; +}; + +&soc { + mdio@90000 { + pinctrl-0 = <&mdio_pins>; + pinctrl-names = "default"; + phy-reset-gpio = <&tlmm 75 0>; + status = "ok"; + phy0: ethernet-phy@0 { + reg = <3>; + }; + phy1: ethernet-phy@1 { + reg = <4>; + }; + }; + + ess-switch@3a000000 { + switch_cpu_bmp = <0x01>; /* cpu port bitmap */ + switch_lan_bmp = <0x10>; /* lan port bitmap */ + switch_wan_bmp = <0x20>; /* wan port bitmap */ + switch_inner_bmp = <0x80>; /*inner port bitmap*/ + switch_mac_mode = <0x00>; /* mac mode for uniphy instance0*/ + switch_mac_mode1 = <0xff>; /* mac mode for uniphy instance1*/ + switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ + + qcom,port_phyinfo { + port@3 { + port_id = <0x04>; + phy_address = <0x03>; + }; + + port@4 { + port_id = <0x05>; + phy_address = <0x04>; + }; + }; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <0x04>; + reg = <0x3a001600 0x200>; + qcom,mactype = <0x00>; + local-mac-address = [00 00 00 00 00 00]; + qcom,link-poll = <0x01>; + qcom,phy-mdio-addr = <0x03>; + phy-mode = "sgmii"; + }; + + dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + qcom,id = <0x05>; + reg = <0x3a001800 0x200>; + qcom,mactype = <0x00>; + local-mac-address = [00 00 00 00 00 00]; + qcom,link-poll = <0x01>; + qcom,phy-mdio-addr = <0x04>; + phy-mode = "sgmii"; + }; + + gpio_keys { + compatible = "gpio-keys"; + + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + + reset { + label = "reset"; + linux,code = ; + gpios = <&tlmm 19 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; + + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&leds_pins>; + pinctrl-names = "default"; + + led_system: system { + label = "ax860:green:system"; + gpio = <&tlmm 37 GPIO_ACTIVE_HIGH>; + }; + + wlan2g { + label = "ax860:blue:wlan2g"; + gpio = <&tlmm 35 GPIO_ACTIVE_HIGH>; + }; + + wlan5g { + label = "ax860:red:wlan5g"; + gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>; + }; + }; +}; + +&blsp1_uart3 { + pinctrl-0 = <&uart_pins>; + pinctrl-names = "default"; + status = "ok"; +}; + +&spi_0 { + pinctrl-0 = <&spi_0_pins>; + pinctrl-names = "default"; + cs-select = <0>; + status = "ok"; + + m25p80@0 { + #address-cells = <1>; + #size-cells = <1>; + reg = <0>; + compatible = "n25q128a11"; + linux,modalias = "m25p80", "n25q128a11"; + spi-max-frequency = <50000000>; + use-default-sizes; + }; +}; + +&qpic_bam { + status = "ok"; +}; + +&qpic_nand { + status = "ok"; + + nand@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + nand-ecc-strength = <4>; + nand-ecc-step-size = <512>; + nand-bus-width = <8>; + }; +}; + +&ssphy_0 { + status = "ok"; +}; + +&qusb_phy_0 { + status = "ok"; +}; + +&usb3 { + status = "ok"; +}; + +&nss_crypto { + status = "ok"; +}; diff --git a/feeds/ipq807x_v5.4/ipq60xx/image/ipq60xx.mk b/feeds/ipq807x_v5.4/ipq60xx/image/ipq60xx.mk index 540dfe500..132900502 100644 --- a/feeds/ipq807x_v5.4/ipq60xx/image/ipq60xx.mk +++ b/feeds/ipq807x_v5.4/ipq60xx/image/ipq60xx.mk @@ -92,7 +92,7 @@ define Device/indio_um-310ax-v1 SUPPORTED_DEVICES := indio,um-310ax-v1 DEVICE_PACKAGES := ath11k-wifi-indio-um-310ax-v1 uboot-env endef -#TARGET_DEVICES += indio_um-310ax-v1 +TARGET_DEVICES += indio_um-310ax-v1 define Device/indio_um-510axp-v1 DEVICE_TITLE := Indio UM-510AXP V1 diff --git a/profiles/indio_um-310ax-v1.yml b/profiles/indio_um-310ax-v1.yml new file mode 100644 index 000000000..8efe6aab1 --- /dev/null +++ b/profiles/indio_um-310ax-v1.yml @@ -0,0 +1,13 @@ +--- +profile: indio_um-310ax-v1 +target: ipq60xx +subtarget: generic +description: Build image for the Indio UM-310AX V1 +image: bin/targets/ipq60xx/generic/openwrt-ipq60xx-indio_um-310ax-v1-squashfs-sysupgrade.tar +feeds: + - name: ipq807x + path: ../../feeds/ipq807x_v5.4 +include: + - ucentral-ap +packages: + - ipq60xx