openwrt/target/linux
Andrew Powers-Holmes 6f1efb2898 ath79: add support for Sophos AP100/AP55 family
The Sophos AP100, AP100C, AP55, and AP55C are dual-band 802.11ac access
points based on the Qualcomm QCA9558 SoC. They share PCB designs with
several devices that already have partial or full support, most notably the
Devolo DVL1750i/e.

The AP100 and AP100C are hardware-identical to the AP55 and AP55C, however
the 55 models' ART does not contain calibration data for their third chain
despite it being present on the PCB.

Specifications common to all models:
 - Qualcomm QCA9558 SoC @ 720 MHz (MIPS 74Kc Big-endian processor)
 - 128 MB RAM
 - 16 MB SPI flash
 - 1x 10/100/1000 Mbps Ethernet port, 802.3af PoE-in
 - Green and Red status LEDs sharing a single external light-pipe
 - Reset button on PCB[1]
 - Piezo beeper on PCB[2]
 - Serial UART header on PCB
 - Alternate power supply via 5.5x2.1mm DC jack @ 12 VDC

Unique to AP100 and AP100C:
 - 3T3R 2.4GHz 802.11b/g/n via SoC WMAC
 - 3T3R 5.8GHz 802.11a/n/ac via QCA9880 (PCI Express)

AP55 and AP55C:
 - 2T2R 2.4GHz 802.11b/g/n via SoC WMAC
 - 2T2R 5.8GHz 802.11a/n/ac via QCA9880 (PCI Express)

AP100 and AP55:
 - External RJ45 serial console port[3]
 - USB 2.0 Type A port, power controlled via GPIO 11

Flashing instructions:

This firmware can be flashed either via a compatible Sophos SG or XG
firewall appliance, which does not require disassembling the device, or via
the U-Boot console available on the internal UART header.

To flash via XG appliance:
 - Register on Sophos' website for a no-cost Home Use XG firewall license
 - Download and install the XG software on a compatible PC or virtual
   machine, complete initial appliance setup, and enable SSH console access
 - Connect the target AP device to the XG appliance's LAN interface
 - Approve the AP from the XG Web UI and wait until it shows as Active
   (this can take 3-5 minutes)
 - Connect to the XG appliance over SSH and access the Advanced Console
   (Menu option 5, then menu option 3)
 - Run `sudo awetool` and select the menu option to connect to an AP via
   SSH. When prompted to enable SSH on the target AP, select Yes.
 - Wait 2-3 minutes, then select the AP from the awetool menu again. This
   will connect you to a root shell on the target AP.
 - Copy the firmware to /tmp/openwrt.bin on the target AP via SCP/TFTP/etc
 - Run `mtd -r write /tmp/openwrt.bin astaro_image`
 - When complete, the access point will reboot to OpenWRT.

To flash via U-Boot serial console:
 - Configure a TFTP server on your PC, and set IP address 192.168.99.8 with
   netmask 255.255.255.0
 - Copy the firmware .bin to the TFTP server and rename to 'uImage_AP100C'
 - Open the target AP's enclosure and locate the 4-pin 3.3V UART header [4]
 - Connect the AP ethernet to your PC's ethernet port
 - Connect a terminal to the UART at 115200 8/N/1 as usual
 - Power on the AP and press a key to cancel autoboot when prompted
 - Run the following commands at the U-Boot console:
    - `tftpboot`
    - `cp.b $fileaddr 0x9f070000 $filesize`
    - `boot`
 - The access point will boot to OpenWRT.

MAC addresses as verified by OEM firmware:

use   address     source
LAN   label       config 0x201a (label)
2g    label + 1   art 0x1002    (also found at config 0x2004)
5g    label + 9   art 0x5006

Increments confirmed across three AP55C, two AP55, and one AP100C.

These changes have been tested to function on both current master and
21.02.0 without any obvious issues.

[1] Button is present but does not alter state of any GPIO on SoC
[2] Buzzer and driver circuitry is present on PCB but is not connected to
    any GPIO. Shorting an unpopulated resistor next to the driver circuitry
    should connect the buzzer to GPIO 4, but this is unconfirmed.
[3] This external RJ45 serial port is disabled in the OEM firmware, but
    works in OpenWRT without additional configuration, at least on my
    three test units.
[4] On AP100/AP55 models the UART header is accessible after removing
    the device's top cover. On AP100C/AP55C models, the PCB must be removed
    for access; three screws secure it to the case.
    Pin 1 is marked on the silkscreen. Pins from 1-4 are 3.3V, GND, TX, RX

Signed-off-by: Andrew Powers-Holmes <andrew@omnom.net>
2022-04-16 16:59:29 +02:00
..
apm821xx kernel: bump 5.10 to 5.10.111 2022-04-16 14:02:11 +02:00
archs38 kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
armvirt armvirt: add 5.15 as testing kernel 2022-04-09 19:31:46 +02:00
at91 kernel: bump 5.10 to 5.10.111 2022-04-16 14:02:11 +02:00
ath25 generic: 5.15: rework hack patch 2022-03-27 00:07:34 +00:00
ath79 ath79: add support for Sophos AP100/AP55 family 2022-04-16 16:59:29 +02:00
bcm27xx kernel: bump 5.10 to 5.10.111 2022-04-16 14:02:11 +02:00
bcm47xx kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
bcm53xx kernel: bump 5.10 to 5.10.110 2022-04-09 19:31:46 +02:00
bcm63xx kernel: bump 5.10 to 5.10.111 2022-04-16 14:02:11 +02:00
bcm4908 kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
bmips kernel: 5.10: consolidate mac80211 crypto options 2021-12-17 16:16:34 +01:00
gemini gemini: Bump kernel to v5.15 2022-04-14 10:12:34 +02:00
generic kernel: bump 5.15 to 5.15.34 2022-04-16 14:02:13 +02:00
imx kernel: bump 5.15 to 5.15.32 2022-04-09 19:31:46 +02:00
ipq40xx kernel: bump 5.10 to 5.10.110 2022-04-09 19:31:46 +02:00
ipq806x kernel: bump 5.15 to 5.15.34 2022-04-16 14:02:13 +02:00
kirkwood target/linux: replace egrep with grep -E 2022-02-07 00:03:27 +01:00
lantiq lantiq: fritz736x: Move GPIO resets to the inidvidual board.dts files 2022-04-16 14:02:11 +02:00
layerscape layerscape: image: drop redundant parameter from kernel build recipe 2022-04-01 14:32:54 +02:00
malta malta: add config-5.15 2022-04-13 19:50:50 +01:00
mediatek mediatek: 5.15: re-enable arch timer on MT7623 as well 2022-04-14 07:34:50 +01:00
mpc85xx mpc85xx: overhaul WS-AP3825i LED setup 2022-03-24 23:26:10 +01:00
mvebu mvebu: make boot filesystem reproducible 2022-03-28 20:52:49 +01:00
mxs kernel: move some symbols to generic config 2022-04-09 19:31:46 +02:00
octeon kernel: move some symbols to generic config 2022-04-09 19:31:46 +02:00
octeontx kernel: bump 5.10 to 5.10.110 2022-04-09 19:31:46 +02:00
omap kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
oxnas kernel: 5.10: remove CONFIG_DEVTMPFS{,_MOUNT} from kconfigs 2022-03-01 22:57:40 +00:00
pistachio kernel: bump 5.10 to 5.10.95 2022-02-01 23:34:07 +00:00
qoriq qoriq: enable support for Marvell Alaska PHYs 2022-04-03 22:41:05 +03:00
ramips ramips: mt7621: make u_env partition r/w for Linksys EA7xxx devices 2022-04-16 16:59:29 +02:00
realtek realtek: Fix tc default package 2022-03-29 13:43:01 +02:00
rockchip kernel: include CONFIG_KEXEC_SIG in configs 2022-03-15 08:33:45 +01:00
sunxi kernel: move some symbols to generic config 2022-04-09 19:31:46 +02:00
tegra kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
uml uml: make use of 'rootfs-part' feature 2022-01-23 19:48:31 +00:00
x86 kernel: move some symbols to generic config 2022-04-09 19:31:46 +02:00
zynq kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
Makefile