[openwrt/openwrt] ath79: add support for Senao Engenius ESR900
LEDE Commits
lede-commits at lists.infradead.org
Sun Feb 12 09:20:42 PST 2023
hauke pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/2f99f7e2d07dd14ed56a2853703b8888464933bf
commit 2f99f7e2d07dd14ed56a2853703b8888464933bf
Author: Michael Pratt <mcpratt at pm.me>
AuthorDate: Mon Jan 30 13:51:36 2023 -0500
ath79: add support for Senao Engenius ESR900
FCC ID: A8J-ESR900
Engenius ESR900 is an indoor wireless router with
a gigabit ethernet switch, dual-band wireless,
internal antenna plates, and a USB 2.0 port
**Specification:**
- QCA9558 SOC 2.4 GHz, 3x3
- AR9580 WLAN PCIe on board, 5 GHz, 3x3
- AR8327N SW 4 ports LAN, 1 port WAN
- 40 MHz clock
- 16 MB FLASH MX25L12845EMI-10G
- 2x 64 MB RAM
- UART at J1 populated, RX grounded
- 6 internal antenna plates (omni-directional)
- 5 LEDs, 1 button (power, 2G, 5G, WAN, WPS) (reset)
**MAC addresses:**
Base MAC address labeled as "MAC ADDRESS"
MAC "wanaddr" is not similar to "ethaddr"
eth0 *:06 MAC u-boot-env ethaddr
phy0 *:06 MAC u-boot-env ethaddr
phy1 *:07 --- u-boot-env ethaddr +1
WAN *:6E:81 u-boot-env wanaddr
**Serial Access:**
RX on the board for UART is shorted to ground by resistor R176
therefore it must be removed to use the console
but it is not necessary to remove to view boot log
optionally, R175 can be replaced with a solder bridge short
the resistors R175 and R176 are next to the UART RX pin
**Installation:**
Method 1: Firmware upgrade page
OEM webpage at 192.168.0.1
username and password "admin"
Navigate to Settings (gear icon) --> Tools --> Firmware
select the factory.bin image
confirm and wait 3 minutes
Method 2: TFTP recovery
Follow TFTP instructions using initramfs.bin
use sysupgrade.bin to flash using openwrt web interface
**Return to OEM:**
MTD partitions should be backed up before flashing
using TFTP to boot openwrt without overwriting flash
Alternatively, it is possible to edit OEM firmware images
to flash MTD partitions in openwrt to restore OEM firmware
by removing the OEM header and writing the rest to "firmware"
**TFTP recovery:**
Requires serial console, reset button does nothing at boot
rename initramfs.bin to 'uImageESR900'
make available on TFTP server at 192.168.99.8
power board, interrupt boot by pressing '4' rapidly
execute tftpboot and bootm
**Note on ETH switch registers**
Registers must be written to the ethernet switch
in order to set up the switch's MAC interface.
U-boot can write the registers on it's own
which is needed, for example, in a TFTP transfer.
The register bits from OEM for the AR8327 switch
can be read from interrupted boot (tftpboot, bootm)
by adding print lines in the switch driver ar8327.c
before 'qca,ar8327-initvals' is parsed from DTS and written.
for example:
pr_info("0x04 %08x\n", ar8xxx_read(priv, AR8327_REG_PAD0_MODE));
Signed-off-by: Michael Pratt <mcpratt at pm.me>
---
target/linux/ath79/dts/qca9558_engenius_esr900.dts | 85 ++++++++++++++++++++++
.../generic/base-files/etc/board.d/02_network | 4 +-
.../etc/hotplug.d/ieee80211/10_fix_wifi_mac | 3 +
.../base-files/lib/preinit/10_fix_eth_mac.sh | 3 +
target/linux/ath79/image/generic.mk | 14 ++++
5 files changed, 108 insertions(+), 1 deletion(-)
diff --git a/target/linux/ath79/dts/qca9558_engenius_esr900.dts b/target/linux/ath79/dts/qca9558_engenius_esr900.dts
new file mode 100644
index 0000000000..269f743223
--- /dev/null
+++ b/target/linux/ath79/dts/qca9558_engenius_esr900.dts
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qca955x_senao_router-dual.dtsi"
+
+/ {
+ compatible = "engenius,esr900", "qca,qca9558";
+ model = "EnGenius ESR900";
+
+ aliases {
+ led-boot = &led_power;
+ led-failsafe = &led_power;
+ led-running = &led_power;
+ led-upgrade = &led_power;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led_power: power {
+ label = "amber:power";
+ gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
+ default-state = "on";
+ };
+
+ wlan2g {
+ label = "blue:wlan2g";
+ gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+ linux,default-trigger = "phy1tpt";
+ };
+
+ wlan5g {
+ label = "blue:wlan5g";
+ gpios = <&gpio 23 GPIO_ACTIVE_LOW>;
+ linux,default-trigger = "phy0tpt";
+ };
+
+ wps_amber {
+ label = "amber:wps";
+ gpios = <&gpio 22 GPIO_ACTIVE_LOW>;
+ };
+
+ wps_blue {
+ label = "blue:wps";
+ gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&phy0 {
+ qca,mib-poll-interval = <500>;
+
+ qca,ar8327-initvals = <
+ 0x04 0x07680000 /* PORT0 PAD MODE CTRL */
+ 0x10 0x40000000 /* POWER_ON_STRAP */
+ 0x50 0xcf35cf35 /* LED_CTRL0 */
+ 0x54 0xcf35cf35 /* LED_CTRL1 */
+ 0x58 0xcf35cf35 /* LED_CTRL2 */
+ 0x5c 0x03ffff00 /* LED_CTRL3 */
+ 0x7c 0x0000007e /* PORT0_STATUS */
+ >;
+};
+
+&usb_phy1 {
+ status = "okay";
+};
+
+&usb1 {
+ status = "okay";
+};
+
+&wmac {
+ nvmem-cells = <&calibration_art_1000>;
+ nvmem-cell-names = "calibration";
+};
+
+&pcie0 {
+ status = "okay";
+
+ wifi at 0,0,0 {
+ compatible = "pci168c,0033";
+ reg = <0x0000 0 0 0 0>;
+ nvmem-cells = <&calibration_art_5000>;
+ nvmem-cell-names = "calibration";
+ };
+};
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 3330cd2b0a..14baee3ae7 100644
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -287,6 +287,7 @@ ath79_setup_interfaces()
dlink,dir-842-c3|\
dlink,dir-859-a1|\
engenius,epg5000|\
+ engenius,esr900|\
sitecom,wlr-7100|\
tplink,archer-c2-v3|\
tplink,tl-wr1043nd-v4|\
@@ -665,7 +666,8 @@ ath79_setup_macs()
lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
label_mac=$lan_mac
;;
- engenius,epg5000)
+ engenius,epg5000|\
+ engenius,esr900)
lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
wan_mac=$(mtd_get_mac_ascii u-boot-env wanaddr)
;;
diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
index 74345843f5..42fa44c30e 100644
--- a/target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
+++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
@@ -35,6 +35,9 @@ case "$board" in
[ "$PHYNBR" -eq 1 ] && \
mtd_get_mac_ascii bdcfg "wlanmac" > /sys${DEVPATH}/macaddress
;;
+ engenius,esr900)
+ macaddr_add "$(mtd_get_mac_ascii u-boot-env ethaddr)" "$PHYNBR" > /sys${DEVPATH}/macaddress
+ ;;
fortinet,fap-221-b)
macaddr_add "$(mtd_get_mac_text u-boot 0x3ff80 12)" $((PHYNBR*7+1)) > /sys${DEVPATH}/macaddress
;;
diff --git a/target/linux/ath79/generic/base-files/lib/preinit/10_fix_eth_mac.sh b/target/linux/ath79/generic/base-files/lib/preinit/10_fix_eth_mac.sh
index bf40efe72b..50855f543f 100644
--- a/target/linux/ath79/generic/base-files/lib/preinit/10_fix_eth_mac.sh
+++ b/target/linux/ath79/generic/base-files/lib/preinit/10_fix_eth_mac.sh
@@ -12,6 +12,9 @@ preinit_set_mac_address() {
ip link set dev eth0 address $(mtd_get_mac_ascii bdcfg "lanmac")
ip link set dev eth1 address $(mtd_get_mac_ascii bdcfg "wanmac")
;;
+ engenius,esr900)
+ ip link set dev eth0 address $(mtd_get_mac_ascii u-boot-env ethaddr)
+ ;;
enterasys,ws-ap3705i)
ip link set dev eth0 address $(mtd_get_mac_ascii u-boot-env0 ethaddr)
;;
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index d12fa7226e..47a8b0fe79 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -1299,6 +1299,20 @@ define Device/engenius_epg5000
endef
TARGET_DEVICES += engenius_epg5000
+define Device/engenius_esr900
+ SOC := qca9558
+ DEVICE_VENDOR := EnGenius
+ DEVICE_MODEL := ESR900
+ DEVICE_PACKAGES := kmod-usb2
+ IMAGE_SIZE := 14656k
+ IMAGES += factory.dlf
+ IMAGE/factory.dlf := append-kernel | pad-to $$$$(BLOCKSIZE) | \
+ append-rootfs | pad-rootfs | check-size | \
+ senao-header -r 0x101 -p 0x4e -t 2
+ SUPPORTED_DEVICES += esr900
+endef
+TARGET_DEVICES += engenius_esr900
+
define Device/engenius_ews511ap
SOC := qca9531
DEVICE_VENDOR := EnGenius
More information about the lede-commits
mailing list