mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 17:42:41 +00:00
**Specifications:**
SOC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz)
Flash: SPI NOR 8MB (Winbond W25Q64DW) + NAND 128MB (Winbond W25N01GWZEIG)
Memory: 512MB DDR3L
Standard: 802.11ax/ac/b/g/n
2.4G Frequency: 2.4GHz - 2.484GHz
2.4G Wi-Fi standard: 802.11b/g/n/ax
5G Chipset: QCN9074
5G Frequency: 5.150GHz~5.850GHz
5G Wi-Fi Standard: 802.11 a/n/ac/ax
Buttons: 1 * Reset button, press 10 seconds to revert to default setting
2.4G Antenna: 2*2.4GHz/5.8GHz dual band antenna: 4dBi
5G Antenna: 2*5.8G antenna: 4dBi
Data Rate: 2.4GHz: 574Mbps, 5GHz:4800Mbps
Power: PoE 802.3at,DC2.0 12V/2A
Max Power Consumption: < 22W
LED Light: WAN, LAN, tricolor LED(sys-red, 2.4G-green, 5.8G-blue)
**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 <your_tftp_server_ip>:initramfs.bin
bootm
```
- Once boot completed and you get the openwrt shell execute below commands:
```
device=um335ax
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 <your_web_server_ip>/${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 <your_tftp_server_ip>:initramfs.bin
bootm
```
- Once boot completed and you get the openwrt shell execute below commands:
```
cd /tmp && wget <your_web_server_ip>/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 <your_tftp_server_ip>:factory.bin
#After downloading is finished:
imxtract 0x44000000 ubi
flash rootfs
flash rootfs_1
reset
```
Signed-off-by: Shubham Vishwakarma <shubhamvis98@fossfrog.in>
189 lines
3.9 KiB
Bash
Executable File
189 lines
3.9 KiB
Bash
Executable File
. /lib/functions/system.sh
|
|
|
|
|
|
RAMFS_COPY_BIN='fw_setenv'
|
|
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock /tmp/downgrade'
|
|
|
|
qca_do_upgrade() {
|
|
local tar_file="$1"
|
|
|
|
local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
|
|
board_dir=${board_dir%/}
|
|
local dev=$(find_mtd_chardev "0:HLOS")
|
|
|
|
tar Oxf $tar_file ${board_dir}/kernel | mtd write - ${dev}
|
|
|
|
if [ -n "$UPGRADE_BACKUP" ]; then
|
|
tar Oxf $tar_file ${board_dir}/root | mtd -j "$UPGRADE_BACKUP" write - rootfs
|
|
else
|
|
tar Oxf $tar_file ${board_dir}/root | mtd write - rootfs
|
|
fi
|
|
}
|
|
|
|
find_mmc_part() {
|
|
local DEVNAME PARTNAME
|
|
|
|
if grep -q "$1" /proc/mtd; then
|
|
echo "" && return 0
|
|
fi
|
|
|
|
for DEVNAME in /sys/block/mmcblk*/mmcblk*p*; do
|
|
PARTNAME=$(grep PARTNAME ${DEVNAME}/uevent | cut -f2 -d'=')
|
|
[ "$PARTNAME" = "$1" ] && echo "/dev/$(basename $DEVNAME)" && return 0
|
|
done
|
|
}
|
|
|
|
do_flash_emmc() {
|
|
local tar_file=$1
|
|
local emmcblock=$(find_mmc_part $2)
|
|
local board_dir=$3
|
|
local part=$4
|
|
|
|
[ -z "$emmcblock" ] && {
|
|
echo failed to find $2
|
|
return
|
|
}
|
|
|
|
echo erase $4
|
|
dd if=/dev/zero of=${emmcblock} 2> /dev/null
|
|
echo flash $4
|
|
tar Oxf $tar_file ${board_dir}/$part | dd of=${emmcblock}
|
|
}
|
|
|
|
emmc_do_upgrade() {
|
|
local tar_file="$1"
|
|
|
|
local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
|
|
board_dir=${board_dir%/}
|
|
do_flash_emmc $tar_file '0:HLOS' $board_dir kernel
|
|
do_flash_emmc $tar_file 'rootfs' $board_dir root
|
|
|
|
local emmcblock="$(find_mmc_part "rootfs_data")"
|
|
if [ -e "$emmcblock" ]; then
|
|
mkfs.ext4 -F "$emmcblock"
|
|
fi
|
|
}
|
|
|
|
platform_check_image() {
|
|
local magic_long="$(get_magic_long "$1")"
|
|
board=$(board_name)
|
|
case $board in
|
|
cig,wf186w|\
|
|
cig,wf186h|\
|
|
sonicfi,rap630c-311g|\
|
|
sonicfi,rap630w-311g|\
|
|
sonicfi,rap630w-312g|\
|
|
sonicfi,rap630e|\
|
|
cybertan,eww631-a1|\
|
|
cybertan,eww631-b1|\
|
|
edgecore,eap104|\
|
|
emplus,wap385c|\
|
|
wallys,dr5018|\
|
|
hfcl,ion4x_w|\
|
|
hfcl,ion4xi_w|\
|
|
indio,um-325ax-v2|\
|
|
indio,um-335ax|\
|
|
indio,um-525axp|\
|
|
optimcloud,d60|\
|
|
optimcloud,d60-5g|\
|
|
optimcloud,d50|\
|
|
optimcloud,d50-5g|\
|
|
yuncore,fap655|\
|
|
glinet,b3000|\
|
|
udaya,a6-id2|\
|
|
udaya,a6-od2|\
|
|
edgecore,oap101|\
|
|
edgecore,oap101-6e|\
|
|
edgecore,oap101e|\
|
|
emplus,wap581|\
|
|
edgecore,oap101e-6e)
|
|
[ "$magic_long" = "73797375" ] && return 0
|
|
;;
|
|
esac
|
|
return 1
|
|
}
|
|
|
|
platform_do_upgrade() {
|
|
CI_UBIPART="rootfs"
|
|
CI_ROOTPART="ubi_rootfs"
|
|
CI_IPQ807X=1
|
|
|
|
board=$(board_name)
|
|
case $board in
|
|
indio,um-325ax-v2|\
|
|
indio,um-335ax|\
|
|
indio,um-525axp|\
|
|
edgecore,oap101|\
|
|
edgecore,oap101-6e|\
|
|
edgecore,oap101e|\
|
|
edgecore,oap101e-6e|\
|
|
edgecore,eap104)
|
|
if [ "$(find_mtd_chardev rootfs)" ]; then
|
|
CI_UBIPART="rootfs"
|
|
else
|
|
if grep -q rootfs1 /proc/cmdline; then
|
|
CI_UBIPART="rootfs2"
|
|
CI_FWSETENV="active 2"
|
|
else
|
|
CI_UBIPART="rootfs1"
|
|
CI_FWSETENV="active 1"
|
|
fi
|
|
fi
|
|
nand_upgrade_tar "$1"
|
|
;;
|
|
glinet,b3000)
|
|
CI_UBIPART="rootfs1"
|
|
[ "$(find_mtd_chardev rootfs)" ] && CI_UBIPART="rootfs"
|
|
nand_upgrade_tar "$1"
|
|
;;
|
|
hfcl,ion4x_w|\
|
|
hfcl,ion4xi_w)
|
|
wp_part=$(fw_printenv primary | cut -d = -f2)
|
|
echo "Current Primary is $wp_part"
|
|
if [[ $wp_part == 1 ]]; then
|
|
CI_UBIPART="rootfs"
|
|
CI_FWSETENV="primary 0"
|
|
else
|
|
CI_UBIPART="rootfs_1"
|
|
CI_FWSETENV="primary 1"
|
|
fi
|
|
nand_upgrade_tar "$1"
|
|
;;
|
|
cig,wf186w|\
|
|
cig,wf186h|\
|
|
emplus,wap385c|\
|
|
udaya,a6-id2|\
|
|
udaya,a6-od2|\
|
|
wallys,dr5018|\
|
|
optimcloud,d60|\
|
|
optimcloud,d60-5g|\
|
|
optimcloud,d50|\
|
|
optimcloud,d50-5g|\
|
|
emplus,wap581|\
|
|
yuncore,fap655)
|
|
[ -f /proc/boot_info/rootfs/upgradepartition ] && {
|
|
CI_UBIPART="$(cat /proc/boot_info/rootfs/upgradepartition)"
|
|
CI_BOOTCFG=1
|
|
}
|
|
nand_upgrade_tar "$1"
|
|
;;
|
|
cybertan,eww631-a1|\
|
|
cybertan,eww631-b1|\
|
|
sonicfi,rap630c-311g|\
|
|
sonicfi,rap630w-311g|\
|
|
sonicfi,rap630w-312g|\
|
|
sonicfi,rap630e)
|
|
boot_part=$(fw_printenv bootfrom | cut -d = -f2)
|
|
echo "Current bootfrom is $boot_part"
|
|
if [[ $boot_part == 1 ]]; then
|
|
CI_UBIPART="rootfs"
|
|
CI_FWSETENV="bootfrom 0"
|
|
elif [[ $boot_part == 0 ]]; then
|
|
CI_UBIPART="rootfs_1"
|
|
CI_FWSETENV="bootfrom 1"
|
|
fi
|
|
nand_upgrade_tar "$1"
|
|
;;
|
|
esac
|
|
}
|