0
0
mirror of https://git.openwrt.org/openwrt/openwrt.git/ synced 2025-10-05 21:42:43 +02:00

ramips: add support for Plasma Cloud PAX1800-Lite

Plasma Cloud PAX1800-Lite is a dual-band Wi-Fi 6 router, based on MediaTek
MT7621A + MT79x5D platform.

Specifications:

- SOC:      MT7621AT (880 MHz)
- DRAM:     DDR3 448 MiB (Nanya NT5CC256M16DP-DI)
- Flash:    2 MiB SPI NOR (S25FL016K) + 128 MB SPI NAND (W25N02KVZEIR)
- Ethernet: 1x 10/100/1000 Mbps (SOC's built-in switch, with PoE+)
- Wi-Fi:    2x2:2 2.4/5 GHz (MT7905DAN + MT7975DN)
            (MT7905DAN doesn't support background DFS scan/BT)
- LED:      tri-color LED for status (red, blue, green)
- Buttons:  1x (reset)
- Antenna:  4x internal, non-detachable omnidirectional
- UART:     1x 4-pin (2.54 mm pitch, marked as "3V3 G/RX GND W/TX")
- Power:    12 V DC/2 A (DC jack)

MAC addresses:

WAN:     54:9C:27:xx:xx:00 (factory 0x3fff4, device label)
2.4 GHz: 54:9C:27:xx:xx:02 (factory 0x4, device label +2)
5 GHz:   54:9C:27:xx:xx:08 (factory 0xa, device label +8)

Flashing instructions:
======================

Various methods can be used to install the actual image on the flash.
Two easy ones are:

ap51-flash
----------

The tool ap51-flash (https://github.com/ap51-flash/ap51-flash) should be
used to transfer the image to the u-boot when the device boots up.

initramfs from TFTP
-------------------

The serial console (115200 8N1) must be used to access the u-boot shell
during bootup. It can then be used to first boot up the initramfs image
from a TFTP server (here with the IP 192.168.1.21):

    setenv serverip 192.168.1.21
    setenv ipaddr 192.168.1.1
    tftpboot 0x83001000 <filename-of-initramfs-kernel>.bin && bootm $fileaddr

The actual sysupgrade image can then be transferred (on the LAN port) to the
device via

    scp <filename-of-squashfs-sysupgrade>.bin root@192.168.1.1:/tmp/

On the device, the sysupgrade must then be started using

    sysupgrade -n /tmp/<filename-of-squashfs-sysupgrade>.bin

Signed-off-by: Sven Eckelmann (Plasma Cloud) <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20152
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
Sven Eckelmann (Plasma Cloud)
2023-10-12 13:57:32 +02:00
committed by Hauke Mehrtens
parent 6733b9ab7c
commit c7c54f3134
9 changed files with 2391 additions and 0 deletions

View File

@@ -640,6 +640,19 @@ define Build/openmesh-image
"$(call param_get_default,rootfs,$(1),$@)" "rootfs"
endef
define Build/dualboot-datachk-nand-image
$(TOPDIR)/scripts/nand-fwupgradecfg-gen.sh \
"$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" \
"$@-fwupgrade.cfg" \
"$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" \
"$(call param_get_default,rootfs,$(1),$@)"
$(TOPDIR)/scripts/combined-ext-image.sh \
"$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" "$@" \
"$@-fwupgrade.cfg" "fwupgrade.cfg" \
"$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" "kernel" \
"$(call param_get_default,rootfs,$(1),$@)" "rootfs"
endef
define Build/pad-extra
dd if=/dev/zero bs=$(1) count=1 >> $@
endef

View File

@@ -32,6 +32,7 @@ allnet,all0256n-4m|\
allnet,all0256n-8m|\
allnet,all5002|\
asiarf,ap7621-004-v3|\
plasmacloud,pax1800-lite|\
yuncore,ax820)
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000"
;;

View File

@@ -0,0 +1,61 @@
#!/bin/sh
#
# Copyright (C) 2011 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
usage() {
echo "Usage: $0 <TARGET> <out file path> <kernel path> <rootfs path>"
exit 1
}
[ "$#" -lt 4 ] && usage
CE_TYPE=$1
CFG_OUT=$2
KERNEL_PATH=$3
ROOTFS_PATH=$4
case $CE_TYPE in
PAX1800-Lite)
EXTRA_SETENV=""
;;
*)
echo "Error - unsupported ce type: $CE_TYPE"
exit 1
;;
esac
# kernel calculation
KERNEL_MD5=$(mkhash md5 $KERNEL_PATH)
KERNEL_SHA256=$(mkhash sha256 $KERNEL_PATH)
KERNEL_SIZE=$(stat -c%s "$KERNEL_PATH")
KERNEL_CHECK_SIZE=$(printf '0x%x' $KERNEL_SIZE)
# rootfs calculation
ROOTFS_MD5=$(mkhash md5 $ROOTFS_PATH)
ROOTFS_SHA256=$(mkhash sha256 $ROOTFS_PATH)
ROOTFS_SIZE=$(stat -c%s "$ROOTFS_PATH")
ROOTFS_CHECK_SIZE=$(printf '0x%x' $ROOTFS_SIZE)
cat << EOF > $CFG_OUT
[kernel]
filename=kernel
md5sum=$KERNEL_MD5
filemd5sum=$KERNEL_MD5
filesha256sum=$KERNEL_SHA256
checksize=$KERNEL_CHECK_SIZE
ubi=1
cmd_success=setenv bootseq 1,2; $EXTRA_SETENV; saveenv
[rootfs]
filename=rootfs
md5sum=$ROOTFS_MD5
filemd5sum=$ROOTFS_MD5
filesha256sum=$ROOTFS_SHA256
checksize=$ROOTFS_CHECK_SIZE
ubi=1
cmd_success=setenv bootseq 1,2; $EXTRA_SETENV; saveenv
EOF

File diff suppressed because it is too large Load Diff

View File

@@ -2528,6 +2528,21 @@ define Device/planex_vr500
endef
TARGET_DEVICES += planex_vr500
define Device/plasmacloud_pax1800-lite
$(Device/nand)
IMAGE_SIZE := 60512k
DEVICE_VENDOR := Plasma Cloud
DEVICE_MODEL := PAX1800-Lite
DEVICE_DTS_CONFIG := config@plasmacloud.pax1800-lite
DEVICE_PACKAGES := kmod-mt7915-firmware kmod-usb3 kmod-hwmon-lm75
KERNEL_IN_UBI := 1
IMAGES += factory.bin
KERNEL := kernel-bin | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb | pad-to $$(BLOCKSIZE)
IMAGE/factory.bin := append-rootfs | pad-to 1k | dualboot-datachk-nand-image ce_type=PAX1800-Lite
IMAGE/sysupgrade.bin := append-rootfs | pad-to 1k | sysupgrade-tar rootfs=$$$$@ | append-metadata
endef
TARGET_DEVICES += plasmacloud_pax1800-lite
define Device/raisecom_msg1500-x-00
$(Device/nand)
$(Device/uimage-lzma-loader)

View File

@@ -51,6 +51,7 @@ ramips_setup_interfaces()
netgear,eax12|\
netgear,ex6150|\
netgear,wax214v2|\
plasmacloud,pax1800-lite|\
sercomm,na502|\
sercomm,na502s|\
thunder,timecloud|\

View File

@@ -0,0 +1,67 @@
# The U-Boot loader with the datachk patchset for dualbooting requires image
# sizes and checksums to be provided in the U-Boot environment.
# The devices come with 2 main partitions - while one is active
# sysupgrade will flash the other. The boot order is changed to boot the
# newly flashed partition. If the new partition can't be booted due to
# upgrade failures the previously used partition is loaded.
platform_do_upgrade_dualboot_datachk() {
local next_boot_part=1
local tar_file="$1"
local bootseq
local setenv_script="/tmp/fw_env_upgrade"
if [ "$(grep 'ubi.mtd=firmware1' /proc/cmdline)" ]; then
next_boot_part=2
bootseq="2,1"
else
next_boot_part=1
bootseq="1,2"
fi
local board_dir="$(tar tf "${tar_file}" | grep -m 1 '^sysupgrade-.*/$')"
board_dir="${board_dir%/}"
local kernel_length="$(tar xf "${tar_file}" "${board_dir}/kernel" -O | wc -c)"
local rootfs_length="$(tar xf "${tar_file}" "${board_dir}/root" -O | wc -c)"
local kernel_md5="$(tar xf "${tar_file}" "${board_dir}/kernel" -O | md5sum)"
kernel_md5="${kernel_md5%% *}"
local rootfs_md5="$(tar xf "${tar_file}" "${board_dir}/root" -O | md5sum)"
rootfs_md5="${rootfs_md5%% *}"
CI_UBIPART="firmware${next_boot_part}"
CI_KERNPART="kernel"
CI_ROOTPART="rootfs"
nand_upgrade_prepare_ubi "${rootfs_length}" "squashfs" "$kernel_length" "0"
local ubidev="$(nand_find_ubi "${CI_UBIPART}")"
local kern_ubivol="$(nand_find_volume "${ubidev}" "${CI_KERNPART}")"
tar xf "${tar_file}" "${board_dir}/kernel" -O | \
ubiupdatevol "/dev/${kern_ubivol}" -s "${kernel_length}" -
local root_ubivol="$(nand_find_volume "${ubidev}" "${CI_ROOTPART}")"
tar xf "${tar_file}" "${board_dir}/root" -O | \
ubiupdatevol "/dev/${root_ubivol}" -s "${rootfs_length}" -
[ -f "${UPGRADE_BACKUP}" ] && nand_restore_config "${UPGRADE_BACKUP}"
# write new new uboot-env
printf "bootseq ${bootseq}\n" > "${setenv_script}"
printf "kernel_%i_size 0x%08x\n" "${next_boot_part}" "${kernel_length}" >> "${setenv_script}"
printf "kernel_%i_checksum %s\n" "${next_boot_part}" "${kernel_md5}" >> "${setenv_script}"
printf "rootfs_%i_size 0x%08x\n" "${next_boot_part}" "${rootfs_length}" >> "${setenv_script}"
printf "rootfs_%i_checksum %s\n" "${next_boot_part}" "${rootfs_md5}" >> "${setenv_script}"
mkdir -p /var/lock
fw_setenv -s "${setenv_script}" || {
echo "failed to update U-Boot environment"
return 1
}
}

View File

@@ -185,6 +185,9 @@ platform_do_upgrade() {
iodata_mstc_set_flag "bootnum" "persist" "0x4" "1,2" "1"
nand_do_upgrade "$1"
;;
plasmacloud,pax1800-lite)
platform_do_upgrade_dualboot_datachk "$1"
;;
tplink,er605-v2)
echo "Upgrading tplink,er605-v2"
CI_UBIPART="firmware"

View File

@@ -164,6 +164,7 @@ CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_RAW_NAND=y
CONFIG_MTD_ROUTERBOOT_PARTS=y
CONFIG_MTD_SERCOMM_PARTS=y
CONFIG_MTD_SPI_NAND=y
CONFIG_MTD_SPI_NOR=y
CONFIG_MTD_SPI_NOR_USE_VARIABLE_ERASE=y
CONFIG_MTD_SPLIT_FIT_FW=y