Repository navigation
Installation
Installing ShellyElevate means sideloading an Android APK over USB. The Shelly Wall Display is a regular Android device once you unlock developer mode, so this looks pretty much like any other ADB install, with one quirky tap sequence to get developer mode in the first place.
You'll need:
- A Shelly Wall Display (any supported model)
- A USB-A to USB-C cable
- A computer with
adbinstalled - The APK (from Releases, or build it yourself)
If you've never used adb before, install Android Platform Tools. The relevant package on macOS/Linux is android-platform-tools, and on Windows you can grab the official zip.
Note
The original Shelly Wall Display (Stargate, SAWD-0A1XX10EU1) doesn't have the developer-mode tap sequence described below. If the tap sequence does nothing on your unit, you need to go through the Jailbreak procedure first to get a root shell and enable ADB. Once ADB is running, the rest of this page applies.
This is the only odd part. The Shelly software has developer mode hidden behind a tap sequence on the settings screen. On the device, go to Settings > About Device. You'll see two lines, the firmware version and the hardware revision. Tap them in this order:
F H F F H F H H
F is the firmware version line, H is the hardware revision line. After the last tap, developer mode is on. The Android Settings app is now reachable, and USB debugging can be enabled there.
Connect the display to your computer via USB. From the device's developer settings, enable USB debugging. Then on your computer:
adb devicesYou should see one device listed (the first time you'll be prompted on the display to authorize the computer; accept it). If the list is empty, double-check that USB debugging is enabled and that the cable isn't a charge-only one.
Grab the latest .apk from Releases. Then:
adb install -g shellyelevatev2.apkThe -g grants all manifest permissions up front so you don't have to chase prompts later.
A couple of permissions can't be granted by -g (WRITE_SETTINGS, needed for brightness control, and the battery/doze whitelist). ShellyElevate tries to grant these itself on first launch, so on most devices you don't have to do anything here. If brightness control isn't working, grant them manually through AppOps:
# allow changing screen brightness
adb shell appops set me.rapierxbox.shellyelevatev2 WRITE_SETTINGS allow
# stop the system from killing the watchdog service (recommended)
adb shell dumpsys deviceidle whitelist +me.rapierxbox.shellyelevatev2Without the first one, brightness control won't work. The battery whitelist is technically optional but kiosk-style apps benefit from it.
adb shell am start -n me.rapierxbox.shellyelevatev2/.MainActivityOn first launch the settings screen opens automatically. From here, head over to First-Time Setup to configure your dashboard URL.
The stock Shelly app is still set as the home launcher, which means it'll occasionally try to come back. Most people install a lightweight launcher and pick it as the default:
adb shell pm disable cloud.shelly.stargate
adb install ultra-small-launcher.apkYou can grab Ultra Small Launcher here. After installing, press the home button and Android will ask which launcher to use. Pick Ultra Small Launcher and set it as the default.
adb rebootAfter the reboot, ShellyElevate starts automatically (a BroadcastReceiver picks up the boot event) and loads whatever URL you configured.
A normal install is fine for day-to-day use. Moving ShellyElevate into /system/priv-app gets you two extra things: the permissions above stick for good, and the app can update itself without a cable (see Updating). The price is a writable /system, so you need a rooted or unlocked device.
There are one-shot scripts under tools/ that do the whole dance over ADB for you — adb root, remount /system read-write, push the APK into /system/priv-app/ShellyElevateV2/, fix its permissions and SELinux label, grant the AppOps, reboot:
# Linux / macOS
tools/install-privapp.sh path/to/shellyelevatev2.apk
# Windows (PowerShell)
tools\install-privapp.ps1 path\to\shellyelevatev2.apkImportant
The APK you install this way has to be signed with the same key as the releases you plan to update to, or the in-app self-update will refuse it later. Release-to-release from this repo is fine; a build you signed yourself won't update to an official release.
If the app is already installed and later gets root, it can promote itself on the next launch instead. It only tries once, so a failed promotion won't loop.
Once the display is on the wall there's usually no USB port to reach. Turn on ADB over WiFi in settings and the device starts listening for adb on port 5555:
adb connect <device-ip>:5555It survives reboots (the app re-enables it on boot). Turn it off when you're done — it exposes the debug bridge to anyone on the LAN with no authentication. See Configuration Reference.
- You probably want Home Assistant Integration next.
- When a new release lands, Updating covers the ways to move to it.
- If something didn't work, Troubleshooting has the common ones.
- If you want to build the APK yourself instead of trusting a release, see Building from Source. There's a devcontainer config in the repo that makes this easy.
Setup
Integration
Features
Reference