[PATCH] brcm: add CLM BLOB files for Luxul devices
From: Dan Haab Add per-device regulatory configuration files for complete channel support and maximum transmission power per regulatory domain. Signed-off-by: Dan Haab --- WHENCE | 15 +++ ...rcmfmac4366c-pcie.luxul,xap-1610-v1.clm_blob | Bin 0 -> 28224 bytes ...rcmfmac4366c-pcie.luxul,xwr-3100-v1.clm_blob | Bin 0 -> 34368 bytes 3 files changed, 15 insertions(+) create mode 100644 brcm/brcmfmac4366c-pcie.luxul,xap-1610-v1.clm_blob create mode 100644 brcm/brcmfmac4366c-pcie.luxul,xwr-3100-v1.clm_blob diff --git a/WHENCE b/WHENCE index 32d71481..d3fc870d 100644 --- a/WHENCE +++ b/WHENCE @@ -2630,6 +2630,21 @@ File: brcm/brcmfmac4371-pcie.bin Licence: Redistributable. See LICENCE.broadcom_bcm43xx for details. +File: brcm/brcmfmac4366c-pcie.luxul,xap-1610-v1.clm_blob +File: brcm/brcmfmac4366c-pcie.luxul,xwr-3100-v1.clm_blob +Link: brcm/brcmfmac4366c-pcie.luxul,xwr-3150-v1.clm_blob -> brcmfmac4366c-pcie.luxul,xwr-3100-v1.clm_blob + +Licence: Redistributable. + +CLM (Country Locale Matrix) BLOB files contain regulatory configuration data. +It's to be parsed and used by a wireless driver. + +Permission is hereby granted to use and redistribute those files as required. + +These firmware files are distributed in the hope that they will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. + File: brcm/brcmfmac4373.bin File: cypress/cyfmac43012-sdio.bin Link: brcm/brcmfmac43012-sdio.bin -> ../cypress/cyfmac43012-sdio.bin diff --git a/brcm/brcmfmac4366c-pcie.luxul,xap-1610-v1.clm_blob b/brcm/brcmfmac4366c-pcie.luxul,xap-1610-v1.clm_blob new file mode 100644 index ..32ca36d7df48ecc5e899e89da347e16a8bcfdcb4 GIT binary patch literal 28224 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
[OpenWrt-Devel] [PATCH] bcm53xx: add support for Luxul FullMAC WiFi devices
From: Dan Haab This prepares support for models XAP-1610 and XWR-3150. Flashing requires using Luxul firmware version: 1) 8.1.0 or newer for XAP-1610 2) 6.4.0 or newer for XWR-3150 and uploading firmware using "Firmware Update" web UI page. Signed-off-by: Dan Haab --- .../bcm53xx/base-files/etc/board.d/02_network | 19 ++- target/linux/bcm53xx/image/Makefile | 18 ++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/target/linux/bcm53xx/base-files/etc/board.d/02_network b/target/linux/bcm53xx/base-files/etc/board.d/02_network index f86f12407f..b3d614d6a2 100755 --- a/target/linux/bcm53xx/base-files/etc/board.d/02_network +++ b/target/linux/bcm53xx/base-files/etc/board.d/02_network @@ -36,6 +36,15 @@ bcm53xx_setup_interfaces() ucidef_add_switch "switch0" \ "0:wan" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5@eth0" ;; + luxul,xap-1610-v1) + ucidef_add_switch "switch0" \ + "0:lan" "1:lan" "5@eth0" + ucidef_set_interface_lan "eth0.1" "dhcp" + ;; + luxul,xwr-3150-v1) + ucidef_add_switch "switch0" \ + "0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "4:wan" "5@eth0" + ;; phicomm,k3) ucidef_add_switch "switch0" \ "0:lan" "1:lan" "2:lan" "3:wan" "5@eth0" @@ -87,20 +96,28 @@ bcm53xx_setup_macs() case "$board" in asus,rt-ac87u) etXmacaddr=$(nvram get et1macaddr) + offset=1 ;; dlink,dir-885l | \ netgear,r7900 | \ netgear,r8000 | \ netgear,r8500) etXmacaddr=$(nvram get et2macaddr) + offset=1 + ;; + luxul,xwr-3100v1 | \ + luxul,xwr-3150-v1) + etXmacaddr=$(nvram get et0macaddr) + offset=5 ;; *) etXmacaddr=$(nvram get et0macaddr) + offset=1 ;; esac # If WAN MAC isn't explicitly set, calculate it using base MAC as reference. - [ -z "$wan_macaddr" -a -n "$etXmacaddr" ] && wan_macaddr=$(macaddr_add "$etXmacaddr" 1) + [ -z "$wan_macaddr" -a -n "$etXmacaddr" ] && wan_macaddr=$(macaddr_add "$etXmacaddr" $offset) [ -n "$wan_macaddr" ] && ucidef_set_interface_macaddr "wan" "$wan_macaddr" } diff --git a/target/linux/bcm53xx/image/Makefile b/target/linux/bcm53xx/image/Makefile index 610af03abe..b3ec1e99a2 100644 --- a/target/linux/bcm53xx/image/Makefile +++ b/target/linux/bcm53xx/image/Makefile @@ -291,6 +291,15 @@ define Device/luxul-abr-4500 endef TARGET_DEVICES += luxul-abr-4500 +define Device/luxul-xap-1610 + $(Device/luxul) + DEVICE_MODEL := XAP-1610 + DEVICE_PACKAGES := $(BRCMFMAC_4366C0) + IMAGE/lxl := append-rootfs | trx-serial | luxul-lxl + LUXUL_BOARD := XAP-1610 +endef +TARGET_DEVICES += luxul-xap-1610 + define Device/luxul-xbr-4500 $(Device/luxul) DEVICE_MODEL := XBR-4500 @@ -299,6 +308,15 @@ define Device/luxul-xbr-4500 endef TARGET_DEVICES += luxul-xbr-4500 +define Device/luxul-xwr-3150 + $(Device/luxul) + DEVICE_MODEL := XWR-3150 + DEVICE_PACKAGES := $(BRCMFMAC_4366C0) $(USB3_PACKAGES) + DEVICE_DTS := bcm47094-luxul-xwr-3150-v1 + LUXUL_BOARD := XWR-3150 +endef +TARGET_DEVICES += luxul-xwr-3150 + define Device/netgear DEVICE_VENDOR := NETGEAR IMAGES := chk -- 2.17.1 ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] [PATCH] bcm53xx: add support for Luxul FullMAC WiFi devices
From: Dan Haab This prepares support for models XAP-1610 and XWR-3150. Flashing requires using Luxul firmware version: 1) 8.1.0 or newer for XAP-1610 2) 6.4.0 or newer for XWR-3150 and uploading firmware using "Firmware Update" web UI page. Signed-off-by: Dan Haab --- .../bcm53xx/base-files/etc/board.d/02_network | 22 ++- target/linux/bcm53xx/image/Makefile | 18 +++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/target/linux/bcm53xx/base-files/etc/board.d/02_network b/target/linux/bcm53xx/base-files/etc/board.d/02_network index f86f12407f..9256cbdc54 100755 --- a/target/linux/bcm53xx/base-files/etc/board.d/02_network +++ b/target/linux/bcm53xx/base-files/etc/board.d/02_network @@ -36,6 +36,15 @@ bcm53xx_setup_interfaces() ucidef_add_switch "switch0" \ "0:wan" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5@eth0" ;; + luxul,xap-1610-v1) + ucidef_add_switch "switch0" \ + "0:lan" "1:lan" "5@eth0" + ucidef_set_interface_lan "eth0.1" "dhcp" + ;; + luxul,xwr-3150-v1) + ucidef_add_switch "switch0" \ + "0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "4:wan" "5@eth0" + ;; phicomm,k3) ucidef_add_switch "switch0" \ "0:lan" "1:lan" "2:lan" "3:wan" "5@eth0" @@ -100,7 +109,18 @@ bcm53xx_setup_macs() esac # If WAN MAC isn't explicitly set, calculate it using base MAC as reference. - [ -z "$wan_macaddr" -a -n "$etXmacaddr" ] && wan_macaddr=$(macaddr_add "$etXmacaddr" 1) + [ -z "$wan_macaddr" -a -n "$etXmacaddr" ] && { + local offset=1 + + case "$board" in + luxul,xwr-3100v1 | \ + luxul,xwr-3150-v1) + offset=5 + ;; + esac + + wan_macaddr=$(macaddr_add "$etXmacaddr" $offset) + } [ -n "$wan_macaddr" ] && ucidef_set_interface_macaddr "wan" "$wan_macaddr" } diff --git a/target/linux/bcm53xx/image/Makefile b/target/linux/bcm53xx/image/Makefile index 610af03abe..b3ec1e99a2 100644 --- a/target/linux/bcm53xx/image/Makefile +++ b/target/linux/bcm53xx/image/Makefile @@ -291,6 +291,15 @@ define Device/luxul-abr-4500 endef TARGET_DEVICES += luxul-abr-4500 +define Device/luxul-xap-1610 + $(Device/luxul) + DEVICE_MODEL := XAP-1610 + DEVICE_PACKAGES := $(BRCMFMAC_4366C0) + IMAGE/lxl := append-rootfs | trx-serial | luxul-lxl + LUXUL_BOARD := XAP-1610 +endef +TARGET_DEVICES += luxul-xap-1610 + define Device/luxul-xbr-4500 $(Device/luxul) DEVICE_MODEL := XBR-4500 @@ -299,6 +308,15 @@ define Device/luxul-xbr-4500 endef TARGET_DEVICES += luxul-xbr-4500 +define Device/luxul-xwr-3150 + $(Device/luxul) + DEVICE_MODEL := XWR-3150 + DEVICE_PACKAGES := $(BRCMFMAC_4366C0) $(USB3_PACKAGES) + DEVICE_DTS := bcm47094-luxul-xwr-3150-v1 + LUXUL_BOARD := XWR-3150 +endef +TARGET_DEVICES += luxul-xwr-3150 + define Device/netgear DEVICE_VENDOR := NETGEAR IMAGES := chk -- 2.17.1 ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] [PATCH 1/2] firmware-utils: add lxlfw tool for generating Luxul firmwares
From: Dan Haab It's a simple tool prepending image with a Luxul header. Signed-off-by: Dan Haab --- tools/firmware-utils/Makefile| 1 + tools/firmware-utils/src/lxlfw.c | 282 +++ 2 files changed, 283 insertions(+) create mode 100644 tools/firmware-utils/src/lxlfw.c diff --git a/tools/firmware-utils/Makefile b/tools/firmware-utils/Makefile index 2d2c96c..97c89ee 100644 --- a/tools/firmware-utils/Makefile +++ b/tools/firmware-utils/Makefile @@ -25,6 +25,7 @@ define Host/Compile mkdir -p $(HOST_BUILD_DIR)/bin $(call cc,addpattern) $(call cc,asustrx) + $(call cc,lxlfw) $(call cc,trx) $(call cc,otrx) $(call cc,motorola-bin) diff --git a/tools/firmware-utils/src/lxlfw.c b/tools/firmware-utils/src/lxlfw.c new file mode 100644 index 000..15678b8 --- /dev/null +++ b/tools/firmware-utils/src/lxlfw.c @@ -0,0 +1,282 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Luxul's firmware container format + * + * Copyright 2020 Legrand AV Inc. + */ + +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __BYTE_ORDER == __BIG_ENDIAN +#define cpu_to_le32(x) bswap_32(x) +#define cpu_to_le16(x) bswap_16(x) +#define le32_to_cpu(x) bswap_32(x) +#define le16_to_cpu(x) bswap_16(x) +#elif __BYTE_ORDER == __LITTLE_ENDIAN +#define cpu_to_le32(x) (x) +#define cpu_to_le16(x) (x) +#define le32_to_cpu(x) (x) +#define le16_to_cpu(x) (x) +#endif + +#define min(a, b) \ + ({ \ + __typeof__ (a) _a = (a);\ + __typeof__ (b) _b = (b);\ + _a < _b ? _a : _b; \ + }) + +#define max(a, b) \ + ({ \ + __typeof__ (a) _a = (a);\ + __typeof__ (b) _b = (b);\ + _a > _b ? _a : _b; \ + }) + +#define LXL_FLAGS_VENDOR_LUXUL 0x0001 + +struct lxl_hdr { + charmagic[4]; /* "LXL#" */ + uint32_tversion; + uint32_thdr_len; + uint8_t v0_end[0]; + /* Version: 1+ */ + uint32_tflags; + charboard[16]; + uint8_t v1_end[0]; + /* Version: 2+ */ + uint8_t release[4]; + uint8_t v2_end[0]; +} __packed; + +static uint32_t lxlfw_hdr_len(uint32_t version) +{ + switch (version) { + case 0: + return offsetof(struct lxl_hdr, v0_end); + case 1: + return offsetof(struct lxl_hdr, v1_end); + case 2: + return offsetof(struct lxl_hdr, v2_end); + default: + fprintf(stderr, "Unsupported version %d\n", version); + return 0; + } +} + +/** + * Info + **/ + +static int lxlfw_info(int argc, char **argv) { + struct lxl_hdr hdr; + uint32_t version; + uint32_t hdr_len; + char board[17]; + size_t bytes; + int err = 0; + FILE *lxl; + int flags; + + if (argc < 3) { + fprintf(stderr, "Missing argument\n"); + err = -EINVAL; + goto out; + } + + lxl = fopen(argv[2], "r"); + if (!lxl) { + fprintf(stderr, "Could not open \"%s\" file\n", argv[2]); + err = -ENOENT; + goto out; + } + + bytes = fread(&hdr, 1, sizeof(hdr), lxl); + if (bytes < offsetof(struct lxl_hdr, v0_end)) { + fprintf(stderr, "Input file too small to use Luxul format\n"); + err = -ENXIO; + goto err_close; + } + + if (memcmp(hdr.magic, "LXL#", 4)) { + fprintf(stderr, "File does not use Luxul's format\n"); + err = -EINVAL; + goto err_close; + } + + version = le32_to_cpu(hdr.version); + hdr_len = lxlfw_hdr_len(version); + if (bytes < hdr_len) { + fprintf(stderr, "Input file too small for header version %d\n", version); + err = -ENXIO; + goto err_close; + } + + printf("Format version:\t%d\n", version); + printf("Header length:\t%d\n", le32_to_cpu(hdr.hdr_len)); + if (version >= 1) { + printf("Flags:\t\t"); + flags = le32_to_cpu(hdr.flags); + if (flags & LXL_FLAGS_VENDOR_LUXUL) + printf("VENDOR_LUXUL "); + printf("\n"); + memcpy(board, hdr.board, sizeof
[OpenWrt-Devel] [PATCH 2/2] bcm53xx: build images for Luxul ABR-4500 and XBR-4500 routers
From: Dan Haab Luxul ABR-4500 and XBR-4500 devices are wired routers with 5 Ethernet ports and 1 USB 3.0 port. Flashing requires using Luxul firmware 6.4.0 or newer and uploading firmware using "Firmware Update" web UI page. Signed-off-by: Dan Haab --- .../bcm53xx/base-files/etc/board.d/02_network | 7 + target/linux/bcm53xx/image/Makefile| 30 ++ 2 files changed, 37 insertions(+) diff --git a/target/linux/bcm53xx/base-files/etc/board.d/02_network b/target/linux/bcm53xx/base-files/etc/board.d/02_network index 8c9e8b3..9fd26e7 100755 --- a/target/linux/bcm53xx/base-files/etc/board.d/02_network +++ b/target/linux/bcm53xx/base-files/etc/board.d/02_network @@ -24,6 +24,13 @@ buffalo,wzr-1750dhp) board_config_flush exit 0 ;; +luxul,abr-4500-v1|\ +luxul,xbr-4500-v1) + ucidef_add_switch "switch0" \ + "0:wan" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5@eth0" + board_config_flush + exit 0 + ;; phicomm,k3) ucidef_add_switch "switch0" \ "0:lan" "1:lan" "2:lan" "3:wan" "5@eth0" diff --git a/target/linux/bcm53xx/image/Makefile b/target/linux/bcm53xx/image/Makefile index 9f2731d..6f50974 100644 --- a/target/linux/bcm53xx/image/Makefile +++ b/target/linux/bcm53xx/image/Makefile @@ -83,6 +83,13 @@ define Build/asus-trx mv $@.new $@ endef +define Build/luxul-lxl + $(STAGING_DIR_HOST)/bin/lxlfw create $@.new \ + -i $@ \ + -b $(LUXUL_BOARD) + mv $@.new $@ +endef + define Build/seama-nand # Seama entity $(STAGING_DIR_HOST)/bin/oseama \ @@ -102,6 +109,7 @@ endef DEVICE_VARS += PRODUCTID SIGNATURE NETGEAR_BOARD_ID NETGEAR_REGION TPLINK_BOARD DEVICE_VARS += BUFFALO_TAG_PLATFORM BUFFALO_TAG_VERSION BUFFALO_TAG_MINOR +DEVICE_VARS += LUXUL_BOARD IEEE8021X := wpad-basic B43 := $(IEEE8021X) kmod-b43 @@ -262,6 +270,28 @@ define Device/linksys-ea9500 endef # TARGET_DEVICES += linksys-ea9500 +define Device/luxul + DEVICE_VENDOR := Luxul + IMAGES := lxl + IMAGE/lxl := append-ubi | trx-nand | luxul-lxl +endef + +define Device/luxul-abr-4500 + $(Device/luxul) + DEVICE_MODEL := ABR-4500 + DEVICE_PACKAGES := $(USB3_PACKAGES) + LUXUL_BOARD := ABR-4500 +endef +TARGET_DEVICES += luxul-abr-4500 + +define Device/luxul-xbr-4500 + $(Device/luxul) + DEVICE_MODEL := XBR-4500 + DEVICE_PACKAGES := $(USB3_PACKAGES) + LUXUL_BOARD := XBR-4500 +endef +TARGET_DEVICES += luxul-xbr-4500 + define Device/netgear DEVICE_VENDOR := NETGEAR IMAGES := chk -- 1.9.1 ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] [PATCH] bcm53xx: sysupgrade: support Luxul NAND devices
From: Dan Haab This adds support for UBI-aware sysupgrade using Luxul formats. --- target/linux/bcm53xx/base-files/lib/upgrade/platform.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh b/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh index 6b12c84..1686462 100644 --- a/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh @@ -402,6 +402,8 @@ platform_do_upgrade() { case "$file_type" in "chk") platform_do_upgrade_nand_trx "$1" $((0x$(get_magic_long_at "$1" 4)));; "cybertan") platform_do_upgrade_nand_trx "$1" 32;; + "lxl") platform_do_upgrade_nand_trx "$1" $(get_le_long_at "$1" 8);; + "lxlold") platform_do_upgrade_nand_trx "$1" 64;; "seama")platform_do_upgrade_nand_seama "$1";; "trx") platform_do_upgrade_nand_trx "$1";; esac -- 1.9.1 ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
[OpenWrt-Devel] [PATCH] brcm47xx: sysupgrade: support Luxul firmware format
From: Dan Haab Allow flashing Luxul devices using vendor firmware format. Signed-off-by: Dan Haab --- .../brcm47xx/base-files/lib/upgrade/platform.sh| 82 ++ 1 file changed, 82 insertions(+) diff --git a/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh b/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh index 537bac2..3e1b834 100644 --- a/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/brcm47xx/base-files/lib/upgrade/platform.sh @@ -1,11 +1,19 @@ PART_NAME=firmware +LXL_FLAGS_VENDOR_LUXUL=0x0001 + # $(1): file to read magic from # $(2): offset in bytes get_magic_long_at() { dd if="$1" skip=$2 bs=1 count=4 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"' } +# $(1): file to read LE long number from +# $(2): offset in bytes +get_le_long_at() { + echo $((0x$(dd if="$1" skip=$2 bs=1 count=4 2>/dev/null | hexdump -v -e '1/4 "%02x"'))) +} + platform_expected_image() { local machine=$(board_name) @@ -49,6 +57,16 @@ platform_expected_image() { "Linksys WRT310N V2") echo "cybertan 310N"; return;; "Linksys WRT610N V1") echo "cybertan 610N"; return;; "Linksys WRT610N V2") echo "cybertan 610N"; return;; + "Luxul XAP-310 V1") echo "lxl XAP-310"; return;; + "Luxul XAP-1210 V1")echo "lxl XAP-1210"; return;; + "Luxul XAP-1230 V1")echo "lxl XAP-1230"; return;; + "Luxul XAP-1240 V1")echo "lxl XAP-1240"; return;; + "Luxul XAP-1500 V1")echo "lxl XAP-1500"; return;; + "Luxul ABR-4400 V1")echo "lxl ABR-4400"; return;; + "Luxul XBR-4400 V1")echo "lxl XBR-4400"; return;; + "Luxul XVW-P30 V1") echo "lxl XVW-P30"; return;; + "Luxul XWR-600 V1") echo "lxl XWR-600"; return;; + "Luxul XWR-1750 V1")echo "lxl XWR-1750"; return;; esac } @@ -65,6 +83,10 @@ brcm47xx_identify() { echo "chk" return ;; + "4c584c23") + echo "lxl" + return + ;; esac magic=$(get_magic_long_at "$1" 14) @@ -73,6 +95,12 @@ brcm47xx_identify() { return } + magic=$(get_magic_long_at "$1" 60) + [ "$magic" = "4c584c23" ] && { + echo "lxlold" + return + } + echo "unknown" } @@ -122,6 +150,48 @@ platform_check_image() { notify_firmware_test_result "trx_valid" 1 fi ;; + "lxl") + local hdr_len=$(get_le_long_at "$1" 8) + local flags=$(get_le_long_at "$1" 12) + local board=$(dd if="$1" skip=16 bs=1 count=16 2>/dev/null | hexdump -v -e '1/1 "%c"') + local dev_board=$(platform_expected_image) + echo "Found Luxul image for board $board" + + [ -n "$dev_board" -a "lxl $board" != "$dev_board" ] && { + echo "Firmware ($board) doesn't match device ($dev_board)" + error=1 + } + + [ $((flags & LXL_FLAGS_VENDOR_LUXUL)) -gt 0 ] && notify_firmware_no_backup + + if ! otrx check "$1" -o "$hdr_len"; then + echo "No valid TRX firmware in the Luxul image" + notify_firmware_test_result "trx_valid" 0 + error=1 + else + notify_firmware_test_result "trx_valid" 1 + fi + ;; + "lxlold") + local board_id=$(dd if="$1" skip=48 bs=1 count=12 2>/dev/null | hexdump -v -e '1/1 "%c"') + local dev_board_id=$(platform_expected_image) + echo "Found Luxul image with device board_id $board_id" + + [ -n "$dev_board_id" -a "lxl $board_id" != "$dev_board_id" ] && { +
[OpenWrt-Devel] [PATCH] bcm53xx: sysupgrade: support Luxul firmware format
From: Dan Haab Allow flashing Luxul devices using vendor firmware format. The next step will be building proper images once they are conirmed to work. Signed-off-by: Dan Haab --- .../bcm53xx/base-files/lib/upgrade/platform.sh | 84 ++ 1 file changed, 84 insertions(+) diff --git a/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh b/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh index a337889..916b74e 100644 --- a/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh @@ -2,12 +2,20 @@ RAMFS_COPY_BIN='osafeloader oseama otrx' PART_NAME=firmware +LXL_FLAGS_VENDOR_LUXUL=0x0001 + # $(1): file to read magic from # $(2): offset in bytes get_magic_long_at() { dd if="$1" skip=$2 bs=1 count=4 2>/dev/null | hexdump -v -e '1/1 "%02x"' } +# $(1): file to read LE long number from +# $(2): offset in bytes +get_le_long_at() { + echo $((0x$(dd if="$1" skip=$2 bs=1 count=4 2>/dev/null | hexdump -v -e '1/4 "%02x"'))) +} + platform_flash_type() { # On NAND devices "rootfs" is UBI volume, so won't be find in /proc/mtd grep -q "\"rootfs\"" /proc/mtd && { @@ -23,6 +31,18 @@ platform_expected_image() { case "$machine" in "dlink,dir-885l") echo "seama wrgac42_dlink.2015_dir885l"; return;; + "luxul,abr-4500-v1")echo "lxl ABR-4500"; return;; + "luxul,xap-810-v1") echo "lxl XAP-810"; return;; + "luxul,xap-1410v1") echo "lxl XAP-1410"; return;; + "luxul,xap-1440-v1")echo "lxl XAP-1440"; return;; + "luxul,xap-1510v1") echo "lxl XAP-1510"; return;; + "luxul,xap-1610-v1")echo "lxl XAP-1610"; return;; + "luxul,xbr-4500-v1")echo "lxl XBR-4500"; return;; + "luxul,xwc-1000") echo "lxl XWC-1000"; return;; + "luxul,xwc-2000") echo "lxl XWC-2000"; return;; + "luxul,xwr-1200v1") echo "lxl XWR-1200"; return;; + "luxul,xwr-3100v1") echo "lxl XWR-3100"; return;; + "luxul,xwr-3150-v1")echo "lxl XWR-3150"; return;; "netgear,r6250v1") echo "chk U12H245T00_NETGEAR"; return;; "netgear,r6300v2") echo "chk U12H240T00_NETGEAR"; return;; "netgear,r7000")echo "chk U12H270T00_NETGEAR"; return;; @@ -46,6 +66,10 @@ platform_identify() { echo "chk" return ;; + "4c584c23") + echo "lxl" + return + ;; "5ea3a417") echo "seama" return @@ -58,6 +82,12 @@ platform_identify() { return } + magic=$(get_magic_long_at "$1" 60) + [ "$magic" = "4c584c23" ] && { + echo "lxlold" + return + } + if osafeloader info "$1" > /dev/null 2>&1; then echo "safeloader" return @@ -112,6 +142,48 @@ platform_check_image() { notify_firmware_test_result "trx_valid" 1 fi ;; + "lxl") + local hdr_len=$(get_le_long_at "$1" 8) + local flags=$(get_le_long_at "$1" 12) + local board=$(dd if="$1" skip=16 bs=1 count=16 2>/dev/null | hexdump -v -e '1/1 "%c"') + local dev_board=$(platform_expected_image) + echo "Found LXL image for board $board" + + [ -n "$dev_board" -a "lxl $board" != "$dev_board" ] && { + echo "Firmware ($board) doesn't match device ($dev_board)" + error=1 + } + + [ $((flags & LXL_FLAGS_VENDOR_LUXUL)) -gt 0 ] && notify_firmware_no_backup + + if ! otrx check "$1" -o "$hdr_len"; then + echo "No valid TRX firmware in the LXL image" + n