Sophos AP55 support

No, it's specific to each individual device, containing radio calibration data and wireless MAC addresses.

It's not part of the official firmware, but extracted from the device specific data stored on flash and transformed into a representation palatable to the wireless driver. It's fixed data for your device and won't change over time, so if you're only building for your own single device, you can include it statically (e.g. via files/lib/firmware/…).

2 Likes

Thanks for the info. The initial goal was to have the correct configuration so the device could get official OpenWRT support. Building only for myself and bugging so many people with it doesn't seem like the right thing to do. But like I said before, I thought it would an easier process.

EDIT:

Since the official firmware is OpenWRT with a custom configuration, I would've guessed the file exists...

It rarely is, but more likely to be based on Qualcomm-Atheros' proprietary QSDK, which in turn is derived from some older OpenWrt version, but pretty different from it; in particular it's generally not using ath9k/ ath10k, but QCA's proprietary ath_pci WLAN drivers.

The data is present on your device, just not in a form that's generically understandable by ath9k/ ath10k, so it gets extracted and transformed into a representations which is (it would take too long to do this dynamically on each boot, so it's generated once after flashing/ firstboot).

The key lies in the bootlogs you posted.

They reference "Qualcomm Proprietary".

Which means that the official firmware is almost surely derived from Qualcomm's QSDK.

Which means the "custom configuration" part of your post is FAR larger than you think it is (unfortunately)

Qualcomm started with OpenWRT 15.x when creating QSDK but made MASSIVE changes. This unfortunately leads to a lot of confusion from people who get something QSDK-derived and don't realize that if it's QSDK, it is for all practical purposes NOT OpenWRT any more.

To my knowledge, one of the only OEMs that ships their routers with something actually remotely recognizable as OpenWRT (in fact, they provide a repo with their patched OpenWRT sources!) is GL.iNet - and even in their case, getting a device of theirs supported in master is sometimes not as easy as you'd think. (See the ongoing saga of GL.iNet NAND support - the way GL.iNet got their device running was considered to be an approach unacceptable to the upstream Linux kernel developers and the OpenWRT team, so it took quite a while to rearchitecture the approach to be "acceptable".)

1 Like

Done.

Done.

Still no change, unfortunately.

1 Like

I had "my" cal and board files (an additional complication of some newer-generation radios, such as the IPQ4019) "burned in" to my testing builds until near the end. One less thing to worry about for me, until I could turn my attention on the "right" way to extract the cal data and package the board files.

The QSDK drivers often extract the data directly from the ART. The open-source drivers "aren't there yet".

2 Likes

Meaning if I stop booting from memory and copy the initramfs to the APs persistent flash, I can just reboot and it might work?! After all I read it's (hopefully) just a timing problem...

This should be an info banner somewhere around "https://openwrt.org/docs/guide-developer/add.new.device"

I might just try to do the same if it doesn't work from the device's flash. Not sure how to get access to the filesystem though. Right now, outbound ssh from the device via serial console session seems the only way?

I've done that, as well as mounting a USB stick.

Unfortunately no change.

Rebuilding with filesystem support (I hope :smile:) (block-mount, kmod-fs-ext4, kmod-fs-ntfs, kmod-usb-storage, kmod-usb2)

EDIT:
So I managed to extract the file and have it baked into my initramfs (verified by 2nd file in the same directory, just to be sure it works). Still the log looks pretty much the same and the interface is of course missing.

EDIT 2:
...wait a minute. This time there's at least some "hotplug" to be found in the log.

## Booting image at 81000000 ...
   Image Name:   MIPS OpenWrt Linux-4.19.56
   Created:      2019-07-02  21:07:12 UTC
   Image Type:   MIPS Linux Kernel Image (lzma compressed)
   Data Size:    4493237 Bytes =  4.3 MB
   Load Address: 80060000
   Entry Point:  80060000
   Verifying Checksum at 0x81000040 ...OK
   Uncompressing Kernel Image ... OK

Starting kernel ...

[    0.000000] Linux version 4.19.56 (user@ubuntu-openwrt) (gcc version 7.4.0 (OpenWrt GCC 7.4.0 r10374+1-fdd0a8d491)) #0 Tue Jul 2 21:07:12 2019
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 00019750 (MIPS 74Kc)
[    0.000000] MIPS: machine is Sophos AP55
[    0.000000] SoC: Qualcomm Atheros QCA9558 ver 1 rev 0
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 08000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] random: get_random_bytes called from start_kernel+0x98/0x4a8 with crng_init=0
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 32480
[    0.000000] Kernel command line: console=ttyS0,115200n8 rootfstype=squashfs,jffs2
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Writing ErrCtl register=00000000
[    0.000000] Readback ErrCtl register=00000000
[    0.000000] Memory: 114488K/131072K available (4290K kernel code, 174K rwdata, 1008K rodata, 9176K init, 207K bss, 16584K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS: 51
[    0.000000] CPU clock: 720.000 MHz
[    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 5309056796 ns
[    0.000007] sched_clock: 32 bits at 360MHz, resolution 2ns, wraps every 5965232126ns
[    0.008293] Calibrating delay loop... 358.80 BogoMIPS (lpj=1794048)
[    0.074984] pid_max: default: 32768 minimum: 301
[    0.080098] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.087137] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.098721] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.109220] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.115823] pinctrl core: initialized pinctrl subsystem
[    0.122187] NET: Registered protocol family 16
[    0.133365] PCI host bridge /ahb/apb/pcie-controller@180c0000 ranges:
[    0.140233]  MEM 0x0000000010000000..0x0000000011ffffff
[    0.145821]   IO 0x0000000000000000..0x0000000000000000
[    0.169530] PCI host bridge to bus 0000:00
[    0.173897] pci_bus 0000:00: root bus resource [mem 0x10000000-0x11ffffff]
[    0.181257] pci_bus 0000:00: root bus resource [io  0x0000]
[    0.187179] pci_bus 0000:00: root bus resource [??? 0x00000000 flags 0x0]
[    0.194409] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]
[    0.204050] pci 0000:00:00.0: BAR 0: assigned [mem 0x10000000-0x101fffff 64bit]
[    0.211881] pci 0000:00:00.0: BAR 6: assigned [mem 0x10200000-0x1020ffff pref]
[    0.222573] clocksource: Switched to clocksource MIPS
[    0.228951] NET: Registered protocol family 2
[    0.234336] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes)
[    0.242532] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.249994] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.256770] TCP: Hash tables configured (established 1024 bind 1024)
[    0.263648] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.269870] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.276891] NET: Registered protocol family 1
[    0.416620] Crashlog allocated RAM at address 0x3f00000
[    0.423436] workingset: timestamp_bits=14 max_order=15 bucket_order=1
[    0.435916] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.442123] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.529716] io scheduler noop registered
[    0.533924] io scheduler deadline registered (default)
[    0.540106] ar7200-usb-phy 18030000.usb-phy0: phy reset is missing
[    0.548386] pinctrl-single 1804002c.pinmux: 544 pins, size 68
[    0.554987] gpio-export gpio_export: 1 gpio(s) exported
[    0.561244] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
[    0.568631] console [ttyS0] disabled
[    0.572467] 18020000.uart: ttyS0 at MMIO 0x18020000 (irq = 9, base_baud = 2500000) is a 16550A
[    0.581681] console [ttyS0] enabled
[    0.581681] console [ttyS0] enabled
[    0.589106] bootconsole [early0] disabled
[    0.589106] bootconsole [early0] disabled
[    0.604004] m25p80 spi0.0: mx25l12805d (16384 Kbytes)
[    0.609167] 5 fixed-partitions partitions found on MTD device spi0.0
[    0.615656] Creating 5 MTD partitions on "spi0.0":
[    0.620534] 0x000000000000-0x000000040000 : "u-boot"
[    0.626305] 0x000000040000-0x000000050000 : "u-boot-env"
[    0.632318] 0x000000050000-0x000000060000 : "art"
[    0.637850] 0x000000060000-0x000000070000 : "art_bak"
[    0.643679] 0x000000070000-0x000001000000 : "firmware"
[    0.658429] libphy: Fixed MDIO Bus: probed
[    1.014347] libphy: ag71xx_mdio: probed
[    1.133189] ag71xx 19000000.eth: connected to PHY at mdio-bus.0:04 [uid=004dd072, driver=Atheros 8035 ethernet]
[    1.144032] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode: rgmii-rxid
[    1.484349] libphy: ag71xx_mdio: probed
[    1.511276] ag71xx 1a000000.eth: connected to PHY at mdio-bus.1:01 [uid=00000000, driver=Generic PHY]
[    1.521201] eth1: Atheros AG71xx at 0xba000000, irq 5, mode: sgmii
[    1.527787] ath79-wdt 18060008.wdt: unable to register misc device, err=-16
[    1.534899] ath79-wdt: probe of 18060008.wdt failed with error -16
[    1.542714] NET: Registered protocol family 10
[    1.551361] Segment Routing with IPv6
[    1.555226] NET: Registered protocol family 17
[    1.559796] 8021q: 802.1Q VLAN Support v1.8
[    1.599062] Freeing unused kernel memory: 9176K
[    1.603685] This architecture does not have kernel memory protection.
[    1.610208] Run /init as init process
[    1.625860] init: Console is alive
[    1.629507] init: - watchdog -
[    1.655221] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    1.697026] usbcore: registered new interface driver usbfs
[    1.702710] usbcore: registered new interface driver hub
[    1.708187] usbcore: registered new device driver usb
[    1.743394] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.757941] SCSI subsystem initialized
[    1.766010] ehci-platform: EHCI generic platform driver
[    1.771517] ehci-platform 1b000000.usb: EHCI Host Controller
[    1.777348] ehci-platform 1b000000.usb: new USB bus registered, assigned bus number 1
[    1.785382] ehci-platform 1b000000.usb: irq 14, io mem 0x1b000000
[    1.812597] ehci-platform 1b000000.usb: USB 2.0 started, EHCI 1.00
[    1.819565] hub 1-0:1.0: USB hub found
[    1.823817] hub 1-0:1.0: 1 port detected
[    1.840313] usbcore: registered new interface driver usb-storage
[    1.847249] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    1.857011] init: - preinit -
[    2.051798] random: jshn: uninitialized urandom read (4 bytes read)
[    2.135558] random: jshn: uninitialized urandom read (4 bytes read)
[    2.311113] random: jshn: uninitialized urandom read (4 bytes read)
[    2.509751] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
4
[    3.388327] procd: Change state 0 -> 1
[    3.392201] procd: - early -
[    3.395811] procd: Watchdog handover: fd=3
[    3.400038] procd: - watchdog -
[    3.403356] procd: Ping
[    3.405932] procd: Opened watchdog with timeout 30s
[    3.439975] procd: {{"ACTION":"add","DEVPATH":"/devices/virtual/mem/full","SUBSYSTEM":"mem","SYNTH_UUID":"0","MAJOR":"1","MINOR":"7","DEVNAME":"full","DEVMODE":"0666","SEQNUM":"418"}}
[    3.466107] procd: Command: makedev
[    3.469710] procd:  /dev/full
[    3.472912] procd:  0666
[    3.475538] procd: Message:
[    3.478427] procd:  ACTION=add
[    3.481587] procd:  DEVPATH=/devices/virtual/mem/full
[    3.486823] procd:  SUBSYSTEM=mem
[    3.490245] procd:  SYNTH_UUID=0
[    3.493627] procd:  MAJOR=1
[    3.496520] procd:  MINOR=7
[    3.499414] procd:  DEVNAME=full
[    3.502797] procd:  DEVMODE=0666
[    3.506129] procd:  SEQNUM=418
[    3.509415] procd: Finished udevtrigger
[    3.513560] procd: {{"ACTION":"add","DEVPATH":"/devices/virtual/mem/urandom","SUBSYSTEM":"mem","SYNTH_UUID":"0","MAJOR":"1","MINOR":"9","DEVNAME":"urandom","DEVMODE":"0666","SEQNUM":"419"}}
[    3.530836] procd: Command: makedev
[    3.534488] procd:  /dev/urandom
[    3.537817] procd:  0666
[    3.540436] procd: Message:
[    3.543371] procd:  ACTION=add
[    3.546531] procd:  DEVPATH=/devices/virtual/mem/urandom
[    3.551976] procd:  SUBSYSTEM=mem
[    3.555527] procd:  SYNTH_UUID=0
[    3.558936] procd:  MAJOR=1
[    3.561834] procd:  MINOR=9
[    3.564783] procd:  DEVNAME=urandom
[    3.568380] procd:  DEVMODE=0666
[    3.573043] procd:  SEQNUM=419
[    3.576463] procd: {{"ACTION":"add","DEVPATH":"/devices/virtual/mem/null","SUBSYSTEM":"mem","SYNTH_UUID":"0","MAJOR":"1","MINOR":"3","DEVNAME":"null","DEVMODE":"0666","SEQNUM":"420"}}
[    3.596519] procd: Command: makedev
[    3.600124] procd:  /dev/null
[    3.603258] procd:  0666
[    3.605884] procd: Message:
[    3.608771] procd:  ACTION=add
[    3.611922] procd:  DEVPATH=/devices/virtual/mem/null
[    3.617152] procd:  SUBSYSTEM=mem
[    3.620572] procd:  SYNTH_UUID=0
[    3.623951] procd:  MAJOR=1
[    3.626848] procd:  MINOR=3
[    3.629741] procd:  DEVNAME=null
[    3.633113] procd:  DEVMODE=0666
[    3.636449] procd:  SEQNUM=420
[    3.639844] procd: {{"ACTION":"add","DEVPATH":"/devices/virtual/mem/random","SUBSYSTEM":"mem","SYNTH_UUID":"0","MAJOR":"1","MINOR":"8","DEVNAME":"random","DEVMODE":"0666","SEQNUM":"421"}}
[    3.656945] procd: Command: makedev
[    3.660544] procd:  /dev/random
[    3.663835] procd:  0666
[    3.666461] procd: Message:
[    3.669350] procd:  ACTION=add
[    3.672511] procd:  DEVPATH=/devices/virtual/mem/random
[    3.677917] procd:  SUBSYSTEM=mem
[    3.681340] procd:  SYNTH_UUID=0
[    3.684719] procd:  MAJOR=1
[    3.687613] procd:  MINOR=8
[    3.690507] procd:  DEVNAME=random
[    3.694063] procd:  DEVMODE=0666
[    3.697398] procd:  SEQNUM=421
[    3.700761] procd: {{"ACTION":"add","DEVPATH":"/devices/virtual/misc/network_latency","SUBSYSTEM":"misc","SYNTH_UUID":"0","MAJOR":"10","MINOR":"62","DEVNAME":"network_latency","SEQNUM":"422"}}
[    3.718497] procd: Command: makedev
[    3.722104] procd:  /dev/network_latency
[    3.726192] procd:  0600
[    3.728818] procd: Message:
[    3.731708] procd:  ACTION=add
[    3.734915] procd:  DEVPATH=/devices/virtual/misc/network_latency
[    3.741151] procd:  SUBSYSTEM=misc
[    3.744709] procd:  SYNTH_UUID=0
[    3.748040] procd:  MAJOR=10
[    3.751024] procd:  MINOR=62
[    3.754053] procd:  DEVNAME=network_latency
[    3.758355] procd:  SEQNUM=422
[    3.761788] procd: {{"ACTION":"add","DEVPATH":"/devices/virtual/misc/memory_bandwidth","SUBSYSTEM":"misc","SYNTH_UUID":"0","MAJOR":"10","MINOR":"60","DEVNAME":"memory_bandwidth","SEQNUM":"423"}}
[    3.779632] procd: Command: makedev
[    3.783288] procd:  /dev/memory_bandwidth
[    3.787411] procd:  0600
[    3.790041] procd: Message:
[    3.792976] procd:  ACTION=add
[    3.796137] procd:  DEVPATH=/devices/virtual/misc/memory_bandwidth
[    3.802460] procd:  SUBSYSTEM=misc
[    3.806018] procd:  SYNTH_UUID=0
[    3.809352] procd:  MAJOR=10
[    3.812333] procd:  MINOR=60
[    3.815371] procd:  DEVNAME=memory_bandwidth
[    3.819762] procd:  SEQNUM=423
[    3.823246] procd: {{"ACTION":"add","DEVPATH":"/devices/virtual/misc/cpu_dma_latency","SUBSYSTEM":"misc","SYNTH_UUID":"0","MAJOR":"10","MINOR":"63","DEVNAME":"cpu_dma_latency","SEQNUM":"424"}}
[    3.840909] procd: Command: makedev
[    3.844561] procd:  /dev/cpu_dma_latency
[    3.848598] procd:  0600
[    3.851228] procd: Message:
[    3.854163] procd:  ACTION=add
[    3.857324] procd:  DEVPATH=/devices/virtual/misc/cpu_dma_latency
[    3.863606] procd:  SUBSYSTEM=misc
[    3.867115] procd:  SYNTH_UUID=0
[    3.870541] procd:  MAJOR=10
[    3.873572] procd:  MINOR=63
[    3.876557] procd:  DEVNAME=cpu_dma_latency
[    3.880859] procd:  SEQNUM=424
[    3.884336] procd: {{"ACTION":"add","DEVPATH":"/devices/platform/watchdog/misc/watchdog","SUBSYSTEM":"misc","SYNTH_UUID":"0","MAJOR":"10","MINOR":"130","DEVNAME":"watchdog","SEQNUM":"425"}}
[    3.901731] procd: Command: makedev
[    3.905388] procd:  /dev/watchdog
[    3.908808] procd:  0600
[    3.911435] procd: Message:
[    3.914375] procd:  ACTION=add
[    3.917531] procd:  DEVPATH=/devices/platform/watchdog/misc/watchdog
[    3.924079] procd:  SUBSYSTEM=misc
[    3.927589] procd:  SYNTH_UUID=0
[    3.930921] procd:  MAJOR=10
[    3.933942] procd:  MINOR=130
[    3.937013] procd:  DEVNAME=watchdog
[    3.940699] procd:  SEQNUM=425
[    3.944169] procd: {{"ACTION":"add","DEVPATH":"/devices/virtual/misc/network_throughput","SUBSYSTEM":"misc","SYNTH_UUID":"0","MAJOR":"10","MINOR":"61","DEVNAME":"network_throughput","SEQNUM":"426"}}
[    3.962364] procd: Command: makedev
[    3.966020] procd:  /dev/network_throughput
[    3.970320] procd:  0600
[    3.972996] procd: Message:
[    3.975892] procd:  ACTION=add
[    3.979051] procd:  DEVPATH=/devices/virtual/misc/network_throughput
[    3.985601] procd:  SUBSYSTEM=misc
[    3.989111] procd:  SYNTH_UUID=0
[    3.992443] procd:  MAJOR=10
[    3.995473] procd:  MINOR=61
[    3.998455] procd:  DEVNAME=network_throughput
[    4.003067] procd:  SEQNUM=426
[    4.006498] procd: {{"ACTION":"add","DEVPATH":"/devices/platform/watchdog/watchdog/watchdog0","SUBSYSTEM":"watchdog","SYNTH_UUID":"0","MAJOR":"253","MINOR":"0","DEVNAME":"watchdog0","SEQNUM":"427"}}
[    4.024759] procd: Command: makedev
[    4.028361] procd:  /dev/watchdog0
[    4.031868] procd:  0600
[    4.034554] procd: Message:
[    4.037447] procd:  ACTION=add
[    4.040608] procd:  DEVPATH=/devices/platform/watchdog/watchdog/watchdog0
[    4.047597] procd:  SUBSYSTEM=watchdog
[    4.051457] procd:  SYNTH_UUID=0
[    4.054837] procd:  MAJOR=253
[    4.057907] procd:  MINOR=0
[    4.060802] procd:  DEVNAME=watchdog0
[    4.064623] procd:  SEQNUM=427
[    4.068057] procd: {{"ACTION":"add","DEVPATH":"/devices/virtual/tty/ptmx","SUBSYSTEM":"tty","SYNTH_UUID":"0","MAJOR":"5","MINOR":"2","DEVNAME":"ptmx","DEVMODE":"0666","SEQNUM":"428"}}
[    4.084807] procd: Command: makedev
[    4.088409] procd:  /dev/ptmx
[    4.091476] procd:  0666
[    4.094145] procd: Message:
[    4.097041] procd:  ACTION=add
[    4.100199] procd:  DEVPATH=/devices/virtual/tty/ptmx
[    4.105429] procd:  SUBSYSTEM=tty
[    4.108854] procd:  SYNTH_UUID=0
[    4.112185] procd:  MAJOR=5
[    4.115126] procd:  MINOR=2
[    4.118020] procd:  DEVNAME=ptmx
[    4.121354] procd:  DEVMODE=0666
[    4.124735] procd:  SEQNUM=428
[    4.128095] procd: {{"ACTION":"add","DEVPATH":"/devices/virtual/tty/console","SUBSYSTEM":"tty","SYNTH_UUID":"0","MAJOR":"5","MINOR":"1","DEVNAME":"console","SEQNUM":"429"}}
[    4.143994] procd: Command: makedev
[    4.147601] procd:  /dev/console
[    4.150930] procd:  0600
[    4.153610] procd: Message:
[    4.156502] procd:  ACTION=add
[    4.159665] procd:  DEVPATH=/devices/virtual/tty/console
[    4.165159] procd:  SUBSYSTEM=tty
[    4.168585] procd:  SYNTH_UUID=0
[    4.171918] procd:  MAJOR=5
[    4.174922] procd:  MINOR=1
[    4.177819] procd:  DEVNAME=console
[    4.181416] procd:  SEQNUM=429
[    4.184901] procd: {{"ACTION":"add","DEVPATH":"/devices/platform/ahb/ahb:apb/18020000.uart/tty/ttyS0","SUBSYSTEM":"tty","SYNTH_UUID":"0","MAJOR":"4","MINOR":"64","DEVNAME":"ttyS0","SEQNUM":"430"}}
[    4.202910] procd: Command: makedev
[    4.206516] procd:  /dev/ttyS0
[    4.209670] procd:  0660
[    4.212292] procd:  dialout
[    4.215229] procd: Message:
[    4.218120] procd:  ACTION=add
[    4.221280] procd:  DEVPATH=/devices/platform/ahb/ahb:apb/18020000.uart/tty/ttyS0
[    4.228974] procd:  SUBSYSTEM=tty
[    4.232394] procd:  SYNTH_UUID=0
[    4.235785] procd:  MAJOR=4
[    4.238677] procd:  MINOR=64
[    4.241659] procd:  DEVNAME=ttyS0
[    4.245128] procd:  SEQNUM=430
[    4.248524] procd: Command: makedev
[    4.252127] procd:  /dev/ttyS0
[    4.255334] procd:  0600
[    4.257966] procd: Message:
[    4.260862] procd:  ACTION=add
[    4.264068] procd:  DEVPATH=/devices/platform/ahb/ahb:apb/18020000.uart/tty/ttyS0
[    4.271712] procd:  SUBSYSTEM=tty
[    4.275182] procd:  SYNTH_UUID=0
[    4.278513] procd:  MAJOR=4
[    4.281409] procd:  MINOR=64
[    4.284439] procd:  DEVNAME=ttyS0
[    4.287860] procd:  SEQNUM=430
[    4.291277] procd: {{"ACTION":"add","DEVPATH":"/devices/virtual/tty/tty","SUBSYSTEM":"tty","SYNTH_UUID":"0","MAJOR":"5","MINOR":"0","DEVNAME":"tty","DEVMODE":"0666","SEQNUM":"431"}}
[    4.307852] procd: Command: makedev
[    4.311454] procd:  /dev/tty
[    4.314482] procd:  0666
[    4.317107] procd: Message:
[    4.319998] procd:  ACTION=add
[    4.323203] procd:  DEVPATH=/devices/virtual/tty/tty
[    4.328391] procd:  SUBSYSTEM=tty
[    4.331818] procd:  SYNTH_UUID=0
[    4.335201] procd:  MAJOR=5
[    4.338099] procd:  MINOR=0
[    4.340994] procd:  DEVNAME=tty
[    4.344286] procd:  DEVMODE=0666
[    4.347621] procd:  SEQNUM=431
[    4.351004] procd: {{"ACTION":"add","DEVPATH":"/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd4/mtdblock4","SUBSYSTEM":"block","SYNTH_UUID":"0","MAJOR":"31","MINOR":"4","DEVNAME":"mtdblock4","DEVTYPE":"disk","SEQNUM":"432"}}
[    4.373069] procd: Command: makedev
[    4.376673] procd:  /dev/mtdblock4
[    4.380179] procd:  0600
[    4.382851] procd: Message:
[    4.385741] procd:  ACTION=add
[    4.388894] procd:  DEVPATH=/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd4/mtdblock4
[    4.398610] procd:  SUBSYSTEM=block
[    4.402208] procd:  SYNTH_UUID=0
[    4.405588] procd:  MAJOR=31
[    4.408571] procd:  MINOR=4
[    4.411465] procd:  DEVNAME=mtdblock4
[    4.415286] procd:  DEVTYPE=disk
[    4.418619] procd:  SEQNUM=432
[    4.421938] procd: Command: exec
[    4.425329] procd:  /sbin/hotplug-call
[    4.429187] procd:  block
[    4.431905] procd: Message:
[    4.434850] procd:  ACTION=add
[    4.438007] procd:  DEVPATH=/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd4/mtdblock4
[    4.447730] procd:  SUBSYSTEM=block
[    4.451329] procd:  SYNTH_UUID=0
[    4.454711] procd:  MAJOR=31
[    4.457691] procd:  MINOR=4
[    4.460586] procd:  DEVNAME=mtdblock4
[    4.464408] procd:  DEVTYPE=disk
[    4.467741] procd:  SEQNUM=432
[    4.471491] procd: Launched hotplug exec instance, pid=549
[    4.482908] procd: {{"ACTION":"add","DEVPATH":"/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd2/mtdblock2","SUBSYSTEM":"block","SYNTH_UUID":"0","MAJOR":"31","MINOR":"2","DEVNAME":"mtdblock2","DEVTYPE":"disk","SEQNUM":"433"}}
[    4.521441] procd: Command: makedev
[    4.532739] procd:  /dev/mtdblock2
[    4.536261] procd:  0600
[    4.538885] procd: Message:
[    4.541776] procd:  ACTION=add
block: unable to load c[    4.548332] procd:  DEVPATH=/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd2/mtdblock2
onfiguration (fs[    4.558562] random: fast init done
tab: Entry not f[    4.563507] procd:  SUBSYSTEM=block
ound)
block: no[    4.568430] procd:  SYNTH_UUID=0
 usable configur[    4.573144] procd:  MAJOR=31
ation
[    4.577445] procd:  MINOR=2
[    4.580865] procd:  DEVNAME=mtdblock2
[    4.584686] procd:  DEVTYPE=disk
[    4.588020] procd:  SEQNUM=433
[    4.591372] procd: Command: exec
[    4.594823] procd:  /sbin/hotplug-call
[    4.599691] procd:  block
[    4.602416] procd: Message:
[    4.612454] procd:  ACTION=add
[    4.615681] procd:  DEVPATH=/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd2/mtdblock2
[    4.625393] procd:  SUBSYSTEM=block
[    4.629071] procd:  SYNTH_UUID=0
[    4.632406] procd:  MAJOR=31
[    4.635440] procd:  MINOR=2
[    4.638339] procd:  DEVNAME=mtdblock2
[    4.642112] procd:  DEVTYPE=disk
[    4.645494] procd:  SEQNUM=433
[    4.648735] procd: Finished hotplug exec instance, pid=549
[    4.654977] procd: Launched hotplug exec instance, pid=555
[    4.660837] procd: {{"ACTION":"add","DEVPATH":"/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd0/mtdblock0","SUBSYSTEM":"block","SYNTH_UUID":"0","MAJOR":"31","MINOR":"0","DEVNAME":"mtdblock0","DEVTYPE":"disk","SEQNUM":"434"}}
[    4.704798] procd: Command: makedev
[    4.708406] procd:  /dev/mtdblock0
[    4.711914] procd:  0600
[    4.722736] procd: Message:
[    4.725638] procd:  ACTION=add
[    4.728796] procd:  DEVPATH=/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd0/mtdblock0
block: unable to load c[    4.741406] procd:  SUBSYSTEM=block
onfiguration (fs[    4.745645] procd:  SYNTH_UUID=0
tab: Entry not f[    4.750297] procd:  MAJOR=31
ound)
block: no[    4.754662] procd:  MINOR=0
 usable configur[    4.758878] procd:  DEVNAME=mtdblock0
ation
[    4.764033] procd:  DEVTYPE=disk
[    4.767873] procd:  SEQNUM=434
[    4.771227] procd: Command: exec
[    4.774618] procd:  /sbin/hotplug-call
[    4.778477] procd:  block
[    4.781276] procd: Message:
[    4.784223] procd:  ACTION=add
[    4.787386] procd:  DEVPATH=/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd0/mtdblock0
[    4.797101] procd:  SUBSYSTEM=block
[    4.800697] procd:  SYNTH_UUID=0
[    4.804077] procd:  MAJOR=31
[    4.807060] procd:  MINOR=0
[    4.809955] procd:  DEVNAME=mtdblock0
[    4.813774] procd:  DEVTYPE=disk
[    4.817109] procd:  SEQNUM=434
[    4.820339] procd: Finished hotplug exec instance, pid=555
[    4.826580] procd: Launched hotplug exec instance, pid=560
[    4.832495] procd: {{"ACTION":"add","DEVPATH":"/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd3/mtdblock3","SUBSYSTEM":"block","SYNTH_UUID":"0","MAJOR":"31","MINOR":"3","DEVNAME":"mtdblock3","DEVTYPE":"disk","SEQNUM":"435"}}
[    4.876170] procd: Command: makedev
[    4.879778] procd:  /dev/mtdblock3
[    4.892747] procd:  0600
[    4.895384] procd: Message:
[    4.898281] procd:  ACTION=add
[    4.901440] procd:  DEVPATH=/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd3/mtdblock3
block: unable to load c[    4.912878] procd:  SUBSYSTEM=block
onfiguration (fs[    4.917022] procd:  SYNTH_UUID=0
tab: Entry not f[    4.921687] procd:  MAJOR=31
ound)
block: no[    4.926059] procd:  MINOR=3
 usable configur[    4.930274] procd:  DEVNAME=mtdblock3
ation
[    4.935484] procd:  DEVTYPE=disk
[    4.939280] procd:  SEQNUM=435
[    4.942658] procd: Command: exec
[    4.945999] procd:  /sbin/hotplug-call
[    4.949855] procd:  block
[    4.952597] procd: Message:
[    4.955506] procd:  ACTION=add
[    4.958668] procd:  DEVPATH=/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd3/mtdblock3
[    4.968382] procd:  SUBSYSTEM=block
[    4.971981] procd:  SYNTH_UUID=0
[    4.975359] procd:  MAJOR=31
[    4.978344] procd:  MINOR=3
[    4.981238] procd:  DEVNAME=mtdblock3
[    4.985059] procd:  DEVTYPE=disk
[    4.988392] procd:  SEQNUM=435
[    4.991617] procd: Finished hotplug exec instance, pid=560
[    4.997854] procd: Launched hotplug exec instance, pid=565
[    5.012914] procd: {{"ACTION":"add","DEVPATH":"/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd1/mtdblock1","SUBSYSTEM":"block","SYNTH_UUID":"0","MAJOR":"31","MINOR":"1","DEVNAME":"mtdblock1","DEVTYPE":"disk","SEQNUM":"436"}}
[    5.047504] procd: Command: makedev
[    5.051114] procd:  /dev/mtdblock1
[    5.062814] procd:  0600
[    5.065444] procd: Message:
[    5.068341] procd:  ACTION=add
[    5.071503] procd:  DEVPATH=/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd1/mtdblock1
block: unable to load c[    5.084173] procd:  SUBSYSTEM=block
onfiguration (fs[    5.088446] procd:  SYNTH_UUID=0
tab: Entry not f[    5.093113] procd:  MAJOR=31
ound)
block: no[    5.097414] procd:  MINOR=1
 usable configur[    5.101647] procd:  DEVNAME=mtdblock1
ation
[    5.106801] procd:  DEVTYPE=disk
[    5.110644] procd:  SEQNUM=436
[    5.114036] procd: Command: exec
[    5.117379] procd:  /sbin/hotplug-call
[    5.121237] procd:  block
[    5.124007] procd: Message:
[    5.126906] procd:  ACTION=add
[    5.130067] procd:  DEVPATH=/devices/platform/ahb/1f000000.spi/spi_master/spi0/spi0.0/mtd/mtd1/mtdblock1
[    5.139781] procd:  SUBSYSTEM=block
[    5.143421] procd:  SYNTH_UUID=0
[    5.146757] procd:  MAJOR=31
[    5.149740] procd:  MINOR=1
[    5.152681] procd:  DEVNAME=mtdblock1
[    5.156454] procd:  DEVTYPE=disk
[    5.159789] procd:  SEQNUM=436
[    5.163058] procd: Finished hotplug exec instance, pid=565
[    5.169258] procd: Launched hotplug exec instance, pid=570
block: unable to load c[    5.207502] procd: Finished hotplug exec instance, pid=570
onfiguration (fstab: Entry not found)
block: no usable configuration
[    5.663363] procd: Coldplug complete
[    5.667059] procd: Change state 1 -> 2
[    5.670920] procd: - watchdog -
[    5.674231] procd: Ping
[    5.676800] procd: Opened watchdog with timeout 30s
[    5.681952] procd: - ubus -
[    5.684953] procd: Create service ubus
[    5.688886] procd: Start instance ubus::instance1
[    5.694227] procd: Started instance ubus::instance1[575]
[    5.699831] procd: running /etc/init.d/ubus running
[    5.709982] urandom_read: 5 callbacks suppressed
[    5.709988] random: ubusd: uninitialized urandom read (4 bytes read)
[    5.721371] procd: glob failed on /etc/init.d/ubus
[    5.734979] random: ubusd: uninitialized urandom read (4 bytes read)
[    5.742633] procd: Connected to ubus, id=b4c1e652
[    5.747505] procd: Change state 2 -> 3
[    5.751369] procd: - init -
[    5.754881] procd: Parsing inittab - ::sysinit:/etc/init.d/rcS S boot
[    5.761653] procd: Parsing inittab - ::shutdown:/etc/init.d/rcS K shutdown
[    5.768901] procd: Parsing inittab - ::askconsole:/usr/libexec/login.sh
[    5.776445] procd: Launched new askconsole action, pid=576
[    5.782184] procd: running /etc/rc.d/S* boot
Please press Enter to activate this console.
[    6.194421] kmodloader: loading kernel modules from /etc/modules.d/*
[    6.212484] urngd: v1.0.0 started.
[    6.243045] RPC: Registered named UNIX socket transport module.
[    6.249050] RPC: Registered udp transport module.
[    6.253862] RPC: Registered tcp transport module.
[    6.258631] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    6.329704] Loading modules backported from Linux version v4.19.32-0-g3a2156c839c7
[    6.337432] Backport generated by backports.git v4.19.32-1-0-g1c4f7569
[    6.400206] xt_time: kernel timezone is -0000
[    6.485560] random: crng init done
[    6.509556] PPP generic driver version 2.4.2
[    6.517200] NET: Registered protocol family 24
[    6.555034] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x3c.
[    6.564332] ath10k_pci 0000:00:00.0: enabling device (0000 -> 0002)
[    6.572993] ath10k_pci 0000:00:00.0: pci irq legacy oper_irq_mode 1 irq_mode 0 reset_mode 0
[    6.940515] firmware ath10k!fwcfg-pci-0000:00:00.0.txt: firmware_loading_store: map pages failed
[    7.136528] firmware ath10k!pre-cal-pci-0000:00:00.0.bin: firmware_loading_store: map pages failed
[    7.331480] firmware ath10k!QCA988X!hw2.0!ct-firmware-5.bin: firmware_loading_store: map pages failed
[    7.527278] firmware ath10k!QCA988X!hw2.0!ct-firmware-2.bin: firmware_loading_store: map pages failed
[    7.722024] firmware ath10k!QCA988X!hw2.0!firmware-6.bin: firmware_loading_store: map pages failed
[    7.916680] firmware ath10k!QCA988X!hw2.0!firmware-5.bin: firmware_loading_store: map pages failed
[    8.109290] firmware ath10k!QCA988X!hw2.0!firmware-4.bin: firmware_loading_store: map pages failed
[    8.303788] firmware ath10k!QCA988X!hw2.0!firmware-3.bin: firmware_loading_store: map pages failed
[    8.314871] ath10k_pci 0000:00:00.0: qca988x hw2.0 target 0x4100016c chip_id 0x043202ff sub 0000:0000
[    8.324271] ath10k_pci 0000:00:00.0: kconfig debug 0 debugfs 1 tracing 0 dfs 1 testmode 0
[    8.336676] ath10k_pci 0000:00:00.0: firmware ver 10.1-ct-8x-__fW-022-8f2afb9e api 2 features wmi-10.x,has-wmi-mgmt-tx,mfp,txstatus-noack,wmi-10.x-CT,ratemask-CT,txrate-CT,get-temp-CT,tx-rc-CT,cust-stats-CT,retry-gt2-CT,txrate2-CT,beacon-cb-CT,wmi-block-ack-CT crc32 f90f1a48
[    8.570604] firmware ath10k!QCA988X!hw2.0!board-2.bin: firmware_loading_store: map pages failed
[    8.579814] ath10k_pci 0000:00:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08
[    9.527878] ath10k_pci 0000:00:00.0: 10.1 wmi init: vdevs: 16  peers: 127  tid: 256
[    9.545337] ath10k_pci 0000:00:00.0: wmi print 'P 128 V 8 T 410'
[    9.551638] ath10k_pci 0000:00:00.0: wmi print 'msdu-desc: 1424  sw-crypt: 0 ct-sta: 0'
[    9.559786] ath10k_pci 0000:00:00.0: wmi print 'alloc rem: 24616 iram: 26120'
[    9.627959] ath10k_pci 0000:00:00.0: htt-ver 2.1 wmi-op 2 htt-op 2 cal file max-sta 128 raw 0 hwcrypto 1
[    9.640803] ath10k_pci 0000:00:00.0: NOTE:  Firmware DBGLOG output disabled in debug_mask: 0x10000000
[    9.881894] ieee80211 phy1: Atheros AR9550 Rev:0 mem=0xb8100000, irq=13
[    9.927828] kmodloader: done loading kernel modules from /etc/modules.d/*
[   36.004656] eth0: link up (1000Mbps/Full duplex)
[   36.009893] br-lan: port 1(eth0) entered blocking state
[   36.015260] br-lan: port 1(eth0) entered disabled state
[   36.020824] device eth0 entered promiscuous mode
[   36.037507] br-lan: port 1(eth0) entered blocking state
[   36.042857] br-lan: port 1(eth0) entered forwarding state
[   36.048489] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
[   36.992606] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
udhcpc: started, v1.31.0
udhcpc: sending discover
udhcpc: no lease, failing

Revisited the logs now that I had some time for that.

block: unable to load configuration (fstab: Entry not found)

Would lead me to believe the partitioning isn't quite right. So here's the layout "original" vs. homemade

[    6.550000] 7 cmdlinepart partitions found on MTD device spi0.0
[    6.560000] Creating 7 MTD partitions on "spi0.0":
[    6.560000] 0x000000000000-0x000000040000 : "u-boot"
[    6.570000] 0x000000040000-0x000000050000 : "u-boot-env"
[    6.570000] 0x000000050000-0x000000060000 : "art"
[    6.580000] 0x000000060000-0x000000070000 : "astaro_stat_cfg"
[    6.590000] 0x000000070000-0x0000007e0000 : "astaro_image"
[    6.590000] 0x0000007e0000-0x0000007f0000 : "astaro_backup"
[    6.600000] 0x0000007f0000-0x000000800000 : "astaro_dyn_cfg"
-------------------------------------------------------------------
[    0.615656] Creating 5 MTD partitions on "spi0.0":
[    0.620534] 0x000000000000-0x000000040000 : "u-boot"
[    0.626305] 0x000000040000-0x000000050000 : "u-boot-env"
[    0.632318] 0x000000050000-0x000000060000 : "art"
[    0.637850] 0x000000060000-0x000000070000 : "art_bak"
[    0.643679] 0x000000070000-0x000001000000 : "firmware"

Now, "mtdblock" seems to be the board's NAND and the way I read this, it can't mount any of the partitions. This doesn't make too much sense to me, given I can read the "cal-pci-0000:00:00.0.bin" that's been written to the devices flash somewhere and rest of the boot process seems to work.

Unfortunately, right now I don't have access to the firmware that produced above output (with the included "cal-pci-0000:00:00.0.bin") BUT the one I wrote to flash the other day has just an empty fstab. That doesn't seem right either

root@OpenWrt:/# cat /etc/fstab 
# <file system> <mount point> <type> <options> <dump> <pass>
root@OpenWrt:/# 

Any suggestions?

Hey!

Did you manage to get anywhere with this. I've now got an AP55 which is soft-bricked.
Happy to donate to the cause and see if I can find anything out to help.

Thanks.
Oliver.

Hi all,

I grabbed the GPL source ISO from Sophos and went through the (relatively painless) process of adding support to 21.02; you can find the branch with it enabled over here on my GitHub account and I'll upload the imagebuilder/prebuilt images somewhere once the make run finishes.

[Edit The Third]: I didn't test those images before uploading them, and I broke the ethernet port. Oops. Misconfiguration of the GMAC in the device tree, will push an update and actually test the damn images before I upload new ones.

[Edit The Fourth]: OKAY! COOL! Actually works now. Three characters in a dtsi file... Anyway. Mega folder with the full .tar.gz of all the images and the imagebuilder, plus just the images, is over here. As a bonus, it fits inside the factory image partition now.

You'll probably want to use the imagebuilder, since I shoved a bunch of unnecessary packages into the base image, but meh.

Easiest way to flash is by hooking the unit up to an SG or XG software appliance, then using awetool from the appliance console to SSH into it, SCPing over the new image to /tmp and running mtd -r write /tmp/openwrt-file-name.bin astaro_image

You could also tftpboot the kernel-initramfs image, put it into recovery mode, and do the same thing there.

I'm working on the necessary bits and pieces to make it work with master so it can be added to the next release, but for now, this will work :slight_smile:

Please note: the USB port on the AP55/AP100 most likely doesn't work yet, you'll need to flip on GPIO 21 or 22 (not sure which) to enable it. I should have an AP55 on-hand shortly (only have 55Cs at the moment)

2 Likes

Hi, do sophos 55c need some puul-up resistors to serial console?when i connected to header i've got only trash , 115200 baudrate 8,1 .

It shouldn’t need any pull-ups, no - of the four units I’ve hooked up a console to, they all worked with just a generic 3.3V USB-serial adapter.

The pinout is a bit weird, though - pin 1 is marked on the board:

1 - 3.3V
2 - GND
3 - TX (connect to RX on adapter)
4 - RX (connect to TX on adapter)

Some very, very old versions of the Sophos u-boot may use 19200, 38400, or 57600, so it’s worth trying different bitrates. Make sure you don’t connect the 3.3V line to your adapter, as well!

A more general update: my PR is still open over here but it’s stalled; need to chase that up on IRC and find out whether the LED names in the device tree need changing or not before merge.

In the meantime, I’ve got a build of 21.02.1 that is compatible with the official repo kernel module packages, and equivalent to what an official build would look like if this was backported - I’ll post a link to the image builder bundle in a few hours once I’m home :wink:

It's a little bit late, but I've updated the Mega folder linked in an earlier post with an image/imagebuilder for these APs that's compatible with the 21.02.1 release repos :smiley:

USB on the AP55/100 (non-C) doesn't work yet - I have a couple AP55 on-hand, but I've not worked out which GPIO actually turns power on/off. When I plug a USB device in, it gets powered on and off over and over again - i've not had time to go digging through GPIOs to work out what's going on there.

On the plus side, once OpenWRT is installed the RJ45 serial console on the AP55 works, so that's nice.

Hi, thank You very much! my ap55c now work like it should. I'm getting decent speeds like 350-370Mbps with sirq ~90% , i'm thinking about overklocking cpu to get over 400Mbps. My firewall is disabled, all rules set to accept, how can speed up this ap?

Second thing is when i open it up, saw there are element soldered for three streams so it might be possible to unlock one more?

That's about what I'd expect to see from a 2x2 radio on an 80MHz channel - 867Mbps is the maximum theoretical, half-duplex, raw air interface throughput; you will never achieve that level of throughput with actual traffic.

The closest you'll get is a one-way UDP iperf test where you might be able to achieve 700mbps if you're extremely lucky. TCP throughput I'd expect about 350-400mbps at best, which is around what you're seeing. For comparison, I get about 1Gbps TCP from a 4x4:4 access point on a 160MHz channel with a 3x3 client :wink:

You can try overclocking it, but I doubt it will make a huge difference - ath79 chips are not exactly new...

There are indeed all 3 radio chains on the board, the AP55(C) (2x2) and AP100(C) (3x3) hardware are identical (save for the missing 3rd antenna on the AP55), but unfortunately the flash only contains radio calibration data for two chains. It's not possible to add the missing data, the data is unique to every individual device & you need tens of thousands of dollars of equipment (and software Qualcomm will definitely not give you) in order to generate it.

It's quite frustrating that these were artificially restricted :frowning:

Thanks, works like charm on a sophos AP55 but i get very slow wifi on 2.4ghz .. (stuck at 144mbits) on a 1gbits internet connection

2.4GHz is usually pretty garbage. On a 20MHz channel, 144Mbps is about all I'd expect - throughput depends an awful lot on your specific wireless settings, but with a 2x2 client even if you're on "a" 40MHz channel I wouldn't expect much more than that in actual throughput.

The absolute theoretical maximum for a 2x2 client on a 40MHz channel in 2.4GHz is 300mbps half-duplex; 802.11ac / "WiFi 5" is a 5GHz only standard, the 2.4GHz side is exactly the same as 802.11n. WiFi 6 did finally make some significant improvements to 2.4GHz, but that's not exactly helpful with a WiFi 5 AP :wink:

There are a few settings you can tweak to make sure you're getting the best performance you can - make sure you're using WPA2-PSK with AES only (no TKIP), set it to use short guard interval, make sure country code is set correctly, try out different channels, that sort of thing - but it's not likely to make much difference. If you want more throughput, realistically, you'll need 5GHz support on your client.

1 Like

PR has been applied to master! Many thanks to @hauke :slight_smile:

I'll make some enquiries about backporting to 22.03 since the patch should apply cleanly to that tree, but hey look, snapshot builds!

Need to create the ToH/wiki pages, too...