Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Xiaomi AX3600 is a budget 802.11ax dual-band router/AP. Specifications: * CPU: Qualcomm IPQ8071A Quad core Cortex-A53 1.4GHz * RAM: 512MB of DDR3 * Storage: 256MB of parallel NAND * Ethernet: 4x1G RJ45 ports (QCA8075) with 1x status LED per port * WLAN: * PCI based Qualcomm QCA9889 1x1 802.11ac Wawe 2 for IoT * 2.4GHz: Qualcomm QCN5024 2x2 802.11b/g/n/ax 574 Mbps PHY rate * 5GHz: Qualcomm QCN5054 4x4@80MHz or 2x2@160MHz 802.11a/b/g/n/ac/ax 2402 PHY rate * LED-s: * System (Blue and Yellow) * IoT (Blue) * Network (Blue and Yellow) * Buttons: 1x Soft reset * Power: 12V DC Jack Installation instructions: Obtaining SSH access is mandatory https://openwrt.org/inbox/toh/xiaomi/xiaomi_ax3600#obtain_ssh_access Installation is done by the ubiformat method, through SSH: 1. Open an SSH shell to the router 2. Copy the file openwrt-ipq807x-generic-xiaomi_ax3600-initramfs-factory.ubi to the /tmp directory 3. Check which rootfs partition is your router booted in (0 = rootfs | 1 = rootfs_1): nvram get flag_boot_rootfs 4. Find the rootfs and rootfs_1 mtd indexes respectively: cat /proc/mtd Please confirm if mtd12 and mtd13 are the correct indexes from above! 5. Use the command ubiformat to flash the opposite mtd with UBI image: If nvram get flag_boot_rootfs returned 0: ubiformat /dev/mtd13 -y -f /tmp/openwrt-ipq807x-generic-xiaomi_ax3600-initramfs-factory.ubi -s 2048 -O 2048 && nvram set flag_boot_rootfs=1 && nvram set flag_last_success=1 && nvram commit otherwise: ubiformat /dev/mtd12 -y -f /tmp/openwrt-ipq807x-generic-xiaomi_ax3600-initramfs-factory.ubi -s 2048 -O 2048 && nvram set flag_boot_rootfs=0 && nvram set flag_last_success=0 && nvram commit 6. Reboot the device by: reboot Previous commands flashed an ubinized OpenWrt initramfs that will serve as the intermediate step since OpenWrt uses unified rootfs in order to fully utilize NAND and provide enough space for packages. Continue in order to pernamently flash OpenWrt: 7. SSH into OpenWrt from one of the LAN ports 8. Copy the file openwrt-ipq807x-generic-xiaomi_ax3600-squashfs-sysupgrade.bin to the /tmp directory 9. Sysupgrade the device: sysupgrade -n /tmp/openwrt-ipq807x-generic-xiaomi_ax3600-squashfs-sysupgrade.bin Device will reboot with OpenWrt, and then sysupgrade can be used to upgrade the device when desired. Signed-off-by: Robert Marko <robimarko@gmail.com> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
- Loading branch information
Showing
12 changed files
with
827 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
[ -e /etc/config/ubootenv ] && exit 0 | ||
|
||
touch /etc/config/ubootenv | ||
|
||
. /lib/uboot-envtools.sh | ||
. /lib/functions.sh | ||
|
||
board=$(board_name) | ||
|
||
case "$board" in | ||
xiaomi,ax3600) | ||
idx="$(find_mtd_index 0:appsblenv)" | ||
[ -n "$idx" ] && \ | ||
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x20000" | ||
idx2="$(find_mtd_index bdata)" | ||
[ -n "$idx2" ] && \ | ||
ubootenv_add_uci_sys_config "/dev/mtd$idx2" "0x0" "0x10000" "0x20000" | ||
;; | ||
esac | ||
|
||
config_load ubootenv | ||
config_foreach ubootenv_add_app_config | ||
|
||
exit 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
|
||
. /lib/functions/uci-defaults.sh | ||
|
||
board_config_update | ||
|
||
board=$(board_name) | ||
|
||
case "$board" in | ||
xiaomi,ax3600) | ||
ucidef_set_led_netdev "wan" "WAN" "blue:network" "wan" | ||
;; | ||
esac | ||
|
||
board_config_flush | ||
|
||
exit 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# | ||
# Copyright (c) 2015 The Linux Foundation. All rights reserved. | ||
# Copyright (c) 2011-2015 OpenWrt.org | ||
# | ||
|
||
. /lib/functions/uci-defaults.sh | ||
. /lib/functions/system.sh | ||
|
||
ipq807x_setup_interfaces() | ||
{ | ||
local board="$1" | ||
|
||
case "$board" in | ||
xiaomi,ax3600) | ||
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" "wan" | ||
;; | ||
*) | ||
echo "Unsupported hardware. Network interfaces not initialized" | ||
;; | ||
esac | ||
} | ||
|
||
board_config_update | ||
board=$(board_name) | ||
ipq807x_setup_interfaces $board | ||
board_config_flush | ||
|
||
exit 0 |
20 changes: 20 additions & 0 deletions
20
target/linux/ipq807x/base-files/etc/hotplug.d/firmware/11-ath11k-caldata
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
#!/bin/sh | ||
|
||
[ -e /lib/firmware/$FIRMWARE ] && exit 0 | ||
|
||
. /lib/functions/caldata.sh | ||
|
||
board=$(board_name) | ||
|
||
case "$FIRMWARE" in | ||
"ath11k/IPQ8074/hw2.0/cal-ahb-c000000.wifi.bin") | ||
case "$board" in | ||
xiaomi,ax3600) | ||
caldata_extract "0:art" 0x1000 0x20000 | ||
;; | ||
esac | ||
;; | ||
*) | ||
exit 1 | ||
;; | ||
esac |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/bin/sh /etc/rc.common | ||
|
||
START=99 | ||
|
||
boot() { | ||
case $(board_name) in | ||
xiaomi,ax3600) | ||
# OTA handling should not be used. Reset it just in case. | ||
fw_setenv flag_ota_reboot 0 | ||
# Not strictly needed but useful to handle partition crash condition | ||
fw_setenv flag_boot_success 1 | ||
;; | ||
esac | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
PART_NAME=firmware | ||
REQUIRE_IMAGE_METADATA=1 | ||
|
||
RAMFS_COPY_BIN='fw_printenv fw_setenv' | ||
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock' | ||
|
||
platform_check_image() { | ||
return 0; | ||
} | ||
|
||
platform_do_upgrade() { | ||
case "$(board_name)" in | ||
xiaomi,ax3600) | ||
# Enforce single partition. | ||
fw_setenv flag_boot_rootfs 0 | ||
fw_setenv flag_last_success 0 | ||
fw_setenv flag_boot_success 0 | ||
fw_setenv flag_try_sys1_failed 0 | ||
|
||
# Second partition won't work and can't be used | ||
# Flag is as failed by default | ||
fw_setenv flag_try_sys2_failed 1 | ||
|
||
# kernel and rootfs are placed on 2 different ubi | ||
# First ubiformat the kernel partition than do nand upgrade | ||
CI_KERN_UBIPART="ubi_kernel" | ||
CI_ROOT_UBIPART="rootfs" | ||
nand_do_upgrade "$1" | ||
;; | ||
*) | ||
default_do_upgrade "$1" | ||
;; | ||
esac | ||
} |
73 changes: 73 additions & 0 deletions
73
target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8071-ax3600.dts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT | ||
/* Copyright (c) 2021, Robert Marko <robimarko@gmail.com> */ | ||
|
||
/dts-v1/; | ||
|
||
#include "ipq8071-ax3600.dtsi" | ||
|
||
/ { | ||
model = "Xiaomi AX3600"; | ||
compatible = "xiaomi,ax3600", "qcom,ipq8074"; | ||
|
||
leds { | ||
compatible = "gpio-leds"; | ||
|
||
led_system_blue: system-blue { | ||
label = "blue:system"; | ||
gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>; | ||
}; | ||
|
||
led_system_yellow: system-yellow { | ||
label = "yellow:system"; | ||
gpios = <&tlmm 43 GPIO_ACTIVE_HIGH>; | ||
}; | ||
|
||
network-yellow { | ||
label = "yellow:network"; | ||
gpios = <&tlmm 22 GPIO_ACTIVE_HIGH>; | ||
}; | ||
|
||
network-blue { | ||
label = "blue:network"; | ||
gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>; | ||
}; | ||
|
||
aiot { | ||
label = "blue:aiot"; | ||
gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>; | ||
linux,default-trigger = "phy0tpt"; | ||
}; | ||
}; | ||
}; | ||
|
||
&pcie_qmp0 { | ||
status = "okay"; | ||
}; | ||
|
||
&pcie0 { | ||
status = "okay"; | ||
|
||
perst-gpio = <&tlmm 52 GPIO_ACTIVE_HIGH>; | ||
|
||
bridge@0,0 { | ||
reg = <0x00000000 0 0 0 0>; | ||
#address-cells = <3>; | ||
#size-cells = <2>; | ||
ranges; | ||
|
||
wifi0: wifi@1,0 { | ||
status = "okay"; | ||
|
||
compatible = "qcom,ath10k"; | ||
reg = <0x00010000 0 0 0 0>; | ||
|
||
qcom,ath10k-calibration-variant = "Xiaomi-AX3600"; | ||
nvmem-cell-names = "calibration"; | ||
nvmem-cells = <&caldata_qca9889>; | ||
}; | ||
}; | ||
}; | ||
|
||
&wifi { | ||
qcom,ath11k-calibration-variant = "Xiaomi-AX3600"; | ||
}; |
Oops, something went wrong.