From 0070650df45da29a55a89922544dba6859c18f2b Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Fri, 1 Jan 2021 16:48:52 -0500 Subject: [PATCH] ath79: move small-flash Engenius boards to tiny This moves some of the Engenius boards from generic to tiny: - EAP350 v1 - ECB350 v1 - ENH202 v1 For these, factory.bin builds are already failing on master branch because of the unique situation for these boards: - 8 MB flash - an extra "failsafe" image for recovery - TFTP does not work (barely possible with 600 MTU) - bootloader loads image from a longer flash offset - 1 eraseblock each needed for OKLI kernel loader and fake rootfs - using mtd-concat to make use of remaining space... The manual alternative would be removing the failsafe partition. However this comes with the risk of extremely difficult recovery if a flash ever fails because TFTP on the bootloader is bugged. Signed-off-by: Michael Pratt [improve commit message] Signed-off-by: Adrian Schmutzler --- .../generic/base-files/etc/board.d/01_leds | 8 --- .../generic/base-files/etc/board.d/02_network | 32 ++++----- .../etc/hotplug.d/firmware/10-ath9k-eeprom | 5 +- target/linux/ath79/image/common-engenius.mk | 33 +++++++++ target/linux/ath79/image/generic.mk | 70 +------------------ target/linux/ath79/image/tiny.mk | 35 ++++++++++ .../ath79/tiny/base-files/etc/board.d/01_leds | 8 +++ .../tiny/base-files/etc/board.d/02_network | 10 +++ .../etc/hotplug.d/firmware/10-ath9k-eeprom | 3 + 9 files changed, 104 insertions(+), 100 deletions(-) create mode 100644 target/linux/ath79/image/common-engenius.mk diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds index b961e7d3e8..079c8d4e47 100755 --- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds +++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds @@ -182,14 +182,6 @@ dlink,dap-1365-a1) dlink,dir-859-a1) ucidef_set_led_switch "internet" "WAN" "green:internet" "switch0" "0x20" ;; -engenius,enh202-v1) - ucidef_set_led_switch "lan" "LAN" "amber:lan" "switch0" "0x10" - ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth0" - ucidef_set_rssimon "wlan0" "200000" "1" - ucidef_set_led_rssi "rssilow" "RSSILOW" "red:rssilow" "wlan0" "1" "100" - ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "amber:rssimedium" "wlan0" "33" "100" - ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "green:rssihigh" "wlan0" "67" "100" - ;; engenius,ens202ext-v1|\ engenius,enstationac-v1) ucidef_set_rssimon "wlan0" "200000" "1" diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network index c79286d45d..c08f374d3a 100755 --- a/target/linux/ath79/generic/base-files/etc/board.d/02_network +++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network @@ -33,11 +33,9 @@ ath79_setup_interfaces() dlink,dap-3320-a1|\ dlink,dir-505|\ engenius,eap300-v2|\ - engenius,eap350-v1|\ engenius,eap600|\ engenius,ecb1200|\ engenius,ecb1750|\ - engenius,ecb350-v1|\ engenius,ecb600|\ enterasys,ws-ap3705i|\ glinet,gl-ar300m-lite|\ @@ -227,11 +225,6 @@ ath79_setup_interfaces() ucidef_add_switch "switch0" \ "0@eth0" "1:wan" "2:lan:3" "3:lan:2" ;; - engenius,enh202-v1) - ucidef_set_interface_wan "eth0" - ucidef_add_switch "switch0" \ - "0@eth1" "4:lan:1" - ;; engenius,ens202ext-v1) ucidef_set_interface_wan "eth1" ucidef_add_switch "switch0" \ @@ -530,19 +523,6 @@ ath79_setup_macs() lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr) label_mac=$lan_mac ;; - engenius,enh202-v1|\ - ubnt,airrouter|\ - ubnt,bullet-m-ar7240|\ - ubnt,bullet-m-ar7241|\ - ubnt,nanobridge-m|\ - ubnt,nanostation-loco-m|\ - ubnt,nanostation-m|\ - ubnt,picostation-m|\ - ubnt,powerbridge-m|\ - ubnt,rocket-m|\ - ubnt,unifi) - label_mac=$(cat /sys/class/ieee80211/phy0/macaddress) - ;; engenius,epg5000) lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr) wan_mac=$(mtd_get_mac_ascii u-boot-env wanaddr) @@ -623,6 +603,18 @@ ath79_setup_macs() wan_mac=$(mtd_get_mac_text mac 0x18) label_mac=$wan_mac ;; + ubnt,airrouter|\ + ubnt,bullet-m-ar7240|\ + ubnt,bullet-m-ar7241|\ + ubnt,nanobridge-m|\ + ubnt,nanostation-loco-m|\ + ubnt,nanostation-m|\ + ubnt,picostation-m|\ + ubnt,powerbridge-m|\ + ubnt,rocket-m|\ + ubnt,unifi) + label_mac=$(cat /sys/class/ieee80211/phy0/macaddress) + ;; ubnt,litebeam-ac-gen2|\ ubnt,nanobeam-ac-gen2|\ ubnt,powerbeam-5ac-500|\ diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index 28ac38e1d4..95ad2a57ef 100644 --- a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -74,10 +74,7 @@ case "$FIRMWARE" in avm,fritz300e) caldata_extract_reverse "urloader" 0x1541 0x440 ;; - buffalo,wzr-hp-g302h-a1a0|\ - engenius,eap350-v1|\ - engenius,ecb350-v1|\ - engenius,enh202-v1) + buffalo,wzr-hp-g302h-a1a0) caldata_extract "art" 0x1000 0xeb8 ;; buffalo,wzr-hp-g450h|\ diff --git a/target/linux/ath79/image/common-engenius.mk b/target/linux/ath79/image/common-engenius.mk new file mode 100644 index 0000000000..56e8f8cf67 --- /dev/null +++ b/target/linux/ath79/image/common-engenius.mk @@ -0,0 +1,33 @@ +DEVICE_VARS += ENGENIUS_IMGNAME + +# This needs to make /tmp/_sys/sysupgrade.tgz an empty file prior to +# sysupgrade, as otherwise it will implant the old configuration from +# OEM firmware when writing rootfs from factory.bin +define Build/engenius-tar-gz + -[ -f "$@" ] && \ + mkdir -p $@.tmp && \ + touch $@.tmp/failsafe.bin && \ + echo '#!/bin/sh' > $@.tmp/before-upgrade.sh && \ + echo ': > /tmp/_sys/sysupgrade.tgz' >> $@.tmp/before-upgrade.sh && \ + $(CP) $(KDIR)/loader-$(DEVICE_NAME).uImage \ + $@.tmp/openwrt-$(word 1,$(1))-uImage-lzma.bin && \ + $(CP) $@ $@.tmp/openwrt-$(word 1,$(1))-root.squashfs && \ + $(TAR) -cp --numeric-owner --owner=0 --group=0 --mode=a-s --sort=name \ + $(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \ + -C $@.tmp . | gzip -9n > $@ && \ + rm -rf $@.tmp +endef + +define Device/engenius_loader_okli + DEVICE_VENDOR := EnGenius + KERNEL := kernel-bin | append-dtb | lzma | uImage lzma -M 0x4f4b4c49 + LOADER_TYPE := bin + COMPILE := loader-$(1).bin loader-$(1).uImage + COMPILE/loader-$(1).bin := loader-okli-compile + COMPILE/loader-$(1).uImage := append-loader-okli $(1) | pad-to 64k | lzma | \ + uImage lzma + IMAGES += factory.bin + IMAGE/factory.bin := append-squashfs-fakeroot-be | pad-to $$$$(BLOCKSIZE) | \ + append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | \ + check-size | engenius-tar-gz $$$$(ENGENIUS_IMGNAME) +endef diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index 190f477b7e..ccc9ff2ac2 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -1,12 +1,12 @@ include ./common-buffalo.mk +include ./common-engenius.mk include ./common-netgear.mk include ./common-tp-link.mk include ./common-yuncore.mk DEVICE_VARS += ADDPATTERN_ID ADDPATTERN_VERSION DEVICE_VARS += SEAMA_SIGNATURE SEAMA_MTDBLOCK -DEVICE_VARS += KERNEL_INITRAMFS_PREFIX -DEVICE_VARS += DAP_SIGNATURE ENGENIUS_IMGNAME +DEVICE_VARS += KERNEL_INITRAMFS_PREFIX DAP_SIGNATURE DEVICE_VARS += EDIMAX_HEADER_MAGIC EDIMAX_HEADER_MODEL define Build/add-elecom-factory-initramfs @@ -69,24 +69,6 @@ define Build/edimax-headers rm -rf $@.uImage $@.rootfs endef -# This needs to make /tmp/_sys/sysupgrade.tgz an empty file prior to -# sysupgrade, as otherwise it will implant the old configuration from -# OEM firmware when writing rootfs from factory.bin -define Build/engenius-tar-gz - -[ -f "$@" ] && \ - mkdir -p $@.tmp && \ - touch $@.tmp/failsafe.bin && \ - echo '#!/bin/sh' > $@.tmp/before-upgrade.sh && \ - echo ': > /tmp/_sys/sysupgrade.tgz' >> $@.tmp/before-upgrade.sh && \ - $(CP) $(KDIR)/loader-$(DEVICE_NAME).uImage \ - $@.tmp/openwrt-$(word 1,$(1))-uImage-lzma.bin && \ - $(CP) $@ $@.tmp/openwrt-$(word 1,$(1))-root.squashfs && \ - $(TAR) -cp --numeric-owner --owner=0 --group=0 --mode=a-s --sort=name \ - $(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \ - -C $@.tmp . | gzip -9n > $@ && \ - rm -rf $@.tmp -endef - define Build/mkdapimg2 $(STAGING_DIR_HOST)/bin/mkdapimg2 \ -i $@ -o $@.new \ @@ -974,20 +956,6 @@ define Device/embeddedwireless_dorin endef TARGET_DEVICES += embeddedwireless_dorin -define Device/engenius_loader_okli - DEVICE_VENDOR := EnGenius - KERNEL := kernel-bin | append-dtb | lzma | uImage lzma -M 0x4f4b4c49 - LOADER_TYPE := bin - COMPILE := loader-$(1).bin loader-$(1).uImage - COMPILE/loader-$(1).bin := loader-okli-compile - COMPILE/loader-$(1).uImage := append-loader-okli $(1) | pad-to 64k | lzma | \ - uImage lzma - IMAGES += factory.bin - IMAGE/factory.bin := append-squashfs-fakeroot-be | pad-to $$$$(BLOCKSIZE) | \ - append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | \ - check-size | engenius-tar-gz $$$$(ENGENIUS_IMGNAME) -endef - define Device/engenius_eap300-v2 $(Device/engenius_loader_okli) SOC := ar9341 @@ -999,17 +967,6 @@ define Device/engenius_eap300-v2 endef TARGET_DEVICES += engenius_eap300-v2 -define Device/engenius_eap350-v1 - $(Device/engenius_loader_okli) - SOC := ar7242 - DEVICE_MODEL := EAP350 - DEVICE_VARIANT := v1 - IMAGE_SIZE := 4864k - LOADER_FLASH_OFFS := 0x1b0000 - ENGENIUS_IMGNAME := senao-eap350 -endef -TARGET_DEVICES += engenius_eap350-v1 - define Device/engenius_eap600 $(Device/engenius_loader_okli) SOC := ar9344 @@ -1046,17 +1003,6 @@ define Device/engenius_ecb1750 endef TARGET_DEVICES += engenius_ecb1750 -define Device/engenius_ecb350-v1 - $(Device/engenius_loader_okli) - SOC := ar7242 - DEVICE_MODEL := ECB350 - DEVICE_VARIANT := v1 - IMAGE_SIZE := 4864k - LOADER_FLASH_OFFS := 0x1b0000 - ENGENIUS_IMGNAME := senao-ecb350 -endef -TARGET_DEVICES += engenius_ecb350-v1 - define Device/engenius_ecb600 $(Device/engenius_loader_okli) SOC := ar9344 @@ -1067,18 +1013,6 @@ define Device/engenius_ecb600 endef TARGET_DEVICES += engenius_ecb600 -define Device/engenius_enh202-v1 - $(Device/engenius_loader_okli) - SOC := ar7240 - DEVICE_MODEL := ENH202 - DEVICE_VARIANT := v1 - DEVICE_PACKAGES := rssileds - IMAGE_SIZE := 4864k - LOADER_FLASH_OFFS := 0x1b0000 - ENGENIUS_IMGNAME := senao-enh202 -endef -TARGET_DEVICES += engenius_enh202-v1 - define Device/engenius_ens202ext-v1 $(Device/engenius_loader_okli) SOC := ar9341 diff --git a/target/linux/ath79/image/tiny.mk b/target/linux/ath79/image/tiny.mk index 83c34d718b..36d2818ad5 100644 --- a/target/linux/ath79/image/tiny.mk +++ b/target/linux/ath79/image/tiny.mk @@ -1,4 +1,5 @@ include ./common-buffalo.mk +include ./common-engenius.mk define Device/buffalo_whr-g301n $(Device/buffalo_common) @@ -30,6 +31,40 @@ define Device/dlink_dir-615-e4 endef TARGET_DEVICES += dlink_dir-615-e4 +define Device/engenius_eap350-v1 + $(Device/engenius_loader_okli) + SOC := ar7242 + DEVICE_MODEL := EAP350 + DEVICE_VARIANT := v1 + IMAGE_SIZE := 4864k + LOADER_FLASH_OFFS := 0x1b0000 + ENGENIUS_IMGNAME := senao-eap350 +endef +TARGET_DEVICES += engenius_eap350-v1 + +define Device/engenius_ecb350-v1 + $(Device/engenius_loader_okli) + SOC := ar7242 + DEVICE_MODEL := ECB350 + DEVICE_VARIANT := v1 + IMAGE_SIZE := 4864k + LOADER_FLASH_OFFS := 0x1b0000 + ENGENIUS_IMGNAME := senao-ecb350 +endef +TARGET_DEVICES += engenius_ecb350-v1 + +define Device/engenius_enh202-v1 + $(Device/engenius_loader_okli) + SOC := ar7240 + DEVICE_MODEL := ENH202 + DEVICE_VARIANT := v1 + DEVICE_PACKAGES := rssileds + IMAGE_SIZE := 4864k + LOADER_FLASH_OFFS := 0x1b0000 + ENGENIUS_IMGNAME := senao-enh202 +endef +TARGET_DEVICES += engenius_enh202-v1 + define Device/pqi_air-pen SOC := ar9330 DEVICE_VENDOR := PQI diff --git a/target/linux/ath79/tiny/base-files/etc/board.d/01_leds b/target/linux/ath79/tiny/base-files/etc/board.d/01_leds index 26926b6f64..f0b4acf066 100755 --- a/target/linux/ath79/tiny/base-files/etc/board.d/01_leds +++ b/target/linux/ath79/tiny/base-files/etc/board.d/01_leds @@ -21,6 +21,14 @@ tplink,tl-wr941-v4) ucidef_set_led_switch "lan3" "LAN3" "green:lan3" "switch0" "0x08" ucidef_set_led_switch "lan4" "LAN4" "green:lan4" "switch0" "0x10" ;; +engenius,enh202-v1) + ucidef_set_led_switch "lan" "LAN" "amber:lan" "switch0" "0x10" + ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth0" + ucidef_set_rssimon "wlan0" "200000" "1" + ucidef_set_led_rssi "rssilow" "RSSILOW" "red:rssilow" "wlan0" "1" "100" + ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "amber:rssimedium" "wlan0" "33" "100" + ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "green:rssihigh" "wlan0" "67" "100" + ;; netgear,wnr1000-v2|\ netgear,wnr2000-v3) ucidef_set_led_netdev "wan-amber" "WAN (amber)" "amber:wan" "eth0" diff --git a/target/linux/ath79/tiny/base-files/etc/board.d/02_network b/target/linux/ath79/tiny/base-files/etc/board.d/02_network index cbcdbe9a89..ce95bf7037 100755 --- a/target/linux/ath79/tiny/base-files/etc/board.d/02_network +++ b/target/linux/ath79/tiny/base-files/etc/board.d/02_network @@ -28,6 +28,8 @@ ath79_setup_interfaces() ucidef_add_switch "switch0" \ "0@eth1" "1:lan" "2:lan" "3:lan" "4:lan" ;; + engenius,eap350-v1|\ + engenius,ecb350-v1|\ pqi,air-pen|\ tplink,tl-mr10u|\ tplink,tl-mr3020-v1|\ @@ -51,6 +53,11 @@ ath79_setup_interfaces() tplink,tl-wr802n-v2) ucidef_set_interface_lan "eth0" ;; + engenius,enh202-v1) + ucidef_set_interface_wan "eth0" + ucidef_add_switch "switch0" \ + "0@eth1" "4:lan:1" + ;; tplink,tl-mr3220-v1|\ tplink,tl-mr3420-v1|\ tplink,tl-mr3420-v3|\ @@ -99,6 +106,9 @@ ath79_setup_macs() wan_mac=$(mtd_get_mac_ascii "nvram" "wan_mac") label_mac=$wan_mac ;; + engenius,enh202-v1) + label_mac=$(cat /sys/class/ieee80211/phy0/macaddress) + ;; tplink,tl-wr941-v2|\ tplink,tl-wr941n-v7-cn) base_mac=$(mtd_get_mac_binary u-boot 0x1fc00) diff --git a/target/linux/ath79/tiny/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/tiny/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index 6ae2dc5f94..ffbc46afd0 100644 --- a/target/linux/ath79/tiny/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/tiny/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -10,6 +10,9 @@ case "$FIRMWARE" in "ath9k-eeprom-pci-0000:00:00.0.bin") case $board in buffalo,whr-g301n|\ + engenius,eap350-v1|\ + engenius,ecb350-v1|\ + engenius,enh202-v1|\ tplink,tl-wa701nd-v1|\ tplink,tl-wa730re-v1|\ tplink,tl-wa801nd-v1|\ -- 2.30.2