430 lines
9.6 KiB
Markdown
430 lines
9.6 KiB
Markdown
# Bandwidth and Band Selection Guide
|
|
|
|
## 🎯 New Features
|
|
|
|
### Monitor Mode: Channel + Bandwidth Selection
|
|
Control both the channel AND bandwidth when monitoring:
|
|
```bash
|
|
mode_monitor 6/20 # 2.4GHz channel 6, 20MHz
|
|
mode_monitor 36/80 # 5GHz channel 36, 80MHz
|
|
```
|
|
|
|
### STA Mode: Band Preference
|
|
Force connection to specific band:
|
|
```bash
|
|
mode_sta 2.4 # Connect on 2.4GHz only
|
|
mode_sta 5 # Connect on 5GHz only
|
|
mode_sta auto # Auto select (default)
|
|
```
|
|
|
|
---
|
|
|
|
## 📡 Monitor Mode Bandwidth Control
|
|
|
|
### Syntax
|
|
```
|
|
mode_monitor <channel>/<bandwidth>
|
|
```
|
|
|
|
### 2.4GHz Band Bandwidth Options
|
|
|
|
**20MHz (HT20)** - Single channel
|
|
```bash
|
|
mode_monitor 1/20
|
|
mode_monitor 6/20
|
|
mode_monitor 11/20
|
|
```
|
|
- ✅ Maximum compatibility
|
|
- ✅ Less interference from adjacent channels
|
|
- ❌ Lower throughput (~72 Mbps max)
|
|
|
|
**40MHz (HT40)** - Channel bonding
|
|
```bash
|
|
mode_monitor 1/40
|
|
mode_monitor 6/40
|
|
mode_monitor 11/40
|
|
```
|
|
- ✅ Higher throughput (~150 Mbps max)
|
|
- ⚠️ Uses 2 adjacent channels (more interference)
|
|
- ⚠️ Not recommended in dense environments
|
|
|
|
**Default:** If bandwidth not specified, defaults to 20MHz
|
|
```bash
|
|
mode_monitor 6 # Same as 6/20
|
|
```
|
|
|
|
### 5GHz Band Bandwidth Options
|
|
|
|
**20MHz (HT20)** - Single channel
|
|
```bash
|
|
mode_monitor 36/20
|
|
mode_monitor 149/20
|
|
```
|
|
- ✅ Maximum compatibility
|
|
- ✅ Best for long range
|
|
- ❌ Lower throughput
|
|
|
|
**40MHz (HT40)** - Channel bonding
|
|
```bash
|
|
mode_monitor 36/40 # Channels 36+40
|
|
mode_monitor 149/40 # Channels 149+153
|
|
```
|
|
- ✅ Good balance of speed and compatibility
|
|
- ✅ WiFi 5 (802.11ac) standard
|
|
- ⚠️ Uses 2 channels
|
|
|
|
**80MHz (HT80)** - Wide channel bonding (WiFi 6)
|
|
```bash
|
|
mode_monitor 36/80 # Channels 36+40+44+48
|
|
mode_monitor 149/80 # Channels 149+153+157+161
|
|
```
|
|
- ✅ Maximum throughput (~866 Mbps+ with WiFi 6)
|
|
- ✅ WiFi 6 (802.11ax) optimized
|
|
- ⚠️ Uses 4 channels
|
|
- ⚠️ Shorter range than 20/40MHz
|
|
|
|
**Default:** If bandwidth not specified, defaults to 40MHz on 5GHz
|
|
```bash
|
|
mode_monitor 149 # Same as 149/40
|
|
```
|
|
|
|
---
|
|
|
|
## 🌐 STA Mode Band Selection
|
|
|
|
### Syntax
|
|
```
|
|
mode_sta [band]
|
|
```
|
|
|
|
### Band Options
|
|
|
|
**Auto (Default)** - Let ESP32 choose best band
|
|
```bash
|
|
mode_sta
|
|
mode_sta auto
|
|
```
|
|
- ✅ Connects to strongest signal
|
|
- ✅ Falls back if preferred band unavailable
|
|
- Use when: AP supports both bands
|
|
|
|
**2.4GHz Only**
|
|
```bash
|
|
mode_sta 2.4
|
|
mode_sta 2
|
|
```
|
|
- ✅ Forces connection on 2.4GHz
|
|
- ✅ Better range, wall penetration
|
|
- ❌ Lower speed, more interference
|
|
- Use when: Need maximum range
|
|
|
|
**5GHz Only**
|
|
```bash
|
|
mode_sta 5
|
|
mode_sta 5.0
|
|
```
|
|
- ✅ Forces connection on 5GHz
|
|
- ✅ Higher speed, less interference
|
|
- ❌ Shorter range
|
|
- Use when: AP is close, need best performance
|
|
|
|
---
|
|
|
|
## 📊 Usage Examples
|
|
|
|
### Example 1: 2.4GHz Narrow Band Monitoring
|
|
For maximum interference rejection in dense environment:
|
|
```bash
|
|
esp32> mode_monitor 6/20
|
|
|
|
I (+1733424645.234) MAIN: Switching to MONITOR MODE
|
|
I (+1733424645.235) MAIN: Channel: 6 (2.4GHz)
|
|
I (+1733424645.236) MAIN: Bandwidth: 20MHz
|
|
I (+1733424647.567) MAIN: ✓ Monitor mode active
|
|
```
|
|
|
|
### Example 2: 2.4GHz Wide Band Monitoring
|
|
For maximum throughput testing:
|
|
```bash
|
|
esp32> mode_monitor 6/40
|
|
|
|
I (+1733424645.234) MAIN: Switching to MONITOR MODE
|
|
I (+1733424645.235) MAIN: Channel: 6 (2.4GHz)
|
|
I (+1733424645.236) MAIN: Bandwidth: 40MHz
|
|
```
|
|
|
|
### Example 3: 5GHz WiFi 6 Monitoring
|
|
For WiFi 6 collapse detection with 80MHz:
|
|
```bash
|
|
esp32> mode_monitor 36/80
|
|
|
|
I (+1733424645.234) MAIN: Switching to MONITOR MODE
|
|
I (+1733424645.235) MAIN: Channel: 36 (5GHz)
|
|
I (+1733424645.236) MAIN: Bandwidth: 80MHz
|
|
I (+1733424647.567) MAIN: ✓ Monitor mode active
|
|
```
|
|
|
|
### Example 4: Force 5GHz Connection
|
|
Connect to AP on 5GHz band only:
|
|
```bash
|
|
esp32> mode_sta 5
|
|
|
|
I (+1733424645.234) MAIN: Switching to STA MODE
|
|
I (+1733424645.235) MAIN: Band preference: 5GHz only
|
|
I (+1733424647.234) MAIN: Got IP: 192.168.1.100
|
|
I (+1733424647.567) MAIN: ✓ STA mode active
|
|
```
|
|
|
|
### Example 5: Check Current Configuration
|
|
```bash
|
|
esp32> mode_status
|
|
|
|
=== WiFi Mode Status ===
|
|
Current mode: MONITOR
|
|
LED state: Blue solid (Monitoring)
|
|
Monitor channel: 36 (5GHz)
|
|
Monitor bandwidth: 80MHz
|
|
Monitor enabled: Yes
|
|
Frames captured: 15234
|
|
GPS synced: Yes (+)
|
|
```
|
|
|
|
### Example 6: Switch Between Bandwidths
|
|
Test different bandwidths on same channel:
|
|
```bash
|
|
# Start with 20MHz
|
|
esp32> mode_monitor 149/20
|
|
[collect data for 5 minutes...]
|
|
|
|
# Switch to 40MHz
|
|
esp32> mode_monitor 149/40
|
|
[collect data for 5 minutes...]
|
|
|
|
# Switch to 80MHz
|
|
esp32> mode_monitor 149/80
|
|
[collect data for 5 minutes...]
|
|
|
|
# Compare collapse rates vs bandwidth
|
|
```
|
|
|
|
---
|
|
|
|
## 🎯 Bandwidth Selection Strategy
|
|
|
|
### When to Use 20MHz
|
|
|
|
**Best for:**
|
|
- Dense environments with many APs
|
|
- Long-range connections
|
|
- Interference-prone areas
|
|
- Maximum compatibility
|
|
|
|
**Monitor mode:**
|
|
```bash
|
|
mode_monitor 6/20 # 2.4GHz
|
|
mode_monitor 149/20 # 5GHz
|
|
```
|
|
|
|
### When to Use 40MHz
|
|
|
|
**Best for:**
|
|
- Medium-density environments
|
|
- Balance of speed and range
|
|
- Most common configuration
|
|
- WiFi 5 (802.11ac)
|
|
|
|
**Monitor mode:**
|
|
```bash
|
|
mode_monitor 6/40 # 2.4GHz (not recommended in dense areas)
|
|
mode_monitor 149/40 # 5GHz (recommended)
|
|
```
|
|
|
|
### When to Use 80MHz
|
|
|
|
**Best for:**
|
|
- Low-density environments
|
|
- Maximum throughput
|
|
- WiFi 6 (802.11ax) testing
|
|
- Short-range, high-speed links
|
|
|
|
**Monitor mode (5GHz only):**
|
|
```bash
|
|
mode_monitor 36/80
|
|
mode_monitor 149/80
|
|
```
|
|
|
|
---
|
|
|
|
## 🔍 Real-World Scenarios
|
|
|
|
### Scenario 1: Office WiFi Collapse Detection
|
|
**Goal:** Monitor office WiFi on 5GHz with WiFi 6
|
|
|
|
```bash
|
|
# 1. Connect to AP and check its configuration
|
|
esp32> mode_sta
|
|
[wait for connection...]
|
|
|
|
esp32> mode_status
|
|
Connected band: 5GHz (channel 36)
|
|
Bandwidth: 80MHz
|
|
|
|
# 2. Switch to monitor mode with same config
|
|
esp32> mode_monitor 36/80
|
|
|
|
# 3. Monitor for collapse events
|
|
[Logs GPS-timestamped collapse events...]
|
|
```
|
|
|
|
### Scenario 2: 2.4GHz Congestion Analysis
|
|
**Goal:** Compare 20MHz vs 40MHz collapse rates
|
|
|
|
```bash
|
|
# Test 20MHz (narrow band)
|
|
esp32> mode_monitor 6/20
|
|
[collect for 30 minutes...]
|
|
# Note collapse count
|
|
|
|
# Test 40MHz (wide band)
|
|
esp32> mode_monitor 6/40
|
|
[collect for 30 minutes...]
|
|
# Compare: 40MHz likely has MORE collapses in dense area
|
|
```
|
|
|
|
### Scenario 3: Force 5GHz for Performance
|
|
**Goal:** Ensure device connects on 5GHz only
|
|
|
|
```bash
|
|
# Force 5GHz connection
|
|
esp32> mode_sta 5
|
|
|
|
# Verify connected on 5GHz
|
|
esp32> mode_status
|
|
Band preference: 5GHz only
|
|
Connected band: 5GHz (channel 149)
|
|
Bandwidth: 80MHz
|
|
|
|
# Now switch to monitor on same channel
|
|
esp32> mode_monitor 149/80
|
|
```
|
|
|
|
### Scenario 4: Multi-Device Deployment
|
|
**Goal:** Monitor different bandwidths across 32 devices
|
|
|
|
```bash
|
|
# Devices 1-8: 2.4GHz 20MHz
|
|
Device 1-8: mode_monitor 6/20
|
|
|
|
# Devices 9-16: 2.4GHz 40MHz
|
|
Device 9-16: mode_monitor 6/40
|
|
|
|
# Devices 17-24: 5GHz 40MHz
|
|
Device 17-24: mode_monitor 149/40
|
|
|
|
# Devices 25-32: 5GHz 80MHz
|
|
Device 25-32: mode_monitor 149/80
|
|
|
|
# Compare collapse rates across all configurations!
|
|
```
|
|
|
|
---
|
|
|
|
## 📈 Performance Expectations
|
|
|
|
### 2.4GHz Performance
|
|
|
|
| Bandwidth | Max PHY Rate | Typical Throughput | Range | Interference |
|
|
|-----------|-------------|-------------------|-------|--------------|
|
|
| 20MHz | ~72 Mbps | 40-50 Mbps | Best | Least |
|
|
| 40MHz | ~150 Mbps | 80-100 Mbps | Good | Most |
|
|
|
|
### 5GHz Performance
|
|
|
|
| Bandwidth | Max PHY Rate | Typical Throughput | Range | Best Use |
|
|
|-----------|-------------|-------------------|-------|----------|
|
|
| 20MHz | ~87 Mbps | 50-60 Mbps | Best | Long range |
|
|
| 40MHz | ~200 Mbps | 120-150 Mbps | Good | Balanced |
|
|
| 80MHz | ~433 Mbps | 300-400 Mbps | Short | Max speed |
|
|
|
|
*Note: WiFi 6 (802.11ax) can achieve higher rates with OFDMA and 1024-QAM*
|
|
|
|
---
|
|
|
|
## ⚙️ Advanced Usage
|
|
|
|
### Match Your AP's Configuration
|
|
Always match bandwidth to your AP for best results:
|
|
|
|
```bash
|
|
# 1. Check AP configuration (via router admin or WiFi analyzer)
|
|
# Example: AP is on channel 36 with 80MHz
|
|
|
|
# 2. Configure STA mode to connect
|
|
esp32> mode_sta 5
|
|
|
|
# 3. Verify connection
|
|
esp32> mode_status
|
|
Connected band: 5GHz (channel 36)
|
|
Bandwidth: 80MHz
|
|
|
|
# 4. Switch to monitor with SAME configuration
|
|
esp32> mode_monitor 36/80
|
|
```
|
|
|
|
### Test Bandwidth Impact on Collapse
|
|
```python
|
|
# After collecting data at different bandwidths:
|
|
import pandas as pd
|
|
|
|
df_20 = pd.read_csv('collapses_ch36_20mhz.csv')
|
|
df_40 = pd.read_csv('collapses_ch36_40mhz.csv')
|
|
df_80 = pd.read_csv('collapses_ch36_80mhz.csv')
|
|
|
|
print("Collapse rate (20MHz):", len(df_20) / 3600, "per hour")
|
|
print("Collapse rate (40MHz):", len(df_40) / 3600, "per hour")
|
|
print("Collapse rate (80MHz):", len(df_80) / 3600, "per hour")
|
|
|
|
# Hypothesis: Wider bandwidth = more collapses in dense environments
|
|
```
|
|
|
|
---
|
|
|
|
## ✅ Quick Reference
|
|
|
|
### Monitor Mode Bandwidths
|
|
|
|
| Band | Command | Bandwidth | Use Case |
|
|
|------|---------|-----------|----------|
|
|
| 2.4GHz | `mode_monitor 6/20` | 20MHz | Dense area, max compatibility |
|
|
| 2.4GHz | `mode_monitor 6/40` | 40MHz | Speed test (avoid in dense area) |
|
|
| 5GHz | `mode_monitor 149/20` | 20MHz | Long range |
|
|
| 5GHz | `mode_monitor 149/40` | 40MHz | Balanced (default) |
|
|
| 5GHz | `mode_monitor 149/80` | 80MHz | WiFi 6 max speed |
|
|
|
|
### STA Mode Bands
|
|
|
|
| Command | Behavior | Use Case |
|
|
|---------|----------|----------|
|
|
| `mode_sta` | Auto select | Default, best signal |
|
|
| `mode_sta 2.4` | Force 2.4GHz | Max range |
|
|
| `mode_sta 5` | Force 5GHz | Max performance |
|
|
|
|
---
|
|
|
|
## 🎉 Summary
|
|
|
|
**New capabilities:**
|
|
- ✅ Monitor mode with bandwidth control (20/40/80MHz)
|
|
- ✅ STA mode with band preference (2.4/5/auto)
|
|
- ✅ Full control over WiFi 6 configurations
|
|
- ✅ Test different bandwidths for collapse analysis
|
|
- ✅ Force band for optimal performance
|
|
|
|
**Syntax:**
|
|
```bash
|
|
mode_monitor <channel>/<bandwidth> # e.g., 36/80
|
|
mode_sta [band] # e.g., mode_sta 5
|
|
```
|
|
|
|
Now you can precisely control and test WiFi configurations across all supported bands and bandwidths!
|