2021-05-19 19:04:43 +00:00
|
|
|
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'
|
|
|
|
|
|
|
|
xiaomi_initramfs_prepare() {
|
|
|
|
# Wipe UBI if running initramfs
|
|
|
|
[ "$(rootfs_type)" = "tmpfs" ] || return 0
|
|
|
|
|
|
|
|
local rootfs_mtdnum="$( find_mtd_index rootfs )"
|
|
|
|
if [ ! "$rootfs_mtdnum" ]; then
|
|
|
|
echo "unable to find mtd partition rootfs"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
local kern_mtdnum="$( find_mtd_index ubi_kernel )"
|
|
|
|
if [ ! "$kern_mtdnum" ]; then
|
|
|
|
echo "unable to find mtd partition ubi_kernel"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
ubidetach -m "$rootfs_mtdnum"
|
|
|
|
ubiformat /dev/mtd$rootfs_mtdnum -y
|
|
|
|
|
|
|
|
ubidetach -m "$kern_mtdnum"
|
|
|
|
ubiformat /dev/mtd$kern_mtdnum -y
|
|
|
|
}
|
|
|
|
|
|
|
|
platform_check_image() {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
platform_pre_upgrade() {
|
|
|
|
case "$(board_name)" in
|
2022-01-01 22:12:51 +00:00
|
|
|
redmi,ax6|\
|
2021-05-19 19:04:43 +00:00
|
|
|
xiaomi,ax3600)
|
|
|
|
xiaomi_initramfs_prepare
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
platform_do_upgrade() {
|
|
|
|
case "$(board_name)" in
|
2022-01-01 22:17:51 +00:00
|
|
|
edimax,cax1800)
|
|
|
|
nand_do_upgrade "$1"
|
|
|
|
;;
|
ipq807x: add QNAP 301w
QNAP 301w is a AX WIFI router with 4 1G and 2 10G ports.
Specifications:
• CPU: Qualcomm IPQ8072A Quad core Cortex-A53 2.2GHz
• RAM: 1024MB of DDR3
• Storage: 4GB eMMC (contains kernel and rootfs) / 8MB NOR
(contains art and u-boot-env)
• Ethernet: 4x 1G RJ45 ports + 2 10G ports (Aquantia AQR113C)
• WLAN:
2.4GHz: Qualcomm QCN5024 4x4 (40 MHz) 802.11b/g/n/ax 1174 Mbps PHY rate
5GHz: Qualcomm QCN5054 4x4 (80 MHz) or 2x2 (160 MHz) 802.11a/b/g/n/ac/ax 2402 PHY rate
• LEDs:
7 x GPIO-controlled dual color LEDs + 2 GPIO-controlled single color LEDs
• Buttons: 1x soft reset / 1x WPS
• Power: 12V DC jack
A poulated serial header is onboard.
RX/TX is working, bootwait is active, secure boot is not enabled.
SSH can be activated in the stock firmware, hold WPS button til the second beep
(yes the router has a buzzer)
SSH is available on port 22200, login with user admin and
password "mac address of the router".
Installation Instructions:
• obtain serial access (https://openwrt.org/inbox/toh/qnap/301w#serial)
• stop auto boot
• setenv serverip 192.168.10.1
• setenv ipaddr 192.168.10.10
• tftpboot the initramfs image
(openwrt-ipq807x-generic-qnap_301w-initramfs-fit-uImage.itb)
• bootm
• make sure that current_entry is set to "0":
"fw_printenv -n current_entry" should be print "0". If not,
do "fw_setenv current_entry 0"
• copy openwrt-ipq807x-generic-qnap_301w-squashfs-sysupgrade.bin
to the device to /tmp folder
• sysupgrade -n /tmp/openwrt-ipq807x-generic-qnap_301w-squashfs-sysupgrade.bin
this flashes openwrt to the first kernel and rootfs partition (mmcblk0p1 / mmcblk0p4)
• reboot
Note: this leaves the second kernel / rootfs parition untouched. So if you want
to go back to stock, stop u-boot autoboot, "setenv current_entry 1" ,
"saveenv", "bootipq".
Stock firmware should start from the second partition.
Then do a firmwareupgrade in the stock gui, that should overwrite the openwrt
in the first partitions
Make 10G Aquantia phy's work:
The aquantia phy's need a firmware to work. This can either be loaded
in linux with a userspace tool or in u-boot.
I was not successfull to load the firmware in linux (aq-fw-download) but luckily there is
aq_load_fw available in u-boot. But first the right firmware needs to write
to the 0:ETHPHYFW mtd partition (it is empty on my device)
Grab the ethphy firmware image from:
https://github.com/kirdesde/nbg7815_gpl/blob/master/target/linux/ipq/ipq807x_64/prebuilt_images/AQR_ethphyfw.mbn
and scp that to openwrt.
Check the 0:ETHPHYFW partition number:
cat /proc/mtd|grep "0:ETHPHYFW", should be mtd10.
Backup the 0:ETHPHYFW partition:
dd if=/dev/mtd10 of=/tmp/ethphyfw.backup, scp ethphyfw.backup to a save place.
Write the new firmware image to the 0:ETHPHYFW partition:
"mtd erase /dev/mtd10", "mtd -n write AQR_ethphyfw.mbn /dev/mtd10".
Reboot to u-boot.
Check if aq_load_fw is working:
"aq_load_fw 0", that checks the firmware and if successfull,
loads iram and dram to one of the aquantia phy's.
If that worked, add the aq_load_fw to the bootcmd:
setenv bootcmd "aq_load_fw 0 && aq_load_fw 8 && bootipq"
"saveenv"
"reset"
Board reboots and the firmware load to both phy's should start and
then openwrt boots.
Check if the 10G ports work.
Note: lan port labeled "10G-2" is configured as WAN port as per default.
All other port are in the br-lan. This can be changed in the network config.
Signed-off-by: Dirk Buchwalder <buchwalder@posteo.de>
2022-01-01 22:20:19 +00:00
|
|
|
qnap,301w)
|
|
|
|
kernelname="0:HLOS"
|
|
|
|
rootfsname="rootfs"
|
|
|
|
mmc_do_upgrade "$1"
|
|
|
|
;;
|
2022-01-01 22:12:51 +00:00
|
|
|
redmi,ax6|\
|
2021-05-19 19:04:43 +00:00
|
|
|
xiaomi,ax3600)
|
|
|
|
# Make sure that UART is enabled
|
|
|
|
fw_setenv boot_wait on
|
|
|
|
fw_setenv uart_en 1
|
|
|
|
|
|
|
|
# Enforce single partition.
|
|
|
|
fw_setenv flag_boot_rootfs 0
|
|
|
|
fw_setenv flag_last_success 0
|
|
|
|
fw_setenv flag_boot_success 1
|
|
|
|
fw_setenv flag_try_sys1_failed 8
|
|
|
|
fw_setenv flag_try_sys2_failed 8
|
|
|
|
|
|
|
|
# Kernel and rootfs are placed in 2 different UBI
|
|
|
|
CI_KERN_UBIPART="ubi_kernel"
|
|
|
|
CI_ROOT_UBIPART="rootfs"
|
|
|
|
nand_do_upgrade "$1"
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
default_do_upgrade "$1"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|