This Firefox extension provides a user-friendly interface to automate IBM server firmware updates for Everest and Rainier systems. The extension features automatic WebSocket server startup and works seamlessly on both Mac and Windows.
- π Automatic Server Startup - No manual server management needed
- β‘ Fast Build Autocomplete - Persistent SSH connection for instant suggestions (1-2s vs 10-15s)
- π’ Connection Status Indicator - Visual feedback for gateway connection status
- π― Smart Build Autocomplete - Dynamic suggestions for build paths with keyboard navigation
- π Secure credential input with password fields
- πΎ Save non-sensitive credentials for reuse
- π Real-time progress tracking with toast notifications
- π Live log streaming from the update process
- π¨ Modern, intuitive user interface
- π Automatic LUCI password handling
- π₯οΈ Cross-Platform - Works on Mac and Windows
git clone https://github.com/tiwari-nishant/Build-Update-Automation-tool.git
cd Build-Update-Automation-toolRun the installer
- chmod +x install.sh
- ./install.sh
Install extension in Firefox
- Open Firefox
- Go to about:debugging#/runtime/this-firefox
- Click "Load Temporary Add-on"
- Select firefox_extension/manifest.json
git clone https://github.com/tiwari-nishant/Build-Update-Automation-tool.git
cd Build-Update-Automation-toolRun the installer
- install.bat(Double click on the file to run it)
Install extension in Firefox
- Open Firefox
- Go to about:debugging#/runtime/this-firefox
- Click "Load Temporary Add-on"
- Select firefox_extension\manifest.json
That's it! The installer handles everything automatically:
- Creates Python virtual environment
- Installs dependencies (paramiko, websockets, requests)
- Sets up native messaging for automatic server startup
- Makes scripts executable
- Creates extension package
- PERSISTENT_SSH_CONNECTION.md - Fast autocomplete with persistent SSH connection
- BUILD_AUTOCOMPLETE_GUIDE.md - Build path autocomplete with authentication
- GIT_INSTALLATION_GUIDE.md - Complete Git installation guide
- CROSS_PLATFORM_DISTRIBUTION.md - Distribution for Mac/Windows
- AUTOSTART_TROUBLESHOOTING.md - Troubleshooting guide
- AUTOMATIC_SERVER_STARTUP_GUIDE.md - How automatic startup works
- macOS 10.14 or later
- Python 3.7+ (pre-installed on macOS)
- Firefox browser
- Git (pre-installed on macOS)
- Windows 10 or later
- Python 3.7+ (Download from python.org)
β οΈ Important: Check "Add Python to PATH" during installation
- Firefox browser
- Git (Download from git-scm.com)
The solution consists of five main components:
- Firefox Extension - User interface for input collection
- WebSocket Server - Real-time communication with extension
- Server Launcher - Automatic server startup via native messaging
- SSH Session Manager - Persistent SSH connection for fast autocomplete
- Firmware Update Script - Core automation logic
-
Click the extension icon in Firefox toolbar
-
Fill in the required fields:
- GSA ID: Your IBM GSA identification
- GSA Password: Your GSA password
- Use same password for LUCI: Check if LUCI password is same as GSA
- Build Path: Path to firmware build directory
- π‘ Pro Tip: Use the autocomplete feature!
- Type at least 4 characters (e.g., "1200.26")
- Click "Load Suggestions" button
- Select from up to 5 most recent matching builds
- Full path is automatically filled
- See BUILD_AUTOCOMPLETE_GUIDE.md for details
- π‘ Pro Tip: Use the autocomplete feature!
- Machine Address: Target machine IP address
- Lab Password: Password for the lab machine
-
Optional: Save credentials
- Check "Save credentials" to store non-sensitive information
-
Click "Start Update"
- Server starts automatically (no manual steps!)
- Real-time progress appears in toast notifications
- Logs stream in the popup
- Progress bar updates automatically
-
Monitor the process
- Watch toast notifications for phase updates:
- Initializing (0-15%)
- Copying build to BMC (15-40%)
- Performing update (40-50%)
- Verifying update (50-100%)
- Watch toast notifications for phase updates:
- Click "Load Saved" button
- Previously saved fields will be populated
- Enter passwords (never saved for security)
When updates are available:
cd /path/to/repository
git pull
./install.sh
# Reload extension in Firefox (about:debugging)cd C:\path\to\repository
git pull
install.bat
Reload extension in Firefox (about:debugging)repository/
βββ README.md # This file
βββ GIT_INSTALLATION_GUIDE.md # Git installation guide
βββ CROSS_PLATFORM_DISTRIBUTION.md # Distribution guide
βββ AUTOSTART_TROUBLESHOOTING.md # Troubleshooting
βββ .gitignore # Git ignore rules
βββ install.sh # Mac installer
βββ install.bat # Windows installer
βββ firmware_update_automation.py # Main automation script
βββ firmware_verification.py # Verification script
βββ firmware_websocket_server.py # WebSocket server
βββ server_launcher.py # Server launcher
βββ test_server_launcher.py # Test script
βββ start_websocket_server.sh # Manual server start (Mac)
βββ firefox_extension/ # Extension files
β βββ manifest.json
β βββ background.js
β βββ content_script.js
β βββ progress_toast.js
β βββ progress_toast.css
β βββ popup/
β β βββ popup.html
β β βββ popup.css
β β βββ popup.js
β βββ icons/
β β βββ icon-48.png
β β βββ icon-96.png
β βββ native-messaging-hosts/
β βββ server_launcher.json
βββ my_venv/ # Created by installer (not in git)
Extension won't load:
# Reinstall
./install.sh
# Check native messaging
ls -la ~/.mozilla/native-messaging-hosts/server_launcher.json
# Test server launcher
python3 test_server_launcher.pyServer won't start:
# Check logs
tail -f /tmp/server_launcher_debug.log
# Check if server is running
lsof -i :8765Extension won't load:
Reinstall
install.bat
Check native messaging
dir %APPDATA%\Mozilla\NativeMessagingHosts\server_launcher.json
Test server launcher
my_venv\Scripts\python.exe test_server_launcher.pyServer won't start:
Check logs
type websocket_server_autostart.log
Check if server is running
netstat -ano | findstr :8765Python not found:
- Install Python from python.org
β οΈ Check "Add Python to PATH" during installation- Restart Command Prompt
"Server not running, attempting to start..." but nothing happens:
- Reload the extension in Firefox (
about:debuggingβ Reload) - Check Browser Console (Cmd+Shift+J / Ctrl+Shift+J) for errors
- See AUTOSTART_TROUBLESHOOTING.md for detailed help
Button stays at "Cancel Update" after error:
- This is now fixed! The button automatically resets to "Start Update" after any error
For detailed troubleshooting, see AUTOSTART_TROUBLESHOOTING.md.
- β Passwords never stored - Only non-sensitive information is saved
- β Local communication only - WebSocket server only accepts localhost connections
- β Secure transmission - All credentials transmitted over SSH/HTTPS
- β No external dependencies - Except IBM firmware servers
- β Minimal permissions - Extension only requests necessary permissions
-
Create a branch:
git checkout -b feature/my-feature
-
Make your changes
-
Test thoroughly:
# Mac ./install.sh python3 test_server_launcher.py # Windows install.bat my_venv\Scripts\python.exe test_server_launcher.py
-
Reload extension in Firefox:
- Go to
about:debugging#/runtime/this-firefox - Click "Reload" next to the extension
- Go to
-
Commit and push:
git add . git commit -m "Description of changes" git push origin feature/my-feature
- Extension popup: Right-click popup β Inspect
- Background script:
about:debuggingβ Inspect - Server logs:
- Mac:
tail -f /tmp/server_launcher_debug.log - Windows:
type websocket_server_autostart.log
- Mac:
- Browser Console: Cmd+Shift+J / Ctrl+Shift+J
# Mac
python3 test_server_launcher.py
# Windows
my_venv\Scripts\python.exe test_server_launcher.pyExpected output:
Testing server_launcher.py...
Response: {
"type": "status",
"running": true,
"message": "Server started successfully"
}
# Mac
lsof -i :8765 | grep LISTEN
# Windows
netstat -ano | findstr :8765- Extension must be reloaded as temporary add-on after Firefox restart
- For permanent installation, package and sign through Mozilla Add-on store
- Large firmware files may take time to transfer
- Native messaging requires proper host configuration
- Initial release with automatic server startup
- Cross-platform support (Mac and Windows)
- Real-time progress notifications
- Automatic button state management
- Comprehensive error handling
For issues or questions:
- Check AUTOSTART_TROUBLESHOOTING.md
- Check GIT_INSTALLATION_GUIDE.md
- Review log files for detailed errors
- Check Browser Console for JavaScript errors
- Open an issue in the repository
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Test on both Mac and Windows (if possible)
- Submit a pull request
This tool is provided as-is for IBM internal use.