This POE access point suited for outside usage needs an external antenna.
According FCC documentation the ENH200EXT (needs external antenna) and the 
ENH200 (with internal antenna) are electrically equal to the Allnet ALL0258N.

The stock image does not allow install of a LEDE factory image, but an 
initramfs image (lede-ar71xx-generic-enh200ext-initramfs-uImage.bin) can be 
loaded via u-boot recovery procedure (long press reset at power-on until all 
LEDS burn). The u-boot recovery procedure boots an image named 
vmlinux-art-ramdisk from 192.168.1.101.
Once booted the sysupgrade image can be flashed from the booted iniramfs LEDE.

Only abnormality is that for some unknown reason the txpower cannot be set 
higher than 16 dBm whereas the Engenius stock firmware allows a maximum of 27 
dBm.

Signed-off-by: Paul Oranje <p...@xs4all.nl>
---
package/boot/uboot-envtools/files/ar71xx           |  1 +
target/linux/ar71xx/base-files/etc/board.d/01_leds |  3 +-
.../linux/ar71xx/base-files/etc/board.d/02_network |  1 +
target/linux/ar71xx/base-files/lib/ar71xx.sh       |  3 +
.../ar71xx/base-files/lib/upgrade/platform.sh      |  6 +-
target/linux/ar71xx/config-4.4                     |  1 +
.../ar71xx/files/arch/mips/ath79/Kconfig.openwrt   |  9 +++
target/linux/ar71xx/files/arch/mips/ath79/Makefile |  1 +
.../ar71xx/files/arch/mips/ath79/mach-enh200ext.c  | 89 ++++++++++++++++++++++
.../linux/ar71xx/files/arch/mips/ath79/machtypes.h |  1 +
target/linux/ar71xx/image/legacy-devices.mk        |  6 ++
target/linux/ar71xx/image/legacy.mk                |  2 +
target/linux/ar71xx/mikrotik/config-default        |  1 +
target/linux/ar71xx/nand/config-default            |  1 +
14 files changed, 122 insertions(+), 3 deletions(-)
create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-enh200ext.c

diff --git a/package/boot/uboot-envtools/files/ar71xx 
b/package/boot/uboot-envtools/files/ar71xx
index 3a5d269..a104c3a 100644
--- a/package/boot/uboot-envtools/files/ar71xx
+++ b/package/boot/uboot-envtools/files/ar71xx
@@ -27,6 +27,7 @@ cpe870|\
cr3000|\
cr5000|\
eap300v2|\
+enh200ext|\
gl-ar300m|\
hornet-ub|\
hornet-ub-x2|\
diff --git a/target/linux/ar71xx/base-files/etc/board.d/01_leds 
b/target/linux/ar71xx/base-files/etc/board.d/01_leds
index 686ae31..cf9c3ae 100755
--- a/target/linux/ar71xx/base-files/etc/board.d/01_leds
+++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds
@@ -28,7 +28,8 @@ alfa-nx)
        ucidef_set_led_netdev "lan" "LAN" "alfa:green:led_3" "eth1"
        ;;
all0258n|\
-all0315n)
+all0315n|\
+enh200ext)
        ucidef_set_rssimon "wlan0" "200000" "1"
        ucidef_set_led_rssi "rssilow" "RSSILOW" "$board:red:rssilow" "wlan0" 
"1" "40" "0" "6"
        ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" 
"$board:yellow:rssimedium" "wlan0" "30" "80" "-29" "5"
diff --git a/target/linux/ar71xx/base-files/etc/board.d/02_network 
b/target/linux/ar71xx/base-files/etc/board.d/02_network
index 20b34e8..014404e 100755
--- a/target/linux/ar71xx/base-files/etc/board.d/02_network
+++ b/target/linux/ar71xx/base-files/etc/board.d/02_network
@@ -155,6 +155,7 @@ ar71xx_setup_interfaces()
        dlan-hotspot|\
        dlan-pro-500-wp|\
        dr344|\
+       enh200ext|\
        ja76pf2|\
        rocket-m-ti|\
        ubnt-unifi-outdoor)
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh 
b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 4951e5b..f365feb 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -619,6 +619,9 @@ ar71xx_board_detect() {
        *"EmbWir-Dorin-Router")
                name="ew-dorin-router"
                ;;
+       *"ENH200EXT")
+               name="enh200ext"
+               ;;
        *"EPG5000")
                name="epg5000"
                ;;
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh 
b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 364a32f..b4a84c2 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -332,7 +332,8 @@ platform_check_image() {
        cap324|\
        cap4200ag|\
        cr3000|\
-       cr5000)
+       cr5000|\
+       enh200ext)
                platform_check_image_allnet "$1" && return 0
                return 1
                ;;
@@ -721,7 +722,8 @@ platform_do_upgrade() {
        local board=$(ar71xx_board_name)

        case "$board" in
-       all0258n)
+       all0258n|\
+       enh200ext)
                platform_do_upgrade_allnet "0x9f050000" "$ARGV"
                ;;
        all0305|\
diff --git a/target/linux/ar71xx/config-4.4 b/target/linux/ar71xx/config-4.4
index 68b408a..3a74f8f 100644
--- a/target/linux/ar71xx/config-4.4
+++ b/target/linux/ar71xx/config-4.4
@@ -99,6 +99,7 @@ CONFIG_ATH79_MACH_EAP300V2=y
CONFIG_ATH79_MACH_EAP7660D=y
CONFIG_ATH79_MACH_EL_M150=y
CONFIG_ATH79_MACH_EL_MINI=y
+CONFIG_ATH79_MACH_ENH200EXT=y
CONFIG_ATH79_MACH_EPG5000=y
CONFIG_ATH79_MACH_ESR1750=y
CONFIG_ATH79_MACH_ESR900=y
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt 
b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
index 1bf00bd..9ff545d 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
+++ b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
@@ -94,6 +94,15 @@ config ATH79_MACH_ALL0258N
        select ATH79_DEV_LEDS_GPIO
        select ATH79_DEV_M25P80

+config ATH79_MACH_ENH200EXT
+       bool "Engenius ENH200EXT support"
+       select SOC_AR724X
+       select ATH79_DEV_AP9X_PCI if PCI
+       select ATH79_DEV_ETH
+       select ATH79_DEV_GPIO_BUTTONS
+       select ATH79_DEV_LEDS_GPIO
+       select ATH79_DEV_M25P80
+
config ATH79_MACH_ALL0315N
        bool "Allnet ALL0315N support"
        select SOC_AR724X
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Makefile 
b/target/linux/ar71xx/files/arch/mips/ath79/Makefile
index 7383244..7e6482c 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/Makefile
+++ b/target/linux/ar71xx/files/arch/mips/ath79/Makefile
@@ -103,6 +103,7 @@ obj-$(CONFIG_ATH79_MACH_EAP300V2)           += 
mach-eap300v2.o
obj-$(CONFIG_ATH79_MACH_EAP7660D)               += mach-eap7660d.o
obj-$(CONFIG_ATH79_MACH_EL_M150)                += mach-el-m150.o
obj-$(CONFIG_ATH79_MACH_EL_MINI)                += mach-el-mini.o
+obj-$(CONFIG_ATH79_MACH_ENH200EXT)             += mach-enh200ext.o
obj-$(CONFIG_ATH79_MACH_EPG5000)                += mach-epg5000.o
obj-$(CONFIG_ATH79_MACH_ESR1750)                += mach-esr1750.o
obj-$(CONFIG_ATH79_MACH_ESR900)                 += mach-esr900.o
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-enh200ext.c 
b/target/linux/ar71xx/files/arch/mips/ath79/mach-enh200ext.c
new file mode 100644
index 0000000..68eb2fc
--- /dev/null
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-enh200ext.c
@@ -0,0 +1,89 @@
+/*
+ *  Engenius ENH200EXT support
+ *
+ *  Copyright (C) 2011 Daniel Golle <dgo...@allnet.de>
+ *  Copyright (C) 2017 Paul Oranje <p...@xs4all.nl> (ENH200EXT is same device 
as ALL0258N)
+ *
+ *  This program is free software; you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License version 2 as published
+ *  by the Free Software Foundation.
+ */
+
+#include <asm/mach-ath79/ath79.h>
+
+#include "dev-eth.h"
+#include "dev-ap9x-pci.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-m25p80.h"
+#include "machtypes.h"
+
+/* found via /sys/gpio/... try and error */
+#define ENH200EXT_GPIO_BTN_RESET               1
+#define ENH200EXT_GPIO_LED_RSSIHIGH    13
+#define ENH200EXT_GPIO_LED_RSSIMEDIUM  15
+#define ENH200EXT_GPIO_LED_RSSILOW     14
+
+/* defaults taken from others machs */
+#define ENH200EXT_KEYS_POLL_INTERVAL   20      /* msecs */
+#define ENH200EXT_KEYS_DEBOUNCE_INTERVAL (3 * ENH200EXT_KEYS_POLL_INTERVAL)
+
+/* showed up in the original firmware's bootlog */
+#define ENH200EXT_SEC_PHYMASK BIT(3)
+
+static struct gpio_led enh200ext_leds_gpio[] __initdata = {
+       {
+               .name           = "enh200ext:green:rssihigh",
+               .gpio           = ENH200EXT_GPIO_LED_RSSIHIGH,
+               .active_low     = 1,
+       }, {
+               .name           = "enh200ext:yellow:rssimedium",
+               .gpio           = ENH200EXT_GPIO_LED_RSSIMEDIUM,
+               .active_low     = 1,
+       }, {
+               .name           = "enh200ext:red:rssilow",
+               .gpio           = ENH200EXT_GPIO_LED_RSSILOW,
+               .active_low     = 1,
+       }
+};
+
+static struct gpio_keys_button enh200ext_gpio_keys[] __initdata = {
+       {
+               .desc           = "reset",
+               .type           = EV_KEY,
+               .code           = KEY_RESTART,
+               .debounce_interval = ENH200EXT_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = ENH200EXT_GPIO_BTN_RESET,
+               .active_low     = 1,
+       }
+};
+
+static void __init enh200ext_setup(void)
+{
+       u8 *mac = (u8 *) KSEG1ADDR(0x1f7f0000);
+       u8 *ee =  (u8 *) KSEG1ADDR(0x1f7f1000);
+
+       ath79_register_m25p80(NULL);
+
+       ath79_register_leds_gpio(-1, ARRAY_SIZE(enh200ext_leds_gpio),
+                                enh200ext_leds_gpio);
+
+       ath79_register_gpio_keys_polled(-1, ENH200EXT_KEYS_POLL_INTERVAL,
+                                       ARRAY_SIZE(enh200ext_gpio_keys),
+                                       enh200ext_gpio_keys);
+
+       ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
+       ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0);
+
+       ath79_eth1_data.phy_mask = ENH200EXT_SEC_PHYMASK;
+
+       ath79_register_mdio(0, 0x0);
+
+       ath79_register_eth(0);
+       ath79_register_eth(1);
+
+       ap91_pci_init(ee, mac);
+}
+
+MIPS_MACHINE(ATH79_MACH_ENH200EXT, "ENH200EXT", "Engenius ENH200EXT",
+            enh200ext_setup);
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h 
b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
index 478a1a9..b49bb7b 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
+++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
@@ -94,6 +94,7 @@ enum ath79_mach_type {
        ATH79_MACH_EBR_2310_C1,                 /* D-link EBR-2310 rev. C1 */
        ATH79_MACH_EL_M150,                     /* EasyLink EL-M150 */
        ATH79_MACH_EL_MINI,                     /* EasyLink EL-MINI */
+       ATH79_MACH_ENH200EXT,                   /* Engenius ENH200EXT */
        ATH79_MACH_EPG5000,                     /* EnGenius EPG5000 */
        ATH79_MACH_ESR1750,                     /* EnGenius ESR1750 */
        ATH79_MACH_ESR900,                      /* EnGenius ESR900 */
diff --git a/target/linux/ar71xx/image/legacy-devices.mk 
b/target/linux/ar71xx/image/legacy-devices.mk
index 7497a1b..c119966 100644
--- a/target/linux/ar71xx/image/legacy-devices.mk
+++ b/target/linux/ar71xx/image/legacy-devices.mk
@@ -132,6 +132,12 @@ define LegacyDevice/DB120
endef
LEGACY_DEVICES += DB120

+define LegacyDevice/ENH200EXT
+  DEVICE_TITLE := Engenius ENH200EXT
+  DEVICE_PACKAGES := rssileds
+endef
+LEGACY_DEVICES += ENH200EXT
+
define LegacyDevice/EWDORINAP
  DEVICE_TITLE := Embedded Wireless Dorin Platform (4MB flash)
  DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 
kmod-usb-ledtrig-usbport kmod-usb-storage
diff --git a/target/linux/ar71xx/image/legacy.mk 
b/target/linux/ar71xx/image/legacy.mk
index 1845cd0..0562532 100644
--- a/target/linux/ar71xx/image/legacy.mk
+++ b/target/linux/ar71xx/image/legacy.mk
@@ -255,6 +255,7 @@ 
dlan_pro_500_wp_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(C
dlan_pro_1200_ac_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,64k(Config1)ro,64k(Config2)ro,15872k@0x70000(firmware),64k(art)ro
cameo_ap94_mtdlayout=mtdparts=spi0.0:256k(uboot)ro,64k(config)ro,6208k(firmware),64k(caldata)ro,1600k(unknown)ro,64k@0x7f0000(caldata_copy)
cameo_ap94_mtdlayout_fat=mtdparts=spi0.0:256k(uboot)ro,64k(config)ro,7808k(firmware),64k(caldata)ro,64k@0x660000(caldata_orig),6208k@0x50000(firmware_orig)
+enh200ext_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env),6272k(firmware),1536k(failsafe),64k(art)ro
esr900_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(u-boot-env)ro,1408k(kernel),13248k(rootfs),1024k(manufacture)ro,64k(backup)ro,320k(storage)ro,64k(caldata)ro,14656k@0x40000(firmware)
esr1750_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(u-boot-env)ro,1408k(kernel),13248k(rootfs),1024k(manufacture)ro,64k(backup)ro,320k(storage)ro,64k(caldata)ro,14656k@0x40000(firmware)
epg5000_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(u-boot-env)ro,1408k(kernel),13248k(rootfs),1024k(manufacture)ro,64k(backup)ro,320k(storage)ro,64k(caldata)ro,14656k@0x40000(firmware)
@@ -903,6 +904,7 @@ $(eval $(call 
SingleProfile,AthLzma,64k,AP152_16M,ap152-16M,AP152,ttyS0,115200,$
$(eval $(call 
SingleProfile,AthLzma,64k,BXU2000N2,bxu2000n-2-a1,BXU2000n-2-A1,ttyS0,115200,$$(bxu2000n2_mtdlayout),RKuImage))
$(eval $(call 
SingleProfile,AthLzma,64k,CAP4200AG,cap4200ag,CAP4200AG,ttyS0,115200,$$(cap4200ag_mtdlayout),KRuImage))
$(eval $(call 
SingleProfile,AthLzma,64k,DB120,db120,DB120,ttyS0,115200,$$(db120_mtdlayout),RKuImage))
+$(eval $(call 
SingleProfile,AthLzma,64k,ENH200EXT,enh200ext,ENH200EXT,ttyS0,115200,$$(enh200ext_mtdlayout),KRuImage,65536))
$(eval $(call 
SingleProfile,AthLzma,64k,EWDORINAP,ew-dorin,EW-DORIN,ttyATH0,115200,$$(ew-dorin_mtdlayout_4M),KRuImage,65536))
$(eval $(call 
SingleProfile,AthLzma,64k,EWDORINRT,ew-dorin-router,EW-DORIN-ROUTER,ttyATH0,115200,$$(ew-dorin_mtdlayout_4M),KRuImage,65536))
$(eval $(call 
SingleProfile,AthLzma,64k,EWDORIN16M,ew-dorin-16M,EW-DORIN,ttyATH0,115200,$$(ew-dorin_mtdlayout_16M),KRuImage,65536))
diff --git a/target/linux/ar71xx/mikrotik/config-default 
b/target/linux/ar71xx/mikrotik/config-default
index cf6f754..0d77433 100644
--- a/target/linux/ar71xx/mikrotik/config-default
+++ b/target/linux/ar71xx/mikrotik/config-default
@@ -64,6 +64,7 @@
# CONFIG_ATH79_MACH_EAP7660D is not set
# CONFIG_ATH79_MACH_EL_M150 is not set
# CONFIG_ATH79_MACH_EL_MINI is not set
+# CONFIG_ATH79_MACH_ENH200EXT is not set
# CONFIG_ATH79_MACH_EPG5000 is not set
# CONFIG_ATH79_MACH_ESR1750 is not set
# CONFIG_ATH79_MACH_ESR900 is not set
diff --git a/target/linux/ar71xx/nand/config-default 
b/target/linux/ar71xx/nand/config-default
index 24e712c..4f0475a 100644
--- a/target/linux/ar71xx/nand/config-default
+++ b/target/linux/ar71xx/nand/config-default
@@ -62,6 +62,7 @@
# CONFIG_ATH79_MACH_EAP7660D is not set
# CONFIG_ATH79_MACH_EL_M150 is not set
# CONFIG_ATH79_MACH_EL_MINI is not set
+# CONFIG_ATH79_MACH_ENH200EXT is not set
# CONFIG_ATH79_MACH_EPG5000 is not set
# CONFIG_ATH79_MACH_ESR1750 is not set
# CONFIG_ATH79_MACH_ESR900 is not set
-- 
2.9.3



-- 
Paul Oranje
M       +31 (6) 21278389
T       +31 (20) 4941306
Achterlaan 20, 1027 AK Zunderdorp

GPG key ID 0xB833CA27





_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev

Reply via email to