We are currently developing a Unity application for Magic Leap 2 using the following environment:
- Unity Editor version: 2022.3.14f1
- ML2 OS version: 1.7.0
- Unity SDK version: 1.12.1
- Host OS: Windows
This application includes a “standby state” in which it waits to receive a specific message from an external device via BLE communication. During this state, no visual output to the user is required, and the application continues to run in the foreground.
To minimize battery consumption during this standby state, we aim to keep only the BLE communication active while suspending unnecessary processes. We are currently considering the following power-saving measures for this purpose. Could you please let us know whether each of these measures is feasible on Magic Leap 2, and if so, what the recommended implementation method would be?
- Temporarily stopping rendering or lowering the frame rate
- Controlling screen brightness
- Controlling Global Dimming (Does Global Dimming affect power consumption? If so, which setting consumes more power:
dimmerValue
0 or 1?)
- Temporarily disabling sensors such as the video camera, depth camera, eye camera, world camera, ambient light sensor, IMU, etc.
- Controlling CPU/GPU clock speeds
Additionally, if there are any other recommended techniques for power saving, we would greatly appreciate your guidance.
Some of what you’re trying to do isn’t currently supported on Magic Leap 2, but reducing GPU/CPU load and disabling visuals when possible will lower power usage. The Developer HUD is useful for monitoring performance and resource consumption in real time.
Regarding the specific settings you mentioned:
Temporarily stopping rendering / lowering frame rate
Unfortunately, the frame rate is fixed at 60Hz—you can’t change it at runtime.
Controlling screen brightness
This is managed by the OS, and apps can’t override it.
Global Dimming
A dimmer value of 0
uses less power than 1
. So you should keep the dimmer off if you are looking for maximum power saving.
Disabling sensors (video, depth, eye, world cameras, IMU, ALS, etc.)
There’s no fine-grained control over most of these. The system requires them for tracking and environment understanding. The video camera can be toggled, but the rest are always active if the device is in use.
Controlling CPU/GPU clocks
Not supported. Clock speeds are managed by the system for thermal and performance balance.
You can also enable Standby Mode in the device battery settings that will enable when no face is detected.
Thank you for your response.
I have a few additional questions.
Is it possible to intentionally enable or disable Standby Mode from the application side?
Also, during Standby Mode, does BLE communication continue, or is it suspended ?