Walked the README and docs/ tree against current code and fixed several
real bugs and many stale references. Highlights:
User-facing
- README.md: web interface install instructions referenced
install_web_service.sh at the repo root, but it actually lives at
scripts/install/install_web_service.sh.
- docs/GETTING_STARTED.md: every web UI port reference said 5050, but
the real server in web_interface/start.py:123 binds 5000. Same bug
was duplicated in docs/TROUBLESHOOTING.md (17 occurrences). Fixed
both.
- docs/GETTING_STARTED.md: rewrote tab-by-tab instructions. The doc
referenced "Plugin Store", "Plugin Management", "Sports Configuration",
"Durations", and "Font Management" tabs - none of which exist. Real
tabs (verified in web_interface/templates/v3/base.html) are: Overview,
General, WiFi, Schedule, Display, Config Editor, Fonts, Logs, Cache,
Operation History, Plugin Manager (+ per-plugin tabs).
- docs/GETTING_STARTED.md: removed references to a "Test Display"
button (doesn't exist) and "Show Now" / "Stop" plugin buttons. Real
controls are "Run On-Demand" / "Stop On-Demand" inside each plugin's
tab (partials/plugin_config.html:792).
- docs/TROUBLESHOOTING.md: removed dead reference to
troubleshoot_weather.sh (doesn't exist anywhere in the repo); weather
is now a plugin in ledmatrix-plugins.
Developer-facing
- docs/PLUGIN_API_REFERENCE.md: documented draw_image() doesn't exist
on DisplayManager. Real plugins paste onto display_manager.image
directly (verified in src/base_classes/{baseball,basketball,football,
hockey}.py). Replaced with the canonical pattern.
- docs/PLUGIN_API_REFERENCE.md: documented cache_manager.delete() doesn't
exist. Real method is clear_cache(key=None). Updated the section.
- docs/PLUGIN_API_REFERENCE.md: added 10 missing BasePlugin methods that
the doc never mentioned: dynamic-duration hooks, live-priority hooks,
and the full Vegas-mode interface.
- docs/PLUGIN_DEVELOPMENT_GUIDE.md: same draw_image fix.
- docs/DEVELOPMENT.md: corrected the "Plugin Submodules" section. Plugins
are NOT git submodules - .gitmodules only contains
rpi-rgb-led-matrix-master. Plugins are installed at runtime into the
plugins directory configured by plugin_system.plugins_directory
(default plugin-repos/). Both internal links in this doc were also
broken (missing relative path adjustment).
- docs/HOW_TO_RUN_TESTS.md: removed pytest-timeout from install line
(not in requirements.txt) and corrected the test/integration/ path
(real integration tests are at test/web_interface/integration/).
Replaced the fictional file structure diagram with the real one.
- docs/EMULATOR_SETUP_GUIDE.md: clone URL was a placeholder; default
pixel_size was documented as 16 but emulator_config.json ships with 5.
Index
- docs/README.md: rewrote. Old index claimed "16-17 files after
consolidation" but docs/ actually has 38 .md files. Four were missing
from the index entirely (CONFIG_DEBUGGING, DEV_PREVIEW,
PLUGIN_ERROR_HANDLING, STARLARK_APPS_GUIDE). Trimmed the navel-gazing
consolidation/statistics sections.
Out of scope but worth flagging:
- src/plugin_system/resource_monitor.py:343 and src/common/api_helper.py:287
call cache_manager.delete(key) but no such method exists on
CacheManager. Both call sites would AttributeError at runtime if hit.
Not fixed in this docs PR - either add a delete() shim or convert
callers to clear_cache().
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
9.7 KiB
Getting Started with LEDMatrix
Welcome
This guide will help you set up your LEDMatrix display for the first time and get it running in under 30 minutes.
Prerequisites
Hardware:
- Raspberry Pi (3, 4, or 5 recommended)
- RGB LED Matrix panel (32x64 or 64x64)
- Adafruit RGB Matrix HAT or similar
- Power supply (5V, 4A minimum recommended)
- MicroSD card (16GB minimum)
Network:
- WiFi network (or Ethernet cable)
- Computer with web browser on same network
Quick Start (5 Minutes)
1. First Boot
- Insert the MicroSD card with LEDMatrix installed
- Connect the LED matrix to your Raspberry Pi
- Plug in the power supply
- Wait for the Pi to boot (about 60 seconds)
Expected Behavior:
- LED matrix will light up
- Display will show default plugins (clock, weather, etc.)
- Pi creates WiFi network "LEDMatrix-Setup" if not connected
2. Connect to WiFi
If you see "LEDMatrix-Setup" WiFi network:
- Connect your device to "LEDMatrix-Setup" (open network, no password)
- Open browser to:
http://192.168.4.1:5000 - Navigate to the WiFi tab
- Click "Scan" to find your WiFi network
- Select your network, enter password
- Click "Connect"
- Wait for connection (LED matrix will show confirmation)
If already connected to WiFi:
- Find your Pi's IP address (check your router, or run
hostname -Ion the Pi) - Open browser to:
http://your-pi-ip:5000
3. Access the Web Interface
Once connected, access the web interface:
http://your-pi-ip:5000
You should see:
- Overview tab with system stats
- Live display preview
- Quick action buttons
Initial Configuration (15 Minutes)
Step 1: Configure Display Hardware
- Open the Display tab
- Set your matrix configuration:
- Rows: 32 or 64 (match your hardware)
- Columns: 64 or 96 (match your hardware)
- Chain Length: Number of panels chained horizontally
- Hardware Mapping: usually
adafruit-hat-pwm(with the PWM jumper mod) oradafruit-hat(without). See the root README for the full list. - Brightness: 70–90 is fine for indoor use
- Click Save
- From the Overview tab, click Restart Display Service to apply
Tip: if the display shows garbage or nothing, the most common culprits
are an incorrect hardware_mapping, a gpio_slowdown value that doesn't
match your Pi model, or panels needing the E-line mod. See
TROUBLESHOOTING.md.
Step 2: Set Timezone and Location
- Open the General tab
- Set your timezone (e.g.,
America/New_York) and location - Click Save
Correct timezone ensures accurate time display, and location is used by weather and other location-aware plugins.
Step 3: Install Plugins
- Open the Plugin Manager tab
- Scroll to the Plugin Store section to browse available plugins
- Click Install on the plugins you want
- Wait for installation to finish — installed plugins appear in the Installed Plugins section above and get their own tab in the second nav row
- Toggle the plugin to enabled
- From Overview, click Restart Display Service
You can also install community plugins straight from a GitHub URL using the Install from GitHub section further down the same tab — see PLUGIN_STORE_GUIDE.md for details.
Step 4: Configure Plugins
- Each installed plugin gets its own tab in the second navigation row
- Open that plugin's tab to edit its settings (favorite teams, API keys, update intervals, display duration, etc.)
- Click Save
- Restart the display service from Overview so the new settings take effect
Example: Weather Plugin
- Set your location (city, state, country)
- Add an API key from OpenWeatherMap (free signup) to
config/config_secrets.jsonor directly in the plugin's config screen - Set the update interval (300 seconds is reasonable)
Testing Your Display
Run a single plugin on demand
The fastest way to verify a plugin works without waiting for the rotation:
- Open the plugin's tab (second nav row)
- Scroll to On-Demand Controls
- Click Run On-Demand — the plugin runs immediately even if disabled
- Click Stop On-Demand to return to the normal rotation
Check the live preview and logs
- The Overview tab shows a Live Display Preview that mirrors what's on the matrix in real time — handy for debugging without looking at the panel.
- The Logs tab streams the display and web service logs. Look for
ERRORlines if something isn't working; normal operation just showsINFOmessages about plugin rotation.
Common First-Time Issues
Display Not Showing Anything
Check:
- Power supply connected and adequate (5V, 4A minimum)
- LED matrix connected to the bonnet/HAT correctly
- Display service running:
sudo systemctl status ledmatrix - Hardware configuration matches your matrix (rows/cols/chain length)
Fix:
- Restart from the Overview tab → Restart Display Service
- Or via SSH:
sudo systemctl restart ledmatrix
Web Interface Won't Load
Check:
- Pi is connected to network:
ping your-pi-ip - Web service running:
sudo systemctl status ledmatrix-web - Correct port: the web UI listens on
:5000 - Firewall not blocking port 5000
Fix:
- Restart web service:
sudo systemctl restart ledmatrix-web - Check logs:
sudo journalctl -u ledmatrix-web -n 50
Plugins Not Showing
Check:
- Plugin is enabled (toggle on the Plugin Manager tab)
- Display service was restarted after enabling
- Plugin's display duration is non-zero
- No errors in the Logs tab for that plugin
Fix:
- Enable the plugin from Plugin Manager
- Click Restart Display Service on Overview
- Check the Logs tab for plugin-specific errors
Weather Plugin Shows "No Data"
Check:
- API key configured (OpenWeatherMap)
- Location is correct (city, state, country)
- Internet connection working
Fix:
- Sign up at openweathermap.org (free)
- Add API key to config_secrets.json or plugin config
- Restart display
Next Steps
Customize Your Display
Adjust display durations:
- Each plugin's tab has a Display Duration (seconds) field — set how long that plugin stays on screen each rotation.
Organize plugin order:
- Use the Plugin Manager tab to enable/disable plugins. The display cycles through enabled plugins in the order they appear.
Add more plugins:
- Check the Plugin Store section of Plugin Manager for new plugins.
- Install community plugins straight from a GitHub URL via Install from GitHub on the same tab.
Enable Advanced Features
Vegas Scroll Mode:
- Continuous scrolling ticker display
- See ADVANCED_FEATURES.md for details
On-Demand Display:
- Manually trigger specific plugins
- Pin important information
- See ADVANCED_FEATURES.md for details
Background Services:
- Non-blocking data fetching
- Faster plugin rotation
- See ADVANCED_FEATURES.md for details
Explore Documentation
- WEB_INTERFACE_GUIDE.md - Complete web interface guide
- WIFI_NETWORK_SETUP.md - WiFi configuration details
- PLUGIN_STORE_GUIDE.md - Installing and managing plugins
- TROUBLESHOOTING.md - Solving common issues
- ADVANCED_FEATURES.md - Advanced functionality
Join the Community
- Report issues on GitHub
- Share your custom plugins
- Help others in discussions
- Contribute improvements
Quick Reference
Service Commands
# Check status
sudo systemctl status ledmatrix
sudo systemctl status ledmatrix-web
# Restart services
sudo systemctl restart ledmatrix
sudo systemctl restart ledmatrix-web
# View logs
sudo journalctl -u ledmatrix -f
sudo journalctl -u ledmatrix-web -f
File Locations
/home/ledpi/LEDMatrix/
├── config/
│ ├── config.json # Main configuration
│ ├── config_secrets.json # API keys and secrets
│ └── wifi_config.json # WiFi settings
├── plugin-repos/ # Installed plugins (default location)
├── cache/ # Cached data
└── web_interface/ # Web interface files
The plugin install location is configurable via
plugin_system.plugins_directoryinconfig.json. The default isplugin-repos/; the loader also searchesplugins/as a fallback.
Web Interface
Main Interface: http://your-pi-ip:5000
System tabs:
- Overview System stats, live preview, quick actions
- General Timezone, location, plugin-system settings
- WiFi Network selection and AP-mode setup
- Schedule Power and dim schedules
- Display Matrix hardware configuration
- Config Editor Raw config.json editor
- Fonts Upload and manage fonts
- Logs Real-time log viewing
- Cache Cached data inspection and cleanup
- Operation History Recent service operations
Plugin tabs (second row):
- Plugin Manager Browse the Plugin Store, install/enable plugins
- <plugin-id> One tab per installed plugin for its config
WiFi Access Point
Network Name: LEDMatrix-Setup
Password: (none - open network)
URL when connected: http://192.168.4.1:5000
Congratulations!
Your LEDMatrix display is now set up and running. Explore the web interface, try different plugins, and customize it to your liking.
Need Help?
- Check TROUBLESHOOTING.md
- Review detailed guides for specific features
- Report issues on GitHub
- Ask questions in community discussions
Enjoy your LED matrix display!