Releases: ashishkrishnan/sparkplug
v1.3.0
New Feature
Implement universal Wake-on-Lan OS selector for KVM over IP devices in #18
📡 How it works?
Sparkplug has a neat track to enable universal OS selector even via Wake-on-lan packets.
Add your Sparkplug/ESP32 (mac address) to your favorite WoL app these with modified MAC addresses.
| Boot Target | Target MAC Address | Action |
|---|---|---|
| Your primary OS | XX:XX:XX:XX:XX:AA |
Powers on & selects Primary (e.g., Ubuntu) |
| Your secondary OS | XX:XX:XX:XX:XX:BB |
Powers on & selects Secondary (e.g., Windows) |
| Default | XX:XX:XX:XX:XX:XX |
Powers on selecting all default settings. |
You can find these mac addresses in your http://<sparkplug>/health under virtual_mac on first setup.
Architecture Improvements
- Moves out Wake-on-lan (WOL) from Webservice to it's own header classes in #11
- Fix log messages missing from the health API in #12
- Introduce Time Provider, System Info in #16
- Improve Webservice architecture to remove coupling for logs
- Centralize Safety Guardrails for all capabilities in #18
Full Changelog: v1.2.0...v1.3.0
v1.2.0
What's Changed
- Adds a new async state machine, to enable non-blocking wake-ups and shutdowns. This makes the health API to remain accessible while the Sparkplug is waiting for the system to boot. Previously, the health API was available before and after wake/shutdown operations.
- Improves architecture for boot (add states like cool down, shutting down, booting up, idle and navigating)
/**
* Waiting for commands.
*/
IDLE,
/**
* A wake command was received. It's waiting for POST to finish and bootloader to show up.
*/
BOOTING_UP,
/**
* The OS is being selected (primary or secondary)
*/
NAVIGATING,
/**
* A shutdown command was received.
*/
SHUTTING_DOWN,
/**
* A cool-down period after a successful wake or shutdown.
*/
COOLING_DOWN
- Simplify configuration logic (introduce a single ignored file wifi.h for adding wifi name and secrets)
Details are here: PR #9
Full Changelog: v1.1.0...v1.2.0
v1.1.0
🚀 New
- Improved OS selector: Improves the HID input with a new strategy for aggressive wake-up to cold start input devices.
- Safety protocols: Improvements to accidental shutdown or wake-ups if Sparkplug detects an ongoing sequence or is in cool down period.
- HID or Keyboard debug mode: Has a debug mode for testing if your motherboard or OS settings are HID compliant.
Debug:
http://<sparkplug>/debug/type?key=a
Supported Special keys
`enter`, `esc`, `back`, `right`, `left`, `up`, `down`, `shift` and `win` (windows key)
* Updates to the Wake up*
http://<sparkplug>/wake (default os)
if you have a dual boot & an aggressive POST/BIOS setting
http://<sparkplug>/wake?os=windows&strategy=aggressive
If you want to force wake-up during the cool down period
http://<sparkplug>/wake?os=windows&strategy=standard&force=true
Full Changelog: v1.0.0...v1.1.0
v1.0.0
🚀 Capabilities
- Reliable Wake up on Lan (WoL): Remotely power on your PC and automatically type the keystrokes to select your OS (e.g., Windows vs. Ubuntu).
- Safe Shutdown: Ensures, triggers are on the power button if the PC is confirmed ON. This prevents accidental power-ups.
- Thermal Guard: Monitors internal case temperature. If the ESP32 exceeds 85°C, it locks out all controls to prevent hardware damage.
- Realtime Health Monitoring: Provides observability for hardware state and software sequences.
Rest APIs:
Wake up:
POST/GET http://<sparkplug ip>/wake (default os)
if you have a dual boot
POST/GET http://<sparkplug ip>/wake?os=windows
POST/GET http://<sparkplug ip>/wake?os=ubuntu
Shutdown: POST/GET http://<sparkplug ip>/shutdown
Health: GET http://<sparkplug ip>/health
Note: API auto-refreshes every 20 seconds configurable or call with query parameter refresh=50
{
"system": {
"status": "online",
"uptime_s": 91,
"uptime_str": "0h 1m 31s",
"server_time": "22-12-2025 10:20:53 PM"
},
"hardware": {
"chip": "ESP32-S3 Rev 2",
"free_ram_kb": 223,
"total_ram_kb": 317,
"temp_c": 36.8
},
"network": {
"ip": "192.168.0.25",
"mac": "<mac-address>",
"signal_dbm": -60
},
"logs": [
"[Syncing with NTP time ] [Sparkplug] Starting system",
"[22-12-2025 10:19:31 PM] [SparkPlug] WebService Starting",
"[22-12-2025 10:19:31 PM] [SparkPlug] Service Ready! - All systems go!",
"[22-12-2025 10:19:31 PM] [Sparkplug] Boot Complete. Ready."
]
}Full Changelog: https://github.com/ashishkrishnan/sparkplug/commits/v1.0.0