mirror of
https://github.com/kernelkit/infix.git
synced 2026-08-05 07:03:02 +02:00
The Ethernet packet/RMON counters at the bottom of 'show interface <name>' were appended with a wider label column than the operational data above them, breaking visual alignment. Group them under an "Ethernet Statistics" section heading (Decore.title), same convention as 'Available Networks' in the wifi scan view. Narrow the operational-data label column from 20 to 19 chars so the title bar exactly matches the heading text — a tighter and more deliberately aligned look. All labels in pr_iface fit within 19 chars except 'lacp system priority' (20); rename it to 'lacp sys priority' for consistency with the other 'lacp ...' labels (lacp aggregate id, lacp partner mac, ...) so the new field width works universally. Refresh CLI snapshots and doc samples to match. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
523 lines
21 KiB
Markdown
523 lines
21 KiB
Markdown
# Wi-Fi (Wireless LAN)
|
|
|
|
Infix includes comprehensive Wi-Fi support for both client (Station) and
|
|
Access Point modes. When a compatible Wi-Fi adapter is detected, the system
|
|
automatically creates a WiFi radio (PHY) in factory-config, that can
|
|
host virtual interfaces.
|
|
|
|
## Architecture Overview
|
|
|
|
Infix uses a two-layer WiFi architecture:
|
|
|
|
1. **WiFi Radio (PHY layer)**: Represents the physical wireless hardware
|
|
- Configured via `ietf-hardware` module
|
|
- Controls channel, transmit power, regulatory domain
|
|
- One radio can host multiple virtual interfaces
|
|
|
|
2. **WiFi Interface (Network layer)**: Virtual interface on a radio
|
|
- Configured via `infix-interfaces` module
|
|
- Can operate in Station (client) or Access Point mode
|
|
- Each interface references a parent radio
|
|
|
|
## Naming Conventions
|
|
|
|
Like other interface types in Infix, WiFi components follow naming conventions
|
|
that allow the CLI to automatically infer types:
|
|
|
|
| **Name Pattern** | **Type** | **Description** |
|
|
|------------------|-----------------|------------------------------------------|
|
|
| `radioN` | WiFi Radio | Hardware component for WiFi PHY |
|
|
| `wifiN` | WiFi Interface | Virtual WiFi interface on a radio |
|
|
|
|
Where `N` is a number (0, 1, 2, ...).
|
|
|
|
> [!TIP]
|
|
> Using these naming conventions simplifies configuration since type/class
|
|
> settings are automatically inferred. For example, creating a hardware
|
|
> component named `radio0` automatically sets its class to `wifi`, enabling
|
|
> the `wifi-radio` configuration container.
|
|
>
|
|
> **Note:** This inference only works with the CLI. Configuring WiFi over
|
|
> NETCONF or RESTCONF requires setting the class/type explicitly.
|
|
|
|
## Current Limitations
|
|
|
|
- USB hotplug is not supported - adapters must be present at boot
|
|
- Interface naming may be inconsistent with multiple USB Wi-Fi adapters
|
|
- AP and Station modes cannot be mixed on the same radio
|
|
|
|
## Supported Wi-Fi Adapters
|
|
|
|
Wi-Fi support is primarily tested with Realtek chipset-based adapters.
|
|
|
|
### Known Working Chipsets
|
|
|
|
- Built-in Wi-Fi on Banana Pi BPi-R3
|
|
- Built-in Wi-Fi on Raspberry Pi 4/CM4
|
|
- Realtek:
|
|
- RTL8188CU
|
|
- RTL8188FU
|
|
- RTL8821CU
|
|
|
|
Other Realtek chipsets may work but are not tested.
|
|
|
|
> [!NOTE]
|
|
> Some Realtek chipsets require proprietary drivers not included in the
|
|
> standard kernel.
|
|
>
|
|
> - Firmware requirements vary by chipset
|
|
> - Check kernel logs if your adapter is not detected
|
|
|
|
### USB WiFi Dongles
|
|
|
|
USB WiFi dongles may be slow to initialize at boot due to firmware
|
|
loading. If your USB dongle is not detected reliably, configure a
|
|
`probe-timeout` on the radio to wait for the PHY:
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
|
admin@example:/config/> <b>edit hardware component radio0 wifi-radio</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set probe-timeout 30</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>leave</b>
|
|
</code></pre>
|
|
|
|
This waits up to 30 seconds for the radio PHY to appear before creating
|
|
WiFi interfaces. If the PHY is not detected within the timeout, a dummy
|
|
interface is created as a placeholder, allowing IP configuration to proceed.
|
|
Reboot when the radio becomes available.
|
|
|
|
## Radio Configuration
|
|
|
|
Before configuring WiFi interfaces, you must first configure the WiFi radio.
|
|
Radios are automatically discovered and named `radio0`, `radio1`, etc.
|
|
|
|
### Country Code ⚠
|
|
|
|
The radio defaults to "00" for World domain, but some systems may ship with a
|
|
factory default country code (typically "DE" for the BPi-R3).
|
|
|
|
> [!IMPORTANT] Legal notice!
|
|
> The `country-code` setting is **legally required** and determines
|
|
> which WiFi channels and power levels are permitted in your
|
|
> location. Using an incorrect country code may violate local wireless
|
|
> regulations.
|
|
|
|
**Common country codes, see [ISO 3166-1 alpha-2][1] for the complete list**:
|
|
|
|
- Europe:
|
|
- DE: Germany
|
|
- SE: Sweden
|
|
- GB: UK
|
|
- FR: France
|
|
- ES: Spain
|
|
- Americas:
|
|
- US: United States
|
|
- CA: Canada
|
|
- BR: Brazil
|
|
- Asia-Pacific:
|
|
- JP: Japan
|
|
- AU: Australia
|
|
- CN: China
|
|
|
|
### Basic Radio Setup
|
|
|
|
Configure the radio with channel, power, and regulatory domain.
|
|
|
|
**For Station (client) mode:**
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
|
admin@example:/config/> <b>edit hardware component radio0 wifi-radio</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set country-code DE</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>leave</b>
|
|
</code></pre>
|
|
|
|
**For Access Point mode:**
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
|
admin@example:/config/> <b>edit hardware component radio0 wifi-radio</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set country-code DE</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set band 5GHz</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set channel 36</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set channel-width 80MHz</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>leave</b>
|
|
</code></pre>
|
|
|
|
**Key radio parameters:**
|
|
|
|
- `country-code`: Two-letter [ISO 3166-1 alpha-2][1] code, determines allowed
|
|
channels and maximum power. Examples: US, DE, GB, SE, FR, JP.
|
|
**⚠ Must match your physical location for legal compliance! ⚠**
|
|
- `band`: 2.4GHz, 5GHz, or 6GHz (required for AP mode). Automatically enables
|
|
appropriate WiFi standards:
|
|
- 2.4GHz: 802.11n/ax
|
|
- 5GHz: 802.11n/ac/ax
|
|
- 6GHz: 802.11ax
|
|
- `channel`: Channel number (1-233) or "auto". When set to "auto", defaults to
|
|
channel 6 for 2.4GHz, channel 36 for 5GHz, or channel 37 for 6GHz
|
|
- `channel-width`: AP channel bandwidth. Supported values are `auto`, `20MHz`,
|
|
`40MHz`, `80MHz`, and `160MHz`. Wider channels require matching hardware,
|
|
regulatory approval, and are only available on 5GHz/6GHz where supported.
|
|
- `probe-timeout`: Seconds to wait for PHY detection at boot (default: 0). Set
|
|
to a non-zero value (e.g., 30) for USB WiFi dongles that are slow to
|
|
initialize due to firmware loading
|
|
|
|
> [!NOTE]
|
|
> TX power is still determined by the driver based on regulatory
|
|
> constraints and hardware capabilities. Channel width can now be set
|
|
> explicitly for AP mode, or left at `auto` to let the driver choose.
|
|
|
|
### WiFi 6 Support
|
|
|
|
WiFi 6 (802.11ax) is always enabled in AP mode on all bands, providing improved
|
|
performance through features like OFDMA, BSS Coloring, and beamforming.
|
|
|
|
**WiFi 6 Features (always enabled in AP mode on supported radios):**
|
|
|
|
- **OFDMA**: Better multi-user efficiency in dense environments
|
|
- **BSS Coloring**: Reduced interference from neighboring networks
|
|
- **Beamforming**: Improved signal quality and range
|
|
|
|
**Requirements:**
|
|
|
|
- Hardware must support 802.11ax
|
|
- Client devices must support WiFi 6 for full benefits
|
|
- Older WiFi 5/4 clients can still connect but won't use WiFi 6 features
|
|
|
|
> [!IMPORTANT]
|
|
> 6 GHz AP operation requires WPA3-Personal (SAE) with mandatory
|
|
> management frame protection. Open networks and WPA2-only AP
|
|
> configurations are not valid on 6 GHz.
|
|
|
|
## Discovering Available Networks
|
|
|
|
Before connecting to a WiFi network, you need to discover which networks
|
|
are available. Infix automatically scans for networks when a WiFi interface
|
|
is created with a radio reference.
|
|
|
|
### Enable Background Scanning
|
|
|
|
To enable scanning without connecting, configure the radio and create a WiFi
|
|
interface referencing it:
|
|
|
|
**Step 1: Configure the radio**
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
|
admin@example:/config/> <b>edit hardware component radio0 wifi-radio</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set country-code DE</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>leave</b>
|
|
</code></pre>
|
|
|
|
**Step 2: Create WiFi interface with radio reference only**
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
|
admin@example:/config/> <b>edit interface wifi0</b>
|
|
admin@example:/config/interface/wifi0/> <b>set wifi radio radio0</b>
|
|
admin@example:/config/interface/wifi0/> <b>leave</b>
|
|
</code></pre>
|
|
|
|
The system will now start scanning in the background. The interface will
|
|
operate in scan-only mode until you configure a specific mode (station or
|
|
access-point).
|
|
|
|
### View Available Networks
|
|
|
|
Use `show interface` to see discovered networks and their signal strength:
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>show interface wifi0</b>
|
|
name : wifi0
|
|
type : wifi
|
|
index : 3
|
|
mtu : 1500
|
|
operational status : up
|
|
ip forwarding : enabled
|
|
physical address : f0:09:0d:36:5f:86
|
|
ipv4 addresses : 192.168.1.100/24 (dhcp)
|
|
ipv6 addresses :
|
|
in-octets : 148388
|
|
out-octets : 24555
|
|
mode : station
|
|
ssid : MyNetwork
|
|
signal : -45 dBm (good)
|
|
rx bitrate : 72.2 Mbps
|
|
tx bitrate : 86.6 Mbps
|
|
──────────────────────────────────────────────────────────────────────
|
|
<span class="title">Available Networks</span>
|
|
<span class="header">SSID BSSID SECURITY SIGNAL CHANNEL</span>
|
|
MyNetwork b4:fb:e4:17:b6:a7 WPA2-Personal good 6
|
|
GuestWiFi c8:3a:35:12:34:56 WPA2-Personal fair 11
|
|
CoffeeShop 00:1a:2b:3c:4d:5e Open bad 1
|
|
</code></pre>
|
|
|
|
In the CLI, signal strength is reported as: excellent, good, fair or bad.
|
|
For precise signal strength values in dBm, use NETCONF or RESTCONF to access
|
|
the `signal-strength` leaf in the operational datastore.
|
|
|
|
## Passphrase Requirements
|
|
|
|
To ensure your connection is secure and compatible with all network
|
|
hardware, your passphrase must meet the following criteria:
|
|
|
|
- Length: Between 8 and 63 characters
|
|
- Characters: Use only standard English keyboard characters
|
|
- Allowed: Letters (A-Z, a-z), numbers (0-9), and common symbols (e.g., ! @ # $ % ^ & * ( ) _ + - = [ ] { } | ; : ' " , . < > / ? ~)
|
|
- Spaces: Spaces are allowed, but not at the very beginning or very end of the passphrase
|
|
- Prohibited: Emojis, accented characters (like á or ñ), and special "control" characters
|
|
|
|
> [!TIP] Why the limit?
|
|
> Standard WiFi security (WPA2/WPA3) requires a minimum of 8 characters to
|
|
> prevent "brute-force" hacking. The character limit ensures your password
|
|
> works on older routers and various operating systems.
|
|
> Tips for password strength, see [XKCD #936](https://xkcd.com/936/).
|
|
|
|
## Station Mode (Client)
|
|
|
|
Station mode connects to an existing Wi-Fi network. Before configuring station
|
|
mode, follow the "Discovering Available Networks (Scanning)" section above to
|
|
scan for available networks and identify the SSID you want to connect to.
|
|
|
|
### Step 1: Configure Password
|
|
|
|
Create a keystore entry for your WiFi password (8-63 characters):
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
|
admin@example:/config/> <b>edit keystore symmetric-key my-wifi-key</b>
|
|
admin@example:/config/keystore/…/my-wifi-key/> <b>set key-format passphrase-key-format</b>
|
|
admin@example:/config/keystore/…/my-wifi-key/> <b>change cleartext-symmetric-key</b>
|
|
Passphrase: ************
|
|
Retype passphrase: ************
|
|
admin@example:/config/keystore/…/my-wifi-key/> <b>leave</b>
|
|
</code></pre>
|
|
|
|
The `change` command prompts for the passphrase interactively and
|
|
handles the base64 encoding required by the keystore automatically.
|
|
|
|
### Step 2: Connect to Network
|
|
|
|
Configure station mode with the SSID and password to connect:
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
|
admin@example:/config/> <b>edit interface wifi0</b>
|
|
admin@example:/config/interface/wifi0/> <b>set wifi station ssid MyHomeNetwork</b>
|
|
admin@example:/config/interface/wifi0/> <b>set wifi station security secret my-wifi-key</b>
|
|
admin@example:/config/interface/wifi0/> <b>leave</b>
|
|
</code></pre>
|
|
|
|
The connection attempt will start immediately. You can verify the connection status:
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>show interface wifi0</b>
|
|
name : wifi0
|
|
type : wifi
|
|
operational status : up
|
|
physical address : f0:09:0d:36:5f:86
|
|
mode : station
|
|
ssid : MyHomeNetwork
|
|
signal : -52 dBm (good)
|
|
</code></pre>
|
|
|
|
**Station configuration parameters:**
|
|
|
|
- `radio`: Reference to the WiFi radio (mandatory) - already set during scanning
|
|
- `station ssid`: Network name to connect to (mandatory)
|
|
- `station security mode`:
|
|
- `auto`: default, WPA2/WPA3 auto-negotiation
|
|
- `disabled`: open network
|
|
- `station security secret`: Reference to keystore entry, required unless mode
|
|
is `disabled`
|
|
|
|
> [!NOTE]
|
|
> The `auto` security mode automatically selects WPA3-SAE or WPA2-PSK based on
|
|
> what the access point supports, prioritizing WPA3 for better security.
|
|
> Certificate-based authentication (802.1X/EAP) is not yet supported.
|
|
|
|
## Access Point Mode
|
|
|
|
Access Point (AP) mode allows your device to create a WiFi network that
|
|
other devices can connect to. APs are configured as virtual interfaces on
|
|
a WiFi radio.
|
|
|
|
### Basic AP Configuration
|
|
|
|
First, ensure the radio is configured (see Radio Configuration above). Then
|
|
create a keystore entry for your WiFi password and configure the AP interface:
|
|
|
|
**Step 1: Create keystore entry for the WiFi password**
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
|
admin@example:/config/> <b>edit keystore symmetric-key my-wifi-secret</b>
|
|
admin@example:/config/keystore/…/my-wifi-secret/> <b>set key-format passphrase-key-format</b>
|
|
admin@example:/config/keystore/…/my-wifi-secret/> <b>change cleartext-symmetric-key</b>
|
|
Passphrase: ************
|
|
Retype passphrase: ************
|
|
admin@example:/config/keystore/…/my-wifi-secret/> <b>end</b>
|
|
</code></pre>
|
|
|
|
**Step 2: Create the AP interface**
|
|
|
|
<pre class="cli"><code>admin@example:/config/> <b>edit interface wifi0</b>
|
|
admin@example:/config/interface/wifi0/> <b>set wifi radio radio0</b>
|
|
admin@example:/config/interface/wifi0/> <b>set wifi access-point ssid MyNetwork</b>
|
|
admin@example:/config/interface/wifi0/> <b>set wifi access-point security secret my-wifi-secret</b>
|
|
admin@example:/config/interface/wifi0/> <b>leave</b>
|
|
</code></pre>
|
|
|
|
> [!NOTE]
|
|
> Using `wifiN` as the interface name automatically sets the type to WiFi.
|
|
> Alternatively, you can use any name and explicitly set `type wifi`.
|
|
|
|
**Access Point configuration parameters:**
|
|
|
|
- `radio`: Reference to the WiFi radio (mandatory)
|
|
- `access-point ssid`: Network name (SSID) to broadcast
|
|
- `access-point hidden`: Set to `true` to hide SSID (optional, default: false)
|
|
- `access-point security mode`: Security mode (see below)
|
|
- `access-point security secret`: Reference to keystore entry (for secured networks)
|
|
|
|
**Security modes:**
|
|
|
|
- `open`: No encryption (not recommended)
|
|
- `auto`: WPA2/WPA3 transitional mode on 2.4/5 GHz, WPA3-only on 6 GHz
|
|
- `wpa2-personal`: WPA2-PSK (most compatible)
|
|
- `wpa3-personal`: WPA3-SAE (more secure, requires WPA3-capable clients)
|
|
- `wpa2-wpa3-personal`: Mixed mode (maximum compatibility)
|
|
|
|
### SSID Hiding
|
|
|
|
To create a hidden network that doesn't broadcast its SSID:
|
|
|
|
<pre class="cli"><code>admin@example:/config/interface/wifi0/> <b>set wifi access-point hidden true</b>
|
|
</code></pre>
|
|
|
|
### Multi-SSID Configuration
|
|
|
|
Multiple AP interfaces on the same radio allow broadcasting multiple SSIDs,
|
|
each with independent security settings. This is useful for guest networks,
|
|
IoT devices, or segregating traffic into different VLANs.
|
|
|
|
**Step 1: Configure the radio** (shared by all APs)
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
|
admin@example:/config/> <b>edit hardware component radio0 wifi-radio</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set country-code DE</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set band 5GHz</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>set channel 36</b>
|
|
admin@example:/config/hardware/component/radio0/wifi-radio/> <b>leave</b>
|
|
</code></pre>
|
|
|
|
**Step 2: Configure keystore secrets**
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
|
admin@example:/config/> <b>edit keystore symmetric-key main-secret</b>
|
|
admin@example:/config/keystore/…/main-secret/> <b>set key-format passphrase-key-format</b>
|
|
admin@example:/config/keystore/…/main-secret/> <b>change cleartext-symmetric-key</b>
|
|
Passphrase: ************
|
|
Retype passphrase: ************
|
|
admin@example:/config/> <b>edit keystore symmetric-key guest-secret</b>
|
|
admin@example:/config/keystore/…/guest-secret/> <b>set key-format passphrase-key-format</b>
|
|
admin@example:/config/keystore/…/guest-secret/> <b>change cleartext-symmetric-key</b>
|
|
Passphrase: ************
|
|
Retype passphrase: ************
|
|
admin@example:/config/> <b>edit keystore symmetric-key iot-secret</b>
|
|
admin@example:/config/keystore/…/iot-secret/> <b>set key-format passphrase-key-format</b>
|
|
admin@example:/config/keystore/…/iot-secret/> <b>change cleartext-symmetric-key</b>
|
|
Passphrase: ************
|
|
Retype passphrase: ************
|
|
admin@example:/config/keystore/…/iot-secret/> <b>leave</b>
|
|
</code></pre>
|
|
|
|
**Step 3: Create multiple AP interfaces** (all on radio0)
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
|
# Primary AP - Main network (WPA3 for maximum security)
|
|
admin@example:/config/> <b>edit interface wifi0</b>
|
|
admin@example:/config/interface/wifi0/> <b>set wifi radio radio0</b>
|
|
admin@example:/config/interface/wifi0/> <b>set wifi access-point ssid MainNetwork</b>
|
|
admin@example:/config/interface/wifi0/> <b>set wifi access-point security mode wpa3-personal</b>
|
|
admin@example:/config/interface/wifi0/> <b>set wifi access-point security secret main-secret</b>
|
|
|
|
# Guest AP - Guest network (WPA2/WPA3 mixed for compatibility)
|
|
admin@example:/config/> <b>edit interface wifi1</b>
|
|
admin@example:/config/interface/wifi1/> <b>set wifi radio radio0</b>
|
|
admin@example:/config/interface/wifi1/> <b>set wifi access-point ssid GuestNetwork</b>
|
|
admin@example:/config/interface/wifi1/> <b>set wifi access-point security mode wpa2-wpa3-personal</b>
|
|
admin@example:/config/interface/wifi1/> <b>set wifi access-point security secret guest-secret</b>
|
|
admin@example:/config/interface/wifi1/> <b>set custom-phys-address static 00:0c:43:26:60:01</b>
|
|
|
|
# IoT AP - IoT devices (WPA2 for older device compatibility)
|
|
admin@example:/config/> <b>edit interface wifi2</b>
|
|
admin@example:/config/interface/wifi2/> <b>set wifi radio radio0</b>
|
|
admin@example:/config/interface/wifi2/> <b>set wifi access-point ssid IoT-Devices</b>
|
|
admin@example:/config/interface/wifi2/> <b>set wifi access-point security mode wpa2-personal</b>
|
|
admin@example:/config/interface/wifi2/> <b>set wifi access-point security secret iot-secret</b>
|
|
admin@example:/config/interface/wifi2/> <b>set custom-phys-address static 00:0c:43:26:60:02</b>
|
|
admin@example:/config/interface/wifi2/> <b>leave</b>
|
|
</code></pre>
|
|
|
|
> [!IMPORTANT]
|
|
> **MAC Address Requirement for Multi-SSID:**
|
|
> When creating multiple AP interfaces on the same radio, you **must** configure
|
|
> a unique MAC address for each secondary interface (wifi1, wifi2, etc.) using
|
|
> `set custom-phys-address static <MAC>`. All interfaces on the same radio inherit
|
|
> the radio's hardware MAC address by default, which causes network conflicts. Only
|
|
> the primary interface (alphabetically first, e.g., wifi0) should use the default
|
|
> hardware MAC address.
|
|
>
|
|
> Choose MAC addresses from the same locally-administered range:
|
|
> - Primary (wifi0): Uses hardware MAC (e.g., `00:0c:43:26:60:00`)
|
|
> - Secondary (wifi1): `00:0c:43:26:60:01` (increment last octet)
|
|
> - Tertiary (wifi2): `00:0c:43:26:60:02` (increment last octet)
|
|
|
|
**Result:** Three SSIDs broadcasting simultaneously on radio0:
|
|
|
|
- `MainNetwork` (WPA3, most secure)
|
|
- `GuestNetwork` (WPA2/WPA3 mixed mode)
|
|
- `IoT-Devices` (WPA2 for compatibility)
|
|
|
|
All APs on the same radio share the same channel and physical layer settings
|
|
(configured at the radio level). Each AP can have its own:
|
|
|
|
- SSID (network name)
|
|
- Security mode and passphrase
|
|
- Hidden/visible SSID setting
|
|
- Bridge membership
|
|
|
|
You can verify the configuration with `show hardware component radio0` to see
|
|
radio settings, and `show interface` to see all active AP interfaces.
|
|
|
|
> [!IMPORTANT]
|
|
> AP and Station modes cannot be mixed on the same radio. All virtual interfaces
|
|
> on a radio must be the same mode (all APs or all Stations).
|
|
|
|
### AP as Bridge Port
|
|
|
|
WiFi AP interfaces can be added to bridges to integrate wireless devices
|
|
into your LAN:
|
|
|
|
<pre class="cli"><code>admin@example:/> <b>configure</b>
|
|
admin@example:/config/> <b>edit interface br0</b>
|
|
admin@example:/config/interface/br0/> <b>set type bridge</b>
|
|
|
|
admin@example:/config/> <b>edit interface wifi0</b>
|
|
admin@example:/config/interface/wifi0/> <b>set bridge-port bridge br0</b>
|
|
admin@example:/config/interface/wifi0/> <b>leave</b>
|
|
</code></pre>
|
|
|
|
## Troubleshooting
|
|
|
|
Use `show interface wifi0` to verify signal strength and connection status.
|
|
If issues arise, try the following troubleshooting steps:
|
|
|
|
1. **Verify signal strength**: Check that the target network shows
|
|
"good" or "excellent" signal in scan results
|
|
2. **Check credentials**: Use `show keystore symmetric <name>` to verify
|
|
the passphrase matches the network password
|
|
3. **Review logs**: Check system logs with `show log` for Wi-Fi related
|
|
errors
|
|
4. **Regulatory compliance**: Ensure the country-code on the radio
|
|
matches your location
|
|
5. **Hardware detection**: Confirm the WiFi radio appears in `show
|
|
hardware`
|
|
|
|
If issues persist, check the system log for specific error messages that
|
|
can help identify the root cause.
|
|
|
|
[1]: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
|