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.
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.
![]() |
![]() |
![]() |
![]() |
- 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
jsonfile (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.
Grab an APK or App Bundle from GitHub Releases.
app-arm64-v8a-release.apk is the right build for essentially any current phone.
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.
The toolchain is pinned in mise.toml. With mise installed:
mise install # installs the pinned Flutter
flutter pub get # also generates the localizations
flutter runWithout 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 --releaseRelease builds fall back to the debug signing keys unless android/key.properties exists:
storePassword=...
keyPassword=...
keyAlias=...
storeFile=keystore.jks # resolved relative to android/app/This project is licensed under the MIT License - see the LICENSE file for details.



