Complete firmware implementation for Raspberry Pi Pico W and Pico 2 W to enable IPMI server management through the iRackPilot iOS app.
The firmware provides:
- HTTP REST API for iOS app communication
- Full IPMI 2.0 Protocol support for server management
- WiFi Connectivity with automatic fallback to AP mode
- Remote Console/KVM framework
- Script Execution Engine for multiple languages
- Connection Management with retry and error handling
New to iRackPilot? Start here:
- Flash MicroPython to your Pico device
- Upload firmware files using Thonny or rshell
- Configure WiFi in
main.py - Connect from iOS app
📖 Installation Guides:
- QUICKSTART.md - Get started in 5 minutes
- INSTALLATION.md - Complete step-by-step guide with troubleshooting
- Pico W:
firmware/pico-w/- For Raspberry Pi Pico W - Pico 2 W:
firmware/pico-2-w/- For Raspberry Pi Pico 2 W
- HTTP REST API server
- WiFi connectivity (STA and AP modes)
- IPMI 2.0 protocol implementation
- Session establishment and authentication
- Device information retrieval
- Chassis power control
- Command execution
- Script execution (Python, DuckyScript)
- Connection retry logic
- Error handling
- Full KVM console frame capture
- JavaScript engine integration
- Enhanced script sandboxing
- Web-based configuration interface
- OTA firmware updates
- Advanced IPMI features
- Performance optimizations
The firmware implements the full IPMI 2.0 protocol:
- RMCP (Remote Management Control Protocol)
- Session Management with authentication
- Device Commands:
- Get Device ID
- Get Chassis Status
- Chassis Control (Power On/Off/Cycle)
- Get System GUID
- Sensor Reading
- Vendor Support: HP, Dell, Generic IPMI servers
For instructions on creating UF2 firmware files, see BUILD_UF2.md.
Quick reference:
# Build firmware package
./build.sh pico-w
# Create UF2 from binary (if using C/C++)
python3 create_uf2.py firmware.bin firmware.uf2See PICO_FIRMWARE_REFERENCE.md for complete API documentation.
firmware/
├── pico-w/ # Pico W firmware
│ ├── main.py # Main entry point
│ ├── boot.py # Boot script
│ ├── http_server.py # HTTP server
│ ├── ipmi_client.py # IPMI client
│ ├── ipmi_protocol.py # IPMI protocol
│ └── script_engine.py # Script execution
├── pico-2-w/ # Pico 2 W firmware (same structure)
├── build.sh # Build script
├── create_uf2.py # UF2 file creator
├── BUILD_UF2.md # UF2 build guide
├── INSTALLATION.md # Installation guide
└── README.md # This file
Edit main.py in your firmware directory:
# WiFi Configuration
WIFI_SSID = "YourWiFiNetwork"
WIFI_PASSWORD = "YourPassword"
# Server Configuration
HTTP_PORT = 8080 # Default: 8080- Verify WiFi credentials
- Check network connectivity
- Ensure port 8080 is accessible
- Check serial output for errors
- Verify IPMI server credentials
- Check network connectivity between Pico and IPMI server
- Ensure IPMI is enabled on server
- Check firewall settings
- Verify script syntax
- Check language support
- Review execution output
See INSTALLATION.md for more troubleshooting tips.
- MicroPython for Pico W/Pico 2 W
- Python 3.x (for build tools)
- Thonny IDE or rshell (for file upload)
- Flash MicroPython to Pico
- Upload firmware files
- Test HTTP endpoints:
curl http://<pico_ip>:8080/status
- Test IPMI connection from iOS app
When contributing firmware changes:
- Test on both Pico W and Pico 2 W
- Update documentation
- Follow MicroPython coding standards
- Add error handling for network operations
See main repository license.
For support and questions:
- See Support Page
- Check Firmware Page
- Visit GitHub Repository