MobiControl setup

How to point SOTI MobiControl's Lockdown at MobiLauncher, with the gotchas. If you've done MobiControl Lockdown before, the launcher itself is the easy part — the profile config is where you'll spend time.

A note on SOTI's terminology. SOTI calls this Lockdown (not "kiosk mode"), and the lockdown home screen is rendered from an HTML Home Screen Layout Template — there is no single "enter a URL here" field. Exact labels and section names move between MobiControl versions; the names below match the v2025 console. SOTI's own reference: Lockdown configuration.

How SOTI Lockdown is organized

A Lockdown configuration (in a Profile) has, roughly:

  • Custom Home Screen — the authorized home screen items you add with Add, plus the Home Screen Layout Template (an HTML file) that controls how they're displayed.
  • Lockdown Settings — toggles for the system UI and hardware (Home Button, Recents Button, Power Menu, Keyguard, System Information / status bar, Notifications, Full Device Lockdown, Lockdown Type: Native or Activity Suppression, etc.).
  • Preview Settings — Device Manufacturer / Model (the on-screen skin) and the Home Screen Layout Template selector.

Because the home screen is just an HTML template SOTI renders in a WebView, the cleanest way to boot straight into a hosted web launcher is a minimal template that redirects to your launcher URL. The device boots into Lockdown → renders the template → immediately lands in MobiLauncher, full-screen, with no SOTI tile in between.

Two paths

  1. Hosted URL — fastest to start. A redirect template points at our URL; the device fetches the launcher every boot. Free + Pro + Ent.
  2. Offline bundle (Pro+) — File Sync pushes the launcher to local storage; the same template points at file://. Survives no-network boots.

Use hosted URL for Free tier and for testing. Switch to the offline bundle when you have a real Pro/Ent fleet and an SLA that doesn't tolerate "launcher waited 8 seconds for DNS at power-on."

Path 1: Hosted URL

1. Make a redirect Home Screen Layout Template

Create an HTML file and upload it as a custom Home Screen Layout Template (Lockdown → Custom Home Screen → Home Screen Layout Template → add/upload a custom template). Replace YOUR-TENANT-ID:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
    <title>MobiLauncher</title>
    <style>html, body { margin: 0; height: 100%; background: #0b0b0b; }</style>
  </head>
  <body>
    <script>location.replace('https://app.mobilauncher.com/t/YOUR-TENANT-ID');</script>
  </body>
</html>

That's the whole template — it has no items of its own; it just hands the device to MobiLauncher, which renders your real tile grid.

Depending on your MobiControl build, you may instead have a single-app / web home-screen item option — if so, adding one home screen item pointed at the launcher URL works too. The redirect template is the version-agnostic route and what we test against.

2. Lockdown Settings for a real kiosk

The launcher draws its own header and footer, so hide SOTI's system UI — otherwise you get double chrome. These are SOTI's verbatim toggle names:

Lockdown Setting Set to Why
Lockdown Type Native Hard lockdown — apps can't launch unless allowed
Full Device Lockdown On Strictest form; the launcher owns the screen
Home Button Off No escaping to the device home
Recents Button Off No app switcher
Power Menu Off Stops users rebooting / powering off (your call)
Keyguard Off Skip the lock screen on a dedicated device
System Information Off Hide the status bar — the launcher shows its own clock/battery
Allow Status Bar Expansion Off (Activity Suppression only) no pull-down shade
Native Notifications Your call On if your fleet relies on app notifications

If you must use Activity Suppression instead of Native (some device mixes need it), the launcher still works — Native just gives a cleaner, harder lockdown.

3. Whitelist the apps your tiles launch

Every app tile in your config dispatches an Android package. If Lockdown blocks the launch, the launcher shows an error toast — but the fix is here: add each app's package name to the profile's allowed apps. (Web tiles need nothing extra; they open in the launcher's WebView.)

The launcher itself needs cookies + localStorage allowed in the Lockdown WebView (per-tenant config cache, dismissed-broadcast state). We serve HTTPS, so cleartext HTTP isn't required.

Path 2: Offline bundle (File Sync)

See offline-bundles.md for building the bundle. On the MobiControl side it's the same as Path 1, with two changes:

  1. File Sync the unpacked launcher/ directory to /sdcard/mobilauncher/ (mode: Replace).

  2. In the redirect template, point at the local file instead of our URL:

    location.replace('file:///sdcard/mobilauncher/index.html');
    

Permissions to grant the profile:

Permission Why
Read external storage The launcher reads its own bundle files
Network access Broadcasts polling + (Ent) remote config
Launch installed apps App-tile dispatches

If your fleet is Zebra or Samsung and you want agent-action tiles (reboot, clearAppData), the MX / Knox SDK permissions surface here too — that's Enterprise-tier territory, and per-OEM SDK certification on real hardware happens during beta onboarding (see faq.md for current status).

Alternative: lock to the standalone APK

Instead of running the launcher in SOTI's WebView, you can install the MobiLauncher APK and make it the locked app. It carries its own WebView + native bridge (agent actions, device properties), and you set it as the Lockdown home / single allowed app. See the APK steps at the bottom of this page; the no-MDM commands also show how to point it at a tenant. This is the better path if you want the native bridge features.

Updating config

Hosted URL: edit the config in the Portal; devices re-fetch on the next launcher reload. No MobiControl involvement.

Offline bundle: download a fresh bundle, replace the File Sync source; MobiControl re-syncs on the next window (or trigger it from Console).

Common MobiControl-side gotchas

"Tiles render but tapping an app does nothing." Lockdown is blocking the launch — add the target package to the allowed-apps list. The toast on the tile is MobiControl's blocker talking, not us.

"Works on Wi-Fi, blank on cellular." Hosted-URL behavior — your APN is probably blocking the domain or the device has no DNS at boot. Switch to the offline bundle.

"Devices show last week's layout." Hosted-URL path: the Lockdown WebView is caching aggressively. We send cache headers, but some MobiControl WebView builds ignore them — force-reload the launcher (some Lockdown profiles have a hot-key) or restart the launcher from Console. Offline-bundle path: File Sync hasn't pushed the new bundle yet — force-sync from Console.

"Double status bar / nav bar." A Lockdown Setting above is still on — re-check System Information, Home Button, Recents Button.

Sanity check: did it work?

After applying the profile to a test device:

  1. The device boots straight into your launcher (your deployment name in the header, your tile grid showing) — no SOTI tile screen first.
  2. No status bar, no nav bar.
  3. Tapping a tile launches the app or opens the URL.
  4. The Home button does nothing (or returns to the launcher).
  5. You can't swipe to Android home.

If any fail, it's almost always a Lockdown Setting, not the launcher. See troubleshooting.md.

No MDM? The standalone Android app

For small fleets without MobiControl, we have a sideloadable APK that does the kiosk-WebView job in a single app.

# 1. Build the APK (or grab a prebuilt one from us; coming soon).
#    On a fresh checkout, bootstrap the Gradle wrapper once first —
#    see packages/lockdown-android/README.md (gradle wrapper ...).
cd packages/lockdown-android
./gradlew assembleDebug

# 2. Install on the device (USB debugging on)
adb install -r app/build/outputs/apk/debug/app-debug.apk

# 3. Launch pointed at your tenant
adb shell am start -n com.oakash.mobilauncher.beta/.MainActivity \
  --es url "https://app.mobilauncher.com/t/<your-tenant>"

# 4. Set as default launcher (so the home button stays in our app)
adb shell cmd package set-home-activity com.oakash.mobilauncher.beta/.MainActivity

A stopgap for small fleets and a good way to test before committing MobiControl resources. On its own it does NOT have full lockdown — power button, volume keys, etc. stay active — so for production fleets, SOTI Lockdown (or the APK locked via SOTI as above) is the right tool.

We may publish this as a signed Play Store app for fleets that want a permanent no-MDM option. Email if that's you.