Skip to content
 
 

Repository files navigation

swol - Simple Wake on Lan

MIT License Flutter Dart Workflow Lint GitHub Release

swol is an Android app that sends Wake-on-LAN packets to devices on your local network.

It is a fork of herzhenr/simple-wake-on-lan, trimmed to Android only.

Usage

Wake on LAN (WoL) is a network protocol that allows a device to be turned on or awakened remotely over a network while it is sleeping. This project aims to make the process of waking devices easy with a mobile application.

Screenshots

play_integrity dark_mode
settings about

Features

  • Automatic device discovery across the local subnet
  • Live online/offline status for saved devices
  • Devices addressable by IP or by hostname
  • Optional SecureOn password per device
  • Home screen widget that wakes a device in one tap
  • Material You dynamic colors (Android 12+)
  • Export and import the device list as a json file (see below)

The app stores the added devices in a json file which can be exported and imported within the app UI. An example of the file structure is shown below:

[
  {
    "id": "6b353440-d183-11ed-964b-69a9facd6cfd",
    "hostName": "Raspberry Pi",
    "ipAddress": "192.168.1.9",
    "macAddress": "12:12:12:12:12:12",
    "wolPort": 9,
    "deviceType": "server",
    "secureOnPassword": "12:AB:34:CD:56:EF",
    "modified": "2023-04-14T14:17:45.974511"
  },
  {
    "id": "87c87ab0-d184-13ed-9d56-a5f550305985",
    "hostName": "Printer",
    "ipAddress": "192.168.1.10",
    "macAddress": "f0:f0:f0:f0:f0:f0",
    "wolPort": 9,
    "deviceType": "printer",
    "modified": "2023-04-14T14:18:14.997081"
  }
]

deviceType must be one of server, desktop, laptop, printer, network, iot, tv, mobile or other. Anything else imports fine but shows no icon. secureOnPassword is optional: when present (six hex pairs, like a MAC) it is appended to the magic packet for hardware that supports SecureOn.

Download

Grab an APK or App Bundle from GitHub Releases. app-arm64-v8a-release.apk is the right build for essentially any current phone.

Architecture

Flutter, targeting Android only, using the Material 3 design system via the standalone material_ui package. There is no backend: discovery is ICMP over the local subnet, waking is a UDP magic packet, and hostname lookups go to whatever resolver the device already uses. Devices are persisted as a single devices.json in the app documents directory.

Build

The toolchain is pinned in mise.toml. With mise installed:

mise install          # installs the pinned Flutter
flutter pub get       # also generates the localizations
flutter run

Without mise, install the Flutter SDK at the version mise.toml names.

Useful commands:

dart analyze --fatal-infos                      # what CI gates on
dart format --output=none --set-exit-if-changed .
flutter test
flutter build apk --release --split-per-abi
flutter build appbundle --release

Release builds fall back to the debug signing keys unless android/key.properties exists:

storePassword=...
keyPassword=...
keyAlias=...
storeFile=keystore.jks   # resolved relative to android/app/

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

A cross platform app for waking machines on the network with Wake On Lan

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages