2024-01-22 11:28:32 +02:00
PART_NAME = firmware
REQUIRE_IMAGE_METADATA = 1
RAMFS_COPY_BIN = 'fw_printenv fw_setenv head'
RAMFS_COPY_DATA = '/etc/fw_env.config /var/lock/fw_printenv.lock'
qualcommax: ipq60xx: add TP-Link EAP610-Outdoor support
TP-Link EAP610-Outdoor is a 802.11ax AP claiming AX1800 support. It is
wall or pole mountable, and rated for outdoor use. It can only be
powered via PoE.
Specifications:
---------------
* CPU: Qualcomm IPQ6018 Quad core Cortex-A53
* RAM: 512 MB
* Storage: ESMT PSR1GA30DT 128MB NAND
* Ethernet:
* Gigabit RJ45 port with PoE input
* WLAN:
* 2.4GHz/5GHz
* LEDs:
* Multi-color System LED (Green/Amber)
* Buttons:
* 1x Reset
* UART: 4-pin unpopulated header
* 1.8 V level, Pinout 1 - TX, 2 - RX, 3 - GND, 4 - 1.8V
Installation:
=============
Web UI method
-------------
Set up the device using the vendor's web UI. After that go to
Management->SSH and enable the "SSH Login" checkbox. Select "Save".
The connect to the machine via SSH:
ssh -o hostkeyalgorithms=ssh-rsa <ip_of_device>
Disable signature verification:
cliclientd stopcs
Rename the "-web-ui-factory" image to something less than 63
characters, maintaining the ".bin" suffix.
* Go to System -> Firmware Update.
* Under "New Firmware File", click "Browse" and select the image
* Select "Update" and confirm by clicking "OK".
If the update fails, the web UI should show an error message.
Otherwise, the device should reboot into OpenWRT.
TFTP method
-----------
To flash via tftp, first place the initramfs image on the TFTP server.
setenv serverip <ip of tftp server>
setenv ipaddr <ip in same subnet as tftp server>
tftpboot tplink_eap610-outdoor-initramfs-uImage.itb
bootm
This should boot OpenWRT. Once booted, flash the sysupgrade.bin image
using either luci or the commandline.
The tplink2022 image format
============================
The vendor images of this device are packaged in a format that does
not match any previous tplink formats. In order for flashing to work
from the vendor's web UI, firmware updates need to be packaged in
this format. The `tplink-mkimage-2022.py` is provided for this
purpose.
This script can also analyze vendor images, and extract the required
"support" string. This string is checked by the vendor firmware, and
images with a missing or incorrect string are rejected.
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/14922
Signed-off-by: Robert Marko <robimarko@gmail.com>
2022-08-07 10:15:35 -05:00
remove_oem_ubi_volume( ) {
local oem_volume_name = " $1 "
local oem_ubivol
local mtdnum
local ubidev
mtdnum = $( find_mtd_index " $CI_UBIPART " )
if [ ! " $mtdnum " ] ; then
return
fi
ubidev = $( nand_find_ubi " $CI_UBIPART " )
if [ ! " $ubidev " ] ; then
ubiattach --mtdn= " $mtdnum "
ubidev = $( nand_find_ubi " $CI_UBIPART " )
fi
if [ " $ubidev " ] ; then
oem_ubivol = $( nand_find_volume " $ubidev " " $oem_volume_name " )
[ " $oem_ubivol " ] && ubirmvol " /dev/ $ubidev " --name= " $oem_volume_name "
fi
}
tplink_get_boot_part( ) {
local cur_boot_part
local args
# Try to find rootfs from kernel arguments
read -r args < /proc/cmdline
for arg in $args ; do
local ubi_mtd_arg = ${ arg #ubi.mtd= }
case " $ubi_mtd_arg " in
rootfs| rootfs_1)
echo " $ubi_mtd_arg "
return
; ;
esac
done
# Fallback to u-boot env (e.g. when running initramfs)
cur_boot_part = " $( /usr/sbin/fw_printenv -n tp_boot_idx) "
case $cur_boot_part in
1)
echo rootfs_1
; ;
0| *)
echo rootfs
; ;
esac
}
tplink_do_upgrade( ) {
local new_boot_part
case $( tplink_get_boot_part) in
rootfs)
CI_UBIPART = "rootfs_1"
new_boot_part = 1
; ;
rootfs_1)
CI_UBIPART = "rootfs"
new_boot_part = 0
; ;
esac
fw_setenv -s - <<-EOF
tp_boot_idx $new_boot_part
EOF
remove_oem_ubi_volume ubi_rootfs
nand_do_upgrade " $1 "
}
2024-01-22 11:28:32 +02:00
platform_check_image( ) {
return 0;
}
2024-02-28 10:53:54 +03:00
yuncore_fap650_env_setup( ) {
local ubifile = $( board_name)
local active = $( fw_printenv -n owrt_slotactive)
[ -z " $active " ] && active = $( hexdump -s 0x94 -n 4 -e '4 "%d"' /dev/mtd$( find_mtd_index 0:bootconfig) )
cat > /tmp/env_tmp << EOF
owrt_slotactive = ${ active }
owrt_bootcount = 0
bootfile = ${ ubifile } .ubi
owrt_bootcountcheck = if test \$ owrt_bootcount > 4; then run owrt_tftprecover; fi ; if test \$ owrt_bootcount = 3; then run owrt_slotswap; else echo bootcountcheck successfull; fi
owrt_bootinc = if test \$ owrt_bootcount < 5; then echo save env part; setexpr owrt_bootcount \$ { owrt_bootcount} + 1 && saveenv; else echo save env skipped; fi ; echo current bootcount: \$ owrt_bootcount
bootcmd = run owrt_bootinc && run owrt_bootcountcheck && run owrt_slotselect && run owrt_bootlinux
owrt_bootlinux = echo booting linux... && ubi part fs && ubi read 0x44000000 kernel && bootm; reset
owrt_setslot0 = setenv bootargs console = ttyMSM0,115200n8 ubi.mtd= rootfs root = mtd:rootfs rootfstype = squashfs rootwait swiotlb = 1 && setenv mtdparts mtdparts = nand0:0x3c00000@0( fs)
owrt_setslot1 = setenv bootargs console = ttyMSM0,115200n8 ubi.mtd= rootfs_1 root = mtd:rootfs rootfstype = squashfs rootwait swiotlb = 1 && setenv mtdparts mtdparts = nand0:0x3c00000@0x3c00000( fs)
owrt_slotswap = setexpr owrt_slotactive 1 - \$ { owrt_slotactive} && saveenv && echo slot swapped. new active slot: \$ owrt_slotactive
owrt_slotselect = setenv mtdids nand0 = nand0,nand1= spi0.0; if test \$ owrt_slotactive = 0; then run owrt_setslot0; else run owrt_setslot1; fi
owrt_tftprecover = echo trying to recover firmware with tftp... && sleep 10 && dhcp && flash rootfs && flash rootfs_1 && setenv owrt_bootcount 0 && setenv owrt_slotactive 0 && saveenv && reset
owrt_env_ver = 7
EOF
fw_setenv --script /tmp/env_tmp
}
2024-01-22 11:28:32 +02:00
platform_do_upgrade( ) {
case " $( board_name) " in
qualcommax: ipq60xx: add support for Cambium Networks XE3-4
Cambium Networks XE3-4 is a tri-radio Wi-Fi 6/6E 4×4/2×2 AP.
Hardware:
Model: Cambium Networks XE3-4
CPU: IPQ6010/AP-CP01-C3, SoC Version: 1.0 @ 800 MHz
Memory: 1 GiB
Flash: 512 MiB Macronix MX30UF2G18AC + W25Q128FW
Ethernet: 1x 1 GbE (QCA8072)
1x 2.5 GbE (QCA8081)
Buttons: 1x Reset
Serial: TX, RX, GND
Baudrate: 115200
Radios: Qualcomm Atheros IPQ6018 802.11ax - 2x2 - 2GHz
Qualcomm Atheros IPQ6018 802.11ax - 2x2 - 5GHz
Qualcomm Atheros QCN9074 802.11ax - 4x4 - 5GHz or 6GHz
BLE 4.1
Power: 32.0W 802.3bt5 PoE++
25.5W 802.3at with USB, BT disabled
Size: 215mm x 215mm
Ports: 1x USB 2.0
Antenna: 6 GHz: 6.29 dBi, Omni 30 dBm
5 GHz: 6.12 dBi, Omni 31 dBm
2.4 GHz: 4.85 dBi, Omni 29 dBm
LEDs: Multi-color status LEDs
Mounting: Wall, ceiling or T-bar
Installation: Serial connection
1. Open the AP to get access to the board. Connect RX, TX and GND.
2. Power on the AP, and short the CS pin of the SPI flash with
one of the APs GND pins.
3. Transfer the initramfs image with TFTP
(Default server IP is 192.168.0.120)
# tftpboot factory.ubi
4. Flash the rootfs partition
# flash rootfs
5. Reboot the AP
# reset
Signed-off-by: Kristian Skramstad <kristian+github@83.no>
Link: https://github.com/openwrt/openwrt/pull/15633
Signed-off-by: Robert Marko <robimarko@gmail.com>
2024-05-20 09:49:31 +02:00
cambiumnetworks,xe3-4)
fw_setenv bootcount 0
nand_do_upgrade " $1 "
; ;
2024-03-20 23:05:07 +08:00
glinet,gl-ax1800| \
glinet,gl-axt1800| \
netgear,wax214| \
2025-04-02 23:01:16 +02:00
netgear,wax610| \
netgear,wax610y| \
2024-03-20 23:05:07 +08:00
qihoo,360v6)
nand_do_upgrade " $1 "
; ;
2024-12-21 18:49:15 -05:00
linksys,mr7350| \
linksys,mr7500)
2024-03-07 11:47:04 +02:00
boot_part = " $( fw_printenv -n boot_part) "
if [ " $boot_part " -eq "1" ] ; then
fw_setenv boot_part 2
CI_KERNPART = "alt_kernel"
CI_UBIPART = "alt_rootfs"
else
fw_setenv boot_part 1
CI_UBIPART = "rootfs"
fi
fw_setenv boot_part_ready 3
fw_setenv auto_recovery yes
nand_do_upgrade " $1 "
; ;
qualcommax: ipq60xx: add TP-Link EAP610-Outdoor support
TP-Link EAP610-Outdoor is a 802.11ax AP claiming AX1800 support. It is
wall or pole mountable, and rated for outdoor use. It can only be
powered via PoE.
Specifications:
---------------
* CPU: Qualcomm IPQ6018 Quad core Cortex-A53
* RAM: 512 MB
* Storage: ESMT PSR1GA30DT 128MB NAND
* Ethernet:
* Gigabit RJ45 port with PoE input
* WLAN:
* 2.4GHz/5GHz
* LEDs:
* Multi-color System LED (Green/Amber)
* Buttons:
* 1x Reset
* UART: 4-pin unpopulated header
* 1.8 V level, Pinout 1 - TX, 2 - RX, 3 - GND, 4 - 1.8V
Installation:
=============
Web UI method
-------------
Set up the device using the vendor's web UI. After that go to
Management->SSH and enable the "SSH Login" checkbox. Select "Save".
The connect to the machine via SSH:
ssh -o hostkeyalgorithms=ssh-rsa <ip_of_device>
Disable signature verification:
cliclientd stopcs
Rename the "-web-ui-factory" image to something less than 63
characters, maintaining the ".bin" suffix.
* Go to System -> Firmware Update.
* Under "New Firmware File", click "Browse" and select the image
* Select "Update" and confirm by clicking "OK".
If the update fails, the web UI should show an error message.
Otherwise, the device should reboot into OpenWRT.
TFTP method
-----------
To flash via tftp, first place the initramfs image on the TFTP server.
setenv serverip <ip of tftp server>
setenv ipaddr <ip in same subnet as tftp server>
tftpboot tplink_eap610-outdoor-initramfs-uImage.itb
bootm
This should boot OpenWRT. Once booted, flash the sysupgrade.bin image
using either luci or the commandline.
The tplink2022 image format
============================
The vendor images of this device are packaged in a format that does
not match any previous tplink formats. In order for flashing to work
from the vendor's web UI, firmware updates need to be packaged in
this format. The `tplink-mkimage-2022.py` is provided for this
purpose.
This script can also analyze vendor images, and extract the required
"support" string. This string is checked by the vendor firmware, and
images with a missing or incorrect string are rejected.
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/14922
Signed-off-by: Robert Marko <robimarko@gmail.com>
2022-08-07 10:15:35 -05:00
tplink,eap610-outdoor)
tplink_do_upgrade " $1 "
; ;
2024-02-28 10:53:54 +03:00
yuncore,fap650)
[ " $( fw_printenv -n owrt_env_ver 2>/dev/null) " != "7" ] && yuncore_fap650_env_setup
local active = " $( fw_printenv -n owrt_slotactive 2>/dev/null) "
if [ " $active " = "1" ] ; then
CI_UBIPART = "rootfs"
else
CI_UBIPART = "rootfs_1"
fi
fw_setenv owrt_bootcount 0
fw_setenv owrt_slotactive $(( 1 - active))
nand_do_upgrade " $1 "
; ;
2024-01-22 11:28:32 +02:00
*)
default_do_upgrade " $1 "
; ;
esac
}