Files
LEDMatrix/docs/archive/WIFI_ETHERNET_AP_MODE_FIX.md
Chuck ddd300a117 Docs/consolidate documentation (#217)
* 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>
2026-01-29 10:32:00 -05:00

5.4 KiB

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

# 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:

    # 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:

    # 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:

    # 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:

    # 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:

    sudo systemctl restart ledmatrix-wifi-monitor
    
  2. If AP mode is currently active and Ethernet is connected, it will automatically disable:

    # 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:

    # 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:

    python3 -c "
    from src.wifi_manager import WiFiManager
    wm = WiFiManager()
    print('Ethernet connected:', wm._is_ethernet_connected())
    "
    
  2. Check network interface status:

    nmcli device status
    # OR
    ip addr show
    
  3. Verify Ethernet has IP address:

    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:

    ip link show
    # Look for Ethernet interfaces (may be eth0, enp*, etc.)
    
  2. Check NetworkManager status:

    sudo systemctl status NetworkManager
    
  3. Manually check interface:

    nmcli device status | grep ethernet
    
  • 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