ideviceinfo
Get information about connected iOS devices
TLDR
Display detailed information about the connected device
Show information about a specific device by UDID
SYNOPSIS
ideviceinfo [OPTIONS]
PARAMETERS
-u, --udid
Specifies the Unique Device Identifier (UDID) of the target device to query, useful when multiple devices are connected.
-k, --key
Retrieves the value associated with a specific information key. For example, 'ProductType' or 'ProductVersion'.
-q, --domain
Fetches all key-value pairs within a specified information domain. For instance, 'com.apple.disk_usage'.
-x, --xml
Outputs the retrieved information in XML format, which is useful for programmatic parsing.
-s, --simple
Used with '--domain', outputs values in a simplified plist format, avoiding nested structures for easier readability.
-o, --output
Redirects the command's output to the specified file instead of standard output.
-d, --debug
Enables verbose debug output, providing more detailed information about the communication process for troubleshooting.
-v, --version
Displays the version information of the ideviceinfo utility.
-h, --help
Shows the command's usage instructions and available options.
DESCRIPTION
ideviceinfo is a command-line tool from the libimobiledevice project. It allows users on Linux and macOS to interact with and extract various details from connected Apple iOS devices (iPhones, iPads, iPods) without needing proprietary software like iTunes or Finder.
The command queries the device's internal services to fetch a wide array of information, including but not limited to: the device's name, product type, serial number, iOS version, unique device identifier (UDID), and network details. It can either dump all available information in a structured format (often plist-like or XML) or retrieve the value for a specific key or an entire domain of information.
This utility is invaluable for system administrators, developers, and power users who require quick access to device specifications for inventory, scripting, troubleshooting, or automated tasks. It forms a core component of the open-source ecosystem for managing iOS devices on non-Apple operating systems.
CAVEATS
To function correctly, ideviceinfo requires the libimobiledevice libraries and the usbmuxd daemon to be running and properly configured.
The connected iOS device must be unlocked and have trusted the computer where the command is executed, especially on first connection, by accepting the "Trust This Computer" prompt. Some information keys or domains might be inaccessible due to iOS security restrictions or specific device configurations.
COMMON USE CASES
- System Inventory: Quickly gather hardware and software details for asset management or auditing purposes.
- Troubleshooting: Verify basic device connectivity and retrieve critical information when diagnosing device issues.
- Scripting and Automation: Integrate into scripts to programmatically fetch device specifications, useful for automated testing or device provisioning workflows.
EXAMPLES
To dump all device information: ideviceinfo
To get the device's product type: ideviceinfo -k ProductType
To list all keys in the 'SoftwareBehavior' domain: ideviceinfo -q SoftwareBehavior
To retrieve information from a specific device by UDID: ideviceinfo -u 0123456789abcdef0123456789abcdef -k DeviceName
HISTORY
ideviceinfo is an integral part of the libimobiledevice open-source project, initiated to provide a cross-platform (primarily Linux and macOS) API for communicating with Apple devices running iOS. The project emerged as a community effort to reverse-engineer Apple's proprietary communication protocols, offering an alternative to iTunes/Finder.
Since its inception, the utility has been continuously updated and maintained by volunteers, adapting to new iOS versions and device models. Its development reflects the ongoing need for open-source tools to interact with closed-source hardware, making it a foundational tool for iOS device management and development outside the Apple ecosystem.
SEE ALSO
idevice_id(1), idevicesyslog(1), ifuse(1), iproxy(1), usbmuxd(8)