idevice
Developer Tools

Energy Monitor

Sample Xcode energy gauge data.

Energy Monitor is a DVT client built on RemoteServerClient. It opens the com.apple.xcode.debug-gauge-data-providers.Energy channel.

Use It For

  • Connect through the DVT remote server.
  • Call the service-specific DTX methods.
  • Use the matching idevice-tools command when one exists.

Feature Flag

Cargo.toml
[dependencies]
idevice = { version = "0.1.64", features = ["usbmuxd", "energy_monitor"] }

Service Names

PathValue
DVT Lockdowncom.apple.instruments.remoteserver
DVT Lockdown fallbackcom.apple.instruments.remoteserver.DVTSecureSocketProxy
DVT RSDcom.apple.instruments.dtservicehub
DVT channelcom.apple.xcode.debug-gauge-data-providers.Energy

Rust Example

src/main.rs
use idevice::dvt::{
    RemoteServerClient,
    energy_monitor::EnergyMonitorClient,
};

let mut remote = RemoteServerClient::connect(&provider).await?;
let mut client = EnergyMonitorClient::new(&mut remote).await?;
let pids = [1234];
client.start_sampling(&pids).await?;
let attrs = client.sample_attributes(&pids).await?;
println!("{attrs:#?}");

CLI Equivalent

Terminal
idevice-tools energy_monitor 1234

Common Errors

ErrorWhat to check
Channel creation failedThe DVT remote server did not accept the channel identifier.
Protocol decode errorCheck that the client and device service are using the expected DTX payload shape.
Developer service unavailableStart from the iOS 17+ tunnel path or a device state that exposes developer services.

Source

On this page