Hi everyone,
I am looking to start a porting/hardware support thread for the Aruba AP-635 (internal enterprise codename: Cragganmore). This is a highly capable enterprise Tri-Band Wi-Fi 6E access point that often shows up on the secondary market. Given the internal specs—especially the massive 2GB RAM and the use of eMMC storage rather than raw NAND—this would make an incredibly robust OpenWrt target for the qualcommax / ipq60xx family.
I have hooked up a serial console, dumped the bootloader environment, and analyzed the stock kernel initialization logs. Below is the hardware breakdown and the current roadblocks regarding the locked APBoot implementation.
Hardware Specifications
-
SoC: Qualcomm Networking Pro 610 platform (IPQ6010 / IPQ6018 family)
-
RAM: 2 GiB DRAM
-
Boot Flash: Macronix MX25U6435F (8 MiB SPI-NOR - holds bootloader)
-
Storage: eMMC (Managed via
mmc0) -
Ethernet: Dual Multi-Gigabit Ports (eth0 up at 1 Gb/s / 2.5 Gb/s capable)
-
Wireless: Tri-band 2x2:2
-
2.4 GHz: Integrated IPQ6010
-
5 GHz: Integrated IPQ6010
-
6 GHz (Wi-Fi 6E): Qualcomm QCN9072 (connected via PCIe)
-
Serial Console: 9600 baud, 8N1 (
console=ttyMSM0,9600n8)
Technical Roadblocks & APBoot Analysis
The primary obstacle right now is the heavily restricted APBoot (v2.6.2.3) environment. Aruba has stripped out standard memory-access and booting commands like bootm, go, md, or netget. The only available mechanisms for loading external files are tftpboot and upgrade.
Furthermore, Secure Boot signature checking is explicitly active. To test if network booting checks for cryptographic signatures, I hosted a dummy plain-text file (test.ari) containing the string "OpenWrt Test File" on a local TFTP server.
APBoot successfully downloads the file to 0x50500000, but immediately parses the header and drops into a retry loop with the following error:
Invalid image format version: 0x57727420
Converting the hex value 0x57727420 to ASCII yields "Wrt ", proving that the bootloader validates the file format before execution. If a valid header is supplied, it is highly likely it will immediately trigger the RSA/SHA256 signature verification mechanism seen during a standard boot.
Raw APBoot Environment (printenv)
apboot> printenv
autoload=n
autostart=yes
baudrate=9600
boardname=Cragganmore
bootargs=console=ttyMSM0,9600n8
bootcmd=boot ap
bootdelay=2
bootfile=arm64emmc.ari
enet1_mode=uplink
ethaddr=xx:xx:xx::xx
force_at_power=1
installation_type=1
num_reboot=72
os_partition=0
radio0_channel=1140
radio0_power_10x=510
radio1_channel=257
radio1_power_10x=510
radio2_channel=1409
radio2_power_10x=510
servername=aruba-conductor
singleap_mode=1
standalone_mode=1
start_type=warm_start
stderr=serial
stdin=serial
stdout=serial
uap_controller_less=1
usb-port-disable=1
Raw APBoot Available Commands (help)
apboot> help
boot - boot the OS image
clear - clear the OS image or other information
dhcp - invoke DHCP client to obtain IP/boot params
factory_reset- reset to factory defaults
help - print command description/usage
lock - lock setting commands
mfginfo - show manufacturing info
osinfo - show the OS image version(s)
ping - send ICMP ECHO_REQUEST to network host
printenv - print environment variables
purgeenv - restore default environment variables
reset - Perform RESET of the CPU
saveenv - save environment variables to persistent storage
setenv - set environment variables
tftpboot - boot image via network using TFTP protocol
upgrade - upgrade the APBoot or OS image
version - print monitor, compiler and linker version
Stock OS Kernel Bootlog (Partial)
APBoot 2.6.2.3 (build 80087)
Built: 2021-04-29 at 10:04:03
Model: AP-635
DRAM: 2 GiB
Flash: Detected MX25U6435F: total 8 MiB
MMC: 0 (eMMC)
PCIE: link up
Power: DC
Radio: qcn9072#0, ipq6010#1,ipq6010#2
Reset: cold
FIPS: passed
Hit <Enter> to stop autoboot: 0
Booting OS partition 0
Checking image @ 0x0
Copying image from 0x50500000
Image is signed; verifying checksum... passed
SHA2 Signature available
Signer Cert OK
Policy Cert OK
RSA signature verified using SHA2.
Uncompressing Kernel Image ... OK
[ 0.000000]
[ 0.000000] HPE Aruba Networking
[ 0.000000] ArubaOS Version 8.13.2.0-8.13.2.0 (build 95415 / label #95415)
[ 0.000000] Built by jenkins@046017031bf0 on 2026-03-25 at 13:24:54 UTC (gcc version 5.3.0)
[ 0.000000] p:anul_base: 0xb8000000, v:anul_base: 0xffffffc078000000, size:0x1800000
[ 0.081101] Read of property:soc_version_minor from node failed
[ 1.443312] tpm tpm0: TPM2_RC_INITIALIZE (256) continue selftest
[ 2.153710] tpm tpm0: TPM2 self test passed
[ 2.599347] cnss: INFO: IPC Logging is disabled!
[ 2.599452] cnss[27]: INFO: Disabling regdb support for QCN9000_PCI0
[ 2.643366] cnss[27]: INFO: Platform driver probed successfully. plat ffffffc074a10018 tgt 0x1104
[ 2.718430] cnss[2]: INFO: Disabling regdb support for QCA6018
[ 2.824514] cnss[2]: INFO: Platform driver probed successfully. plat ffffffc074a00018 tgt 0xfffd
[ 2.894406] cnss[27]: INFO: PCI device ffffffc074ba9800 probed successfully
[ 3.249737] Starting Kernel AES KAT ...
[ 3.249783] Completed Kernel AES KAT
[ 3.283121] Starting Kernel AESGCM KAT ...
[ 3.326872] Completed Kernel AESGCM KAT
Verify with split cert file, size 3416
/bin/ap_img_check: '/bin/ap_img_check' is not an ELF executable for ARM
Image Signature Verified Successfully using SHA256 Message Digest.
OpenRC 0.42.1 is starting up Linux 4.4.60 (aarch64)
AP rebooted caused by cold HW reset(power loss)
<<<<< Welcome to the Access Point >>>>>
Starting running Openssl3 FIPS KAT
User: User: openssl3 KAT successfully
Completed Openssl3 FIPS KAT test
ble_ready NOT present @init ....
[ 183.086230] aruba_radioconfig_phymode not match phymode
[ 183.174987] aruba_radioconfig_phymode not match phymode
Firmware AES-CCM Known Answer Test Passed
[ 189.471289] (19:25:10) !!! Init ---> Conductor
User: ble_ready is present @39 .... start processing msgs from APB
User:
User: admin
Password:
show tech-support and show tech-support supplemental are the two most useful outputs to collect for any kind of troubleshooting session.
xx:xx:xx::xx#
Raw Aruba CLI Available Commands (?)
xx:xx:xx::xx# ?
AT AT command to Cellular modems; Format: AT "<at-cmd>"
a-ant-pol Set external antenna polarization [0/1], 0 as co-polarization, 1 as cross-polarization.
a-channel static 5 GHz channel and power... set it to 0 for ARM assigned
a-external-antenna
a-max-clients
aaa
am
ant-pol-6ghz Set external antenna polarization [0/1], 0 as co-polarization, 1 as cross-polarization.
ap Access Point
ap-env
ap-frequent-scan
ap-installation default/indoor/outdoor
ap-leds
ap-poe-power-optimization Enable optimization that will minimize the POE draw of the AP. Enabling optimization may disable some parts of the AP. When disabled, all features are enabled.
ap-range-bssid-filter
ap-range-rssi-filter
ap1x-peap-user
ap2xx-prestandard-poe-detection
apply
aruba-modem-qlog
ble-configure
ble-fix-inventory
ble-init-action
ble-test
ca-bundle
clarity-synthetic
clear
clear-cellular-profile
clear-cert
clear-dhcpopt82
clock System time
cluster-security
commit
configure Configuration commands
connect-support
convert-aos-ap
copy Copy files
crypto
custom_var
debug Debugging information
debug-activate-alter-image-server
debug-amp-audit
debug-amp-login
debug-amp-logout
debug-amp-stat
debug-amp-state
debug-cloud-aaa-test
debug-cloud-domain-list
debug-cloud-reset-image-drt-sync-pending-flag
debug-cloud-server
debug-cloud-stat
debug-cloud-state
debug-cloud-state-diff-disable
debug-cloud-state-diff-enable
debug-cloud-subscribe
debug-cloud-trap
debug-conductor-beacon
debug-ctb-test
debug-download
debug-est-reenrollment
debug-extra-dns-server
debug-fw-session-to-cloud
debug-ids-misclassify-recovery
debug-image-server-freq
debug-image-server-sync
debug-image-sync-request
debug-ipswitch-enable
debug-log-for-dnsmasq
debug-log-for-facebook-xwf
debug-log-to-cloud
debug-loop-protect
debug-lws-log-level
debug-mleak-dump
debug-mobility
debug-modem-enable
debug-monitor-del-ap
debug-monitor-del-radio
debug-rtls-logs
debug-server-nslookup
debug-sesimagotag-esl-radio-coex-opt
debug-subscribe-from-central
debug-tr-downstream-nack
debug-uplink-fail-holding-time
deep-sleep
disable-auto-fils
disable-cluster-security-dtls
disable-prov-ssid
disable-sesimagotag-esl-radio-coex
disconnect-support
disconnect-user Disconnect user - logout and deauthenticate user
domainname
dot11a-radio-disable
dot11g-radio-disable
download-cert
download-dhcpopt82
download-source
downloadable-role-delete
dpi Aruba AppRF - both App and WebCC
dual-5GHz-mode
dynamic-ant Change antenna direction to wide or narrow
dynamic-dns Enable Dynamic DNS updates for this pool
enable Enable profile
enet0-bridging
enet1-mode
external-antenna-6ghz
flex-dual-band 5GHz-and-2.4GHz/5GHz-and-6GHz/2.4GHz-and-6GHz
floor-info-mgmt
g-ant-pol Set external antenna polarization [0/1], 0 as co-polarization, 1 as cross-polarization.
g-channel static 2.4 GHz channel and power... set it to 0 for ARM assigned
g-external-antenna
g-max-clients
generate_gmon_output
get-sysctl
help System help
hostname System name
hs2-osu-icon-delete
hs2-osu-icon-download
iap-conductor
ids-reclassify
ignore-image-check
iot-ant-gain
iot-ota-fw-upg
iot-sniffer
iot-zone
ip-address IP address
ip6-address
lacp-mode
lci-location
lci-uncertainty
lhm-send-policyreq
logout Exit the CLI
managed-mode-sync-server
mbo
memory-allocator-dump
mesh-cluster-key
mesh-cluster-name
mesh-disable
mesh-mobility
mleak-dump
mleak-dump-alias
mleak-scan-memory
no Delete command
ntp
ofald
ofald-logging
offloader
papi-test
pcap
per-ap-ssid
per-ap-vlan
persistent-client
pin-enable
pin-puk
pin-renew
ping Send ICMP echo packets to the specified IP address
pppoe
preferred-uplink
process Process information
radio-0-5ghz-ant-gain
radio-0-5ghz-ant-pol
radio-0-channel Needed for APs support Dual-5G/Split-5G/6Ghz, Dual-5G channel range 100-165, Split-5G channel range 36-64
radio-0-disable
radio-1-5ghz-ant-gain
radio-1-5ghz-ant-pol
radio-1-channel Needed for APs support Dual-5G/Split-5G/6Ghz, Dual-5G channel range 36-64, Split-5G channel range 1-14
radio-1-disable
radio-2-channel Needed for APs support Split-5G/6Ghz, Split-5G channel range 100-165
radio-2-disable
radius-vsa-redirect-url
recovery
recovery-mode legacy/auto(default)
reload Restart the AP
remove-cellular-profile
remove-denylist-client
reset
rf-zone
sesimagotag-esl-channel
set Set the time and date
set-sysctl
show Show commands
speed-test
split-5ghz-mode enabled/disabled
ssh
ssh-stop
support Engineering debug commands
swarm-mode
switch-partition-reboot
telnet
test
test-drt
trace
traceroute Trace route to the specified IP address
ucm-logging
upgrade-drt Upgrade the DRT on the cluster - swarm reboot required to activate
upgrade-image
upgrade-image2
upgrade-image2-no-reboot
upgrade-image2-no-switch-partition-reboot
upgrade-modem
upgrade-modem-activate
upgrade-ses-esl-radio-image
uplink-vlan
usb-device-mgmt
usb-port-disable
usb-power-override
use-external-modem
wake-up
wifi0-mode
wifi1-mode
wifi2-mode
write Write running configuration to memory or terminal
zeroize-tpm-keys
zigbee-init-action
zigbee-request-action
zonename
Moving Forward / Call to Action
Since I am new to building device targets completely from scratch but have working serial access and hardware on hand to test, I would love to collaborate with anyone familiar with modern Aruba/Qualcomm secure boot circumventions or chainloading setups.
Has anyone successfully chainloaded a custom U-Boot or kernel via this version of APBoot? I am currently working on tracking down the GPL source code tarball for ArubaOS 8.13.1.2 to get a precise look at the factory .dts files and partition boundaries. Any pointers or shared experiences with this or similar Aruba architectures (like the AP-515) would be highly appreciated!