# Network testing

> Join a network as a client from a sensor radio, survey cells through a GL.iNet modem, watch the phone's own Wi-Fi, range with Wi-Fi RTT, and run speed and path tests.

Network testing shows what a client actually gets, not just what is on the air.

## What you need

- **Join Network:** a connected Linux sensor with a radio that can run in client mode. iPhone, iPad and Android.
- **Cellular:** a GL.iNet router with a cellular modem, such as a Mudi, added in **Devices** with root SSH. A SIM is optional. iPhone, iPad and Android.
- **Phone Wi-Fi:** no sensor needed. On iPhone it needs the Shortcuts app.
- **Wi-Fi RTT:** Android only. It needs Android 9 or later, a phone with 802.11mc RTT hardware, and RTT-capable access points.
- **Path & Multipath:** iPhone and iPad only.

## How to test a network as a client with Join Network

1. Connect a sensor in **Devices**.
2. Open **More** › **Join Network** (iPhone and Android).
3. Under **Interface**, pick the radio.
4. Tap **Scan for Networks**. Under **Networks in Range**, tap a network. The app reads the security type from the scan.
5. Under **Network**, check the **SSID** and **Security**. Enter the passphrase, or for Enterprise choose the **EAP Method** (**PEAP** or **TTLS**) and enter the **Identity** and **Password**.
6. If needed, open **Advanced**. There you can pin a **BSSID (optional)**, set a **Country code (optional)**, or turn off **Request a DHCP address**.
7. Read **Before You Join**. It lists any interfaces the join will bring down. It also warns you if a capture on the same radio will lose its channel.
8. Tap **Join Network**. A join can take about 70 seconds: up to 45 to associate, then up to 25 for DHCP.
9. When it works, the connection card shows the SSID, **Signal**, **BSSID**, **IP Address** and **Supplicant** state. For Wi-Fi 7 links it also shows **Multi-Link Operation**.
10. Tap **Disconnect** when you are done.

The passphrase goes to the sensor for that join only and is never saved. If the supplicant has not reached `COMPLETED`, keying has not finished and the link is not usable yet.

## How to run the cellular tests

1. Connect to the GL.iNet router's Wi-Fi, USB or Ethernet. Add it in **Devices** (iPhone suggests `192.168.8.1` with user `root`) and connect.
2. Open **Cellular**. On iPhone it is a tab in the expanded tab bar. On Android, it is in the expanded bottom bar or under **More** › **Cellular**.
3. Under **GL.iNet cellular modem**, tap **Check modem and bands**. You should see the LTE and NR bands the modem reports.
4. Under **Scan bands**, choose **All bands**, **Fast survey** (iPhone) / **Adaptive discovery** (Android), **CBRS B48 / n48** or **Custom bands**.
5. Optionally turn on **Repeat scans**, then tap **Scan now**. A full scan can take several minutes. Tap **Stop after current scan** to finish.
6. Read **Latest scan**: band, operator code, channel, PCI, RSRP and RSRQ for each cell.
7. Export with **Save native JSON and both CSV formats** (iPhone) or **Save JSON and both CSV formats** (Android).

A scan may interrupt the modem's cellular data while a SIM is active. To record cells against a floor plan or route, use [Survey](/features/surveys/).

## How to watch the phone's own Wi-Fi

**iPhone:**

1. Tap the **Wi-Fi** tab. The screen is titled **iOS Wi-Fi**.
2. Under **Current Connection**, see the network the phone is on.
3. In **Wi-Fi Details**, tap **Install** the first time to add the streaming Shortcut. Then tap **Start**.
4. When iOS asks to share Wi-Fi and cellular details, choose **Always Allow**. **Allow Once** asks again on every reading.
5. While it streams, you see live RSSI, channel, SNR, noise, TX/RX rate and Wi-Fi standard. Connection changes appear in the **Event Timeline**. Tap **Stop** to end the stream.

**Android:** open **More** › **Phone WiFi**. **Connection Details** shows SSID, BSSID, signal, channel, band, link speeds, Wi-Fi generation and IP address. **Signal History** and **Recent Events** update as you move.

## How to range with Wi-Fi RTT (Android)

1. Open **WiFi RTT** from the expanded bottom bar, or **More** › **WiFi RTT**.
2. Grant location permission. Ranging starts by itself and stops when you leave the screen.
3. Each responding AP shows its distance, **RSSI**, spread (**Avg σ**), **Success** count and channel. Where an AP publishes it, you also see location data such as altitude and floor.
4. If the screen reports **WiFi scan throttling is enabled**, tap the notice and turn throttling off in Developer Options.

With an ESP32-C5 running FTM firmware, open **802.11mc · ESP32-C5** › **Set up**. Enter the **Responder BSSID** and **Primary channel**, then tap **Measure**.

## How to test path changes with Path & Multipath (iPhone)

1. Open **More** › **Path & Multipath**.
2. Tap **Start stream** to add live phone RSSI, channel and SNR. This uses the same Shortcut as the Wi-Fi tab.
3. **Live path** shows the current network path as iOS reports it.
4. Under **Connectivity Assist stress**, pick a **Stress target** and tap **Start stress**. This generates HTTPS traffic while the app records path changes. Turn Connectivity Assist on in iOS **Settings › Wi-Fi**, then weaken the Wi-Fi.
5. Under **Multipath TCP lab**, pick a **Target** and **MPTCP mode** (**None (TCP control)**, **Handover**, **Interactive** or **Aggregate**), then tap **Run multipath probe**.
6. Optionally, with a capture sensor connected, tap **Start pcapng**. Use **Export JSON** to keep results.

Connectivity Assist is inferred from path changes. Apple does not expose an Assist API.

## How to test from the sensor's website

| Tool | What it measures | Where to start |
| --- | --- | --- |
| Browser LAN speed | Browser-to-sensor transfers | Network tests → Browser speed |
| iPerf3 | Throughput between chosen endpoints | Start a managed listener, then connect an iPerf3 client |
| xfr | Transfers using the included xfr tool | Start a managed listener, then use an xfr client |
| Ping, Traceroute, DNS | Reachability, route and name resolution from the sensor | Network tests → Diagnostics |
| Orb | Ongoing connection quality | Network tests → Orb |

Manual iPerf3 and xfr listeners bind one IPv4 interface and stop after fifteen minutes. Autostart is opt-in. Managed speed tests pause Orb monitoring, then restore it. Unified 2.1.36 includes Orb, which is off on a fresh install. See the [device website](/features/device-website/).

## Tips

- The browser LAN test is not an Internet speed test. With every result, record the client connection, server interface, endpoint, duration and load. USB, Ethernet and Wi-Fi can each be the bottleneck.

## If it doesn't work

| What you see | What to do |
|---|---|
| **Not Available on This Device** in Join Network | The sensor or radio cannot run client mode. Pick another interface or sensor. |
| **Could Not Join** | Check the passphrase, security type and signal. Pin a **BSSID** to rule out a weak AP. |
| **IP Address** shows **None** | DHCP did not complete, or you turned **Request a DHCP address** off. |
| Shortcuts opens but no data arrives (iPhone) | The Shortcut is probably not installed. Tap **Install**, then **Start**. |
| **Hardware Not Supported** in WiFi RTT | The phone has no RTT hardware. Use another phone. |

## Related

[Surveys](/features/surveys/) · [Device website](/features/device-website/) · [Connect a sensor](/guides/connecting-sensors/) · [Unified image](/guides/unified-sensor-image/)
