[PATCH] brcm: add CLM BLOB files for Luxul devices

2023-06-01 Thread Dan Haab
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

2020-04-06 Thread Dan Haab
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

2020-04-06 Thread Dan Haab
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

2020-02-05 Thread Dan Haab
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

2020-02-05 Thread Dan Haab
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

2019-10-15 Thread Dan Haab
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

2019-09-16 Thread Dan Haab
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

2019-09-12 Thread Dan Haab
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