openwrt/package/boot
Michael Pratt 146aaeafb7 ath79: add support for Senao WatchGuard AP300
FCC ID: Q6G-AP300

WatchGuard AP300 is an indoor wireless access point with
1 Gb ethernet port, dual-band wireless,
internal antenna plates, and 802.3at PoE+

this board is a Senao device:
the hardware is equivalent to EnGenius EAP1750
the software is modified Senao SDK which is based on openwrt and uboot
including image checksum verification at boot time,
and a failsafe image that boots if checksum fails

**Specification:**

  - QCA9558 SOC		MIPS 74kc, 2.4 GHz WMAC, 3x3
  - QCA9880 WLAN	PCI card 168c:003c, 5 GHz, 3x3, 26dBm
  - AR8035-A PHY	RGMII GbE with PoE+ IN
  - 40 MHz clock
  - 32 MB FLASH		S25FL512S
  - 2x 64 MB RAM	NT5TU32M16
  - UART console	J10, populated
  - GPIO watchdog	GPIO 16, 20 sec toggle
  - 6 antennas		5 dBi, internal omni-directional plates
  - 5 LEDs		power, eth0 link/data, 2G, 5G
  - 1 button		reset

**MAC addresses:**

  MAC address labeled as ETH
  Only one Vendor MAC address in flash at art 0x0

  eth0 ETH  *:3c art 0x0
  phy1 ---- *:3d ---
  phy0 ---- *:3e ---

**Serial console access:**

  For this board, its not certain whether UART is possible
  it is likely that software is blocking console access

  the RX line on the board for UART is shorted to ground by resistor R176
  the resistors R175 and R176 are next to the UART RX pin at J10

  however console output is garbage even after this fix

**Installation:**

  Method 1: OEM webpage

    use OEM webpage for firmware upgrade to upload factory.bin

  Method 2: root shell access

    downgrade XTM firewall to v2.0.0.1
    downgrade AP300 firmware: v1.0.1
    remove / unpair AP from controller
    perform factory reset with reset button
    connect ethernet to a computer
    login to OEM webpage with default address / pass: wgwap
    enable SSHD in OEM webpage settings
    access root shell with SSH as user 'root'
    modify uboot environment to automatically try TFTP at boot time
    (see command below)

    rename initramfs-kernel.bin to test.bin
    load test.bin over TFTP (see TFTP recovery)
    (optionally backup all mtdblocks to have flash backup)
    perform a sysupgrade with sysupgrade.bin

  NOTE: DHCP is not enabled by default after flashing

**TFTP recovery:**

  server ip: 192.168.1.101

  reset button seems to do nothing at boot time...
  only possible with modified uboot environment,
  running this command in the root shell:

  fw_setenv bootcmd 'if ping 192.168.1.101; then tftp 0x82000000 test.bin && bootm 0x82000000; else bootm 0x9f0a0000; fi'

  and verify that it is correct with

  fw_printenv

  then, before boot, the device will attempt TFTP from 192.168.1.101
  looking for file 'test.bin'

  to return uboot environment to normal:

  fw_setenv bootcmd 'bootm 0x9f0a0000'

**Return to OEM:**

  user should make backup of MTD partitions
  and write the backups back to mtd devices
  in order to revert to OEM
  (see installation method 2)

  It may be possible to use sysupgrade
  with an OEM image as well...
  (not tested)

**OEM upgrade info:**

  The OEM upgrade script is at /etc/fwupgrade.sh

  OKLI kernel loader is required because the OEM software
  expects the kernel to be no greater than 1536k
  and the factory.bin upgrade procedure would otherwise
  overwrite part of the kernel when writing rootfs.

**Note on eth0 PLL-data:**

  The default Ethernet Configuration register values will not work
  because of the external AR8035 switch between
  the SOC and the ethernet port.

  For QCA955x series, the PLL registers for eth0 and eth1
  can be see in the DTSI as 0x28 and 0x48 respectively.
  Therefore the PLL registers can be read from uboot
  for each link speed after attempting tftpboot
  or another network action using that link speed
  with `md 0x18050028 1` and `md 0x18050048 1`.

  The clock delay required for RGMII can be applied
  at the PHY side, using the at803x driver `phy-mode`.
  Therefore the PLL registers for GMAC0
  do not need the bits for delay on the MAC side.
  This is possible due to fixes in at803x driver
  since Linux 5.1 and 5.3

**Note on WatchGuard Magic string:**

  The OEM upgrade script is a modified version of
  the generic Senao sysupgrade script
  which is used on EnGenius devices.

  On WatchGuard boards produced by Senao,
  images are verified using a md5sum checksum of
  the upgrade image concatenated with a magic string.
  this checksum is then appended to the end of the final image.

  This variable does not apply to all the senao devices
  so set to null string as default

Tested-by: Alessandro Kornowski <ak@wski.org>
Tested-by: John Wagner <john@wagner.us.org>
Signed-off-by: Michael Pratt <mcpratt@pm.me>
2022-09-11 21:54:00 +02:00
..
arm-trusted-firmware-bcm63xx trusted-firmware-a.mk: pass DTC path similar to u-boot.mk 2022-08-28 19:01:55 +01:00
arm-trusted-firmware-mediatek arm-trusted-firmware-mediatek: update to sources of 2022-08-31 2022-08-31 21:10:39 +01:00
arm-trusted-firmware-mvebu trusted-firmware-a.mk: pass DTC path similar to u-boot.mk 2022-08-28 19:01:55 +01:00
arm-trusted-firmware-rockchip atf-rockchip: update to 2.3 2020-07-28 15:52:44 +02:00
arm-trusted-firmware-sunxi trusted-firmware-a.mk: pass DTC path similar to u-boot.mk 2022-08-28 19:01:55 +01:00
arm-trusted-firmware-tools arm-trusted-firmware-tools: update to v2.7 2022-09-07 04:22:40 +01:00
at91bootstrap at91bootstrap: use sdmmc0 as booting media for sama5d27_som1_ek 2022-09-02 20:43:51 +02:00
fconfig treewide: unify OpenWrt hosted source via @OPENWRT 2021-02-05 12:00:24 -10:00
grub2 grub2: add missing license 2022-04-04 18:15:02 +02:00
imx-bootlets imx-bootlets: refresh patches 2021-02-24 16:15:02 +01:00
kexec-tools kexec-tools: add kdump scripts util 2022-06-25 10:14:18 +02:00
kobs-ng kobs-ng: update dependencies after 'imx6' -> 'imx' rename 2021-11-03 12:45:40 +01:00
mt7623n-preloader mt7623n-preloader: remove mt7622-preloader 2021-02-28 04:12:23 +00:00
tfa-layerscape layerscape: update remaining PKG_HASH / PKG_MIRROR_HASH 2022-07-22 22:03:27 +02:00
uboot-at91 uboot-at91: use sdmmc0 as booting media for sama5d27_som1_ek 2022-09-02 20:43:51 +02:00
uboot-bcm4908 uboot-bcm4908: include SoC in output files 2022-07-25 18:13:12 +02:00
uboot-envtools ath79: add support for Senao WatchGuard AP300 2022-09-11 21:54:00 +02:00
uboot-fritz4040 uboot-fritz4040: Add support for Toshiba NAND 2022-05-14 11:08:45 +02:00
uboot-imx uboot-imx: pico-pi-imx7d: fix wrong make flags overriding 2022-07-12 09:25:43 +02:00
uboot-kirkwood uboot-kirkwood: refresh patches 2021-06-06 19:06:29 +02:00
uboot-lantiq uboot-lantiq: danube: fix hanging lzma kernel uncompression #2 2021-11-27 21:49:10 +01:00
uboot-layerscape uboot-layerscape: update PKG_HASH 2022-07-17 14:14:54 +02:00
uboot-mediatek mediatek: filogic: use WPS button instead of RST on BPi-R3 2022-09-10 19:20:26 +01:00
uboot-mvebu uboot-mvebu: update to v2022.07 2022-07-31 18:53:23 +02:00
uboot-mxs u-boot.mk: always link host libraries static 2021-10-24 18:00:49 +02:00
uboot-omap uboot-omap: Remove omap3_overo configuration 2021-11-28 22:26:27 +01:00
uboot-oxnas treewide: use AUTORELEASE on all uboot-* packages 2021-10-02 21:26:12 +02:00
uboot-rockchip uboot-rockchip: drop CONFIG_IDENT_STRING 2022-06-19 12:31:02 +02:00
uboot-sunxi uboot-sunxi: add support for FriendlyARM NanoPi R1S H5 2021-10-30 21:17:20 +02:00
uboot-tegra treewide: use AUTORELEASE on all uboot-* packages 2021-10-02 21:26:12 +02:00
uboot-zynq u-boot.mk: always link host libraries static 2021-10-24 18:00:49 +02:00