Skip to content

Add a Wake-on-LAN network/wake module (type: wol) #216

Description

@Ulrond

RAFT can control device power (hs100 / apc / apcAos / olimex / kasa / tapo / SLP / none), but it has no way to wake a device that is asleep or in a Wake-on-LAN soft-off state.

Some targets (e.g. STB panels that aggressively deep-sleep) drop their console when idle and can only be brought back by a Wake-on-LAN magic packet. Today RAFT cannot do this, so test runs against such targets need an out-of-band wake step before the session can be opened.

Proposal

Wake-on-LAN is a network (layer-2) action, not a power action — it sends a UDP magic packet, cannot power a device off, and supports none of the power-metering contract. So add it as a dedicated network/wake controller rather than a power module:

  • framework/core/networkModules/wol.py (networkWol) — a wake() verb that sends the WoL magic packet (6×0xFF + target MAC ×16) to broadcast:port.
  • framework/core/networkControl.py (networkControlClass) — dispatches type: "wol", mirroring powerControl (retry via retryCount / retryDelay).
  • Wired into deviceManager via a device network: block → exposed as dut.networkController (alongside powerControl, hdmiCECController, avSyncController).
  • Standard-library only (socket) — no new dependencies.
network:
  type: "wol"
  mac: "aa:bb:cc:dd:ee:ff"
  broadcast: "255.255.255.255"   # optional
  port: 9                        # optional (7 or 9)
dut.networkController.wake()

Verification

Sends a valid magic packet and wakes a real armv7 target on the same broadcast domain; invalid / missing MAC is rejected with a clear error.

Delivered in #217.


Note: an earlier draft placed this under powerModules (type: "wol" on powerSwitch:); it was re-homed to the network seam for the reasons above.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions