Repository navigation
Device Control
Device Control is a Shizuku+ screen that turns the privileged service into a rootless remote for the parts of Android that normally sit behind Settings, svc, or system-only permissions. Because the service runs at shell UID (2000) with WRITE_SETTINGS/WRITE_SECURE_SETTINGS, it can flip connectivity radios, change display/audio state, and even reboot — no root or ADB session required once Shizuku+ is running.
Open it from the Shizuku+ home screen under Device Control. Developers can drive the same operations through the
IDeviceControlPlusAPI (see the Plus APIs repo).
-
Airplane mode — toggles
Settings.Global.airplane_mode_onand broadcastsACTION_AIRPLANE_MODE_CHANGED, so radios actually respond. -
Wi-Fi, Bluetooth, Mobile data, NFC — each driven through the framework
svccommand at shell privilege. -
Private DNS — dropdown to set DNS mode off, opportunistic (automatic), or hostname (a specific DoT provider). Applied via
NetworkGovernor.setPrivateDns.
- Adaptive/auto brightness toggle. When off, a brightness slider (0–255) sets a fixed level; enabling auto-brightness is disabled first so the manual value sticks.
- Auto-rotate toggle.
- Screen timeout — pick from 15s / 30s / 1m / 2m / 5m / 10m / 30m.
- Independent volume sliders for Media, Ring, and Alarm streams. Values are read from and written to the real
AudioService(with amedia volumecommand fallback), so they move the same levels the hardware keys do.
- Animations toggle — sets window / transition / animator scales together (1.0 on, 0.0 off).
- Font scale slider — 0.70× to 2.00×, the same knob as Settings ▸ Display ▸ Font size, applied system-wide.
-
Reboot and Shutdown buttons, each behind a confirmation dialog. Reboot supports targeted reasons (normal,
recovery,bootloader,fastboot,edl,quiescent) at the API level.
Everything routes through the IDeviceControlPlus binder implemented by the privileged server:
- Toggles that map to system settings use
putSetting/getSettingacross thesystem,secure, andglobalnamespaces. - Radios and USB functions use the framework
svccommand (svc wifi,svc data,svc usb setFunctions, …). - Audio uses the
IAudioServicebinder directly, falling back tomedia volumeif the binder call is unavailable. - The screen reads current state on launch (settings values + stream volumes) so switches and sliders reflect reality.
Because it's all shell-level framework access, none of this needs root — but it also can't do things shell UID isn't allowed to (that's the same boundary described in the Permissions page).
-
Reboot reasons like
edlorfastbootdepend on the device/OEM honoring them; unsupported reasons fall back to a normal reboot or do nothing. - USB function switching (MTP, RNDIS/tether, MIDI, NCM, ADB, charging-only) is exposed by the API; on some OEM ROMs the USB HAL resets the function shortly after, which is a platform behavior, not a Shizuku+ limitation.
- Setting Private DNS to hostname mode requires a valid DoT provider hostname; an invalid host will leave DNS unresolved just as it would in Settings.
- Permissions — why shell UID can do this and where the boundary is.
- AICore+ Automation Bridge — driving the device programmatically for automation.
- Knowledgebase & Troubleshooting.