mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-04-10 13:02:59 +00:00
* docs: rename FONT_MANAGER_USAGE.md to FONT_MANAGER.md Renamed for clearer naming convention. Part of documentation consolidation effort. * docs: consolidate Plugin Store guides (2→1) Merged: - PLUGIN_STORE_USER_GUIDE.md - PLUGIN_STORE_QUICK_REFERENCE.md Into: PLUGIN_STORE_GUIDE.md - Unified writing style to professional technical - Added Quick Reference section at top for easy access - Removed duplicate content - Added cross-references to related documentation - Updated formatting to match style guidelines * docs: create user-focused Web Interface Guide Created WEB_INTERFACE_GUIDE.md consolidating: - V3_INTERFACE_README.md (technical details) - User-facing interface documentation - Focused on end-user tasks and navigation - Removed technical implementation details - Added common tasks section - Included troubleshooting - Professional technical writing style * docs: consolidate WiFi setup guides (4→1) Merged: - WIFI_SETUP.md - OPTIMAL_WIFI_AP_FAILOVER_SETUP.md - AP_MODE_MANUAL_ENABLE.md - WIFI_ETHERNET_AP_MODE_FIX.md (behavior documentation) Into: WIFI_NETWORK_SETUP.md - Comprehensive coverage of WiFi setup and configuration - Clear explanation of AP mode failover and grace period - Configuration scenarios and best practices - Troubleshooting section combining all sources - Professional technical writing style - Added quick reference table for behavior * docs: consolidate troubleshooting guides (4→1) Merged: - TROUBLESHOOTING_QUICK_START.md - WEB_INTERFACE_TROUBLESHOOTING.md - CAPTIVE_PORTAL_TROUBLESHOOTING.md - WEATHER_TROUBLESHOOTING.md Into: TROUBLESHOOTING.md - Organized by issue category (web, WiFi, plugins) - Comprehensive diagnostic commands reference - Quick diagnosis steps at the top - Service file template preserved - Complete diagnostic script included - Professional technical writing style * docs: create consolidated Advanced Features guide Merged: - VEGAS_SCROLL_MODE.md - ON_DEMAND_DISPLAY_QUICK_START.md - ON_DEMAND_DISPLAY_API.md - ON_DEMAND_CACHE_MANAGEMENT.md - BACKGROUND_SERVICE_README.md - PERMISSION_MANAGEMENT_GUIDE.md Into: ADVANCED_FEATURES.md - Comprehensive guide covering all advanced features - Vegas scroll mode with integration examples - On-demand display with API reference - Cache management troubleshooting - Background service documentation - Permission management patterns - Professional technical writing style * docs: create Getting Started guide for first-time users Created GETTING_STARTED.md: - Quick start guide (5 minutes) - Initial configuration walkthrough - Common first-time issues and solutions - Next steps and quick reference - User-friendly tone for beginners - Links to detailed documentation * docs: archive consolidated source files and ephemeral docs Archived files that have been consolidated: - Plugin Store guides (2 files → PLUGIN_STORE_GUIDE.md) - Web Interface guide (V3_INTERFACE_README.md → WEB_INTERFACE_GUIDE.md) - WiFi Setup guides (4 files → WIFI_NETWORK_SETUP.md) - Troubleshooting guides (4 files → TROUBLESHOOTING.md) - Advanced Features (6 files → ADVANCED_FEATURES.md) Archived ephemeral/debug documentation: - DEBUG_WEB_ISSUE.md - BROWSER_ERRORS_EXPLANATION.md - FORM_VALIDATION_FIXES.md - WEB_UI_RELIABILITY_IMPROVEMENTS.md - CAPTIVE_PORTAL_TESTING.md - NEXT_STEPS_COMMANDS.md - STATIC_IMAGE_MULTI_UPLOAD_PLAN.md - RECONNECT_AFTER_CAPTIVE_PORTAL_TESTING.md Archived implementation summaries: - PLUGIN_CONFIG_TABS_SUMMARY.md - PLUGIN_CONFIG_SYSTEM_VERIFICATION.md - PLUGIN_SCHEMA_AUDIT_SUMMARY.md - STARTUP_OPTIMIZATION_SUMMARY.md - PLUGIN_DISPATCH_IMPLEMENTATION.md - NESTED_SCHEMA_IMPLEMENTATION.md - AP_MODE_MANUAL_ENABLE_CHANGES.md - PLUGIN_CONFIG_SYSTEM_EXPLANATION.md Total archived: 27 files Preserves git history while cleaning up main docs directory * docs: rename API_REFERENCE.md to REST_API_REFERENCE.md Renamed for clarity - this is specifically the REST API reference for the web interface, not a general API reference. * docs: update README.md to reflect consolidated documentation structure Updated documentation index: - Reflects new consolidated guides (51 → 16-17 files) - Updated Quick Start sections with new file names - Added consolidation history (January 2026) - Updated file references (API_REFERENCE → REST_API_REFERENCE) - Documented archival of 33 files - Added benefits of consolidation - Updated statistics and highlights - Removed outdated references - Professional writing style maintained throughout * docs: add Vegas scroll mode system architecture documentation Added comprehensive internal architecture section for Vegas mode: - Component overview with diagram - VegasModeCoordinator responsibilities and main loop - StreamManager buffering strategy and content flow - PluginAdapter integration and fallback behavior - RenderPipeline 125 FPS rendering process - Component interaction flows - Thread safety patterns - Performance characteristics Covers: - How the four components work together - Initialization and render loop flows - Config update handling - Frame rate management and optimization - Memory usage and CPU characteristics --------- Co-authored-by: Chuck <chuck@example.com>
195 lines
5.4 KiB
Markdown
195 lines
5.4 KiB
Markdown
# WiFi Monitor Ethernet Check Fix
|
|
|
|
## Problem
|
|
|
|
The WiFi monitor service was enabling Access Point (AP) mode whenever WiFi was disconnected, even when the Raspberry Pi was connected via Ethernet. This caused:
|
|
|
|
- AP mode to activate unnecessarily when Ethernet was available
|
|
- Potential network conflicts
|
|
- Confusion for users with hardwired connections
|
|
|
|
## Solution
|
|
|
|
Updated the WiFi manager to check for Ethernet connectivity before enabling AP mode. AP mode will now only be enabled when:
|
|
|
|
- **WiFi is NOT connected** AND
|
|
- **Ethernet is NOT connected**
|
|
|
|
## Changes Made
|
|
|
|
### 1. Added Ethernet Detection Method
|
|
|
|
Added `_is_ethernet_connected()` method to `src/wifi_manager.py` that:
|
|
- Checks for active Ethernet interfaces (eth0, enp*, etc.)
|
|
- Verifies the interface has an IP address
|
|
- Uses `nmcli` if available, falls back to `ip` command
|
|
- Returns `True` if Ethernet is connected and has an IP
|
|
|
|
### 2. Updated AP Mode Enable Logic
|
|
|
|
Modified `enable_ap_mode()` to:
|
|
- Check for Ethernet connection before enabling AP mode
|
|
- Return an error message if Ethernet is connected: "Cannot enable AP mode while Ethernet is connected"
|
|
|
|
### 3. Updated AP Mode Management Logic
|
|
|
|
Modified `check_and_manage_ap_mode()` to:
|
|
- Check both WiFi and Ethernet status
|
|
- Only enable AP mode if both are disconnected
|
|
- Disable AP mode if either WiFi or Ethernet connects
|
|
- Log appropriate messages for each scenario
|
|
|
|
### 4. Enhanced Logging
|
|
|
|
Updated `wifi_monitor_daemon.py` to:
|
|
- Log Ethernet connection status
|
|
- Include Ethernet status in state change detection
|
|
- Log when AP mode is disabled due to Ethernet connection
|
|
|
|
## Testing
|
|
|
|
### Verify Ethernet Detection
|
|
|
|
```bash
|
|
# Check if Ethernet is detected
|
|
python3 -c "
|
|
from src.wifi_manager import WiFiManager
|
|
wm = WiFiManager()
|
|
print('Ethernet connected:', wm._is_ethernet_connected())
|
|
"
|
|
```
|
|
|
|
### Test AP Mode Behavior
|
|
|
|
1. **With Ethernet connected**:
|
|
```bash
|
|
# AP mode should NOT enable
|
|
sudo systemctl restart ledmatrix-wifi-monitor
|
|
sudo journalctl -u ledmatrix-wifi-monitor -f
|
|
# Should see: "Cannot enable AP mode while Ethernet is connected"
|
|
```
|
|
|
|
2. **With Ethernet disconnected and WiFi disconnected**:
|
|
```bash
|
|
# Disconnect Ethernet cable
|
|
# AP mode SHOULD enable
|
|
sudo journalctl -u ledmatrix-wifi-monitor -f
|
|
# Should see: "Auto-enabled AP mode (no WiFi or Ethernet connection)"
|
|
```
|
|
|
|
3. **With Ethernet connected and WiFi connects**:
|
|
```bash
|
|
# Connect WiFi
|
|
# AP mode should disable if it was active
|
|
sudo journalctl -u ledmatrix-wifi-monitor -f
|
|
# Should see: "Auto-disabled AP mode (WiFi connected)"
|
|
```
|
|
|
|
4. **With Ethernet connects while AP is active**:
|
|
```bash
|
|
# Connect Ethernet cable while AP mode is active
|
|
# AP mode should disable
|
|
sudo journalctl -u ledmatrix-wifi-monitor -f
|
|
# Should see: "Auto-disabled AP mode (Ethernet connected)"
|
|
```
|
|
|
|
## Deployment
|
|
|
|
### On Existing Installations
|
|
|
|
1. **Restart the WiFi monitor service**:
|
|
```bash
|
|
sudo systemctl restart ledmatrix-wifi-monitor
|
|
```
|
|
|
|
2. **If AP mode is currently active and Ethernet is connected**, it will automatically disable:
|
|
```bash
|
|
# Check current status
|
|
sudo systemctl status hostapd
|
|
|
|
# The service should automatically disable AP mode within 30 seconds
|
|
# Or manually disable:
|
|
sudo systemctl stop hostapd dnsmasq
|
|
```
|
|
|
|
3. **Verify the fix**:
|
|
```bash
|
|
# Check logs
|
|
sudo journalctl -u ledmatrix-wifi-monitor -n 20
|
|
|
|
# Should see messages about Ethernet connection status
|
|
```
|
|
|
|
### On New Installations
|
|
|
|
The fix is included automatically - no additional steps needed.
|
|
|
|
## Behavior Summary
|
|
|
|
| WiFi Status | Ethernet Status | AP Mode | Reason |
|
|
|------------|----------------|---------|--------|
|
|
| Connected | Connected | ❌ Disabled | Both connections available |
|
|
| Connected | Disconnected | ❌ Disabled | WiFi available |
|
|
| Disconnected | Connected | ❌ Disabled | Ethernet available |
|
|
| Disconnected | Disconnected | ✅ Enabled | No network connection |
|
|
|
|
## Troubleshooting
|
|
|
|
### AP Mode Still Enables with Ethernet Connected
|
|
|
|
1. **Check Ethernet detection**:
|
|
```bash
|
|
python3 -c "
|
|
from src.wifi_manager import WiFiManager
|
|
wm = WiFiManager()
|
|
print('Ethernet connected:', wm._is_ethernet_connected())
|
|
"
|
|
```
|
|
|
|
2. **Check network interface status**:
|
|
```bash
|
|
nmcli device status
|
|
# OR
|
|
ip addr show
|
|
```
|
|
|
|
3. **Verify Ethernet has IP address**:
|
|
```bash
|
|
ip addr show eth0
|
|
# Should show an "inet" address (not just 127.0.0.1)
|
|
```
|
|
|
|
### Ethernet Not Detected
|
|
|
|
If Ethernet is connected but not detected:
|
|
|
|
1. **Check interface name**:
|
|
```bash
|
|
ip link show
|
|
# Look for Ethernet interfaces (may be eth0, enp*, etc.)
|
|
```
|
|
|
|
2. **Check NetworkManager status**:
|
|
```bash
|
|
sudo systemctl status NetworkManager
|
|
```
|
|
|
|
3. **Manually check interface**:
|
|
```bash
|
|
nmcli device status | grep ethernet
|
|
```
|
|
|
|
## Related Files
|
|
|
|
- `src/wifi_manager.py` - Main WiFi management logic
|
|
- `scripts/utils/wifi_monitor_daemon.py` - Background daemon that monitors WiFi/Ethernet
|
|
- `scripts/install/install_wifi_monitor.sh` - Installation script for WiFi monitor service
|
|
|
|
## Notes
|
|
|
|
- The Ethernet check uses `nmcli` if available (preferred), otherwise falls back to `ip` command
|
|
- The check verifies that the interface has an actual IP address (not just link up)
|
|
- AP mode will automatically disable within 30 seconds (check interval) when Ethernet connects
|
|
- Manual AP mode enable via web interface will also respect Ethernet connection status
|
|
|