Fleet Management
In plain English: Bass can run as a managed Android fleet without Google Mobile Services (GMS), Google accounts, or Google's Android Enterprise cloud. Images support two management styles: Bass's own fleet / licensing backend (BootSight Device Status), or a third-party MDM you already use. This page explains both paths, what Bass unlocks that GMS fleets usually cannot, and how other MDMs typically talk to Bass add-ons.
Your image is assembled for a specific management path as part of the product you receive. For product-line choice, see the Bass Product Family Guide. For Device Status / licensing UI, see BootSight and License Activation.
Management modes
Licensing and fleet identity on BootSight images use Device Status and the supported activation flow. Work with your Bass contact for the correct image SKU rather than trying to change management after delivery.
Android Enterprise-style management without GMS
Stock "Android Enterprise" marketing often assumes:
- Google Play / Play Protect
- a Google account or managed Google domain
- Android Management API (AMAPI), zero-touch, or QR enrollment tied to Google's cloud
Bass Lineout / Submix / legacy fleets are usually FOSS / no-GMS by default. Management still uses the same Android Device Policy building blocks (Device Admin / Device Owner via DevicePolicyManager and dpm), but without requiring GMS or Google's enrollment cloud.
What Bass does on-device
These are platform policy hooks. They do not need Google Play Services to function.
What "managed" looks like day to day (Bass fleet backend)
- Receive / install the image your project was provisioned with.
- Optionally apply Config Overrides under
/data/misc/and complete license activation. - Complete Admin-mode setup for kiosk (whitelist, auto-launch, password).
- Reboot into Lockdown (or leave Desktop/Tablet personality).
- Use BootSight Device Status for license / serial state.
What Bass allows that GMS fleets usually cannot
GMS + Android Enterprise is powerful for phone/tablet fleets that live inside Google's ecosystem. It is a poor fit for many Bass use cases. Things that work on Bass and typically do not work (or are blocked / unsupported) on sealed GMS Enterprise devices:
If a requirement is "must enroll in Google zero-touch / AMAPI," that is a different product shape. Use a GMS-bearing image only when the customer truly needs that cloud, and accept the tradeoffs above.
Third-party MDMs (generic pattern)
Products such as Headwind MDM, ScaleFusion, Syncfusion (and many others) follow the same Android pattern on Bass:
- Start from an image your Bass contact provisioned for third-party MDM.
- Install the vendor's Device Policy Controller (DPC) / agent per that vendor's guide.
- Make the DPC Device Owner (or Device Admin, depending on the product) using the enrollment method that vendor supports on AOSP / no-GMS devices (factory provisioning, QR/NFC if available without Google, or their documented
dpmflow). - Use the MDM console for app push, remote wipe, location, and policy where that agent supports AOSP.
- For Bass-specific behavior (power, ethernet, buttons, config files, boot mode), drive the Bass surfaces below from the agent's scripting, remote shell, or a small companion app - do not expect Google Play Enterprise APIs to expose them.
Bass does not certify every MDM. Treat the names above as examples of the class. Validate Device Owner on your FOSS Bass image before you commit a fleet.
What the MDM owns vs what Bass owns
Integration surfaces (API, AIDL, command line)
Use these from an MDM remote shell, a privileged companion app, or approved imaging scripts. Full contracts live in the linked docs.
Boot mode and identity (when present)
adb shell getprop ro.boot.bliss.bootmode # e.g. lockdown, admin, ...
adb shell getprop ro.bliss.serialnumber # licensing / device identity on BootSight images
Config Overrides (file push)
Push key/value files, then trigger apply (or reboot):
adb push settings_global.conf /data/misc/
adb push settings_system.conf /data/misc/
adb push settings_secure.conf /data/misc/
adb push runtime_props.conf /data/misc/
adb push device_config.conf /data/misc/
adb shell setprop persist.ax86.update_configs 1
Details and examples: Bliss Config Overrides.
Ax86 Power (AIDL + service call)
adb shell service list | grep blisspower
adb shell service call blisspower 1 # reboot
adb shell service call blisspower 2 # shutdown
adb shell service call blisspower 3 # sleep
Full AIDL: Ax86 Power AIDL, legacy notes: Power Management AIDL.
Ethernet Config (AIDL + service call)
adb shell service list | grep blissethernet
# Transaction codes and static/DHCP/tether helpers:
# see Ethernet Config AIDL doc
Full AIDL: Ethernet Config AIDL.
Button Manager (cmd + AIDL)
Full AIDL: Button Manager AIDL.
Device policy (dpm)
adb shell dpm list-owners
adb shell dumpsys device_policy
Use the component names required by your DPC or by the Bass components on your image. SmartDock documents Device Admin usage in its Vendor Guide.
Imaging notes
- Lineout: approved factory process can clone
/data/miscand boot options as part of imaging (Addon development for builders). - Submix: see vendor deployment docs linked from Submix install for host + Android provisioning.