Orb LAN Tester

Danger

This guide is intended to setup a dedicated LAN measurement devices. We do not recommend following this guide on a multi-use machine, as it will make impactful changes to the networking setup specifically tailored to LAN measurement. These changes may be detrimental to the general usability of your device. For SD-card based devices like Raspberry Pi, we recommend using a dedicated SD card.

This guide also uses features from Endpoints & Engines that are experimental, and not yet intended for production environments.

We appreciate your testing and feedback. Please use our Help & Support page or Discord to report issues and ask questions.

This guide walks you through setting up an Orb LAN Tester: a dual-interface device that measures the real-world performance of your Wi-Fi network by routing Orb measurement traffic from a Wi-Fi interface, through your router, and back to an Ethernet-connected Orb measurement server β€” all from a single device.

This setup gives you a clean way to isolate and analyze Wi-Fi network performance. You'll receive realistic and full-fidelity Orb measurements of the network path from a Wi-Fi client to your router, and back to an Ethernet client.

We'll be setting up 2 Orbs on your device:

  1. An Orb Docker container, with self-contained DHCP client, bound to the Ethernet interface (using macvlan driver as detailed in the multi-interface setup guide).
  2. An Orb bound to the Wi-Fi interface, testing to the resolved private IP of the Ethernet Orb container on the network (technically it's bound to the default interface, but we'll make sure Wi-Fi interface is the default).

Even though both Orbs run on the same device, traffic actually traverses your network while measuring from the Wi-Fi Orb to the Ethernet Orb (container), giving you a measurement of the LAN loop.

App device settings

🧰 Requirements

  • A Debian-based system (e.g. Raspberry Pi OS, Ubuntu)
  • Both Wi-Fi (wlan0) and Ethernet (eth0) connected
  • An Orb Cloud account

In this guide we use a Raspberry Pi 4 Model B, but any Debian host with both interfaces works.

See setup notes for specific devices that may require additional considerations or steps:


☁️ Step 1: Create Two Orb Configurations

In Orb Cloud Orchestration tab, create two sensor configurations, and copy the Deployment Token for each.

1. Config for the Wi-Fi Orb

Give this configuration a reconizable name like Orb Lan Tester (Wi-Fi) (recommended, name whatever you like).

This configuration will be used by the Wi-Fi interface Orb running on the host. This will be the Orb measuring the "LAN Loop".

  • Uses orb-lan-tester-ethernet.local as the measurement endpoint for both Speed and Responsiveness testing. This will be mapped to the resolved IP of the Orb Ethernet container at run time.
  • Collects Wi-Fi metrics (RSSI, link quality, etc.)
  • Sends analytics data to Orb Cloud Analytics (alternatively, you can configure Orb Local Analytics)
App device settings

Advanced Config

{
  "datasets.cloud_push": [
    "scores_1m",
    "speed_results",
    "responsiveness_1s",
    "web_responsiveness_results",
    "wifi_link_1s"
  ],
  "datasets.identifiable": [
    "true"
  ],
  "orb.identifiable_level": [
    "full"
  ],
  "collectors.response.lag_endpoints": [
    "h3://orb-lan-tester-ethernet.local:7443"
  ],
  "collectors.bandwidth.speed_servers": [
    "orb://orb-lan-tester-ethernet.local:7443"
  ],
  "collectors.bandwidth.content_interval": [
    "1h"
  ]
}

[!NOTE] This configuration sends full identifiable information to Orb Cloud. This means Private IP and MAC Address will be reported to Orb Cloud for your device, which can help diagnose setup issues. This is not required, you can remove the identification_level block if you do not want that behavior.

2. Config for the Ethernet Orb (Container)

Give this configuration a reconizable name like Orb Lan Tester (Ethernet) (recommended, name whatever you like).

This configuration will be used by the Wi-Fi interface Orb running on the host. This will be the Orb acting as a measurement server for the LAN Loop. In addition to acting as a server, this Orb will also measure the WAN connectivity (default behavior). Since we are focusing on the LAN performance measurement in this guide, we will disable Speed test measurement for this Orb to keep it's WAN measurements very lightweight.

  • Disables Speed measurement
  • Sends analytics data to Orb Cloud Analytics (alternatively, you can configure Orb Local Analytics)
App device settings

[!NOTE] This configuration sends full identifiable information to Orb Cloud. This means Private IP and MAC Address will be reported to Orb Cloud for your device, which can help diagnose setup issues. This is not required, you can uncheck "Include Identifiable Information" if you do not want that behavior.


βš™οΈ Step 2: Run the Setup Script

Export your tokens:

export ORB_DEPLOYMENT_TOKEN_WIFI="your-wifi-deployment-token"
export ORB_DEPLOYMENT_TOKEN_ETHERNET="your-ethernet-deployment-token"

Optionally, override the Orb names:

export HOST_ORB_NAME="custom-name-for-wifi-orb"
export ETH_ORB_NAME="custom-name-for-ethernet-orb"

Then run the setup:

curl -fsSL https://orb.net/docs/scripts/orb-lan-tester/setup.sh | sudo -E bash

This script will:

  • Install Docker
  • Configure Wi-Fi as the preferred interface
  • Enable ARP filtering to avoid multi-interface routing issues
  • Install Orb directly on the host (Wi-Fi)
  • Start a Docker Orb bound to Ethernet using macvlan
  • Install a scheduled helper to resolve the Orb Ethernet container’s real DHCP IP and update /etc/hosts to ensure orb-lan-tester-ethernet.local resolves to it
  • Ensure everything self-heals across reboots and interface changes

After completion, the device will reboot.


πŸ” Step 3: Verify the Setup

Once the device comes back online:

getent hosts orb-lan-tester-ethernet.local

You should see something like:

192.168.1.42 orb-lan-tester-ethernet.local

This IP is dynamically tracked and updated automatically.

NOTE: it may take up to 30 seconds for the hosts file to be updated on changes. It is expected for Orb measurements to time out briefly on startup while things are being initialized.


πŸ“Š Step 4: View Results in Orb Cloud

In Orb Cloud, use Analytics and/or Live View for the Wi-Fi Orb to visualize the LAN performance of your Wi-Fi network.

βœ… Summary

You now have:

  • A dual-interface Orb setup on a single device
  • Real Wi-Fi β†’ LAN β†’ Ethernet testing
  • Full visibility into Wi-Fi performance from Orb Cloud

This is one of the most effective ways to measure real Wi-Fi experience without needing multiple physical devices and without including WAN connectivity in your measurements.

🧠 Why This Works

Your system is now running:

Component Interface Role
Host Orb Wi-Fi Test source (captures Wi-Fi metrics in addition to Responsiveness, Reliability, and Speed measurements)
Docker Orb Ethernet Test target (also measures WAN connectivity)

When the Wi-Fi Orb runs tests against:

orb-lan-tester-ethernet.local

Traffic flows:

WiFi β†’ Router/AP β†’ Ethernet β†’ Docker Orb

This ensures:

  • No kernel shortcutting
  • Real RF + LAN traversal
  • Accurate Wi-Fi performance measurement

Normally, testing from a device to itself never leaves the kernel.

This setup avoids that by:

  • Using a Docker container with its own MAC/IP (via macvlan)
  • Resolving its real DHCP address dynamically
  • Forcing traffic to traverse your network

The result is a true loop through your LAN, not a local shortcut.

This setup is designed to recover automatically in cases where Wi-Fi or Ethernet disconnects, device reboots, etc... As long as the device is on and both interfaces are connected, the system should always return to a good state. It is expected that Orb measurements may time out or be invalid for up to 30 seconds after both interfaces are up and in a good state, while the host overrides are adjusted.


Device-specific Setup Notes

WLAN Pi R4

A WLAN Pi R4 makes a great LAN testing device if you have one.

This specific LAN testing setup modifies NetworkManager configurations in ways that are not compatible with functionality of WLAN Pi OS. We recommend using a separate SD card in your WLAN Pi, with Raspberry Pi OS, for this guide.

Steps:

  1. Connect an available/empty SD card to flash
  2. Open Raspberry Pi Imager
  3. Select "Raspberry Pi 4" device
  4. Select "Raspberry Pi OS (other)" > "Raspberry Pi OS Lite (64-bit)" OS
  5. Select your connected SD card as the target storage
  6. Configure the hostname, localization, user, and Wi-Fi connection details (SSID / password to auto-connect on boot)
  7. Enable SSH with password authentication (used to connect to the device for this guide)
  8. Write the SD card

Once you install this SD card and boot your WLAN Pi, there's one more step to force Raspberry Pi OS to always use the USB Wi-Fi card and not the Raspberry Pi 4B's built-in Wi-Fi chip.

  1. SSH into your WLAN Pi
ssh <user>@<hostname>
  1. Disable the onboard WiFi, by adding ndtoverlay=disable-wifi to the end of /boot/firmware/config.txt (in [all] section)
echo -e "\ndtoverlay=disable-wifi" | sudo tee -a /boot/firmware/config.txt > /dev/null
  1. Reboot for configuration change to take effect
sudo reboot

After reboot, you can confirm wlan0 is now the only Wi-Fi interface available:

iwconfig

And confirm it's using the USB device (path should contain usb)

udevadm info -q path -p /sys/class/net/wlan0

Once you've confirmed wlan0 and eth0 are both up and connected, you can proceed with the normal LAN tester setup guide above.