Skip to content

Releases: ashishkrishnan/sparkplug

v1.3.0

28 Dec 09:24

Choose a tag to compare

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

26 Dec 17:14

Choose a tag to compare

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

24 Dec 14:52

Choose a tag to compare

🚀 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

22 Dec 18:17

Choose a tag to compare

🚀 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