# ARRF documentation
---
---
> iPhone augmented-reality Wi-Fi survey app for any network: walk a space and see the latency, loss and speed your phone measured as 3D cubes anchored where you stood, graded for calls and video, with an optional RUCKUS pack for AP-measured signal.
---
---
# What is ARRF?
Source: https://docs.neuralconfig.com/arrf/
ARRF turns your iPhone into an augmented-reality Wi-Fi survey tool. You walk a
space, and what your phone measured blooms into 3D cubes anchored right where
you measured it — a heatmap you see through the camera, not a flat map you
decode later.
It works on **any Wi-Fi network, from any vendor**. The default **Any Wi-Fi**
survey needs no access-point login: the phone itself times its router and the
internet and runs short speed bursts as you walk. If you administer **RUCKUS
access points**, the optional, free **RUCKUS pack** also logs into your own APs
over SSH and adds the signal they measure from this iPhone.
## What does ARRF measure (and what doesn't it)?
ARRF measures **what the phone experiences** at each spot:
- **Wi-Fi latency, jitter and packet loss**, timed against your router (the Wi-Fi hop).
- **Internet latency and download/upload speed**, measured against a test server.
- **Call quality (MOS)** from a voice-over-Wi-Fi call test.
iOS gives third-party apps no access to this iPhone's own Wi-Fi signal strength
and no passive multi-AP scan. Signal is therefore an add-on: an optional Apple
Shortcut reads the phone's own signal, noise and channel, and the RUCKUS pack
reads signal **from the AP's side** — how the serving access point hears *this
iPhone*. That is the uplink direction. Either way ARRF measures **one device's
connection health and roaming behaviour as you walk**, not an area coverage map
of every client.
## The four tabs
| Tab | What it's for |
|---|---|
| **Survey** | Walk-and-survey in AR — cubes drop as you move. See [Running a survey](https://docs.neuralconfig.com/arrf/survey/running-a-survey/). |
| **History** | Every stopped survey is auto-saved here, ready to reopen, grade, or share. See [History and saved surveys](https://docs.neuralconfig.com/arrf/survey/history/). |
| **Toolbox** | [Network Test](https://docs.neuralconfig.com/arrf/tools/network-test/) for this phone's Wi-Fi on any network, plus, with the RUCKUS pack, SSH diagnostics for the APs you administer — nine read-only tools plus a short [packet capture](https://docs.neuralconfig.com/arrf/tools/packet-capture/). See [Toolbox utilities](https://docs.neuralconfig.com/arrf/tools/toolbox/). |
| **Settings** | Unlock, defaults, experience tests, integrations, display and report branding. See [Settings reference](https://docs.neuralconfig.com/arrf/settings/). |
## What you can do
- **Walk-and-survey in AR** — cubes drop as you move, building a spatial map in real time.
- **Colour by the metric that matters** — call quality, latency, jitter, loss and speed, plus signal, SNR, uplink/downlink rate and band with the RUCKUS pack. See [Cube colors, labels, and detail](https://docs.neuralconfig.com/arrf/survey/cube-colors-and-labels/).
- **See where your APs are** — pin APs by hand, or let ARRF estimate them. See [AP locations and roaming](https://docs.neuralconfig.com/arrf/survey/ap-locations-and-roaming/).
- **Reconstruct the space** — an optional LiDAR [floor plan](https://docs.neuralconfig.com/arrf/survey/floor-plan/) renders your walk as a 2D map and a 3D dollhouse.
- **Grade your coverage** — a [Results](https://docs.neuralconfig.com/arrf/survey/results-and-grading/) summary scores the survey and flags weak spots and roaming events.
- **Identify your phone** — [match a phone's motion](https://docs.neuralconfig.com/arrf/tools/find-my-device/) against what the AP hears to confirm which client it is (RUCKUS pack).
- **Export** — [PDF site-survey report, CSV, and JSON](https://docs.neuralconfig.com/arrf/tools/exports/).
## What do I need?
- **iPhone running iOS 17 or later**, with ARKit. ARRF is iPhone-only and runs in portrait.
- **A LiDAR-equipped iPhone is recommended** for floor-plan reconstruction and wall occlusion. Everything else works without LiDAR.
- **A Wi-Fi connection** for an Any Wi-Fi survey. No access-point login is needed.
- **Optional, for the RUCKUS pack:** access to your RUCKUS access points on the local network over SSH (TCP 22). Your test iPhone may need to be permitted through any management ACL or firewall.
Real surveys and the Toolbox run during a [free trial](https://docs.neuralconfig.com/arrf/setup/free-trial-and-unlock/)
(14 days or 3 surveys, whichever comes first) and after a one-time unlock. The
demo is always free.
:::tip[No hardware? Start anyway.]
A fresh install opens in a built-in **simulated survey** — just tap Start and
walk to see cubes drop from a simulated network. See [Try it with no
hardware](https://docs.neuralconfig.com/arrf/setup/demo-mode/).
:::
## Where does my data go?
Your surveys stay on your iPhone. There is **no NeuralConfig account**; surveys
are saved to the app's own storage and never uploaded, and any credentials are
stored solely in the iOS Keychain.
Two kinds of traffic leave the phone:
- **Internet tests** time packets and run short speed bursts against
NeuralConfig's test server, `arrf-probe.neuralconfig.com`, carrying a random
install ID used for fair-use limits. You can point them at your own server or
turn them off.
- **The RUCKUS pack** talks only to the access points you administer on your
local network — plus your own RUCKUS One tenant, if you connect one.
ARRF's App Store privacy label declares one data type, **Device ID**, for app
functionality and analytics — not linked to you and not used for tracking. See
[Internet tests and privacy](https://docs.neuralconfig.com/arrf/setup/internet-tests-and-privacy/).
## Explore the docs
### Set up
- [Getting started](https://docs.neuralconfig.com/arrf/setup/getting-started/): Install ARRF, answer the first-run question, grant permissions and walk your first survey.
- [Surveying any Wi-Fi network](https://docs.neuralconfig.com/arrf/setup/any-wifi-survey/): The default survey: no AP login — the phone measures latency, loss, speed and call quality.
- [Try it with no hardware](https://docs.neuralconfig.com/arrf/setup/demo-mode/): Demo mode runs a full AR survey against a simulated network — free, and no gear needed.
- [Free trial and unlock](https://docs.neuralconfig.com/arrf/setup/free-trial-and-unlock/): What the 14-day or 3-survey trial covers, what always stays free, and how to restore a purchase.
- [Internet tests and privacy](https://docs.neuralconfig.com/arrf/setup/internet-tests-and-privacy/): Which servers ARRF contacts, exactly what it sends, and how to self-host or switch internet tests off.
- [Setting up a RUCKUS One account](https://docs.neuralconfig.com/arrf/setup/ruckus-one-account/): RUCKUS pack: connect your tenant to survey by venue and fetch AP passwords automatically.
- [Connecting to your RUCKUS APs](https://docs.neuralconfig.com/arrf/setup/connecting-your-aps/): RUCKUS pack: log into your access points over SSH by IP, with passwords and a target SSID.
### Running a survey
- [Running a survey](https://docs.neuralconfig.com/arrf/survey/running-a-survey/): Choosing a source, setting capture options, and walking the space.
- [Experience metrics](https://docs.neuralconfig.com/arrf/survey/experience-metrics/): What each phone-measured metric means, from Wi-Fi latency to call quality.
- [The experience grade](https://docs.neuralconfig.com/arrf/survey/experience-grade/): How phone-measured samples become a verdict for calls, video and browsing.
- [Cube colors and labels](https://docs.neuralconfig.com/arrf/survey/cube-colors-and-labels/): What the survey cubes encode, the colour modes, and the detail behind each cube.
- [AP locations and roaming](https://docs.neuralconfig.com/arrf/survey/ap-locations-and-roaming/): How ARRF pins and estimates AP locations in AR, and how it marks roaming events.
- [LiDAR floor plan](https://docs.neuralconfig.com/arrf/survey/floor-plan/): Reconstructing a 2D floor plan from a LiDAR walk of the space.
- [Results and the survey grade](https://docs.neuralconfig.com/arrf/survey/results-and-grading/): What the Results screen shows, and how the letter grade is calculated.
- [Rooms and sites](https://docs.neuralconfig.com/arrf/survey/rooms-and-sites/): File surveys under a site and read results room by room.
- [Before / after compare](https://docs.neuralconfig.com/arrf/survey/before-after-compare/): Compare two surveys of the same space to show what a change fixed.
- [History and saved surveys](https://docs.neuralconfig.com/arrf/survey/history/): Where every stopped survey lands, and how to reopen, rename, share, or delete one.
### Tools and exports
- [Exporting reports and data](https://docs.neuralconfig.com/arrf/tools/exports/): The deliverables ARRF produces — a multi-page PDF site survey and raw data exports.
- [Network Test](https://docs.neuralconfig.com/arrf/tools/network-test/): Test this phone's Wi-Fi on any network without walking a survey, including a call test.
- [Identify My Phone](https://docs.neuralconfig.com/arrf/tools/find-my-device/): How ARRF picks your iPhone out of the APs' client tables with a wave.
- [Toolbox utilities](https://docs.neuralconfig.com/arrf/tools/toolbox/): RUCKUS pack SSH diagnostics — health checks and RF status straight from the AP.
- [Packet capture](https://docs.neuralconfig.com/arrf/tools/packet-capture/): A short 802.11 capture on one AP radio, pulled back over TFTP and analysed on the phone.
### More
- [Settings reference](https://docs.neuralconfig.com/arrf/settings/): Every section of the Settings tab, with its real default.
- [Limits](https://docs.neuralconfig.com/arrf/limits/): What ARRF can and can't measure, and the limits that apply to a survey.
- [Troubleshooting](https://docs.neuralconfig.com/arrf/troubleshooting/): Surveys that won't start, unreachable APs, and rejected rkscli logins.
---
ARRF is an independent product of NeuralConfig LLC. It is not made, endorsed
or supported by RUCKUS Networks. RUCKUS is a trademark of its owner.
Need a hand? [Contact support](https://support.neuralconfig.com/arrf?from=docs).
---
# Getting started
Source: https://docs.neuralconfig.com/arrf/setup/getting-started/
You can be walking your first survey within a minute of launching ARRF — no
account, no login, and no hardware required, because a fresh install opens in a
built-in simulated survey.
## 1. Install and launch
Install ARRF from the App Store and open it. There is no sign-up and no account
— the app is ready the moment it launches.
On first launch ARRF asks one question: **"What are you using ARRF for?"**
| Choice | Defaults it sets |
|---|---|
| **Home** — "Checking my own Wi-Fi. Plain answers: can I call, is it fast, where is it weak." | Cubes coloured by call quality, no letter grade, plain-language labels, RUCKUS tools folded away. |
| **Professional** — "Surveying for a client or a site. Letter grade, RF detail and methodology up front." | Cubes coloured by signal, letter grade shown, technical labels, RUCKUS tools open. |
It only sets defaults: every feature stays available. **Skip** (or swiping the
sheet away) picks Home. Change it any time under **Settings → Using ARRF for**.
On a fresh install the survey source defaults to **Demo** (simulated), so you
can explore the full AR experience before measuring a real network. See [Try it
with no hardware](https://docs.neuralconfig.com/arrf/setup/demo-mode/).
## 2. Grant permissions
ARRF asks for access the first time each feature needs it:
| Permission | Why ARRF needs it |
|---|---|
| **Camera** | To place Wi-Fi measurements in augmented reality — the AR survey view is the camera feed — and, on iPhones with LiDAR, to scan the room for the floor plan. |
| **Local Network** | To time round trips to your router, and, with the RUCKUS pack, to talk to your access points over SSH (and TFTP for packet captures). |
| **Location (While Using)** | iOS only reveals the Wi-Fi network name and access-point address (BSSID) to apps with location access. ARRF uses it to note which access point served each measurement; your location itself is never recorded. |
| **Motion & Fitness** | For [Identify My Phone](https://docs.neuralconfig.com/arrf/tools/find-my-device/), which matches your wave motion against the signal the AP hears. |
If you decline camera access the AR survey can't run — you can re-enable it
later in **iOS Settings → ARRF**. Declining Location still lets a survey run,
but cubes won't record which AP served them or show roams.
## 3. Run your first survey (the demo)
1. **Open the Survey tab.** On a fresh install the source is already **Demo**.
2. **Tap Start Survey.** The demo is always free — no trial needed.
3. **Read the "How to run a survey" card** — a full-screen cover that appears
the first time. In the demo it explains: *"Just walk around your space. This
demo simulates one Wi-Fi AP near your starting point — signal fades as you
move away — and drops a cube automatically as you go. Tap Stop Survey when
you're finished to see your report."* Tap **Start walking**.
4. **Walk.** Move the iPhone slowly around the room. Coloured cubes drop
automatically as you go — the demo is hands-free.
5. **Tap Stop Survey** when you're done. If the walk has at least three points,
the **Results** grade screen opens automatically; the survey is also saved to
the **[History](https://docs.neuralconfig.com/arrf/survey/history/)** tab.
That's the whole loop: **Start → walk → Stop → Results.** A real survey works
exactly the same way once you pick a real source.
:::note[The survey-help card]
The **"How to run a survey"** card shows on each survey's first appearance until
you tick **Don't show this again** (or turn off **Show survey instructions** in
Settings → Survey & capture). It's a full-screen cover, so the Stop and Capture
buttons are only reachable after you dismiss it.
:::
## 4. Survey a real network
When you're ready to survey your own network, tap the **Where** card in the
Survey lobby. The **Survey source** sheet lists:
| Source | What it does |
|---|---|
| **Any Wi-Fi** | The phone measures latency, loss, speed and call quality on whatever Wi-Fi it's joined. No AP access needed. Shown while **Experience tests (beta)** is on (the default). |
| **Demo** | The simulated walk. |
| **RUCKUS One venues** | Under *Integrations · RUCKUS*, once a RUCKUS One account is connected. |
| **RUCKUS APs by IP** | Under *Integrations · RUCKUS*: fixed AP IPs over SSH, no RUCKUS One needed. |
The moment you choose a real source, ARRF switches off the demo and remembers
your choice. Starting a real survey needs the [free trial or the
unlock](https://docs.neuralconfig.com/arrf/setup/free-trial-and-unlock/); the first one that uses internet
tests also shows a one-time [Internet tests](https://docs.neuralconfig.com/arrf/setup/internet-tests-and-privacy/)
sheet.
- [Surveying any Wi-Fi network](https://docs.neuralconfig.com/arrf/setup/any-wifi-survey/) — the default, vendor-neutral survey.
- [Connecting to your RUCKUS APs](https://docs.neuralconfig.com/arrf/setup/connecting-your-aps/) — RUCKUS pack: manual IPs, passwords, and the target SSID.
- [Setting up a RUCKUS One account](https://docs.neuralconfig.com/arrf/setup/ruckus-one-account/) — RUCKUS pack: import venues and fetch AP passwords automatically.
## Next steps
- [Surveying any Wi-Fi network](https://docs.neuralconfig.com/arrf/setup/any-wifi-survey/): Move off the demo — survey your own Wi-Fi with no AP login.
- [Running a survey](https://docs.neuralconfig.com/arrf/survey/running-a-survey/): Capture modes, the AR HUD, and the full Start-to-Results lifecycle.
- [Free trial and unlock](https://docs.neuralconfig.com/arrf/setup/free-trial-and-unlock/): What the trial covers and what always stays free.
- [Results and the survey grade](https://docs.neuralconfig.com/arrf/survey/results-and-grading/): How a walk becomes a letter grade and a weak-spot list.
Stuck? [Contact support](https://support.neuralconfig.com/arrf?from=docs).
---
# Try it with no hardware (Demo mode)
Source: https://docs.neuralconfig.com/arrf/setup/demo-mode/
ARRF ships with a **simulated survey** so you can explore the whole AR
experience — cubes, the floor plan, and the Results grade — without any
hardware on hand, RUCKUS or otherwise. The demo is **always free**: it needs no trial and never uses
up one of the trial's surveys.
## What does Demo mode simulate?
By default the demo simulates **one virtual Wi-Fi network** anchored near your
starting position. It runs the real survey pipeline on synthesised data: the
network gets slower and lossier as you walk away from your start point, and
about 9 metres out the phone roams to a second virtual access point (and back
again once you return within about 7 metres). Cubes
drop, the floor plan builds, and Stop produces a genuine Results screen — the
same as a live survey, just with simulated measurements.
Demo mode always runs in **Continuous** capture (hands-free), so you just walk.
### Can the demo show AP-measured signal too?
Yes. Under **Where**, the demo card has an **Include AP data** toggle, off by
default: *"Also simulate an access point's own readings (signal, SNR, band), as
a vendor integration adds them."* With it on, the demo adds one **virtual
access point** called **Demo AP**. The virtual AP is anchored a short distance
ahead of and above your starting position; its signal follows a free-space
path-loss model, so you start in the strong-signal "hot" zone and the reading
fades as you walk away, and AP auto-locate converges on it.
If **Experience tests (beta)** is off in Settings, the demo is this AP-only
version.
## How to start the demo
On a **fresh install** the Survey lobby's source is already **Demo**, so you can
just tap **Start Survey**.
If you've already picked another source and want the demo back:
1. Open the **Survey** tab.
2. Tap the **Where** card and choose **Demo** — labelled *"Simulated walk — one
virtual network, no hardware"* (or *"…one virtual AP…"* with Include AP
data on).
3. Tap **Start Survey** and walk.
The lobby explains the mode inline: *"No special hardware needed. Start and
walk — a simulated network gets slower and lossier as you move away, cubes drop
just like a live survey, and the phone roams to a second access point."*
## Switching to a real survey
Tap the **Where** card and pick **Any Wi-Fi**, a **RUCKUS One** venue, or
**RUCKUS APs by IP**. The moment you choose one, the demo switches off and your
real source persists across launches. Real surveys need the [free trial or the
unlock](https://docs.neuralconfig.com/arrf/setup/free-trial-and-unlock/). See [Surveying any Wi-Fi
network](https://docs.neuralconfig.com/arrf/setup/any-wifi-survey/).
:::caution[Demo mode is Survey-only]
The demo lives in the **Survey** tab. The [Toolbox](https://docs.neuralconfig.com/arrf/tools/toolbox/) tools
measure live networks and have **no simulated mode** — with no RUCKUS gear
connected, the Toolbox instead offers a gallery of sample results for the
RUCKUS tools. The AR survey is the part you can fully drive without hardware.
:::
## Next steps
- [Getting started](https://docs.neuralconfig.com/arrf/setup/getting-started/): Install, grant permissions, and walk the demo end to end.
- [Surveying any Wi-Fi network](https://docs.neuralconfig.com/arrf/setup/any-wifi-survey/): Leave the demo behind — measure your own Wi-Fi with no AP login.
- [Running a survey](https://docs.neuralconfig.com/arrf/survey/running-a-survey/): Capture modes, the AR HUD, and what Stop saves.
- [Results and the survey grade](https://docs.neuralconfig.com/arrf/survey/results-and-grading/): The grade screen a demo walk produces is a real one.
---
# Setting up a RUCKUS One account
Source: https://docs.neuralconfig.com/arrf/setup/ruckus-one-account/
Connecting a **RUCKUS One** account lets you survey by **venue**: ARRF pulls the
venue's access points and fetches each AP's password automatically, so you never
type or maintain per-AP passwords. It's part of the optional, free **RUCKUS
pack** — an [Any Wi-Fi survey](https://docs.neuralconfig.com/arrf/setup/any-wifi-survey/) needs none of this,
and neither does [manual surveying](https://docs.neuralconfig.com/arrf/setup/connecting-your-aps/) by AP IP.
## What you enter
Open **Settings → Integrations → RUCKUS** and fill in the **RUCKUS One account**
section. (The Survey lobby's **Connect RUCKUS One** button opens the same form.)
| Field | Notes |
|---|---|
| **Region** | North America, Europe, or Asia — the RUCKUS One API region for your tenant. Defaults to North America. It picks the API host: `api.ruckus.cloud`, `api.eu.ruckus.cloud`, or `api.asia.ruckus.cloud`. |
| **Tenant ID** | Your RUCKUS One tenant identifier. |
| **Client ID** | The API client's ID. |
| **Client secret** | The API client's secret. Stored **only in this device's Keychain**; once saved the field shows `•••••••• saved in Keychain` and the secret is never displayed again. |
Get these from **RUCKUS One → Administration → Account Management** (API
credentials). ARRF uses them to mint a short-lived token via the OAuth2
`client_credentials` grant; the token is cached and refreshed automatically.
:::caution[The API client needs an admin (read-write) role]
RUCKUS One hands a **read-only** API client a masked AP password
(`**********`) instead of the real one. ARRF can't tell the difference, and
**Test connection** only lists venues, so it can't catch this either; instead
every AP login during a survey fails with **login rejected**. Create the API client with an
**admin (read-write)** role.
:::
## Test the connection
Tap **Test connection**. On success ARRF reports how many venues it found and
names up to three of them, for example *"Connected — 3 venues (…)"*. If it
fails, ARRF shows a specific reason — see [Troubleshooting](https://docs.neuralconfig.com/arrf/troubleshooting/).
## What it enables
- **Venue import** — the Survey lobby's **Where** picker lists your venues under *Integrations · RUCKUS*; choose one and ARRF surveys its access points.
- **Automatic AP passwords** — ARRF fetches each AP's rkscli password just-in-time by serial, so you never enter one. Fetched passwords are cached in the Keychain until shortly before they expire (a five-minute safety margin covers clock skew and a survey outliving its fetch), and a login failure drops the cached value so the next attempt refetches.
- **Offline-on-LAN** — after one fetch, the venue's AP inventory is cached, so you can survey on the LAN without re-querying RUCKUS One.
Only APs that are **operational and have a LAN IP** are surveyable; the rest
appear in the lobby greyed out.
:::note[Six APs per venue survey]
A single survey polls at most **6 APs at once**. A venue with more surveyable
APs leaves **Start Survey disabled** and the lobby reads *"Pick up to 6 APs to
survey"* — tap the AP chips in the lobby's **Access points** card to select six
or fewer, and Start enables.
:::
If a just-in-time fetch fails for one AP, ARRF falls back to any password you
saved by hand for that AP's IP under **Settings → Integrations → RUCKUS → APs**,
and only reports the fetch error when there is nothing to fall back on. See
[Connecting to your RUCKUS APs](https://docs.neuralconfig.com/arrf/setup/connecting-your-aps/#add-your-aps).
## Disconnect
**Settings → Integrations → RUCKUS → Disconnect RUCKUS One**, confirmed with
**Disconnect & remove APs**, removes the tenant ID, client ID, and secret,
deletes the AP passwords fetched from RUCKUS One, forgets the selected venue and
its cached AP inventory, and restores the Toolbox sample gallery. Manual AP IPs
you added under **APs** are kept.
## How your credentials are handled
The OAuth client secret and any fetched AP passwords live **only in this
device's Keychain** (device-only, not synced to other devices via backup).
Region, tenant ID, and client ID are not secrets and are stored in local app
settings. RUCKUS One credentials are sent nowhere except your RUCKUS One tenant
and your own APs.
For RUCKUS One, the only host ARRF reaches over the internet is the API host for
your region above; AP logins and packet-capture transfers stay on your local
network. Separately, ARRF's experience tests contact a test server — see
[Internet tests and privacy](https://docs.neuralconfig.com/arrf/setup/internet-tests-and-privacy/).
## Next steps
- [Connecting to your RUCKUS APs](https://docs.neuralconfig.com/arrf/setup/connecting-your-aps/): The manual path, and the SSH details every survey uses either way.
- [Running a survey](https://docs.neuralconfig.com/arrf/survey/running-a-survey/): Pick your venue in the lobby and walk.
- [Toolbox utilities](https://docs.neuralconfig.com/arrf/tools/toolbox/): The venue's APs are what the Toolbox diagnostics read.
- [Troubleshooting](https://docs.neuralconfig.com/arrf/troubleshooting/): Every RUCKUS One credential error and what fixes it.
---
# Connecting to your RUCKUS APs
Source: https://docs.neuralconfig.com/arrf/setup/connecting-your-aps/
With the optional, free **RUCKUS pack**, ARRF surveys by logging into each of
your RUCKUS access points and reading the AP-measured signal live. You don't
need any of this for an [Any Wi-Fi survey](https://docs.neuralconfig.com/arrf/setup/any-wifi-survey/), which
measures from the phone alone. This page covers the manual connection path —
APs you enter by hand, at fixed addresses on your LAN, shown in the Survey lobby as **RUCKUS APs by
IP**. If your APs are managed in RUCKUS One, see [Setting up a RUCKUS One
account](https://docs.neuralconfig.com/arrf/setup/ruckus-one-account/) instead, which imports the APs and
fetches their passwords for you.
## How ARRF talks to APs
Surveys poll each AP's **rkscli** command line over **SSH (TCP 22)**, reading
the AP-measured signal about **2.5 times a second**. This is the only transport
— there is no SNMP or agent to install. RUCKUS One venues always log in as
**admin**; for manually added APs the username defaults to **admin** and can be
changed (one username for all of them).
:::note[Same network]
Your iPhone must be on the **same local network** as the APs, and reachable to
them over SSH. If a management ACL or firewall restricts which hosts can SSH to
your APs, the test iPhone needs to be permitted.
:::
## Add your APs
1. **Open Settings → Integrations → RUCKUS → APs.** (The Survey lobby's **Add
APs by IP** button opens the same screen.)
2. **Tap Add AP** and enter each AP's address — an IPv4 address (for example
`192.0.2.11`), an IPv6 address, or a hostname. Invalid addresses show in red
with an **Invalid** label. The list holds up to **6** APs, the same cap as a
venue survey. A single-AP list is accepted and surveys normally — you simply
can't record a roam, because there is nowhere to roam to.
3. **Enter each AP's password** in the **AP passwords (SSH)** section below the
list, which shows a **Username** field (blank means `admin`) and one secure
field per valid AP address.
Passwords are stored **per AP in the iOS Keychain** — never in plain settings,
and never sent anywhere off the device.
If you start a manual survey with no password saved for any of your APs, the
lobby warns you before you walk: *"No saved AP passwords — the SSH login will
fail. Save them in Settings ▸ Integrations ▸ RUCKUS ▸ APs, or pick a RUCKUS One
venue."* The pre-flight probe only tests whether port 22 answers, so it can pass
while every login still fails.
:::caution[Manual passwords go stale on R1-managed APs]
RUCKUS One venues fetch passwords automatically, because R1-managed AP passwords
rotate roughly **every two days** — a manually saved password on an R1-managed
AP goes stale on that cycle. See [RUCKUS One
account](https://docs.neuralconfig.com/arrf/setup/ruckus-one-account/).
:::
A manual password is not *only* for manual surveys, though: it is also the last
fallback when a venue survey can't fetch one. ARRF resolves an AP's login in
this order — an unexpired fetched credential, then a fresh fetch from RUCKUS
One, then a manual password saved for that AP's IP. Saving one by hand is a
reasonable belt-and-braces move for an AP you survey often.
## Set the target SSID
The **Target SSID** is the WLAN ARRF polls on each AP, and Start stays disabled
until one is set (*"Choose the SSID to survey"*). The easiest way is the lobby's
**Choose SSID** row: it reads each configured AP's broadcast WLANs over SSH and
lists every broadcast SSID — tap the WLAN you're surveying and it's written to
Target SSID. You can also type it by hand under **Settings → Integrations →
RUCKUS → Target SSID**. If no AP is broadcasting the target SSID, that AP
reports *"no up WLAN broadcasting"* during the survey.
## Pick your phone
A RUCKUS survey reads the signal the APs hear from **one Wi-Fi client**, so ARRF
needs this iPhone's Wi-Fi MAC address. Until one is set, Start stays disabled
and the lobby reads *"Pick your phone so the APs know whose signal to read"*.
Tap **Identify my phone** to pick it from the APs' client list — see [Identify
My Phone](https://docs.neuralconfig.com/arrf/tools/find-my-device/).
## Host-key trust and Trusted APs
The first time ARRF connects to an AP, it **pins that AP's SSH host key**
(trust-on-first-use) and stores the SHA-256 fingerprint on the device. You are
not prompted — the first sighting is trusted silently.
On later connections, if the AP presents a **different** host key, ARRF
**refuses the connection** and reports *"This AP's SSH identity changed (…) — if
it was replaced or reset, review it in Settings ▸ Integrations ▸ RUCKUS ▸
Trusted APs."* It does not offer to trust the new key inline, because a changed
key can mean a man-in-the-middle.
```mermaid
stateDiagram-v2
[*] --> Unpinned: AP never contacted
Unpinned --> Pinned: first connection
fingerprint recorded silently
Pinned --> Pinned: same key
connection proceeds
Pinned --> Refused: different key
"SSH identity changed"
Refused --> Unpinned: you forget the pin
Settings > Integrations > RUCKUS > Trusted APs
```
In words: an AP starts unpinned; the first connection records its fingerprint
without asking; every later connection that presents the same key proceeds; a
different key is refused outright; and the only way back is to **forget the
pin**, which returns that AP to the unpinned state so the next connection trusts
and re-pins whatever key it now presents.
### Forget a pinned AP
**Settings → Integrations → RUCKUS → Trusted APs** lists every AP ARRF has
pinned, each with its IP and `SHA256:` fingerprint. **Swipe a row and tap
Forget** to drop that pin.
:::caution[Forget only when you know why the key changed]
Forgetting a pin is the recovery path for an AP you **replaced or
factory-reset** — its identity legitimately changed. If you weren't expecting
the change, a mismatch can indicate a man-in-the-middle: confirm the hardware on
that IP before you forget anything.
:::
The screen reads *"No trusted APs yet"* until the first successful connection.
Pins are per-IP and local to this iPhone.
## Start a manual survey
Tap the Survey lobby's **Where** card and choose **RUCKUS APs by IP**. When you
tap **Start Survey**, ARRF runs a quick pre-flight — a bare SSH-port probe of
each AP. If every AP answers, the survey starts straight away; if some don't, a
sheet lists which answered and, when at least one did, offers **Start anyway**
(offline APs are skipped). Real surveys need the
[free trial or the unlock](https://docs.neuralconfig.com/arrf/setup/free-trial-and-unlock/). See [Running a
survey](https://docs.neuralconfig.com/arrf/survey/running-a-survey/).
## Next steps
- [Running a survey](https://docs.neuralconfig.com/arrf/survey/running-a-survey/): Pre-flight, capture modes, the AR HUD, and what Stop saves.
- [Setting up a RUCKUS One account](https://docs.neuralconfig.com/arrf/setup/ruckus-one-account/): The alternative to maintaining AP IPs and passwords by hand.
- [Settings reference](https://docs.neuralconfig.com/arrf/settings/): Every Connection field, including Trusted APs, with its real default.
- [Troubleshooting](https://docs.neuralconfig.com/arrf/troubleshooting/): Unreachable APs, rejected rkscli logins, and changed host keys.
---
# Surveying any Wi-Fi network
Source: https://docs.neuralconfig.com/arrf/setup/any-wifi-survey/
**Any Wi-Fi** is ARRF's vendor-neutral survey: you join a Wi-Fi network, walk,
and the iPhone itself measures the experience at each spot — no access-point
login, no vendor pack, any brand of gear. It is the source to pick whenever you
don't administer the APs, or just want to know whether calls and video will
work. **If your Wi-Fi isn't RUCKUS** — another brand, a home router, or a
network someone else runs — this is how you survey it: choose **Any Wi-Fi** on
the Survey tab and walk. Nothing about it needs RUCKUS hardware.
## What does the phone measure?
As you walk, the phone times its router, the internet edge and short speed
bursts, and paints each spot as a cube:
| Measured | Against |
|---|---|
| **Wi-Fi latency, jitter and packet loss** | Your router (the Wi-Fi hop), found automatically or set under **Settings → Experience → Manual gateway**. |
| **Internet latency** | The test server's nearest edge. |
| **Download and upload speed** | Short speed bursts against the test server, or a local iperf3 server you set under **Settings → Experience**. |
| **Call quality (MOS)** | A simulated voice call (a steady stream of small call-sized packets) timed to your router, and to the test server while internet tests are on. |
Internet latency and the speed bursts use NeuralConfig's test server by default;
see [Internet tests and privacy](https://docs.neuralconfig.com/arrf/setup/internet-tests-and-privacy/). For
what each metric means, see [Experience metrics](https://docs.neuralconfig.com/arrf/survey/experience-metrics/).
:::note[Signal strength is an add-on]
iOS doesn't let apps read this iPhone's Wi-Fi signal (RSSI). The Any Wi-Fi card
offers **Add signal strength**: an Apple Shortcut, set up once, reads the
phone's own signal, noise and channel. In **Stop & sample** mode a **Read signal
at each capture** toggle then attaches it to every cube.
:::
## What do I need?
- **A Wi-Fi connection.** Start stays disabled with *"Join a Wi-Fi network to
measure it"* until the phone is on Wi-Fi. Experience tests are Wi-Fi only.
- **Experience tests (beta)** turned on under **Settings → Experience**. It is
**on by default**; turning it off hides the Any Wi-Fi source.
- **The [free trial or the unlock](https://docs.neuralconfig.com/arrf/setup/free-trial-and-unlock/).**
No access-point login, IP list, SSID or device MAC is needed.
## How do I start an Any Wi-Fi survey?
1. **Open the Survey tab, tap the Where card, and choose Any Wi-Fi** —
*"No AP access needed — the phone measures latency, loss and speed"*.
2. **Check the Measure the experience card.** It reads *"Works on any Wi-Fi,
any vendor. As you walk, the phone times its router (Wi-Fi latency, jitter,
loss), the internet edge, and short speed bursts, and paints each spot as a
cube."* Below that it shows **On Wi-Fi** (or **Not on Wi-Fi**) and the
router address it found.
3. **Pick a capture mode** in the card's **Capture** picker:
- **Continuous** — *"Walk and a cube drops every couple of seconds, with
speed bursts as you go."*
- **Stop & sample** — *"Stand still, tap Capture — the phone measures for a
moment, runs a speed burst, then drops a cube."*
4. **Tap Start Survey.** The first time, ARRF shows the one-time
[Internet tests](https://docs.neuralconfig.com/arrf/setup/internet-tests-and-privacy/) sheet, then a
**"Test this phone's Wi-Fi"** primer explaining two permissions (below). Tap
**Continue**.
5. **Walk**, then tap **Stop Survey** to see the
[experience grade](https://docs.neuralconfig.com/arrf/survey/experience-grade/).
## Which permissions does it ask for?
The primer explains, and iOS then asks for:
| Permission | Why | If you decline |
|---|---|---|
| **Local Network** | To time round trips to your router (the Wi-Fi hop). | The internet edge and speed tests still run. |
| **Location (While Using)** | iOS only reveals the Wi-Fi network name and access-point address (BSSID) to apps with location access. ARRF uses it to note which access point served each measurement; your location itself is never recorded. | Cubes won't record which AP served them or show roams. |
The lobby repeats either problem as a warning that doesn't block Start:
*"No router found to time the Wi-Fi hop — the internet edge and speed tests
still run. You can set a gateway in Settings ▸ Experience."* and *"Location is
off for ARRF, so iOS hides the access point (BSSID) — cubes won't record which
AP served them or show roams."*
## What does the pre-flight check?
Every Any Wi-Fi start runs a quick pre-flight: it pings your router and says
hello to the test server (and to a local iperf3 server, if you set one). If
everything answers — or only the router is missing — the survey starts straight
away. Otherwise a sheet explains:
- **"Part of the test is unavailable"** — *"You can start anyway — the survey
measures what it can reach."* Tap **Start anyway** or **Cancel**.
- **"Nothing to measure"** — *"Neither your router nor the test server
answered. Check this iPhone's Wi-Fi connection."* Only **OK** is offered; this
is the one case that blocks the survey.
:::tip[Measuring experience on a RUCKUS survey too]
With Experience tests on, a RUCKUS venue or RUCKUS APs by IP survey also shows
a **Measure experience** toggle (on by default): *"Also time the router,
internet edge and speed bursts from this phone, alongside the AP readings."*
:::
## Next steps
- [Experience metrics](https://docs.neuralconfig.com/arrf/survey/experience-metrics/): What latency, jitter, loss, speed and call quality mean on each cube.
- [The experience grade](https://docs.neuralconfig.com/arrf/survey/experience-grade/): How the walk becomes a verdict for calls, video and browsing.
- [Internet tests and privacy](https://docs.neuralconfig.com/arrf/setup/internet-tests-and-privacy/): What the test server sees, and how to self-host or switch it off.
- [Network Test](https://docs.neuralconfig.com/arrf/tools/network-test/): Check this phone's Wi-Fi in one spot without walking a survey.
---
# Free trial and unlock
Source: https://docs.neuralconfig.com/arrf/setup/free-trial-and-unlock/
ARRF is free to download. A **free trial** lets you use every feature for
**14 days or 3 surveys, whichever comes first**; after that a **one-time
unlock** keeps ARRF working for good. There is no subscription. The demo, and
everything you have already saved, stay free in every state.
## What needs the trial or the unlock?
Only **new work** is gated:
| Gated (needs the trial or unlock) | Always free |
|---|---|
| **Start Survey** on any real source — Any Wi-Fi, a RUCKUS One venue, or RUCKUS APs by IP | The **demo** survey |
| **Every Toolbox tool**, including Network Test and the RUCKUS tools | The Toolbox **sample results** gallery |
| | **History**, **Results**, floor plans, exports and the **PDF** report for every survey you've saved |
The paywall says it directly: *"Your saved surveys, Results, floor plans,
reports and exports always stay available — even if the trial ends. The demo
survey is always free."*
## How does the trial count?
The trial ends at whichever limit you reach first:
- **14 days**, counted from when you tap **Start free trial**.
- **3 surveys.** A survey counts only when it is a real (non-demo) survey that
saves **at least three readings**. Demo walks never count, and neither does a
quick Start/Stop with fewer than three cubes.
The survey counter is kept in the iOS Keychain, so deleting and reinstalling
the app doesn't reset it.
## How do I start the trial?
Tap **Start Survey** on a real source, tap the Toolbox's lock button (its
tools stay greyed out until then), or tap **Unlock ARRF** at the top of
Settings. Before the trial starts the paywall is headed
**"Try every feature free"**:
1. Tap **Start free trial** — *"14 days or 3 surveys, whichever comes first. No
charge, no subscription."*
2. The paywall closes. Tap **Start Survey** again.
While the trial runs, the lobby and Settings show a status line such as *"Trial:
12 days · 2 surveys left"*; tapping it in the lobby opens the paywall. Before
the trial starts it reads *"Free trial: 14 days or 3 surveys"*, and the Toolbox
shows **Start the free trial to use Toolbox**.
## What happens when the trial ends?
The status line changes to *"Trial ended (14 days)"* or *"Trial ended (3
surveys used)"*, the Toolbox shows **Unlock ARRF to use Toolbox**, and starting a
real survey opens the paywall, headed **"Keep surveying with ARRF"**. Tap
**Unlock ARRF** to buy the one-time unlock (*"One-time purchase. No
subscription."*). The button shows the price from the App Store for your
region.
## How do I restore a purchase?
Tap **Restore purchases**, either on the paywall or in the **Unlock ARRF** row
at the top of Settings (shown until ARRF is unlocked). The unlock is *"One
purchase per Apple ID, restorable on your other iPhones. Family Sharing isn't
included."* If nothing is found, ARRF reports *"No previous purchases found for
this Apple ID."*
Once unlocked, the Settings row reads **ARRF Unlocked** and the status line
**Unlocked**.
## Next steps
- [Try it with no hardware](https://docs.neuralconfig.com/arrf/setup/demo-mode/): The demo is always free and never uses a trial survey.
- [Surveying any Wi-Fi network](https://docs.neuralconfig.com/arrf/setup/any-wifi-survey/): Spend a trial survey measuring your own Wi-Fi.
- [History and saved surveys](https://docs.neuralconfig.com/arrf/survey/history/): Saved surveys stay available whatever your trial state.
---
# Internet tests and privacy
Source: https://docs.neuralconfig.com/arrf/setup/internet-tests-and-privacy/
ARRF's **internet tests** measure the path from your iPhone to the internet
against NeuralConfig's test server, **`arrf-probe.neuralconfig.com`**, which
runs on Cloudflare's network. They send small timing packets, short speed
bursts and a random install ID — **no account, name, location, Wi-Fi name,
survey data or photos**. You can point them at your own server, or switch them
off and keep every test on your own network.
## Which servers does ARRF contact?
```mermaid
flowchart LR
Phone["iPhone running ARRF"]
Router["Your router
(Wi-Fi hop)"]
Probe["Test server
arrf-probe.neuralconfig.com"]
Public["Public services
STUN, DNS, time,
Apple captive page"]
Phone -->|latency, jitter, loss, voice| Router
Phone -->|edge latency, speed bursts,
install ID| Probe
Phone -->|one-off policy check| Public
```
In words, an experience test talks to three kinds of host:
1. **Your router.** The phone times round trips to its gateway for Wi-Fi
latency, jitter, loss and the voice test. This stays on your local network
and runs whether or not internet tests are on.
2. **The test server**, `arrf-probe.neuralconfig.com` by default. The phone
measures latency to the nearest edge and runs short speed bursts against it.
3. **Public services, for a one-off network policy check:** Cloudflare's and
Google's STUN servers (`stun.cloudflare.com`, `stun.l.google.com`),
Cloudflare's DNS (`1.1.1.1`, plain, DNS-over-TLS and DNS-over-HTTPS via
`cloudflare-dns.com`), Cloudflare's time server (`time.cloudflare.com`), and
Apple's captive-portal test page (`captive.apple.com`). Each sees this
iPhone's public IP address, as with any website.
The RUCKUS pack adds its own traffic — your access points over SSH, and your
RUCKUS One region's API host if you connect a tenant. See [Setting up a RUCKUS
One account](https://docs.neuralconfig.com/arrf/setup/ruckus-one-account/).
## What is sent, and what isn't?
| Sent to the test server | Never sent |
|---|---|
| Small timing packets | Your name or any account (there is no NeuralConfig account) |
| Speed-test data — short bursts, tens of MB on a fast line | Your location |
| A **random install ID** in the `X-ARRF-Install` header, used only for fair-use limits | The Wi-Fi network name (SSID) |
| Your trial state (`trial` or `unlocked`) in the `X-ARRF-Tier` header; the server ignores it and doesn't store it | Survey data, cubes, floor plans or photos |
The **install ID** is a random UUID created on first use and stored in the iOS
Keychain, so it survives reinstalling the app on the same iPhone. It carries no
identity. The server keeps only usage counters: bytes per install ID per day
(the last 7 days, for the fair-use allowance), and which Cloudflare location
answered.
## What does the Internet tests sheet ask?
Before the first survey or Network Test that would contact the test server,
ARRF shows a one-time **Internet tests** sheet explaining the above. It has
three choices:
| Choice | What it does |
|---|---|
| **Continue** | Use NeuralConfig's test server. |
| **Use my own server** | Enter the host of a self-hosted copy of the ARRF probe server (HTTPS, port 443), then tap **Use this server** (or **Back**). It must be a bare host name or IPv4 address — no `https://` or path. |
| **Skip internet tests** | Turn internet tests off. *"Skipping keeps every test on your own network: router latency, jitter, loss, voice and roaming still run. Speed bursts need a local iperf3 server."* |
## How do I change it later?
Everything lives under **Settings → Experience**:
- **Internet tests** — on by default. Turning it off stops all contact with the
test server and the policy-check services: no internet latency, no internet
call lane, no policy check, and no cloud speed bursts. Router latency,
jitter, loss, voice and roaming still run, and the Survey lobby reads
*"Phone-measured · internet tests off"*.
- **Test server** — shown while Internet tests is on. Blank uses
`arrf-probe.neuralconfig.com`; enter your own host to self-host.
- **Local iperf3 server** — host or host:port (default port 5201). Speed bursts
then run over your own network only; run `iperf3 -s` on a wired machine.
## What does ARRF's App Store privacy label say?
ARRF's privacy manifest declares **no tracking** and one collected data type:
**Device ID** (the random install ID), for **App Functionality** and
**Analytics**, **not linked** to your identity and **not used for tracking**.
Surveys are saved to the app's own storage and never uploaded; credentials stay
in the iOS Keychain.
The full policy is at [neuralconfig.com/privacy/arrf/](https://neuralconfig.com/privacy/arrf/).
## Next steps
- [Surveying any Wi-Fi network](https://docs.neuralconfig.com/arrf/setup/any-wifi-survey/): The survey that uses these tests, and its pre-flight check.
- [Network Test](https://docs.neuralconfig.com/arrf/tools/network-test/): Run the same tests in one spot without walking.
- [Settings reference](https://docs.neuralconfig.com/arrf/settings/): Every Experience setting with its real default.
---
# Running a survey
Source: https://docs.neuralconfig.com/arrf/survey/running-a-survey/
A survey is the core of ARRF: you walk a space and coloured cubes drop
where you measured. This page covers the survey lifecycle and the on-screen
controls.
## The survey lifecycle
```mermaid
flowchart TD
A[Survey lobby
pick Where and How] --> B{Source}
B -- Demo --> W[Walk the space
cubes drop]
B -- Any Wi-Fi --> P[Pre-flight: router + test server]
B -- RUCKUS venue or APs by IP --> C[Pre-flight: SSH port probe of each AP]
P -- neither answered --> N[Nothing to measure
survey blocked]
P -- one part missing --> E2[Start anyway
measures what it can reach]
P -- both answered --> W
E2 --> W
C -- none answered --> D[Can't reach your APs
survey blocked]
C -- some answered --> E[Start anyway
offline APs skipped]
C -- all answered --> W
E --> W
W --> F[Stop Survey]
F --> G[Generating floor plan
if LiDAR mesh captured]
G --> H{Saved to History?}
H -- yes, 3+ cubes --> I[Results opens automatically]
H -- yes, 1-2 cubes --> J[Saved to History note]
H -- write failed --> K[Survey not saved
Retry or Open anyway]
```
In words: you choose a source and a capture mode in the lobby. A demo walk
starts immediately. An **Any Wi-Fi** survey first checks that your router and
the test server answer: if neither does you'll see *"Nothing to measure"*, and
if only part answers you can **Start anyway** and the survey measures what it
can reach. A live RUCKUS survey first probes SSH on each AP and refuses to
start if none answer, or lets you **Start anyway** with the unreachable ones
skipped. You walk, cubes drop, and **Stop** ends the run — snapshotting the
LiDAR mesh into a floor plan if one was captured, then saving to History. With
three or more cubes the Results screen opens on its own; with one or two you
get a brief note instead. If the write to storage fails, ARRF says so and offers
**Retry** or **Open anyway** rather than losing the walk silently.
## What do I pick in the Survey lobby?
The **Survey** tab opens on a lobby with these choices:
- **Where** — the survey source:
- **Any Wi-Fi** — the phone measures latency, loss and speed on whatever
network it's on; no AP access needed. See [Any Wi-Fi
survey](https://docs.neuralconfig.com/arrf/setup/any-wifi-survey/).
- **Demo** — a simulated walk with no hardware. A fresh install starts on
this source. See [Demo mode](https://docs.neuralconfig.com/arrf/setup/demo-mode/).
- A **RUCKUS One** venue, or **RUCKUS APs by IP** — the RUCKUS vendor pack,
which adds the APs' own signal readings. See [Connecting your
APs](https://docs.neuralconfig.com/arrf/setup/connecting-your-aps/).
- **Site** — which site the survey is filed under (optional; hidden for the
demo). See [Rooms and sites](https://docs.neuralconfig.com/arrf/survey/rooms-and-sites/).
- **How** — the **Capture** mode (below).
On a RUCKUS source, a **Measure experience** toggle (on by default) also runs
the phone-measured tests alongside the AP readings.
Tap **Start Survey** to begin. The demo is always free; every real survey needs
the free trial or the unlock — see [Free trial and
unlock](https://docs.neuralconfig.com/arrf/setup/free-trial-and-unlock/). The first survey that uses the
internet tests asks about them before it starts — see [Internet tests and
privacy](https://docs.neuralconfig.com/arrf/setup/internet-tests-and-privacy/).
For a live RUCKUS survey ARRF first runs a **pre-flight**
— a bare SSH-port probe of each AP — and shows which answered. If none answer,
you'll see *"Can't reach your APs"* and can't start; if only some answer, you can
**Start anyway** and offline APs are skipped.
:::note[A new survey clears the last one]
Starting a survey clears the previous walk's cubes from the AR view. Every
stopped survey is already saved to History, so nothing is lost — but finish and
Stop before starting the next.
:::
## Which capture mode should I use?
Pick the mode in the lobby's **How** card.
| Mode | How it works | Best for |
|---|---|---|
| **Continuous** *(default)* | Walk and cubes drop automatically — hands-free, no tapping. On Any Wi-Fi a cube drops every couple of seconds, with speed bursts as you go. | Fast coverage of a space. |
| **Stop & sample** | Stand still and tap the Capture button. On a RUCKUS survey one cube drops on the next fresh reading; on Any Wi-Fi the phone measures for a moment, runs a speed burst, then drops a cube. | Deliberate, accurate spot measurements. |
## Placement throttle
To keep the AR scene readable, ARRF spaces cubes out. Two floors apply in
Continuous mode, both set in **Settings → Survey & capture**:
- **Placement throttle** — the minimum **distance** between cubes. Default **0.3 m**.
- **Live cube interval** — the minimum **time** between cubes. Default **1.0 s**.
Raise them for a sparser map, lower them for denser sampling.
## What does the AR HUD show?
While surveying, the camera view carries a heads-up display:
- **Cube count** — a large running total of cubes placed.
- **Serving-AP chip** — on a RUCKUS survey, the AP your phone is currently associated to (in that AP's outline colour), with its band, channel, and width. On Any Wi-Fi it shows the network name and the access point (BSSID) the phone is on, with the vendor when known.
- **Live readout** — on a RUCKUS survey, the current dBm, SNR, and grade, plus a live signal sparkline. On Any Wi-Fi, the Wi-Fi latency (p95 to your router) in ms with loss and jitter, a live round-trip trace, the last speed burst, and the live call quality and DNS time.
- **Room** — a large *Room: …* control that tags the cubes and notes that follow. See [Rooms and sites](https://docs.neuralconfig.com/arrf/survey/rooms-and-sites/).
- **Capture button** (bottom centre) — in Stop & sample it arms the next cube; in Continuous it pauses/resumes the automatic sweep.
- **Discard** (trash) — after a confirmation, discards every cube placed so far: *"The survey keeps running; your AP pins stay put."*
- **Full screen** — hides the HUD for an unobstructed camera view; capture keeps running. Tap again to exit.
- **Chips** (top right) — **roam markers** (flag), **privacy blur** (eye), **Place APs** (map pin), **Add note**, and **colour**. They toggle roam posts, blur the camera, open the AP-pinning and proposed-placement sheet, drop a note, and change what cubes encode. See [Cube colors, labels, and detail](https://docs.neuralconfig.com/arrf/survey/cube-colors-and-labels/) and [AP locations and roaming](https://docs.neuralconfig.com/arrf/survey/ap-locations-and-roaming/).
- **Tracking state** — hints like *"Move slower"* or *"Point at detail"* when ARKit needs a better view to track.
- **`slowed ×2` / `slowed ×4`** — a thermometer chip that appears only when the iPhone is thermally throttling. See [Long walks and hot phones](#long-walks-and-hot-phones).
The first time you start a survey, a **How to run a survey** overlay explains
the walk. Tick *Don't show this again*, or turn off **Settings → Survey &
capture → Show survey instructions**.
The screen **stays awake** for as long as a survey is running on screen — auto-lock
would kill the AR session mid-sweep. Normal auto-lock returns when you stop, switch
tabs, or background the app.
## How do I add a note or photo to a spot?
Tap the **Add note** chip (note icon, top right). ARRF drops a note where the
phone is aiming and opens the note editor:
| Section | What it holds |
|---|---|
| **Tags** | One-tap reasons a spot reads badly: *Metal racking*, *Elevator*, *Glass wall*, *Concrete wall*, *Microwave*, *Dead spot reported*, *AP obstructed*, *Ceiling AP*. |
| **Note** | Free text — *"What's here?"* |
| **Photo** | **Take photo of camera view** captures what the camera sees now. Cubes and labels aren't included. |
Tap **Save**. Notes are tagged with the current room, show as numbered badges on
the [floor plan](https://docs.neuralconfig.com/arrf/survey/floor-plan/), and get their own page in the PDF
report. Open an existing note to edit it or **Delete note**.
:::caution[Note photos are not blurred]
A note photo is the raw camera frame. The privacy blur below does not apply to
it, so aim away from anything sensitive before you tap.
:::
## How do I blur the camera background?
Tap the **privacy blur** chip (eye icon) and pick **Off**, **Light**,
**Medium**, or **Strong**. The default is **Off**; the same setting is
**Settings → Display → Blur camera background**.
The blur softens the live camera image — whiteboards, screens, faces, documents —
while cubes and labels stay sharp. Screenshots and screen recordings of the
survey are blurred too. It is display-only: ARKit still tracks from the
unblurred camera, so placement accuracy doesn't change. ARRF never saves the
camera feed; the only camera image it stores is a note photo you take yourself.
## When AR is interrupted
Two banners can appear over the camera:
| Banner | What happened | What to do |
|---|---|---|
| *"Camera paused — capture resumes when it's back."* | A phone call or Control Center took the camera. Capture pauses deliberately, because a frozen pose would place cubes in the wrong spot. | Nothing — tracking relocalises against the saved world map and already-placed cubes stay put. |
| *"AR stopped: …"* with **Restart AR** and **Stop & save** | A fatal ARSession error, such as the camera becoming unavailable or tracking failing unrecoverably. | **Restart AR** begins a fresh AR session; **Stop & save** ends the survey normally. Readings collected so far are kept either way. |
## Long walks and hot phones
Two guards keep a very long survey from degrading:
- **Thermal backoff.** When iOS reports thermal pressure, ARRF slows its AP polling — **×2** at *serious* and **×4** at *critical* — and shows a `slowed ×2` or `slowed ×4` chip at the top of the screen. Cubes keep dropping, just further apart. Cooling the phone restores full rate on its own.
- **A 20,000-reading ceiling.** Past 20,000 placed readings (roughly two hours of continuous capture), ARRF halves the set by keeping every other reading, newest always retained. Spatial coverage stays roughly uniform and the walk stays exportable; the survey is not truncated and does not stop.
## Stopping and saving
Tap the red **Stop Survey** button to end. Stop also saves:
- Every stopped survey with data is **auto-saved to the [History tab](https://docs.neuralconfig.com/arrf/survey/history/)**.
- With **at least 3 cubes**, the [Results](https://docs.neuralconfig.com/arrf/survey/results-and-grading/)
screen opens automatically. With fewer, you'll see a brief *"Saved to
History (N cubes)"* note and can reopen it from History any time. A Stop
with no cubes shows *"No readings captured — nothing saved"*.
- If the save itself fails, a **"Survey not saved"** alert offers **Retry** or **Open anyway** — see [History and saved surveys](https://docs.neuralconfig.com/arrf/survey/history/#when-a-survey-cant-be-saved).
## Next steps
- [Cube colors, labels, and detail](https://docs.neuralconfig.com/arrf/survey/cube-colors-and-labels/): What the cubes encode, and what tapping one shows you.
- [What the phone measures](https://docs.neuralconfig.com/arrf/survey/experience-metrics/): How each Any Wi-Fi metric is measured, and its colour scale.
- [Results and the survey grade](https://docs.neuralconfig.com/arrf/survey/results-and-grading/): The verdict, the grades, and the cards that open when you stop.
- [History and saved surveys](https://docs.neuralconfig.com/arrf/survey/history/): Where every stopped survey lands, and how to reopen, rename, or delete it.
---
# Cube colors, labels, and detail
Source: https://docs.neuralconfig.com/arrf/survey/cube-colors-and-labels/
Each survey cube carries a lot of information. Its **fill colour** encodes a
metric you choose; on a RUCKUS survey its **edge outline** identifies the
**serving access point**; and it can spell out values as text when you're close.
## Which colour modes are there?
ARRF has **21 colour modes** in two families:
- **Measured by this phone** — 16 experience modes (latency, jitter, loss, call
quality, speed and more). They work on any Wi-Fi and need no AP access. Their
scales and how each is measured are on [What the phone
measures](https://docs.neuralconfig.com/arrf/survey/experience-metrics/).
- **Access point** — the 5 RF modes below. They need AP-side data, which comes
from the RUCKUS vendor pack. On Any Wi-Fi, the optional RF Shortcut can add the
phone's own signal to stop-and-sample cubes instead.
Change the active mode from the **colour chip** in the survey HUD, or in
**Settings → Display → Cube colors**. Existing cubes recolour instantly. The
chip only lists modes the current survey can actually paint.
### Presets and "All metrics"
Every colour menu (the HUD chip, the Results walk map, both floor-plan viewers)
leads with three job-shaped **presets**, then an **All metrics** submenu with
every mode the survey can paint, grouped as *Access point* and *Measured by this
phone*:
| Preset | Modes, most telling first |
|---|---|
| **Voice** | Call quality (MOS), Call quality under load, Internet call quality (MOS), Voice-class latency, Jitter |
| **Data** | Download ↓, Upload ↑, Latency under load, Internet latency |
| **RF** | Signal (dBm), SNR (dB), Downlink rate ↓, Band |
The presets are ordered by your audience answer: **Home** lists Voice, Data, RF;
**Professional** lists RF, Voice, Data.
### What's the default?
The default colour follows the **Home or Professional?** answer. **Home** — also
the default before you answer — starts on **Call quality (MOS)**;
**Professional** starts on **Signal (dBm)**. If a survey can't paint the
default (for example Signal on an Any Wi-Fi walk), the colour falls back to the
first mode it can.
### RF modes and their thresholds
| Mode | Cube fill shows | Colour scale |
|---|---|---|
| **Signal (dBm)** | Serving-AP-measured RSSI | Red→green ramp: Poor / Fair / Good / Excellent at −85 / −75 / −67 / −60 dBm |
| **SNR (dB)** | AP-measured uplink signal-to-noise | Red→green ramp at 15 / 25 / 35 / 45 dB |
| **Uplink rate ↑** | Achieved PHY rate, phone→AP | Red→green ramp at 50 / 200 / 450 / 900 Mbps |
| **Downlink rate ↓** | Achieved PHY rate, AP→phone | Same rate ramp |
| **Band** | Radio band | 2.4 GHz amber · 5 GHz teal · 6 GHz violet |
All five RF modes are fed by the standard survey poll — none needs [deep RF
stats](#deep-rf-stats). Band mode shows exactly where the phone holds 6 GHz and
where it falls back.
## The legend
The HUD shows a legend for the active mode. Ramp modes draw a red→green bar with
the four grade names beneath and clamped end labels (for example `≤ −85` …
`≥ −60 dBm`). Band mode draws coloured swatches. In **Signal** mode the AR view
shows a per-AP outline-colour key instead — the AR-unique way to tell which cube
belongs to which AP — with the roam count at the end.
## Cube labels
Cubes label themselves by distance so a dense trail stays readable:
- **Near** (within ~2 m) — the full set of fields you chose.
- **Mid** (~2–5 m) — just the active colour metric's value.
- **Far** (beyond ~5 m) — colour only, no text.
A small white **band tag** (2.4 / 5 / 6) always rides in the corner of near and
mid cubes.
Choose the near-label fields in **Settings → Display → Cube label fields** — pick
up to **four** of: **AP name**, **Signal (dBm)**, **SNR (dB)**, **Uplink rate ↑**,
**Downlink rate ↓**. The default set is AP name, Signal, Uplink rate, and
Downlink rate. These fields are AP-side readings, so they apply to RUCKUS
surveys.
## Tap a cube for full detail
Tap any placed cube to open its detail card. A cube with AP-side readings opens
**Signal here**:
- **Signal** — RSSI and SNR with grades, RSSI spread, and a note that these are how the AP hears the phone (uplink).
- **Link** — uplink/downlink rates, band, channel and width, PHY, spatial streams, and MLO.
- **Serving radio** — the AP's airtime-busy percentage and channel plan.
A cube measured only by the phone opens **Experience here**, grouped as **Wi-Fi
hop**, **Voice over Wi-Fi**, **Internet call**, **Internet**, **Throughput
burst**, and **Network**. Each group lists only what that cube measured.
## Deep RF stats
Turn on **Settings → AP signal → Deep RF stats per cube** to enrich each
cube on the serving AP with extra radio detail — uplink SNR, PHY link rate, and
MCS index/width/streams. These appear in the cube's **Uplink modulation** and
**Radio PHY snapshot** detail sections, and land in the [export](https://docs.neuralconfig.com/arrf/tools/exports/).
Deep stats are **off by default** because each cube costs one extra query to the
AP. MCS is not a colour mode — it lives only in the tap-detail.
## Behind-wall occlusion (LiDAR)
On a LiDAR iPhone, **Settings → Display → Behind walls** controls how cubes
hidden behind detected walls are drawn: **Off** (walls ignored), **Hide** (fully
occluded), or **Dimmed** (a faint ghost shows through so data stays visible while
depth still reads). The default is **Dimmed**. On non-LiDAR devices this has no
effect.
## Next steps
- [What the phone measures](https://docs.neuralconfig.com/arrf/survey/experience-metrics/): Every phone-measured colour mode, how it's measured, and its thresholds.
- [Running a survey](https://docs.neuralconfig.com/arrf/survey/running-a-survey/): The HUD the colour chip lives on, and the rest of the survey controls.
- [AP locations and roaming](https://docs.neuralconfig.com/arrf/survey/ap-locations-and-roaming/): What the cube outline colour identifies, and where each AP is.
- [Exporting reports and data](https://docs.neuralconfig.com/arrf/tools/exports/): Where the deep-stat columns land in the readings CSV.
---
# AP locations and roaming
Source: https://docs.neuralconfig.com/arrf/survey/ap-locations-and-roaming/
You place each access point in the AR scene by standing under it and pinning
it; ARRF can also guess positions automatically, but that is off by default. As
you walk, ARRF marks where your phone roamed between access points. You can also
mark where you'd **add** an AP or mesh node.
## AP location signs
With **AP location signs** on (**Settings → Display**, on by default), ARRF
floats a sign in the AR scene at each AP you've **pinned**. AP pinning is part of
a RUCKUS survey, where ARRF knows the APs it polls.
**Automatic estimates are off by default.** Turn on **Settings → AP placement →
Estimate AP locations automatically** to have ARRF guess unpinned APs from how
their signal changes along your walk — a rough guide, often off by several
metres. An estimate starts as a wide **"?"** halo and **tightens as more samples
land**, recomputing as you walk. The demo always shows auto-estimated signs,
since there's nothing to stand under.
Tap a sign to open the AP card. Its **Location** section shows:
- **Position** — the confidence, or "pinned by you" if you've pinned it.
- **Uncertainty** — the estimate's radius (`± X.X m`).
- **Samples** — how many readings from this AP fed the estimate.
- **Path-loss n** — the fitted path-loss exponent.
Uncertainty, Samples and Path-loss n apply only to an estimate, so they are
hidden once the AP is pinned. If an AP has served no samples yet, the card says
*"No samples from this AP yet — walk where it serves you."*
## How do I pin an AP?
Stand under the AP and pin it in the **Place APs** sheet:
1. In the survey, tap the **Place APs** chip (map-pin icon) to open the placement sheet. An orange dot on the chip means no AP is placed yet.
2. Stand **directly under the AP**.
3. Tap **Pin here** on that AP's row.
The pin takes its position from where you stand. Its **mount height** starts
10 cm below the **ceiling height** in **Settings → AP placement** (default
**2.7 m**, so 2.6 m above the floor); adjust it per AP with the height stepper
under the pinned row, in 10 cm steps. You can also pin from the AP card with
**Pin AP here**.
A manual pin overrides the auto-estimate. To remove it, tap **Clear** in the
placement sheet, or **Clear manual pin** on the AP card.
The AP card also carries **AP vitals** (per-radio airtime, TX power vs EIRP,
client count, uptime, PoE), **Wiring** (switch, port, VLAN, and PoE from LLDP),
and **Relationships** (channel and BSS-colour conflicts) — all read live from the
AP over SSH.
## How do I mark where an AP or mesh node should go?
Use **Proposed placements**, at the bottom of the same **Place APs** sheet. Stand
where you'd add a device and tap **AP here** or **Mesh node here**.
- Each proposal is named *Proposed AP 1*, *Proposed mesh node 1*, and so on; rename it, switch its kind, set its mount height, or remove it from its row.
- Proposals are drawn **dashed** — in AR, on the [floor plans](https://docs.neuralconfig.com/arrf/survey/floor-plan/), and in the PDF — because they are a recommendation, not a measurement.
- They need no RUCKUS pack: proposed placements work on an Any Wi-Fi walk too.
## Roam markers
When your phone hands off from one access point to another mid-walk, ARRF
records a **roam**. With **Roam markers** on (**Settings → Display**, or the HUD
flag chip, on by default) it draws a labelled post at each handoff in the AR
scene.
Roams come from two places:
- **AP-side roams** — on a RUCKUS survey, the APs report the phone moving between them. These feed the [RF grade](https://docs.neuralconfig.com/arrf/survey/results-and-grading/) as flagged roams.
- **Phone-seen roams** — on any survey, ARRF notices when the access point (BSSID) the phone is connected to changes. The Results **Roaming** card counts them, flags **ping-pongs** (bounced straight back within 30 seconds), and reports the **longest interruption**: under 150 ms is *seamless for calls*, under 500 ms *a call would glitch*, and longer is *long enough to break up a call*. Reading the access point needs Location access; without it the card says roams weren't recorded.
The HUD's roam count adds both kinds together.
Roams are always **recorded and exported** even with the markers hidden — the
toggle only affects what's drawn. Roaming events also feed the survey grade and
the reports: see [Results and the survey grade](https://docs.neuralconfig.com/arrf/survey/results-and-grading/).
## Next steps
- [Results and the survey grade](https://docs.neuralconfig.com/arrf/survey/results-and-grading/): How flagged roams feed the grade, and the roam card.
- [Running a survey](https://docs.neuralconfig.com/arrf/survey/running-a-survey/): The Place APs chip and the rest of the AR HUD.
- [LiDAR floor plan](https://docs.neuralconfig.com/arrf/survey/floor-plan/): Where pinned APs and dashed proposed placements appear after the walk.
- [Identify My Phone](https://docs.neuralconfig.com/arrf/tools/find-my-device/): The one client whose roams are being tracked.
---
# LiDAR floor plan
Source: https://docs.neuralconfig.com/arrf/survey/floor-plan/
On a LiDAR-equipped iPhone, ARRF can reconstruct the space you walked as a
**floor plan** and show it on the Results screen — an explorable **3D survey**
at the top of the screen and a top-down 2D map further down, with the floor
painted by your Wi-Fi measurements.
## Enable it
Floor-plan reconstruction is controlled by **Settings → Survey & capture →
Floor-plan reconstruction**, which is **on by default**. When it's off, the AR
session runs the plain scene reconstruction and no mesh is captured or saved.
Changes take effect on the **next** survey start.
:::note[Needs LiDAR]
Reconstruction uses the iPhone's LiDAR scanner. On non-LiDAR devices (and in the
Simulator) no plan is produced — everything else in ARRF still works.
:::
## Generate a plan
Just **run a survey with the toggle on** on a LiDAR iPhone. As you walk, ARRF
captures the scene; when you tap **Stop**, it snapshots the LiDAR mesh and
downsamples it (off the main thread, behind a brief *"Generating floor plan…"*
overlay) into a compact surface. The plan then appears on the
[Results](https://docs.neuralconfig.com/arrf/survey/results-and-grading/) screen as the **3D survey** card at
the top and a **Floor plan** card further down.
A plan is shown whenever the walk captured a surface — even a bare footprint with
no readings is a legitimate result.
## What the plan shows
ARRF renders the **sensed surfaces directly** (walls, doors, windows, floor,
furniture) as a chunky voxel structure rather than guessing idealised room
outlines. Key ideas:
- **Structure is greyscale** — walls and fixtures are told apart by lightness, not colour, so colour is free for signal.
- **The floor is the heatmap** — floor near your walk is **painted by the selected Wi-Fi metric**; floor you didn't cover stays neutral (honestly uncovered, not invented).
- **Walk samples glow** — your readings render as glowing dots/cubes over the structure.
- **Notes and proposals** — your [notes](https://docs.neuralconfig.com/arrf/survey/running-a-survey/#how-do-i-add-a-note-or-photo-to-a-spot) appear as numbered badges, and [proposed AP or mesh-node placements](https://docs.neuralconfig.com/arrf/survey/ap-locations-and-roaming/) are drawn **dashed**, never as a located AP.
:::caution[Shape-true, not compass-true]
The plan is built in the AR session's own frame, which has an arbitrary heading —
so it is **shape- and scale-accurate but not oriented to true north**. A scale
bar is the honest anchor; don't read compass bearings off it.
:::
## How do I explore the 3D survey?
The **3D survey** card leads the Results screen and turns slowly on its own
(a freshly stopped survey drops in from overhead first). Tap it, or its
**Expand** label, to open it full screen.
Full screen you see the sensed surfaces as greyscale voxel blocks, a translucent
slab per detected level, the floor painted by the selected metric, and glowing
sample cubes. AP signs appear as labelled posts with their uncertainty halos.
**Drag to orbit, pinch to zoom.** The controls along the bottom:
| Control | What it does |
|---|---|
| **Shade by** menu | Recolour the floor and cubes by another metric. |
| Level switcher | Shown on multi-storey walks — see [Per-level split](#per-level-split). |
| **Iso** / **Top** / **Side** | Jump the camera to an isometric, overhead, or side view. |
| Walk path button | Show or hide the path you walked. |
| **Replay** (play) | Replay the walk along that path. |
| Legend button | Show or hide the colour legend. |
The 3D view is SceneKit-based, so it renders from a saved survey too.
### Sharing the 3D view
The share button in the full-screen title bar offers:
- **Snapshot (PNG)** — the current view as an image.
- **Video (MP4)** — a preset move (**Orbit**, **Fly-in**, or **Overhead spin**), or **Record your own move**: orbit, pinch and pan, then tap **Stop**; the move is smoothed.
- **View in AR** — place the model in the room around you.
- **3D model (USDZ)** — the model as a file.
### Ask your survey
On a device with **Apple Intelligence** (iOS 26 or later), an **Ask your survey**
panel in the full-screen 3D view turns a question — *"e.g. where is 5 GHz SNR
under 25?"* — into a filter over your samples, and the matching samples are
highlighted. Answers and numbers always come from your data. It needs **Settings
→ Experimental → Apple Intelligence features**, which is on by default; without Apple
Intelligence the panel is hidden.
## 2D map
The Floor plan card shows a top-down **column silhouette**. Tap it (expand glyph)
to open the **full-screen 2D view** with pinch-to-zoom and pan.
## Per-level split
If your survey climbed **more than one storey**, a segmented storey switcher
appears:
- **All** — all levels stacked.
- **Lower** / **Upper** for two storeys (or **L1**, **L2**, … for three or more).
Two storeys read as Lower and Upper because the walk may be any two floors, not
necessarily the ground floor. The selected level is shared between the 3D
survey, the inline 2D card, and the full-screen views. Single-storey surveys
show no switcher.
## Export the plan
Use the **Image** button on the Floor plan card to save the 2D plan as a PNG.
Floor-plan pages (one per storey when multi-level) are also included in the
[PDF report](https://docs.neuralconfig.com/arrf/tools/exports/).
## Next steps
- [Results and the survey grade](https://docs.neuralconfig.com/arrf/survey/results-and-grading/): The screen the 3D survey and floor-plan card live on.
- [Exporting reports and data](https://docs.neuralconfig.com/arrf/tools/exports/): Floor-plan pages in the PDF, and the PNG export.
- [Running a survey](https://docs.neuralconfig.com/arrf/survey/running-a-survey/): The walk that captures the mesh in the first place.
- [Settings reference](https://docs.neuralconfig.com/arrf/settings/): Where floor-plan reconstruction and behind-wall occlusion are set.
---
# Results and the survey grade
Source: https://docs.neuralconfig.com/arrf/survey/results-and-grading/
When you stop a survey with at least three cubes, ARRF opens the **Results**
screen (also reopenable from any [History](https://docs.neuralconfig.com/arrf/survey/history/) row). It leads
with a plain-language verdict, grades the walk, summarises it, and flags the
weak spots.
## What the Results screen shows
From top to bottom:
- **3D survey** — when the walk captured a LiDAR surface, the [3D survey](https://docs.neuralconfig.com/arrf/survey/floor-plan/) leads the screen, slowly turning; tap it to explore full screen.
- **Grade card** — an editable survey title, the date and cube count, then the **verdict**: one plain-language headline such as *"The Wi-Fi is the weak link, not the internet."* with a supporting sentence. The letter grade sits beside it only when **show letter grade** is on (see below).
- On a survey with AP-side signal (the RUCKUS pack), the card also carries the connection-health score out of 100, a stat row (median dBm, coverage %, metres walked, roams), a grade breakdown, and a *"How this was measured"* scope note.
- On a phone-measured survey (Any Wi-Fi), the card carries the [experience grade](https://docs.neuralconfig.com/arrf/survey/experience-grade/) and its breakdown instead.
- **Experience** card — on a RUCKUS survey that also measured experience, the experience grade in its own card.
- **Voice** and **Network policy** cards — the simulated-call results and the internet policy check, when measured. See [What the phone measures](https://docs.neuralconfig.com/arrf/survey/experience-metrics/).
- **Rooms** — per-room ratings, when you tagged rooms. See [Rooms and sites](https://docs.neuralconfig.com/arrf/survey/rooms-and-sites/).
- **Floor plan** — the [LiDAR reconstruction](https://docs.neuralconfig.com/arrf/survey/floor-plan/), if one was captured.
- **Walk map** — a top-down minimap you can shade by metric.
- On a RUCKUS survey: **Signal histogram**, **band shares**, a **roam card**, an **AP-share card**, and a **weakest-spots card**.
- On an Any Wi-Fi survey: a **Roaming** card of roams seen by the phone, and an **access-point share** card.
- On the demo: a **What a real survey tells you** card with a **Survey my Wi-Fi** button.
### Why is there no letter grade?
The letter shows only when **show letter grade** is on. It follows the **Home or
Professional?** answer: **Home** (also the default before you answer) hides the
letter so the verdict leads alone; **Professional** shows it. You can change it
in [Settings](https://docs.neuralconfig.com/arrf/settings/).
## How is the verdict chosen?
The verdict is a fixed sentence picked from the experience Wi-Fi and internet
subscores and the RF grade — no AI, so the same survey always reads the same
way. A part that wasn't measured is never called good. The full list of
headlines is on [The experience grade](https://docs.neuralconfig.com/arrf/survey/experience-grade/).
## What the RF grade measures
The RF grade applies when the RUCKUS vendor pack supplied AP-side signal. ARRF
grades **connection health**, not area coverage. Every signal value is read
from the **serving AP over SSH** — how the AP hears *this phone* (the **uplink**
direction). iOS exposes no downlink RSSI and no passive multi-AP scan to
third-party apps, so the grade is honest about scope: it scores **one device's
connection health and roaming as you walked**. Uplink is the conservative
direction.
## How the score is calculated
Each sample is scored against a **requirement** you set (and that is captured
into every export), with these defaults following common WLAN design convention:
| Target | Default | Meaning |
|---|---|---|
| **Primary** | −67 dBm | Full credit at or above this signal |
| **Edge** | −72 dBm | Zero credit at or below; credit fades linearly between edge and primary |
| **Min SNR** | 25 dB | Full credit at or above; credit fades linearly to zero **10 dB below** it (so 15 dB scores zero at the default) |
The scoring is continuous — **no hard band cliffs** — and it deliberately can't
average away a dead spot:
1. Each sample gets a 0–1 **signal quality** and a 0–1 **SNR quality**.
2. Each sub-score blends the **mean 50/50 with the worst-decile (10th-percentile) sample** — a **worst-decile gate**, so weak spots pull the score down.
3. The two sub-scores combine **60% signal + 40% SNR**, minus **8 points per flagged roam, counting at most 3** — so the roam penalty is capped at **24 points** and a survey **cannot fail on roams alone**.
4. The result is clamped to 0–100.
A very long survey still grades the whole walk. Past 20,000 placed readings
(roughly two hours of continuous capture) ARRF thins the set by keeping every
other reading, newest always kept, so spatial coverage stays roughly even and
nothing is cut off; the worst-decile gate still finds the weak spots. See
[Long walks and hot phones](https://docs.neuralconfig.com/arrf/survey/running-a-survey/#long-walks-and-hot-phones).
Both sub-scores are shown on the Results screen next to the letter, along with
the percentage of samples meeting each target and the flagged-roam count, so the
grade is always decomposable.
:::note[Which dBm gets graded]
Where the serving AP reported a real RSSI, that is the value scored. Where it
didn't, ARRF grades the SNR-derived figure instead (`dBm = SNR + offset`, using
the offset or true noise floor from **Settings → AP signal**). Changing the
offset therefore changes the grade of a survey with SNR-derived readings.
:::
The final 0–100 score maps to letters:
| Grade | Score |
|---|---|
| **A** | ≥ 90 |
| **B** | ≥ 75 |
| **C** | ≥ 55 |
| **D** | ≥ 35 |
| **F** | below 35 |
| **N/A** | fewer than **10** readings — too few to grade, not an F |
A survey with fewer than 10 readings is **N/A**, not F; F is reserved for a
genuinely-scored floor. The [experience grade](https://docs.neuralconfig.com/arrf/survey/experience-grade/)
uses the same letters and the same 10-cube minimum.
## Weak spots
The **worst-decile** effective dBm is the weak-spot indicator, and the in-app
**weakest-spots card** keeps the three weakest samples (weakest first), ringed on
the walk map. The [PDF report](https://docs.neuralconfig.com/arrf/tools/exports/) keeps up to ten.
## Flagged roams
ARRF flags two kinds of problem handoff, and one roam can carry both:
- **Weaker signal** — handed off to a *weaker* signal (SNR dropped 3 dB or more).
- **Ping-pong** — bounced straight back to the AP it just left within **30 seconds**.
The flagged-roam count drives the roam penalty in the grade and appears in the
breakdown and the reports. Roams seen by the phone on an Any Wi-Fi walk are
covered in [AP locations and roaming](https://docs.neuralconfig.com/arrf/survey/ap-locations-and-roaming/).
## Adjust the requirement
The primary/edge/SNR targets live in **Settings → Grade requirement**. Because
they're captured into each export, a report always states — and grades against —
the requirement that was set when it was captured.
Changing the targets does **not** re-grade surveys you already saved: each one
keeps the requirement it was captured with, which is why an old report and a new
one can disagree about the same floor.
## Next steps
- [The experience grade](https://docs.neuralconfig.com/arrf/survey/experience-grade/): Profiles, targets, scoring and every verdict headline for phone-measured surveys.
- [Exporting reports and data](https://docs.neuralconfig.com/arrf/tools/exports/): Turn this screen into a PDF site survey, CSVs, or raw JSON.
- [History and saved surveys](https://docs.neuralconfig.com/arrf/survey/history/): Reopen, rename, or delete any graded survey.
- [LiDAR floor plan](https://docs.neuralconfig.com/arrf/survey/floor-plan/): The 3D survey and reconstructed plan that appear on this screen.
---
# History and saved surveys
Source: https://docs.neuralconfig.com/arrf/survey/history/
You never have to remember to save. **Stopping a survey is the save** — any walk
that recorded a reading or a roam lands in the **History** tab automatically,
newest first, ready to reopen, grade, or export.
## How is History organised?
Once you have at least one [site](https://docs.neuralconfig.com/arrf/survey/rooms-and-sites/), History shows
**one section per site** (most recently used first), then **Unfiled** for
surveys not filed under a site. Without any sites it is one plain list. A
**search** field filters by site, client, or survey name.
| Action | How |
|---|---|
| **Open** a survey | Tap the row. |
| **File** it under a site | Swipe the row right (**Move**) or long-press it and pick **Move to site…**. |
| **Delete** it | Swipe left, or long-press and pick **Delete**, then confirm. |
| **Compare** two surveys | A site's **⋯** menu → **Compare surveys…**; the compare button on the Unfiled header; or **Compare** in the toolbar when you have no sites. See [Before and after compare](https://docs.neuralconfig.com/arrf/survey/before-after-compare/). |
| **Rename** or **delete a site** | The site's **⋯** menu → **Rename site…** / **Delete site…**. Deleting a site keeps its surveys and moves them to Unfiled. |
The demo can't be filed under a site.
## What a History row shows
Each row is a summary, read from a lightweight index rather than the full survey
document, so the list opens instantly however many surveys you have:
| Element | What it is |
|---|---|
| **Thumbnail** | A miniature top-down walk map, its dots coloured by signal band. |
| **Title** | Your custom name if you set one, otherwise the RUCKUS One venue name, otherwise *Demo survey* for the demo, *Experience walk* for a phone-measured survey, or *Manual survey*. |
| **DEMO badge** | An orange tag on a simulated demo walk, so it can't pass for a real survey. |
| **Subtitle** | Date and time, point count, and roam count. |
| **Grade badge** | The letter grade, colour-coded, computed once when the survey was saved: the RF grade when the survey has one, otherwise the [experience grade](https://docs.neuralconfig.com/arrf/survey/experience-grade/). |
Tap a row to open the same [Results](https://docs.neuralconfig.com/arrf/survey/results-and-grading/) screen
the survey ended on — the full document is decoded in the background, so a very
long walk takes a moment.
## How do I delete a survey?
Swipe the row left (or long-press it and pick **Delete**). ARRF asks *"Delete
this survey?"* first — *"Its readings, floor plan and report are removed from
this device. This can't be undone."* — and only **Delete** removes the survey
document from the device permanently.
## Rename a survey
The title is edited on the **Results** screen, not in the list: open the survey
and type over the name in the grade card header. Clearing it back to empty
restores the default title (venue name, *Demo survey*, *Experience walk*, or
*Manual survey*).
A report you opened *without* saving it (see below) has no title field — there
is nothing on disk to rename.
## Where surveys are stored
Saved surveys live inside ARRF's own container on the iPhone: one JSON document
per survey — byte-identical to the [JSON export](https://docs.neuralconfig.com/arrf/tools/exports/) —
plus a small index file that backs the list. They are never uploaded anywhere,
and deleting the app deletes them.
:::note[History is per-device]
Surveys do not sync between iPhones. To move one, share its [JSON or
PDF](https://docs.neuralconfig.com/arrf/tools/exports/) from the Results screen.
:::
## When a survey can't be saved
If writing the survey to storage fails — a full disk is the usual cause — ARRF
does **not** discard the walk. A **"Survey not saved"** alert appears with the
underlying reason and two choices:
- **Retry** — attempt the write again. The survey is still held in memory, so a retry after freeing space usually succeeds.
- **Open anyway** — skip saving and open the Results screen regardless, so you can still export the PDF, CSV, or JSON by hand before leaving the screen.
:::caution[Open anyway is a one-shot]
An unsaved report is in memory only. Once you dismiss it the walk is gone —
export what you need before you close it.
:::
## When a saved survey won't open
Tapping a row whose file is missing or damaged raises a **"Couldn't open
survey"** alert rather than doing nothing:
| Message | Meaning |
|---|---|
| *"This survey's file is missing from storage."* | The index still lists the survey but its document is gone. |
| *"This survey's file is damaged and can't be opened."* | The document is present but can't be decoded. |
The row stays in the list — ARRF never deletes a document it failed to read, so
a file recovered from a backup still opens. Delete the row yourself once you're
satisfied it's unrecoverable.
## Recovered surveys
If the index file is lost or damaged, ARRF rebuilds it at launch by scanning the
survey documents themselves, and re-grades each one it finds. The survey data —
readings, roams, floor plan, grade, and the site it was filed under — is fully
intact. The casualties are the **RUCKUS One venue name** and any **custom name**
you typed, which live only in the index: a recovered survey shows its default
title until you rename it.
## Next steps
- [Results and the survey grade](https://docs.neuralconfig.com/arrf/survey/results-and-grading/): What opens when you tap a History row, and how the letter is calculated.
- [Rooms and sites](https://docs.neuralconfig.com/arrf/survey/rooms-and-sites/): How sites group surveys and keep room names across re-walks.
- [Before and after compare](https://docs.neuralconfig.com/arrf/survey/before-after-compare/): Put two surveys of one site side by side.
- [Exporting reports and data](https://docs.neuralconfig.com/arrf/tools/exports/): Turn a saved survey into a PDF report, CSVs, or raw JSON.
---
# What the phone measures
Source: https://docs.neuralconfig.com/arrf/survey/experience-metrics/
On an **Any Wi-Fi** survey — and on a RUCKUS survey with **Measure experience**
on — the iPhone itself times your network as you walk. It probes your **router**
(the Wi-Fi hop you can fix), a nearby **test server** on the internet, and runs
short **speed bursts**. Each cube summarises the probes from the **2 seconds**
before it was placed. None of this needs access to the access points, so it
works on any Wi-Fi from any vendor.
These tests run on Wi-Fi only; if the phone drops off Wi-Fi, the survey pauses
measuring until it's back.
## Which metrics are there, and how is each measured?
| Metric (colour mode) | How it's measured | Needs internet tests |
|---|---|---|
| **Wi-Fi latency (p95)** | ICMP echoes to your router, 20 a second. The 95th-percentile round trip of the idle replies in the cube's window. If the router ignores ICMP, ARRF falls back to timing TCP connects. | No |
| **Jitter** | The average change between consecutive idle router round trips. | No |
| **Packet loss** | The share of idle router probes with no reply within 1 second. | No |
| **Internet latency** | WebSocket echoes to the test server, 10 a second; the median round trip. | Yes |
| **Download ↓** / **Upload ↑** | Short speed bursts against the test server, or a local iperf3 server if you set one. | Yes, unless you use local iperf3 |
| **Latency under load** | The median router round trip for probes sent *during* a speed burst. | For the burst |
| **Voice-class latency** | The median round trip on the simulated-call lane (WMM voice queue). | No |
| **Call quality (MOS)** | A simulated call to your router, scored with the E-model — see [below](#how-is-call-quality-scored). | No |
| **Call quality under load** | The same call score while a speed burst is running. | For the burst |
| **Internet call quality (MOS)** | The same call frames sent end to end to the nearest Cloudflare edge. | Yes |
| **DNS lookup** | One DNS query a second to the phone's own resolver; the median time. | No |
| **Connection setup** | A fresh TCP + TLS connection to the test server, up to once a second; the median setup time. | Yes |
| **Retransmissions** | From a speed burst: the worse of the upload's retransmitted share and the download's duplicate/out-of-order share. | For the burst |
| **OS link quality** | iOS's own rating of the Wi-Fi link: *minimal*, *moderate*, or *good*. iOS 26 or later only. | No |
| **Connected AP (BSSID)** | Which access point (BSSID) the phone was on — one colour per BSSID. Needs Location access. | No |
Idle figures never include probes sent during a burst; those become the
**under load** figures instead.
:::note[Internet tests off]
With **Internet tests** off, ARRF never contacts the test server: no internet
latency, internet call quality, connection setup, or test-server speed bursts.
Router tests and DNS still run, and a local iperf3 server still bursts. See
[Internet tests and privacy](https://docs.neuralconfig.com/arrf/setup/internet-tests-and-privacy/).
:::
## How are speed bursts run?
During a continuous survey ARRF runs a **1.5-second** burst about **every 5
seconds**, alternating download and upload; a hot phone bursts less often. In an
Any Wi-Fi stop-and-sample capture, the phone measures for one window and runs a
download and an upload burst before the cube drops. Bursts go to
the default test server, or to a **local iperf3 server** set in **Settings →
Experience**, which measures speed over your own network only, without the
internet in the way. **Saturate (latency under load)** in the same settings
keeps a transfer running instead, so every cube also measures latency under
load; it uses more data and battery.
## How is call quality scored?
The call test sends **50 packets a second** — one G.711-sized frame per 20 ms —
to your router, marked for the **WMM voice queue**. ARRF scores it with the
**ITU-T E-model** for **G.711** with packet-loss concealment, giving a **MOS**
(mean opinion score) from the lane's delay, jitter and loss.
| MOS | Label |
|---|---|
| 4.3 or more | Excellent |
| 4.0 – 4.3 | Good |
| 3.6 – 4.0 | Fair |
| 3.1 – 3.6 | Poor |
| below 3.1 | Bad |
This score covers **this iPhone to your router** — the Wi-Fi hop — not an
end-to-end call. **Internet call quality** sends the same frames to the nearest
Cloudflare edge over a TCP WebSocket; any frame more than 60 ms later than the
fastest ones counts as lost, as in a real call's jitter buffer.
The Results **Voice** card also reports **Voice priority (WMM)**: it compares
how much the voice lane and normal traffic slowed during the speed bursts. A
failure means priority isn't kept somewhere between this phone and the router.
## What do the colours mean?
Each metric paints cubes on a red → green ramp with four breakpoints, read as
**Poor / Fair / Good / Excellent**. A value exactly on a breakpoint counts toward
the better side. For lower-is-better metrics the breakpoints run downward.
| Metric | Poor | Fair | Good | Excellent |
|---|---|---|---|---|
| Wi-Fi latency (p95), Voice-class latency | 100 ms | 50 ms | 20 ms | 10 ms |
| Jitter | 20 ms | 10 ms | 5 ms | 2 ms |
| Packet loss | 5 % | 2 % | 1 % | 0.5 % |
| Internet latency | 150 ms | 80 ms | 40 ms | 20 ms |
| Download ↓, Upload ↑ | 3 Mbps | 10 Mbps | 25 Mbps | 100 Mbps |
| Latency under load | 200 ms | 100 ms | 50 ms | 25 ms |
| Retransmissions | 10 % | 5 % | 2 % | 1 % |
| Call quality, under load, Internet call (MOS) | 3.1 | 3.6 | 4.0 | 4.3 |
| DNS lookup | 150 ms | 60 ms | 30 ms | 15 ms |
| Connection setup | 400 ms | 200 ms | 100 ms | 50 ms |
**OS link quality** and **Connected AP** are categories, not ramps: link quality
runs minimal → moderate → good, and each access point gets its own colour.
## Which colour presets group these?
The colour menus lead with three presets, then **All metrics**:
| Preset | Modes |
|---|---|
| **Voice** | Call quality (MOS), Call quality under load, Internet call quality (MOS), Voice-class latency, Jitter |
| **Data** | Download ↓, Upload ↑, Latency under load, Internet latency |
| **RF** | Signal (dBm), SNR (dB), Downlink rate ↓, Band — AP data only |
**Home** orders them Voice, Data, RF and starts cubes on **Call quality (MOS)**;
**Professional** orders them RF, Voice, Data. See [Cube colors, labels, and
detail](https://docs.neuralconfig.com/arrf/survey/cube-colors-and-labels/).
## Why did my cubes switch to Internet latency?
If ARRF can't time your router — none was found, or it never answers (for
example when Local Network access was declined) — every Wi-Fi-hop cube would be
grey. So, once per walk, if the colour is **Wi-Fi latency**, **Jitter**,
**Packet loss**, or **Voice-class latency**, ARRF switches it to **Internet
latency**, which is still measured.
## Next steps
- [The experience grade](https://docs.neuralconfig.com/arrf/survey/experience-grade/): How these metrics roll up into a letter and a plain-language verdict.
- [Any Wi-Fi survey](https://docs.neuralconfig.com/arrf/setup/any-wifi-survey/): Start a phone-measured survey on any network.
- [Internet tests and privacy](https://docs.neuralconfig.com/arrf/setup/internet-tests-and-privacy/): What the test server sees, and what turning internet tests off removes.
- [Network test](https://docs.neuralconfig.com/arrf/tools/network-test/): Run the same measurements standing still, without a survey.
---
# The experience grade
Source: https://docs.neuralconfig.com/arrf/survey/experience-grade/
The **experience grade** scores what the phone measured against a **usage
profile** — **Video calls** by default — and turns it into a 0–100 score, a
letter, and a one-line **verdict** such as *"The Wi-Fi is the weak link, not the
internet."* It weights the Wi-Fi hop **60%** and the internet path **40%**, so a
slow internet provider isn't blamed on the Wi-Fi.
It leads the Results screen on an Any Wi-Fi survey, and gets its own
**Experience** card on a RUCKUS survey that also measured experience. The
metrics it reads are described on [What the phone
measures](https://docs.neuralconfig.com/arrf/survey/experience-metrics/).
## Which profiles are there, and what are their targets?
Pick a profile from the **Profile** menu on the Experience card. Each profile
sets a target per criterion; a criterion the profile doesn't list isn't part of
its grade.
| Criterion | Web | Streaming | Video calls *(default)* | Gaming |
|---|---|---|---|---|
| **Wi-Fi latency (p95)** | ≤ 50 ms | ≤ 50 ms | ≤ 30 ms | ≤ 20 ms |
| **Jitter** | — | — | ≤ 20 ms | ≤ 10 ms |
| **Packet loss** | ≤ 2 % | ≤ 1 % | ≤ 1 % | ≤ 0.5 % |
| **Latency under load (Δ)** | — | — | — | ≤ 30 ms |
| **Internet latency** | ≤ 150 ms | ≤ 200 ms | ≤ 100 ms | ≤ 50 ms |
| **Download** | ≥ 5 Mbps | ≥ 25 Mbps | ≥ 3 Mbps | ≥ 10 Mbps |
| **Upload** | ≥ 1 Mbps | — | ≥ 3 Mbps | — |
**Latency under load (Δ)** is how much a cube's router round trip rose during a
speed burst over its own idle round trip — or over the survey's median idle
round trip when the cube has none.
The first four criteria form the **Wi-Fi** subscore (the hop you can fix); the
last three form the **Path** subscore (they include your internet provider and
the test server). With **plain labels** on — the Home default — they read
*Router delay*, *Delay wobble (jitter)*, *Lost packets*, *Delay when busy*,
*Internet delay*, *Download speed*, and *Upload speed*.
### Does changing the profile change the survey?
Choosing another profile **re-grades the survey on screen** — the score, letter,
breakdown and verdict all follow. The survey keeps the profile and targets it was
captured with, so reopening it later grades it exactly as it did when you
stopped. New surveys are captured under **Video calls**.
## How is the score calculated?
```mermaid
flowchart LR
V[Each cube's value] --> Q[Quality 0-1
vs the profile target]
Q --> C[Criterion score
50% mean + 50% worst decile]
C --> W[Wi-Fi subscore
average of Wi-Fi criteria]
C --> P[Path subscore
average of path criteria]
W --> S[Score = 0.6 Wi-Fi + 0.4 Path]
P --> S
S --> L[Letter A-F
or N/A under 10 cubes]
```
1. **Each cube gets a 0–1 quality per criterion.** Full credit at or better than
the target, fading linearly to zero at **twice the target** for
lower-is-better criteria (latency, jitter, loss, latency under load), or at
**half the target** for download and upload. There are no band cliffs.
2. **Each criterion scores 0–100** as **50% the mean quality + 50% the quality
of the worst-decile value** (the 90th-percentile value for lower-is-better
criteria, the 10th percentile for speed), so a few bad spots can't be
averaged away.
3. **Criteria average into two subscores**, **Wi-Fi** and **Path**.
4. **Score = 0.6 × Wi-Fi + 0.4 × Path**, clamped to 0–100. If only one family
was measured, it is the score on its own.
5. The score maps to the same letters as the RF grade: **A** ≥ 90, **B** ≥ 75,
**C** ≥ 55, **D** ≥ 35, **F** below.
:::note[Not measured is never zero]
A criterion no cube measured is listed — *"Not measured: … — excluded from the
grade."* — and left out, never scored as zero. When a whole family is missing,
the card says *"Wi-Fi hop not measured — graded on the internet path alone."*
or *"Internet path not measured — graded on the Wi-Fi hop alone."*
:::
### When is a survey N/A?
The grade needs at least **10 cubes** with experience measurements and at least
one measured criterion. Otherwise it's **N/A**, not F, with the reason:
*"Experience not measured"*, *"No video calls criteria measured"* (named after
the profile), or *"Too few readings to grade (N of 10 needed)"*.
### What else does the card show?
Each criterion row shows its score, median, worst 10%, target, the share of
cubes meeting the target, and the cube count. **Worst spots** lists up to three
cubes with the lowest average quality, naming the criterion that dragged each
one down. **How experience was measured** opens the methodology note.
The letter itself shows only when **show letter grade** is on; the Home default
hides it and lets the verdict lead.
## What does the verdict say?
The verdict is a fixed sentence — no AI — chosen from the Wi-Fi and Path
subscores and, on a RUCKUS survey, the RF grade. A subscore **below 75** (under a
B) counts as weak. A part that wasn't measured is never called good.
| Situation | Headline |
|---|---|
| Wi-Fi and internet both weak | *Both the Wi-Fi and the internet connection are holding things back.* |
| Wi-Fi weak, internet fine | *The Wi-Fi is the weak link, not the internet.* |
| Wi-Fi weak, internet not tested | *The Wi-Fi is the weak link.* |
| Internet weak, Wi-Fi fine | *The Wi-Fi is fine; the internet connection is the weak link.* |
| Internet weak, Wi-Fi not tested | *The internet connection is the weak link.* |
| Experience fine, RF coverage weak | *Works today, but coverage is thin in places.* |
| Everything fine | *Wi-Fi and internet both look good.* |
| Wi-Fi fine, internet not tested | *The Wi-Fi looks good.* |
| Internet fine, Wi-Fi not tested | *The internet connection looks good.* |
| RF only, coverage weak (score under 55) | *Coverage is weak across much of the space.* |
| RF only, coverage weak (55–74) | *Coverage is thin in places.* |
| RF only, coverage fine | *Signal coverage meets the target.* |
The supporting sentence says what's dragging it down — *"Mainly Wi-Fi delay."*,
*"Talk to the internet provider."*, *"Fix the Wi-Fi first …, then check with the
internet provider."*, or *"Only N% of spots reach −67 dBm."* — and names anything
untested, such as *"The internet connection wasn't tested."* An RF-only survey
always adds *"The connection itself wasn't tested."*
Two clauses can be appended:
- *"Worst in Kitchen."* — the weakest rated [room](https://docs.neuralconfig.com/arrf/survey/rooms-and-sites/), when the weak link is in the building (the Wi-Fi or coverage), never for an internet problem.
- *"QUIC/UDP blocked — calls and video may suffer."* — whenever the network policy check found QUIC or all UDP blocked.
When nothing could be graded there is no verdict.
## Next steps
- [What the phone measures](https://docs.neuralconfig.com/arrf/survey/experience-metrics/): How each criterion is measured, and its colour scale.
- [Results and the survey grade](https://docs.neuralconfig.com/arrf/survey/results-and-grading/): The rest of the Results screen, and the RF connection-health grade.
- [Rooms and sites](https://docs.neuralconfig.com/arrf/survey/rooms-and-sites/): Per-room ratings, and where the verdict's worst room comes from.
- [Before and after compare](https://docs.neuralconfig.com/arrf/survey/before-after-compare/): Grade two walks of one site against the same profile.
---
# Rooms and sites
Source: https://docs.neuralconfig.com/arrf/survey/rooms-and-sites/
**Rooms** answer "how's the kitchen?": tag cubes with a room as you walk and
Results rates each room **Good**, **Fair**, or **Poor**. **Sites** answer "which
building was this?": file surveys under a site so History groups them and a
re-walk reuses the same room names. Both are optional.
## How do I tag cubes with a room?
Use the large **Room** control in the survey HUD (*Room: none* until you pick
one). Every cube and note placed after that carries the room, until you change
it. The menu offers:
| Section | What's in it |
|---|---|
| **This site** | The rooms the filed site already knows. |
| **This walk** | Rooms you've used earlier in this walk that the site doesn't have yet. |
| **Suggestions** | Living room, Kitchen, Dining room, Bedroom, Bathroom, Office, Hallway, Basement, Garage, Patio, Pool, Outdoor — minus any already listed. |
| **New room…** | Type a name. *"Cubes and notes from here on are tagged with this room."* |
| **No room** | Stop tagging (shown while a room is set). |
A typed or suggested name that matches a room the site already has — ignoring
case, accents and extra spaces — reuses that room rather than creating a
duplicate. That shared identity is what [before and after
compare](https://docs.neuralconfig.com/arrf/survey/before-after-compare/) matches rooms on.
## What does the Rooms card on Results show?
When the walk tagged at least one room, Results shows a **ROOMS** card with one
line per room: its score, a rating chip, and the figures a client asks about —
sample count, Wi-Fi latency p95, call MOS, internet call MOS, median download,
median signal (and whether the AP or this iPhone measured it), and roams. Cubes
without a room are counted as *"N samples not in a room."* The PDF report carries
the same rooms.
| Rating | Room score |
|---|---|
| **Good** | 75 or more |
| **Fair** | 55 – 74 |
| **Poor** | below 55 |
| **Too few** (*Not enough samples*) | fewer than 3 cubes in the room |
A room's score uses the same method as the whole survey on just that room's
cubes: the [experience score](https://docs.neuralconfig.com/arrf/survey/experience-grade/) (Wi-Fi 60 % /
path 40 %) when experience was measured, otherwise the RF connection-health core
(signal 60 % / SNR 40 %). Rooms are small, so there's no 10-cube minimum — only
the 3-cube floor.
### How do I fix a mis-tagged room?
Tap **Edit** on the Rooms card (saved surveys only) to open **Edit rooms**.
Select samples, then use **Move N samples to…** to send them to another room, a
**New room…**, or **No room**. **Rename** a room from its section. Tap **Save**
to rewrite the survey, or **Cancel**.
### Where does "Worst in …" come from?
When the [verdict](https://docs.neuralconfig.com/arrf/survey/experience-grade/#what-does-the-verdict-say)
says the weak link is the Wi-Fi or coverage, it appends the weakest rated room
that isn't Good — for example *"Worst in Kitchen."* It never names a room for an
internet-provider problem.
## How do I file a survey under a site?
Use the **Site** card in the Survey lobby, under *Where*. It shows *Untitled
(Unfiled)* until you choose; the demo is never filed, so the card is hidden for
it. Tap it to open the site picker:
- **New site…** — enter a **Site name** and an optional **Client**, then **Create and use**.
- **No site (Unfiled)** — file nothing.
- **Recent** — your sites, most recently used first, each with its client, room count, and when it was last used.
- **Search** — *Search sites or clients*.
A site groups every survey of one place — a client office, a home — and keeps
the rooms its surveys used, so the next walk's Room menu lists them under **This
site**.
You can also file or re-file a saved survey later from History with **Move to
site…**.
## How do sites show up in History?
Once you have a site, [History](https://docs.neuralconfig.com/arrf/survey/history/) shows one section per
site, most recently used first, then **Unfiled**. Each site's **⋯** menu offers
**Compare surveys…**, **Rename site…**, and **Delete site…**; deleting a site
keeps its surveys and moves them to Unfiled.
## Next steps
- [Before and after compare](https://docs.neuralconfig.com/arrf/survey/before-after-compare/): Compare two walks of one site, room by room.
- [History and saved surveys](https://docs.neuralconfig.com/arrf/survey/history/): Site sections, Unfiled, search, and moving surveys between sites.
- [The experience grade](https://docs.neuralconfig.com/arrf/survey/experience-grade/): The scoring each room's rating reuses, and the verdict.
- [Running a survey](https://docs.neuralconfig.com/arrf/survey/running-a-survey/): The HUD the Room control lives on.
---
# Before and after compare
Source: https://docs.neuralconfig.com/arrf/survey/before-after-compare/
**Compare** puts two surveys of one place side by side, so you can show what a
change — moving a mesh node, adding an AP, a new router — actually did. Walk the
space before the change and again after it, then compare the two from History.
**The older survey is always Before.**
## How do I open Compare?
From the [History](https://docs.neuralconfig.com/arrf/survey/history/) tab:
- **Filed under a site** — open the site's **⋯** menu and tap **Compare surveys…**.
- **Unfiled surveys** — tap the compare button (two arrows) on the Unfiled section header; it appears once Unfiled holds two or more surveys.
- **No sites at all** — tap **Compare** in the toolbar; it appears once you have two or more surveys.
Compare picks the two newest surveys to start. Change either with the **Before**
and **After** pickers. Whichever way round you pick them, the older walk is
treated as Before. With fewer than two surveys you'll see *"Compare needs two
surveys"*.
:::tip[Two surveys on the trial]
The free trial includes enough surveys for a before and an after. See [Free
trial and unlock](https://docs.neuralconfig.com/arrf/setup/free-trial-and-unlock/).
:::
## What's compared?
| Section | What it shows |
|---|---|
| **Headline** | One sentence such as *"Better overall: C → B · 2 rooms better."*, with the Before and After grade tiles (letters shown only when **show letter grade** is on) and the score change. |
| **Key numbers** | Points; median signal; Wi-Fi hop call MOS and Internet call MOS (with the worst tenth); roams; longest roam gap; and voice priority for download and upload, when measured. |
| **Rooms** | Each room's rating and score, before → after, with the change. Rooms are matched by their saved identity, else by name. Rooms only in the after walk read *new*; rooms only in the before walk read *not walked*. |
| **Signal distribution** | The two signal histograms overlaid — only when both walks carried AP-side signal. |
| **Experience** | Each experience criterion on both sides, graded with the after survey's profile. |
The section ends with a methodology note.
## How does Compare decide "better" or "worse"?
- **Each survey is graded exactly as in its own report.** The two letters are compared only when both were graded the same way — both by the signal grade, or both by the [experience grade](https://docs.neuralconfig.com/arrf/survey/experience-grade/). Otherwise the headline says they were *graded differently*.
- **One yardstick for experience.** Both sides use the **after** survey's profile, so a changed profile never reads as a changed network.
- **A change must beat the noise.** A score must move by more than **5 points**, a call MOS by more than **0.2**, median signal by more than **3 dB**, and the longest roam gap by more than **100 ms**. Smaller moves read as *about the same*, because two walks of one space never take the same path.
:::note[No spatial difference map]
Each walk has its own AR coordinate frame, so Compare can't overlay the two
walks spot by spot. **Rooms** are the join — tag rooms on both walks, filed
under the same [site](https://docs.neuralconfig.com/arrf/survey/rooms-and-sites/), for a room-by-room
comparison.
:::
## How do I share the comparison?
Tap **PDF** in the Compare toolbar to build a before / after PDF report and share
it. It uses your report branding, and shows letters only when both **show letter
grade** and the PDF letter-grade setting are on.
## Next steps
- [Rooms and sites](https://docs.neuralconfig.com/arrf/survey/rooms-and-sites/): Tag rooms and file both walks under one site so they compare room by room.
- [History and saved surveys](https://docs.neuralconfig.com/arrf/survey/history/): Where the Compare entry points live.
- [The experience grade](https://docs.neuralconfig.com/arrf/survey/experience-grade/): The profile and scoring both sides are graded with.
---
# Exporting reports and data
Source: https://docs.neuralconfig.com/arrf/tools/exports/
Every survey can be shared as a report or raw data. Open a survey's
[Results](https://docs.neuralconfig.com/arrf/survey/results-and-grading/) screen — freshly stopped, or
reopened from [History](https://docs.neuralconfig.com/arrf/survey/history/) — and tap the **share** icon at
the top left for the export menu. The floor-plan image is shared from the Floor
plan card instead, and the 3D view has its own share menu.
On a long walk the screen briefly shows *"Preparing report…"* while it builds
the analysis, walk map, and floor plans in the background.
Each deliverable is named after the survey title and date, for example
`Warehouse survey 2026-07-22`.
## What's in the share menu?
| Menu item | File | When it appears |
|---|---|---|
| **Share PDF report** | `