# Lirum Device Info Documentation (Full) Base URL: https://docs.lirumlabs.com/ Generated: 2026-07-18 This file is generated from the Markdown sources in the /docs directory. Curated index: https://docs.lirumlabs.com/llms.txt --- ## Audio Source: device-info/audio.md URL: https://docs.lirumlabs.com/device-info/audio The **Audio** category lists model-level audio hardware and capabilities, such as speaker/microphone configuration and supported formats. ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Notes](#notes) ## Overview {#overview} To test audio output, see **[Speaker Test](/tools/speaker-test)**. All fields in this category are model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | Headphone Volume Control | Spec | Headphone volume control capability. | | Physical Volume Control | Spec | Physical Volume Control information for this device. | | Frequency Response | Spec | Audio frequency response. | | Audio Codec | Spec | Audio processing codec. | | Built-in Speakers | Spec | Number and type of built-in speakers. | | Built-in Microphone | Spec | Built-in microphone information. | | Speaker Dynamic Range | Spec | Speaker increased dynamic range. | | Earphone Port | Spec | Earphone port type. | | Headphone Jack | Spec | 3.5mm headphone jack. | | Dolby Atmos | Spec | Dolby Atmos spatial audio support. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Spec fields are loaded from Lirum's built-in device database and may appear after a short delay. --- ## Barometer Source: device-info/barometer.md URL: https://docs.lirumlabs.com/device-info/barometer The **Barometer** category shows live barometric pressure and relative altitude (when your device includes a barometer). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Notes](#notes) ## Overview {#overview} For barometer charts and status, see **[Barometer (Tool)](/tools/barometer)**. All fields in this category are live runtime readings (from iOS). ## Field Reference {#field-reference} Live fields are fetched from iOS at the interval shown. Values can change as your device state changes. | Field | Updates | What It Means | | --- | --- | --- | | Barometric Pressure | Live (about 1s) | Current barometric pressure in kPa (kilopascals). | | Relative Altitude | Live (about 1s) | Current relative altitude in meters based on pressure. | | Barometer Available | Live (about 1s) | Whether the barometer is available on this device. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Barometer data is only available on devices with a built-in barometer sensor. - Barometric Pressure and Relative Altitude require **Motion & Fitness** permission. If permission has not been granted, only the Barometer Available field will display a value. --- ## Battery Source: device-info/battery.md URL: https://docs.lirumlabs.com/device-info/battery The **Battery** category combines live battery status (level/state) with model-level battery specs and estimated durations (talk time, video playback, and more). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Live Fields](#live-fields) - [Spec Fields](#spec-fields) - [Notes](#notes) ## Overview {#overview} For a battery-focused view, see **[Battery Reports](/tools/battery-reports)**. This category mixes live runtime readings (from iOS) with model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} ### Live Fields {#live-fields} Live fields are fetched from iOS at the interval shown. Values can change as your device state changes. | Field | Updates | What It Means | | --- | --- | --- | | Battery Level | Live (about 5s) | Current battery level percentage. | | Battery State | Live (about 5s) | Current battery charging state. | ### Spec Fields {#spec-fields} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | Battery Type | Spec | Type of battery. | | Battery Capacity | Spec | Total battery capacity. | | Voltage | Spec | Battery voltage. | | Wireless Charging | Spec | Supports wireless charging. | | Talk Time | Spec | Talk time on a single charge. | | Standby Time | Spec | Standby time on a single charge. | | Video Playback | Spec | Video playback time on a single charge. | | Browse (Wi-Fi) | Spec | Internet browsing time on Wi-Fi. | | Energy | Spec | Battery energy as listed in model specs (typically shown as a human-readable value). | | Energy (SI) | Spec | Battery energy expressed in SI units (joules), when available. | | Video Recording | Spec | Video recording time on a single charge. | | Photo Taking | Spec | Photo taking time on a single charge. | | GPS Navigation | Spec | GPS navigation time on a single charge. | | FaceTime | Spec | FaceTime usage time on a single charge. | | Browse (3G) | Spec | Internet browsing time on 3G. | | Books Reading | Spec | Book reading time on a single charge. | | Audio (Bluetooth) | Spec | Audio playback time over Bluetooth. | | Audio Playback | Spec | Audio playback time on a single charge. | | 3D Gaming | Spec | 3D gaming time on a single charge. | | 2D Gaming | Spec | 2D gaming time on a single charge. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Battery Level and Battery State are live readings; battery specs vary by model and are shown as specs. --- ## Camera Source: device-info/camera.md URL: https://docs.lirumlabs.com/device-info/camera The **Camera** category lists camera hardware and feature support for your device model (front/rear lenses, photo/video modes, and related capabilities). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Notes](#notes) ## Overview {#overview} To verify the camera end-to-end (preview/capture), use the **[Camera (Tool)](/tools/camera)** tool. All fields in this category are model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | Front Camera | Spec | Front-facing camera. | | Telephoto Camera Resolution | Spec | Resolution of the telephoto camera. | | TrueDepth Camera | Spec | TrueDepth camera for Face ID. | | Number of Cameras | Spec | Number of rear cameras. | | Primary Camera Name | Spec | Marketing name of the primary rear camera. | | Primary Camera Resolution | Spec | Resolution of the primary rear camera. | | Primary Camera Video | Spec | Video capabilities of the primary camera. | | Video Cinematic Mode | Spec | Indicates if the camera supports Cinematic Mode for video. | | Apple ProRAW | Spec | Indicates if the camera supports Apple ProRAW format. | | Night Mode | Spec | Enhanced low-light photography. | | LiDAR Scanner | Spec | Light Detection and Ranging sensor. | | Front Camera Count | Spec | Number of front cameras. | | Front Resolution | Spec | Front camera resolution. | | Front Camera Pixels | Spec | Number of pixels in the front camera sensor. | | Front Camera Aperture | Spec | Aperture size of the front camera. | | Front Camera Focal Length | Spec | Focal length of the front camera. | | Front Focus | Spec | Focus capabilities of the front camera. | | Front Auto Image Stabilization | Spec | Indicates if the front camera has auto image stabilization. | | Front Face ID | Spec | Indicates if the front camera supports Face ID. | | Front Animoji | Spec | Indicates if the front camera supports Animoji. | | Front Memoji | Spec | Indicates if the front camera supports Memoji. | | Front Photonic Engine | Spec | Indicates if the front camera uses the Photonic Engine. | | Front Portrait Mode | Spec | Indicates if the front camera supports Portrait Mode. | | Front Portrait Lighting | Spec | Indicates if the front camera supports Portrait Lighting. | | Front Center Stage | Spec | Indicates if the front camera supports Center Stage. | | Front Smart HDR | Spec | Smart HDR capabilities of the front camera. | | Front Live Photos | Spec | Indicates if the front camera supports Live Photos. | | Front Wide Color Capture | Spec | Indicates if the front camera supports wide color capture. | | Front Flash | Spec | Flash capabilities of the front camera. | | Front Video Cinematic Stabilization | Spec | Indicates if the front camera has cinematic video stabilization. | | Front Camera Video | Spec | Video capabilities of the front camera. | | Front Video Recording (ProRes) | Spec | Indicates if the front camera supports ProRes video recording. | | Front HDR Video | Spec | HDR video recording with front camera. | | Primary Camera Pixels | Spec | Number of pixels in the primary rear camera sensor. | | Primary Camera Focal Ratio | Spec | Focal ratio of the primary rear camera. | | Primary Rear Camera Focal Length | Spec | Focal length of the primary rear camera. | | Primary Rear Camera Focus Type | Spec | Focus type of the primary rear camera. | | Primary Rear Camera Stabilization | Spec | Stabilization features of the primary rear camera. | | Primary Optical Zoom | Spec | Optical zoom capabilities of the primary camera. | | Primary Rear Camera Digital Zoom | Spec | Digital zoom capabilities of the primary rear camera. | | Rear Primary Photonic Engine | Spec | Indicates if the primary rear camera uses the Photonic Engine. | | Rear Primary Night Mode | Spec | Indicates if the primary rear camera supports Night Mode. | | Telephoto Camera | Spec | Indicates presence of a rear telephoto camera. | | UltraWide Camera | Spec | Indicates presence of a rear ultrawide camera. | | Telephoto Camera Aperture | Spec | Aperture size of the telephoto camera. | | Telephoto Camera Focal Length | Spec | Focal length of the telephoto camera. | | Telephoto Camera Focus Type | Spec | Focus type of the telephoto camera. | | Telephoto Camera Stabilization | Spec | Stabilization features of the telephoto camera. | | Telephoto Optical Zoom | Spec | Optical zoom capabilities of the telephoto camera. | | Telephoto Digital Zoom | Spec | Digital zoom capabilities of the telephoto camera. | | Telephoto Deep Fusion | Spec | Indicates if the telephoto camera supports Deep Fusion. | | Ultra-Wide Camera Resolution | Spec | Resolution of the ultra-wide camera. | | Ultra-Wide Camera Aperture | Spec | Aperture size of the ultra-wide camera. | | Ultra-Wide Camera Focal Length | Spec | Focal length of the ultra-wide camera. | | Ultra-Wide Camera Focus Type | Spec | Focus type of the ultra-wide camera. | | Ultra-Wide Camera Stabilization | Spec | Stabilization features of the ultra-wide camera. | | Ultra-Wide Optical Zoom | Spec | Optical zoom capabilities of the ultra-wide camera. | | Ultra-Wide Night Mode | Spec | Indicates if the ultra-wide camera supports Night Mode. | | Ultra-Wide Deep Fusion | Spec | Indicates if the ultra-wide camera supports Deep Fusion. | | Rear Panorama | Spec | Panorama capabilities of the rear camera. | | Rear Burst Mode | Spec | Indicates if the rear camera supports Burst Mode. | | Rear Lens Cover | Spec | Type of lens cover for the rear camera. | | Rear Flash | Spec | Type of flash for the rear camera. | | Rear Live Photos | Spec | Indicates if the rear camera supports Live Photos. | | Rear Wide Color Capture | Spec | Indicates if the rear camera supports wide color capture. | | Rear HDR | Spec | Indicates if the rear camera supports HDR. | | Rear Smart HDR | Spec | Indicates if the rear camera supports Smart HDR. | | Rear Video Resolutions | Spec | Supported video resolutions of the rear camera. | | Rear Video ProRes | Spec | Indicates if the rear camera supports ProRes video recording. | | Rear Video Extended Dynamic Range | Spec | Indicates if the rear camera supports extended dynamic range for video. | | Rear Video OIS | Spec | Indicates if the rear camera has Optical Image Stabilization for video. | | Rear Video Cinematic Stabilization | Spec | Indicates if the rear camera has cinematic video stabilization. | | Rear Video Stereo Recording | Spec | Indicates if the rear camera supports stereo audio recording for video. | | Max Video FPS | Spec | Maximum video frame rate. | | Rear Video Slo-Mo | Spec | Slow-motion video capabilities of the rear camera. | | Rear Video Timelapse with Stabilization | Spec | Indicates if the rear camera supports timelapse video with stabilization. | | White Balance | Spec | White balance capabilities of the camera. | | Video Stabilization | Spec | Video stabilization capabilities of the camera. | | Video HDR | Spec | Indicates if the camera supports HDR for video. | | Photo HDR | Spec | Indicates if the camera supports HDR for photos. | | Facetime | Spec | Indicates if the device supports Facetime. | | Video ProRes | Spec | Indicates if the camera supports ProRes for video. | | Video Recording Formats | Spec | Supported video recording formats. | | Spatial Video | Spec | Indicates if the camera supports spatial video recording. | | Tap to Focus | Spec | Indicates if the camera supports tap to focus. | | LED Video Light | Spec | Indicates if the device has an LED video light. | | LED Flash | Spec | Indicates if the device has an LED flash. | | True Tone Flash | Spec | Indicates if the device has a True Tone flash. | | Flash Flicker Sensor | Spec | Indicates if the device has a flicker sensor for the flash. | | IR Filter | Spec | Indicates if the camera has an IR filter. | | Geo-Tagging | Spec | Indicates if the camera supports geo-tagging for photos and videos. | | Front Face Detection | Spec | Face detection capabilities of the front camera. | | Deep Fusion | Spec | Indicates if the camera supports Deep Fusion. | | Focus Pixels | Spec | Indicates if the camera uses Focus Pixels. | | Photonic Engine | Spec | Indicates if the camera uses the Photonic Engine. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Spec fields are loaded from Lirum's built-in device database and may appear after a short delay. --- ## Compatibility Source: device-info/compatibility.md URL: https://docs.lirumlabs.com/device-info/compatibility The **Compatibility** category lists model-level compatibility with select accessories (for example, keyboards, Apple Pencil, and Apple Watch). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Notes](#notes) ## Overview {#overview} All fields in this category are model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | Magic Keyboard for iPad Pro M4 | Spec | Compatibility with Magic Keyboard for iPad Pro M4. | | Magic Keyboard | Spec | Compatibility with Magic Keyboard. | | Magic Keyboard Folio | Spec | Compatible with Magic Keyboard Folio. | | Smart Keyboard | Spec | Compatible with Smart Keyboard. | | Smart Keyboard Folio | Spec | Compatibility with Smart Keyboard Folio. | | Apple Pencil | Spec | Compatibility with Apple Pencil. | | Apple Watch | Spec | Can be paired with Apple Watch. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Spec fields are loaded from Lirum's built-in device database and may appear after a short delay. --- ## CPU Source: device-info/cpu.md URL: https://docs.lirumlabs.com/device-info/cpu The **CPU** category focuses on processor usage and runtime CPU characteristics (architecture, caches, frequency), plus model-level CPU specs when available. ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Live Fields](#live-fields) - [Spec Fields](#spec-fields) - [Notes](#notes) ## Overview {#overview} For charts and a focused view, see **[CPU Monitor](/tools/cpu-monitor)**. This category mixes live runtime readings (from iOS) with model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} ### Live Fields {#live-fields} Live fields are fetched from iOS at the interval shown. Values can change as your device state changes. | Field | Updates | What It Means | | --- | --- | --- | | CPU Architecture | Live (about 60s) | The architecture of the CPU. | | CPU Frequency | Live (about 60s) | CPU clock frequency. | | CPU Family | Live (about 60s) | CPU family identifier. | | CPU Type (HW) | Live (about 60s) | CPU type hardware identifier. | | Active Cores | Live (about 60s) | Number of active CPU cores. | | L1 I-Cache | Live (about 60s) | L1 instruction cache size. | | L1 D-Cache | Live (about 60s) | L1 data cache size. | | L2 Cache | Live (about 60s) | L2 cache size. | | L3 Cache | Live (about 60s) | L3 cache size. | | CPU Core Count | Live (about 1s) | Total number of CPU cores reported by iOS. | | CPU Usage | Live (about 1s) | Total CPU utilization across all cores. | | CPU Usage Per Core | Live (about 1s) | Per-core CPU utilization breakdown (one value per core). | ### Spec Fields {#spec-fields} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | CPU Name | Spec | Name of the CPU chip (e.g. Apple A17 Pro). | | CPU Manufacturer | Spec | CPU manufacturer (e.g. TSMC). | | CPU Designed By | Spec | CPU designer (e.g. Apple). | | CPU Type | Spec | CPU type from the device database. | | Instruction Set | Spec | CPU instruction set architecture (e.g. ARMv8.6-A). | | Manufacturing Process | Spec | CPU manufacturing process node (e.g. 3nm). | | High-Performance Cores | Spec | Number of high-performance (P) cores. | | Low-Power Cores | Spec | Number of energy-efficient (E) cores. | | Maximum Clock Speed | Spec | Maximum CPU clock speed. | | Neural Engine | Spec | Neural Engine availability. | | Out-of-Order Execution | Spec | CPU supports out-of-order instruction execution. | | Issue Width | Spec | Number of instructions that can be issued simultaneously. | | Pipeline Depth | Spec | Depth of CPU instruction pipeline. | | Core Base | Spec | CPU core base architecture. | | Transistors | Spec | Number of transistors in the CPU. | | Simultaneous Cores | Spec | Number of cores that can run simultaneously. | | Motion Coprocessor | Spec | Motion data processing coprocessor. | | Actual Clock Speed | Spec | Current CPU clock speed. | | L1 Cache | Spec | Level 1 cache size. | | L2 Cache | Spec | Level 2 cache size. | | L3 Cache | Spec | Level 3 cache size. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. --- ## Dimensions Source: device-info/dimensions.md URL: https://docs.lirumlabs.com/device-info/dimensions The **Dimensions** category lists the physical size and weight of your device model. ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Notes](#notes) ## Overview {#overview} All fields in this category are model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | Weight | Spec | Device weight. | | Height | Spec | Device height. | | Width | Spec | Device width. | | Depth | Spec | Device thickness. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Spec fields are loaded from Lirum's built-in device database and may appear after a short delay. --- ## Display Source: device-info/display.md URL: https://docs.lirumlabs.com/device-info/display The **Display** category combines runtime display details (scale, native scale, bounds) with panel specs (resolution, density, HDR, and feature support). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Live Fields](#live-fields) - [Spec Fields](#spec-fields) - [Notes](#notes) ## Overview {#overview} To spot dead pixels or uniformity issues, see **[Display Patterns](/tools/display-patterns)**. This category mixes live runtime readings (from iOS) with model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} ### Live Fields {#live-fields} Live fields are fetched from iOS at the interval shown. Values can change as your device state changes. | Field | Updates | What It Means | | --- | --- | --- | | Screen Scale | Live (about 60s) | Current screen scale. | | Native Scale | Live (about 60s) | Native display scale. | | Screen Bounds | Live (about 60s) | Current screen bounds (points). | ### Spec Fields {#spec-fields} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | Screen Type | Spec | Type of display technology. | | Screen Size | Spec | Display size. | | Resolution | Spec | Screen resolution. | | Pixel Density | Spec | Screen pixel density (PPI). | | Colors | Spec | Screen color depth. | | Typical Max Brightness | Spec | Typical maximum brightness level. | | True Tone | Spec | True Tone display technology. | | ProMotion | Spec | ProMotion high refresh rate display. | | Contrast Ratio | Spec | Screen contrast ratio. | | Aspect Ratio | Spec | Screen aspect ratio. | | Screen-to-Body Ratio | Spec | Screen-to-body ratio. | | Wide Color Gamut | Spec | Wide color gamut display support. | | XDR Max Brightness | Spec | XDR maximum brightness level. | | Fingerprint Coating | Spec | Fingerprint-resistant oleophobic coating. | | Laminated Display | Spec | Laminated display technology. | | Anti-Reflective Coating | Spec | Anti-reflective coating technology. | | Reflectance | Spec | Screen reflectance level. | | Night Shift | Spec | Night Shift support. | | HDR10 | Spec | HDR10 support. | | Apple Pencil Hover | Spec | Apple Pencil hover detection support. | | Retina Display | Spec | Retina display technology. | | Screen Area | Spec | Screen surface area. | | Dolby Vision | Spec | Dolby Vision HDR support. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Spec fields are loaded from Lirum's built-in device database and may appear after a short delay. --- ## Environmental Source: device-info/environmental.md URL: https://docs.lirumlabs.com/device-info/environmental The **Environmental** category lists model-level operating ranges and environmental specs (temperature, humidity, altitude, and related limits). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Notes](#notes) ## Overview {#overview} All fields in this category are model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | Greenhouse Gas Emissions | Spec | The greenhouse gas emissions produced during the device's lifecycle. | | Operating Temperature (deg C) | Spec | Operating temperature range in Celsius. | | Non-operating Temperature (deg C) | Spec | Non-operating temperature range in Celsius. | | Operating Temperature (deg F) | Spec | Operating temperature range in Fahrenheit. | | Non-operating Temperature (deg F) | Spec | Non-operating temperature range in Fahrenheit. | | Max Operating Altitude (m) | Spec | Maximum operating altitude in meters. | | Max Operating Altitude (ft) | Spec | Maximum operating altitude in feet. | | Relative Humidity | Spec | Relative humidity operating range. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Spec fields are loaded from Lirum's built-in device database and may appear after a short delay. --- ## Features & Sensors Source: device-info/features-and-sensors.md URL: https://docs.lirumlabs.com/device-info/features-and-sensors The **Features & Sensors** category summarizes hardware features and sensors available on your device model (biometrics, connectors, motion sensors, and more). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Notes](#notes) ## Overview {#overview} All fields in this category are model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | Touch ID | Spec | Fingerprint authentication. | | Face ID | Spec | Facial recognition authentication. | | Port Type | Spec | Type of charging/data port. | | Headphone Jack | Spec | 3.5mm headphone jack. | | Accelerometer | Spec | Motion and acceleration sensor. | | Gyroscope | Spec | Angular rate sensor. | | Proximity Sensor | Spec | Detects objects near the device. | | Ambient Light Sensor | Spec | Detects ambient light levels. | | Compass | Spec | Digital compass for direction sensing. | | Barometer | Spec | Barometric pressure sensor. | | LiDAR Scanner | Spec | Light Detection and Ranging sensor. | | FaceTime Camera | Spec | FaceTime video calling support. | | Vibration | Spec | Vibration feature. | | Silent Switch | Spec | Silent mode switch. | | Rotation Lock | Spec | Screen rotation lock status. | | Ear Speaker | Spec | Built-in ear speaker. | | Voice Control | Spec | Voice control functionality. | | Siri | Spec | Siri voice assistant. | | Multitasking | Spec | Multitasking capabilities. | | AirPlay | Spec | AirPlay streaming capabilities. | | AirPrint | Spec | AirPrint wireless printing. | | Apple Pay | Spec | Apple Pay contactless payment. | | Home Button | Spec | Physical Home button. | | Port Speed | Spec | Main port data transfer speed. | | Side Port | Spec | Side port connector type. | | External Display | Spec | External display support. | | GLONASS | Spec | Russian satellite navigation system support. | | A-GPS | Spec | Assisted GPS for faster positioning. | | Water Resistance | Spec | Water and dust resistance rating. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Spec fields are loaded from Lirum's built-in device database and may appear after a short delay. --- ## General Source: device-info/general.md URL: https://docs.lirumlabs.com/device-info/general The **General** category covers device identity, OS/build details, localization settings, and a few runtime signals (such as Low Power Mode and thermal state). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Live Fields](#live-fields) - [Spec Fields](#spec-fields) - [Notes](#notes) ## Overview {#overview} This category mixes live runtime readings (from iOS) with model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} ### Live Fields {#live-fields} Live fields are fetched from iOS at the interval shown. Values can change as your device state changes. | Field | Updates | What It Means | | --- | --- | --- | | Device Name | Live (about 1s) | User-assigned device name. | | System Version | Live (about 1s) | Device's operating system version. | | System Name | Live (about 1s) | Operating system name. | | Build Number | Live (about 1s) | Device's build number. | | Device ID | Live (about 1s) | Unique device identifier. | | Model ID (Computed) | Live (about 60s) | Device Model ID (Computed). | | Device Family | Live (about 1s) | Device family type. | | Boot Time | Live (about 1s) | Device boot time. | | Uptime | Live (about 1s) | Device uptime. | | Locale | Live (about 1s) | Device locale identifier. | | Time Zone | Live (about 1s) | Device time zone identifier. | | Region Code | Live (about 60s) | Current region code. | | Language Code | Live (about 60s) | Current language code. | | Calendar | Live (about 60s) | Current calendar identifier. | | Process Name | Live (about 60s) | Current process name. | | Process ID | Live (about 60s) | Current process identifier. | | Host Name | Live (about 60s) | Device host name. | | Low Power Mode | Live (about 60s) | Low Power Mode status. | | Thermal State | Live (about 60s) | Current thermal state. | | Jailbreak | Live (about 300s) | Heuristic detection of jailbreak status. | | Hardware Model | Live (about 60s) | Internal hardware model identifier. | | Machine ID | Live (about 60s) | Machine identifier. | | Byte Order | Live (about 60s) | System byte order. | ### Spec Fields {#spec-fields} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | Model | Spec | Model name. | | Model Number | Spec | Device model number. | | Hardware Model | Spec | Internal hardware model identifier. | | Initial iOS Version | Spec | Initial iOS version shipped with this device. | | Latest iOS Version | Spec | Latest iOS version supported by this device. | | First Release | Spec | When this device model was first released. | | Announced | Spec | When this device model was announced. | | Discontinued | Spec | When this device model was discontinued. | | Model ID (DB) | Spec | Device Model ID (Static). | | WiFi Only | Spec | Is WiFi only device. | | Cellular | Spec | Has cellular capability. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. --- ## GPU Source: device-info/gpu.md URL: https://docs.lirumlabs.com/device-info/gpu The **GPU** category lists model-level graphics processor information (GPU model, cores, and related specs). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Notes](#notes) ## Overview {#overview} All fields in this category are model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | GPU Name | Spec | Name of the Graphics Processing Unit. | | GPU Cores | Spec | Number of GPU cores. | | OpenGL Version | Spec | Supported OpenGL version. | | GPU Clock | Spec | GPU clock speed. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Spec fields are loaded from Lirum's built-in device database and may appear after a short delay. --- ## Location Source: device-info/location.md URL: https://docs.lirumlabs.com/device-info/location The **Location** category shows live GPS coordinates, movement (speed/course), and accuracy values reported by iOS. ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Notes](#notes) ## Overview {#overview} For a map-first view of GPS, use **[GPS Status](/tools/gps-status)**. All fields in this category are live runtime readings (from iOS). ## Field Reference {#field-reference} Live fields are fetched from iOS at the interval shown. Values can change as your device state changes. | Field | Updates | What It Means | | --- | --- | --- | | Latitude | Live (about 1s) | Current latitude. | | Longitude | Live (about 1s) | Current longitude. | | Altitude | Live (about 1s) | Current altitude in meters. | | Speed | Live (about 1s) | Current speed in meters per second. | | Course | Live (about 1s) | Current course in degrees. | | Horizontal Accuracy | Live (about 1s) | Horizontal accuracy in meters. | | Vertical Accuracy | Live (about 1s) | Vertical accuracy in meters. | | Timestamp | Live (about 1s) | Time of location update. | | Floor | Live (about 1s) | Current floor level. | | Magnetic Heading | Live (about 1s) | Magnetic heading in degrees. | | True Heading | Live (about 1s) | True heading in degrees. | | Heading Accuracy | Live (about 1s) | Heading accuracy in degrees. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Some network and location fields may require Location permission to be granted in iOS Settings. --- ## Memory Source: device-info/memory.md URL: https://docs.lirumlabs.com/device-info/memory The **Memory** category provides live memory usage, a breakdown by memory state, and VM statistics (page-ins, faults, purges, and more). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Live Fields](#live-fields) - [Spec Fields](#spec-fields) - [Notes](#notes) ## Overview {#overview} For charts and a focused view, see **[Memory](/tools/memory-manager)**. This category mixes live runtime readings (from iOS) with model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} ### Live Fields {#live-fields} Live fields are fetched from iOS at the interval shown. Values can change as your device state changes. | Field | Updates | What It Means | | --- | --- | --- | | Total Memory | Live (about 1s) | Total physical memory available. | | Available Memory | Live (about 1s) | Memory available for immediate use. | | Active Memory | Live (about 1s) | Memory currently in use. | | Inactive Memory | Live (about 1s) | Memory not currently in use. | | Free Memory | Live (about 1s) | Memory available for use. | | Compressed Memory | Live (about 1s) | Memory that has been compressed to save space. | | Wired Memory | Live (about 1s) | Memory reserved and cannot be freed. | | Other Memory | Live (about 1s) | Memory used by other processes. | | Page Ins | Live (about 1s) | Number of memory page ins. | | Page Outs | Live (about 1s) | Number of memory page outs. | | Page Faults | Live (about 1s) | Number of memory page faults. | | COW Faults | Live (about 1s) | Number of copy-on-write faults. | | Purgeable Count | Live (about 1s) | Number of purgeable pages. | | Purges | Live (about 1s) | Number of memory purges. | | Zero Filled | Live (about 1s) | Number of zero filled pages. | | Reactivated | Live (about 1s) | Number of reactivated pages. | | Speculative Read | Live (about 1s) | Number of speculative reads. | | Available Memory %% | Live (about 1s) | Percentage of memory available. | | Wired Memory %% | Live (about 1s) | Percentage of wired memory. | | Active Memory %% | Live (about 1s) | Percentage of active memory. | | Inactive Memory %% | Live (about 1s) | Percentage of inactive memory. | | Free Memory %% | Live (about 1s) | Percentage of free memory. | | Compressed Memory %% | Live (about 1s) | Percentage of compressed memory. | | Other Memory %% | Live (about 1s) | Percentage of other memory usage. | | Page Size | Live (about 60s) | System memory page size. | ### Spec Fields {#spec-fields} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | Memory Type | Spec | Type of memory used. | | Memory Size | Spec | Total memory size. | | Memory Clock | Spec | Memory clock speed. | | Virtual Memory Swap | Spec | Virtual memory swap capability. | | Memory Speed | Spec | Memory speed. | | Transfer Rate | Spec | Memory transfer rate. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. --- ## Network Source: device-info/network.md URL: https://docs.lirumlabs.com/device-info/network The **Network** category shows live connection details (IP addresses, SSID, signal strength, transfer counters) and model-level connectivity specs (Wi-Fi standards, cellular bands, Bluetooth profiles). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Live Fields](#live-fields) - [Spec Fields](#spec-fields) - [Notes](#notes) ## Overview {#overview} For real-time throughput graphs, use **[Connection Rate](/tools/connection-rate)**. This category mixes live runtime readings (from iOS) with model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} ### Live Fields {#live-fields} Live fields are fetched from iOS at the interval shown. Values can change as your device state changes. | Field | Updates | What It Means | | --- | --- | --- | | Wi-Fi SSID | Live (about 1s) | Connected Wi-Fi network name. | | Wi-Fi Signal | Live (about 1s) | Wi-Fi signal strength. | | Wi-Fi IPv4 | Live (about 1s) | Wi-Fi IPv4 address. | | Wi-Fi IPv6 | Live (about 1s) | Wi-Fi IPv6 addresses. | | Wi-Fi Upload | Live (about 1s) | Wi-Fi upload data. | | Wi-Fi Download | Live (about 1s) | Wi-Fi download data. | | Carrier | Live (about 1s) | Cellular carrier name. | | Network Type | Live (about 1s) | Cellular network technology. | | Cellular IPv4 | Live (about 1s) | Cellular IPv4 address. | | Cellular IPv6 | Live (about 1s) | Cellular IPv6 addresses. | | Cellular Upload | Live (about 1s) | Cellular upload data. | | Cellular Download | Live (about 1s) | Cellular download data. | | Local IPv4 | Live (about 1s) | Primary local IPv4 address reported by the device. | | Local IPv6 | Live (about 1s) | Primary local IPv6 address(es) reported by the device. | | External IPv4 | Live (about 1s) | External IPv4 address. | | External IPv6 | Live (about 1s) | External IPv6 address. | | Subnet Mask | Live (about 1s) | Network subnet mask. | | Gateway | Live (about 1s) | Network gateway address. | | Network Adapters | Live (about 1s) | Network adapter names. | ### Spec Fields {#spec-fields} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | Wi-Fi 6 (802.11ax) | Spec | Support for Wi-Fi 6 (802.11ax) standard. | | Bluetooth Version | Spec | Bluetooth version supported. | | 4G LTE | Spec | 4G LTE support. | | 5G | Spec | 5G support. | | SIM Type | Spec | Type of SIM card supported. | | Modem Manufacturer | Spec | Manufacturer of the cellular modem. | | Modem Model | Spec | Model of the cellular modem. | | Wi-Fi 5 (802.11ac) | Spec | Support for Wi-Fi 5 (802.11ac) standard. | | Wi-Fi (802.11a) | Spec | Support for 802.11a standard. | | Wi-Fi 4 (802.11n) | Spec | Support for Wi-Fi 4 (802.11n) standard. | | Wi-Fi (802.11g) | Spec | Support for 802.11g standard. | | Wi-Fi (802.11b) | Spec | Support for 802.11b standard. | | Bluetooth PBAP | Spec | Phone Book Access Profile support. | | Bluetooth PAN | Spec | Personal Area Network profile support. | | Bluetooth HID | Spec | Human Interface Device profile support. | | Bluetooth HFP | Spec | Hands-Free Profile support. | | Bluetooth EDR | Spec | Enhanced Data Rate support. | | Bluetooth AVRCP | Spec | Audio/Video Remote Control Profile support. | | Bluetooth A2DP | Spec | Advanced Audio Distribution Profile support. | | SIM Slot | Spec | SIM card slot configuration. | | EDGE Download | Spec | EDGE download speed. | | EDGE Upload | Spec | EDGE upload speed. | | DC-HSDPA Download | Spec | Dual-Cell HSDPA download speed. | | HSDPA Download | Spec | HSDPA download speed. | | HSUPA Upload | Spec | HSUPA upload speed. | | CDMA Rev.A Download | Spec | CDMA Rev.A download speed. | | CDMA Rev.A Upload | Spec | CDMA Rev.A upload speed. | | CDMA Rev.B Download | Spec | CDMA Rev.B download speed. | | CDMA Rev.B Upload | Spec | CDMA Rev.B upload speed. | | LTE Download | Spec | LTE download speed. | | LTE Upload | Spec | LTE upload speed. | | 5G Download | Spec | 5G download speed. | | 5G Upload | Spec | 5G upload speed. | | Max Download Speed | Spec | Maximum download speed. | | Max Upload Speed | Spec | Maximum upload speed. | | UMTS | Spec | Universal Mobile Telecommunications System support. | | EDGE | Spec | Enhanced Data rates for GSM Evolution support. | | GPRS | Spec | General Packet Radio Service support. | | CDMA Types | Spec | Supported CDMA technology types. | | 5G LTE Bands | Spec | Supported 5G LTE frequency bands. | | 4G LTE Bands | Spec | Supported 4G LTE frequency bands. | | 3G CDMA | Spec | 3G CDMA technology support. | | 3G GSM | Spec | 3G GSM technology support. | | 2G CDMA | Spec | 2G CDMA technology support. | | 2G GSM | Spec | 2G GSM technology support. | | Nike+ | Spec | Nike+ connectivity support. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Some network and location fields may require Location permission to be granted in iOS Settings. --- ## SAR Values Source: device-info/sar-values.md URL: https://docs.lirumlabs.com/device-info/sar-values The **SAR Values** category lists Specific Absorption Rate (SAR) values for the device model (region dependent). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Notes](#notes) ## Overview {#overview} All fields in this category are model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | SAR (US, Head) | Spec | Specific Absorption Rate for head use in US. | | SAR (US, Body) | Spec | Specific Absorption Rate for body use in US. | | SAR (EU, Head) | Spec | Specific Absorption Rate for head use in EU. | | SAR (EU, Body) | Spec | Specific Absorption Rate for body use in EU. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Spec fields are loaded from Lirum's built-in device database and may appear after a short delay. --- ## Storage Source: device-info/storage.md URL: https://docs.lirumlabs.com/device-info/storage The **Storage** category summarizes total, used, and available disk space, plus storage type/options (when available for your model). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Live Fields](#live-fields) - [Spec Fields](#spec-fields) - [Notes](#notes) ## Overview {#overview} For deeper analysis, see **[Storage Analysis](/tools/storage-analysis)**. This category mixes live runtime readings (from iOS) with model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} ### Live Fields {#live-fields} Live fields are fetched from iOS at the interval shown. Values can change as your device state changes. | Field | Updates | What It Means | | --- | --- | --- | | Total Capacity | Live (about 1s) | Total storage capacity. | | Available Space | Live (about 1s) | Available storage space. | | Available Space %% | Live (about 1s) | Percentage of available storage. | | Used Space | Live (about 1s) | Used storage space. | | Used Space %% | Live (about 1s) | Percentage of used storage. | ### Spec Fields {#spec-fields} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | Storage Type | Spec | Type of storage used. | | Available Options | Spec | Available storage capacities for this model. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Spec fields are loaded from Lirum's built-in device database and may appear after a short delay. --- ## System Bus Source: device-info/system-bus.md URL: https://docs.lirumlabs.com/device-info/system-bus The **System Bus** category lists system bus width and frequency (when available for your model). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Field Reference](#field-reference) - [Notes](#notes) ## Overview {#overview} All fields in this category are model-specific specs (from Lirum's built-in device database). ## Field Reference {#field-reference} Spec fields describe your device model. They come from Lirum's built-in device database and do not change at runtime. | Field | Updates | What It Means | | --- | --- | --- | | Bus Width | Spec | The width of the system bus. | | Bus Frequency | Spec | The frequency of the system bus. | ## Notes {#notes} - Some fields may be unavailable depending on device model, iOS version, and permissions. - Spec fields are loaded from Lirum's built-in device database and may appear after a short delay. --- ## gallery Source: gallery.mdx URL: https://docs.lirumlabs.com/gallery import ScreenshotsGallery from '@site/src/components/ScreenshotsGallery'; Browse all screenshots of Lirum Device Info in one place. Click any image to open it, then use your keyboard arrow keys to navigate. --- ## Lirum Device Info Documentation Source: intro.md URL: https://docs.lirumlabs.com/ **Lirum Device Info** is an iOS device diagnostics and device information app for iPhone and iPad. Use it for live monitoring (CPU, memory, storage, thermals, battery), hands-on hardware tests (screen, speaker, microphone, vibration, NFC, sensors), and detailed Apple device specifications. Quick questions it can help answer: - "Is my CPU or memory the bottleneck right now?" - "What exactly is this iPhone or iPad model, and what are its specs?" - "Is this sensor, screen, speaker, microphone, NFC tag, or connection behaving correctly?" Built for developers, IT, and power users (and still friendly if you're just curious), Lirum focuses on **clear visuals**, **useful context**, and **real data from Apple's public APIs**. ## Start Here {#start-here} - Tools and diagnostics: **[Tools](/tools/)** (CPU Monitor, Memory Manager, Storage Analysis, Thermals, NFC, Sensors, and more) - iPhone and iPad specs database: **[Device Information](/category/device-information)** (CPU, Display, Camera, Network, Battery, and more) - App configuration: **[Settings](/support/settings)** - FAQs and troubleshooting: **[Help](/support/help)** - Contact and links: **[About](/support/about)** ## Why Lirum {#why-lirum} - **20+ built-in tools**: monitors and hardware tests in one place (CPU/Memory/Storage/Thermals, sensors, NFC, display patterns, BLE metrics, local AI models, and more). - **Deep device specs**: browse a large Apple device database with hundreds of fields per model, including CPU, Display, Camera, and Network details. - **Compare and explore**: side-by-side device comparisons and an interactive timeline across iOS/visionOS generations. - **Practical troubleshooting**: validate the stuff you actually use (touchscreen, microphone, speaker, vibration, location, Bluetooth, and more). - **Privacy-friendly by design**: diagnostics are primarily on-device, and permissions are only requested when a tool needs them. ## Popular Pages {#popular-pages} - **[CPU Monitor](/tools/cpu-monitor)**: overall CPU usage and per-core activity - **[Memory Manager](/tools/memory-manager)**: understand memory pressure and reclaim RAM - **[Battery Reports](/tools/battery-reports)**: battery health, charge cycles, and analytics - **[Storage Analysis](/tools/storage-analysis)**: storage breakdown and large items - **[Display Patterns](/tools/display-patterns)**: screen checks for dead pixels, tint, and uniformity - **[NFC Read](/tools/nfc-read)** and **[NFC Write](/tools/nfc-write)**: read/write tags (when supported) - **[Bluetooth](/tools/bluetooth)**: BLE scanning and connection diagnostics ## App Navigation {#app-navigation} Lirum uses a tab bar with: - **Home**: an at-a-glance dashboard. - **Tools**: diagnostics and live monitors. - **Info**: device specifications grouped by categories. - **Settings**: updates, purchases, and app preferences. - **About**: documentation, review, contact, and share. ## Device Information {#device-information} The **Info** tab groups specifications into categories (for example CPU, Memory, Display, Camera, Battery, and more). ## Tools {#tools} The **Tools** tab contains user-facing diagnostics and reference tools, like CPU/Memory/Storage monitors, sensor tools, display checks, NFC tools, and more. Start here: **[Tools](/tools/)**. ## Settings And Support {#settings-and-support} See **[Settings](/support/settings)** for updates, purchases, and app preferences, and **[About](/support/about)** for links and contact options. ## FAQ {#faq} ### Where do I find battery health, capacity, and charge cycle data? {#where-do-i-find-battery-health-capacity-and-charge-cycle-data} Start with **[Battery Reports](/tools/battery-reports)** for analytics, and the **[Battery](/device-info/battery)** category for device-level details. ### Which tools can I use for basic hardware tests? {#which-tools-can-i-use-for-basic-hardware-tests} Common quick checks: - **[Speaker Test](/tools/speaker-test)**, **[Microphone](/tools/microphone)**, **[Vibration](/tools/vibration)** - **[Touchscreen](/tools/touchscreen)**, **[Display Patterns](/tools/display-patterns)** ### Do I need to grant permissions? {#do-i-need-to-grant-permissions} Some tools require iOS permissions (for example Bluetooth, Location, Microphone, or Camera) to function. Lirum only prompts when a tool needs it. For policy details, see the **Privacy Policy** at https://lirumlabs.com/privacy-policy/. --- ## End User License Agreement (EULA) Source: legal/eula.md URL: https://docs.lirumlabs.com/legal/eula _Last updated: July 16, 2026_ This End User License Agreement (this "**EULA**") is a legal agreement between you and **Lirum Labs T Sistemas** ("**Lirum**," "**we**," "**us**," or "**our**") governing your download, installation, access, and use of the **Lirum Device Info** application, related software, and any associated features, services, and content (collectively, the "**App**"). By downloading, installing, accessing, or using the App, you agree to be bound by this EULA. If you do not agree, do not use the App. ## Table Of Contents {#table-of-contents} - [1 Eligibility](#1-eligibility) - [2 License Grant](#2-license-grant) - [3 Restrictions](#3-restrictions) - [4 Your Responsibilities](#4-your-responsibilities) - [5 Feature Disclosures And Risk Acknowledgements](#5-feature-disclosures-and-risk-acknowledgements) - [6 Privacy](#6-privacy) - [7 Third-Party Services And Apple Platform Terms](#7-third-party-services-and-apple-platform-terms) - [8 Intellectual Property](#8-intellectual-property) - [9 Disclaimers](#9-disclaimers) - [10 Limitation Of Liability](#10-limitation-of-liability) - [11 Indemnification](#11-indemnification) - [12 Termination](#12-termination) - [13 Changes To This EULA](#13-changes-to-this-eula) - [14 Governing Law And Dispute Resolution](#14-governing-law-and-dispute-resolution) - [15 Contact](#15-contact) ## 1 Eligibility {#1-eligibility} You must be legally capable of entering into this EULA. If you use the App on behalf of an entity, you represent that you have authority to bind that entity to this EULA. ## 2 License Grant {#2-license-grant} Subject to your compliance with this EULA, Lirum grants you a limited, non-exclusive, non-transferable, revocable license to install and use the App for your personal or internal business purposes on devices you own or control. ## 3 Restrictions {#3-restrictions} Except to the extent such restriction is prohibited by applicable law, you must not (and must not permit others to): - copy, modify, or create derivative works of the App; - reverse engineer, decompile, disassemble, or attempt to derive the source code of the App; - bypass or interfere with security, access controls, or usage limitations of the App; - use the App in any unlawful manner or in a way that infringes, misappropriates, or otherwise violates any rights of any person; or - use the App to build, train, benchmark, or improve a competing product or service (unless expressly permitted in writing by Lirum). ## 4 Your Responsibilities {#4-your-responsibilities} You are responsible for: - maintaining the security of your device(s), accounts (if any), and any data you choose to access, scan, analyze, or delete using the App; - verifying the accuracy, completeness, and suitability of any information, measurements, recommendations, diagnostics, or other output before relying on it; and - backing up your data and confirming your selections before performing any action that could change or remove data (including cleanup and deletion actions). The App is a general-purpose device information and utility tool. It is not designed, tested, or certified for use as a safety-critical or emergency system, and its output does not constitute professional advice of any kind (including medical, legal, or financial advice). You acknowledge that the App is not a substitute for the judgment of a qualified professional. If you choose to rely on the App in connection with important or high-risk decisions, you do so at your own discretion and risk, and you should independently verify the relevant output first. To the maximum extent permitted by law, Lirum is not responsible for outcomes of decisions made in reliance on the App or its output. ## 5 Feature Disclosures And Risk Acknowledgements {#5-feature-disclosures-and-risk-acknowledgements} The App provides device information, diagnostics, and utilities. Some features may depend on operating system behavior, device capabilities, permissions you grant, and third-party services. ### 5.1 Device Information, Sensors, And Diagnostics {#51-device-information-sensors-and-diagnostics} The App may display live or recorded readings from device sensors (for example: accelerometer, gyroscope, magnetometer, GPS, barometer, proximity, and other system metrics). You acknowledge and agree that: - sensor and system readings are inherently subject to measurement error, calibration variance, environmental conditions, permission settings, and hardware/OS limitations; - the App displays what Apple and/or the operating system APIs provide; if those readings are incomplete, delayed, unavailable, or inaccurate, Lirum is not responsible for such inaccuracies; and - results may vary by device model and operating system version, and features may change or become unavailable if Apple changes its APIs, privacy rules, or platform behavior. ### 5.2 Storage Analyzer And Cleanup Tools (Deletion Risk) {#52-storage-analyzer-and-cleanup-tools-deletion-risk} The App may include features that analyze device storage usage and may provide tools that help you remove or clean up data (the "**Cleanup Features**"). You acknowledge and agree that: - Cleanup Features may permanently delete files, media, caches, or other data (depending on your device and permissions) and such deletion may be irreversible; - any cleanup or deletion action is initiated by you and requires your confirmation; you are solely responsible for reviewing and verifying what will be removed before you confirm; - you are solely responsible for maintaining backups and for any loss of data, loss of access, corruption, or other damage resulting from cleanup or deletion actions; and - Lirum does not guarantee that using Cleanup Features will increase available storage, improve performance, or produce any particular outcome. ### 5.3 Local AI Models And AI Output (May Be Inaccurate) {#53-local-ai-models-and-ai-output-may-be-inaccurate} The App may allow you to run or interact with local/on-device AI models (for example: Apple-provided models when available, third-party local models, or other AI systems) (the "**AI Features**"). You acknowledge and agree that: - AI output may be incorrect, incomplete, misleading, or fabricated ("hallucinations") and should be independently verified; - AI Features may generate content that is not appropriate for your purposes; you are responsible for how you use and interpret AI output; - AI Features are provided for informational purposes only and are not professional advice; and - Lirum is not responsible for decisions, actions, or outcomes resulting from reliance on AI output, including any data loss, device impact, or other damages. ## 6 Privacy {#6-privacy} Your use of the App is also subject to our Privacy Policy, which describes how we handle personal information and other data. The Privacy Policy is available at: [https://lirumlabs.com/privacy-policy/](https://lirumlabs.com/privacy-policy/) If this EULA and the Privacy Policy conflict regarding data handling, the Privacy Policy controls. ## 7 Third-Party Services And Apple Platform Terms {#7-third-party-services-and-apple-platform-terms} The App may interoperate with third-party services, content, libraries, or platforms. Your use of third-party services is subject to the applicable third-party terms, and Lirum is not responsible for third-party services. If you obtained the App through Apple's App Store or use the App on an Apple-branded device, you acknowledge and agree that: - Apple is not a party to this EULA and is not responsible for the App; - Apple has no obligation to provide any maintenance or support services with respect to the App; - to the maximum extent permitted by law, Apple has no warranty obligation with respect to the App; and - Apple and Apple's subsidiaries are third-party beneficiaries of this EULA and may enforce this EULA against you as a third-party beneficiary. Apple, iPhone, iPad, and other Apple trademarks are the property of Apple Inc. Lirum is not affiliated with or endorsed by Apple. ## 8 Intellectual Property {#8-intellectual-property} The App (including its software, design, text, graphics, logos, and other content) is owned by Lirum and/or its licensors and is protected by intellectual property laws. Except for the license granted in this EULA, no rights are granted to you. If you provide suggestions, feedback, or ideas about the App, you grant Lirum a perpetual, irrevocable, worldwide, royalty-free license to use them without restriction or compensation to you. ## 9 Disclaimers {#9-disclaimers} TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE APP IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT. WITHOUT LIMITING THE FOREGOING, LIRUM DOES NOT WARRANT THAT THE APP WILL BE ACCURATE, COMPLETE, RELIABLE, SECURE, UNINTERRUPTED, OR ERROR-FREE, OR THAT DEFECTS WILL BE CORRECTED. YOU ASSUME ALL RISK ARISING OUT OF YOUR USE OF THE APP AND ANY OUTPUT OR ACTIONS YOU TAKE BASED ON THE APP. ## 10 Limitation Of Liability {#10-limitation-of-liability} TO THE MAXIMUM EXTENT PERMITTED BY LAW: - IN NO EVENT WILL LIRUM BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES, OR FOR ANY LOSS OF PROFITS, REVENUE, DATA, GOODWILL, OR BUSINESS INTERRUPTION, ARISING OUT OF OR RELATED TO THIS EULA OR YOUR USE OF (OR INABILITY TO USE) THE APP, EVEN IF LIRUM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - LIRUM'S TOTAL LIABILITY ARISING OUT OF OR RELATED TO THIS EULA OR THE APP WILL NOT EXCEED THE AMOUNT YOU PAID TO LIRUM (IF ANY) FOR THE APP IN THE TWELVE (12) MONTHS IMMEDIATELY PRECEDING THE EVENT GIVING RISE TO THE CLAIM. Some jurisdictions do not allow certain limitations of liability, so some of the above limitations may not apply to you. In such cases, Lirum's liability will be limited to the maximum extent permitted by law. ## 11 Indemnification {#11-indemnification} You agree to defend, indemnify, and hold harmless Lirum and its affiliates, officers, directors, employees, and agents from and against any claims, liabilities, damages, losses, and expenses (including reasonable attorneys' fees) arising out of or related to: - your use of the App; - your violation of this EULA; - your violation of any applicable law or regulation; or - your deletion or modification of data using the App (including Cleanup Features). ## 12 Termination {#12-termination} This EULA is effective until terminated. Lirum may suspend or terminate your access to the App at any time if you violate this EULA. Upon termination, the license granted to you ends and you must stop using the App. Sections that by their nature should survive termination will survive (including Sections 8 through 15). ## 13 Changes To This EULA {#13-changes-to-this-eula} We may update this EULA from time to time. If we make changes, we may update the "Last updated" date above and (where required) provide additional notice. Your continued use of the App after the effective date of any updated EULA constitutes acceptance of the updated EULA. ## 14 Governing Law And Dispute Resolution {#14-governing-law-and-dispute-resolution} This EULA is governed by the laws of the jurisdiction in which Lirum is established, without regard to conflict of laws principles. Before filing a claim, you agree to try to resolve disputes informally by contacting us. If a dispute cannot be resolved informally, it must be brought in the courts of competent jurisdiction located in the jurisdiction where Lirum is established, unless applicable law requires otherwise. ## 15 Contact {#15-contact} Questions about this EULA can be directed to Lirum via our contact page: [https://lirumlabs.com/contact](https://lirumlabs.com/contact) --- ## References and Sources Source: references.md URL: https://docs.lirumlabs.com/references Lirum Device Info's built-in device database is compiled from **Apple's own published specifications** and from open, community-maintained references. Individual factual values (clock speeds, resolutions, capacities, model identifiers) are not copyrightable, and we transcribe and re-enter them into our own database schema rather than copying any source's text, tables, or compilation. The links below are provided as reference and further reading for visitors. Where a source has gone offline or been altered, we link to an archived copy on the [Internet Archive's Wayback Machine](https://web.archive.org/) and note its status. ## Table Of Contents {#table-of-contents} - [Apple Official](#apple-official) - [Wikipedia & Open Wikis](#wikipedia--open-wikis) - [Reviews & Technical Analysis](#reviews--technical-analysis) - [Other References](#other-references) - [Disclaimer & Trademarks](#disclaimer--trademarks) ## Apple Official {#apple-official} Apple's own documentation is the primary source for the specifications in Lirum's device database. - **[Apple Tech Specs](https://support.apple.com/specs)** — official index of Apple device technical specifications. Also reachable via the [Support docs hub](https://support.apple.com/en-us/docs). - **[iPhone tech specs (SP2)](https://support.apple.com/kb/SP2)** — legacy Knowledge Base article for the original iPhone specifications. - **[Identify your iPhone model (HT3647)](https://support.apple.com/kb/HT3647)** — Apple Support article for identifying iPhone models. - **[Compare iPhone models](https://www.apple.com/iphone/compare/)** — Apple's official iPhone comparison tool. - **[Apple RF exposure information](https://www.apple.com/legal/rfexposure/)** — official SAR and radio-frequency exposure data (relevant to Lirum's SAR Values category). - **[Apple Environmental Reports](https://www.apple.com/environment/)** — per-device environmental and materials reports. ## Wikipedia & Open Wikis {#wikipedia--open-wikis} Open, community-maintained references used to cross-check model lists, identifiers, and chip details. Content on these sites is published under open licenses (Creative Commons), but only the factual values are used. - **[Wikipedia — List of iOS devices](https://en.wikipedia.org/wiki/List_of_iOS_devices)** - **[Wikipedia — List of iPhone models](https://en.wikipedia.org/wiki/List_of_iPhone_models)** - **[Wikipedia — List of iPad models](https://en.wikipedia.org/wiki/List_of_iPad_models)** - **[Wikipedia — iPhone](https://en.wikipedia.org/wiki/IPhone)** - **[Wikipedia — iPad](https://en.wikipedia.org/wiki/IPad)** - **[Wikipedia — Apple system on chips](https://en.wikipedia.org/wiki/Apple_system_on_chips)** - **[Wikipedia — Apple silicon](https://en.wikipedia.org/wiki/Apple_silicon)** — overview of Apple's A-series and M-series processors. - **[Wikipedia — Comparison of ARMv8-A cores](https://en.wikipedia.org/wiki/Comparison_of_ARMv8-A_cores)** - **[WikiChip — Apple A14](https://en.wikichip.org/wiki/apple/ax/a14)** — detailed microarchitecture data on Apple's A-series chips. - **[The iPhone Wiki — Models](https://www.theiphonewiki.com/wiki/Models)** — community-maintained list of internal model identifiers. - **[iFixit](https://www.ifixit.com/)** — teardowns and internal hardware reference (e.g. the [iPad Wi-Fi teardown](https://www.ifixit.com/Teardown/iPad+Wi-Fi+Teardown/2183)), used as background for internal component identification. ## Reviews & Technical Analysis {#reviews--technical-analysis} Reviews and deep technical analyses consulted as background during research. These are linked as further reading, not as sources of the app's device data. - **[AnandTech](https://www.anandtech.com/)** — _Archived._ AnandTech was retired on August 30, 2024, and its article URLs now redirect to an inaccessible forum page. The articles below are linked via the Wayback Machine: - [The new iPad (3rd gen) analysis](http://web.archive.org/web/20250616133251/https://www.anandtech.com/show/5663/analysis-of-the-new-apple-ipad/1) - [The iPhone 5 review](http://web.archive.org/web/20250223131126/https://www.anandtech.com/show/6330/the-iphone-5-review/4) - [iPad 2 (32nm A5) review](http://web.archive.org/web/20250210202112/https://www.anandtech.com/show/5789/the-ipad-24-review-32nm-a5-tested/2) - [The iPhone 6 review](http://web.archive.org/web/20250623091352/http://www5.anandtech.com/show/8554/the-iphone-6-review) - **[AppleInsider](https://appleinsider.com/)** — in-depth iPhone reviews: [iPhone 6](https://appleinsider.com/articles/14/09/24/in-depth-review-apples-47-inch-iphone-6-running-ios-8) and [iPhone 6 Plus](https://appleinsider.com/articles/14/09/25/in-depth-review-apples-iphone-6-plus-running-ios-8). - **[Tom's Hardware](https://www.tomshardware.com/reviews/apple-ipad-2,2932-3.html)** — iPad 2 review with hardware detail. - **[iLounge](https://www.ilounge.com/)** — _Original (site now AI-generated)._ iLounge was sold in 2019 and revived in 2024 as an AI-generated content site. The original iPhone 3GS review is linked via its pre-sale Wayback snapshot: [Apple iPhone 3GS review (2009)](http://web.archive.org/web/20130129231747/http://www.ilounge.com:80/index.php/reviews/entry/apple-iphone-3gs-16gb-32gb/P4). - **[MacInTouch](https://www.macintouch.com/)** — _Inactive._ MacInTouch has been on indefinite pause since around May 2025. The original iPhone 3GS review is linked via the Wayback Machine: [iPhone 3GS review](http://web.archive.org/web/20181226185707/https://www.macintouch.com/reviews/iphone3gs/). - **[iDownloadBlog](https://www.idownloadblog.com/2014/08/19/iphone-6-150mbps-let-advanced/)** — reporting on iPhone 6 LTE-Advanced throughput. - **[OFweek](https://global.ofweek.com/news/iPhone-6-Advances-Display-Technology-Panel-Shipments-to-Exceed-100-Million-in-2014-19069)** — iPhone 6 display technology reporting. ## Other References {#other-references} - **[28b.co.uk — iOS Device Dimensions Reference Table](https://28b.co.uk/ios-device-dimensions-reference-table/)** — community reference for iOS device physical dimensions. - **[Tecnoblog](https://tecnoblog.net/88088/lte-4g-como-funciona/)** — (Portuguese) explainer on how LTE/4G works, used for network-category context. - **[Apple Support Communities](https://discussions.apple.com/)** — Apple's official support forums, consulted as background (e.g. [this iPhone 5 thread](https://discussions.apple.com/thread/4056146)). ## Disclaimer & Trademarks {#disclaimer--trademarks} Lirum Device Info is an independent project and is not affiliated with, endorsed by, or sponsored by Apple Inc. or any other source listed on this page. Apple, iPhone, and iPad are trademarks of Apple Inc., registered in the U.S. and other countries and regions. All other trademarks are the property of their respective owners. The links above are provided for informational purposes only. Lirum Device Info does not republish or claim ownership of any third-party content; each link points to its original source. --- ## About Source: support/about.md URL: https://docs.lirumlabs.com/support/about The **About** tab includes quick links to documentation, support, and legal pages, plus app version/build info. ## Table Of Contents {#table-of-contents} - [App Information](#app-information) - [Social Links](#social-links) - [Actions](#actions) - [Legal Links](#legal-links) ## App Information {#app-information} At the top of the About screen you can see: - The app name - The current **version** and **build number** ## Social Links {#social-links} The icon row links to Lirum's social profiles. The app first checks if the native social app is installed (Facebook, X/Twitter, YouTube) and opens it directly when available; otherwise, the web URL is opened. - **Facebook**: Lirum.Labs - **X / Twitter**: @lirumlabs - **Website**: lirumlabs.com - **YouTube**: lirumlabs ## Actions {#actions} The main action buttons include: - **Documentation**: opens the documentation site in an in-app Safari sheet. - **Review the App**: triggers the standard App Store rating prompt (when available). - **Contact Us**: opens an email composer to send feedback. - **Share**: opens the system share sheet with the App Store link. ## Legal Links {#legal-links} At the bottom of the list you can open: - **Terms of Use (EULA)**: [EULA](/legal/eula) - **Privacy Policy**: [https://lirumlabs.com/privacy-policy/](https://lirumlabs.com/privacy-policy/) Legal links open in an in-app web view (not Safari), so you stay within the app while reviewing them. --- ## Help Source: support/help.md URL: https://docs.lirumlabs.com/support/help This page covers common questions, permissions, and troubleshooting tips for Lirum Device Info. ## Table Of Contents {#table-of-contents} - [Getting Started](#getting-started) - [Permissions](#permissions) - [Troubleshooting](#troubleshooting) - [Contact](#contact) ## Getting Started {#getting-started} Lirum uses a tab bar: - **Home**: an at-a-glance dashboard. - **Tools**: live monitors, diagnostics, and reference tools. - **Info**: device specifications grouped by categories. - **Settings**: updates, purchases, and app preferences. - **About**: documentation, review, contact, and share. ### Info: Searching And Refreshing {#info-searching-and-refreshing} - **Pull down** on the **Info** screen to reveal a search field. - Use the **refresh** button (top-right) to request an immediate data refresh. - Tap a category header to expand/collapse it. - Tap an attribute row to open a detail sheet (formatted value, description, and copy/share actions). ## Permissions {#permissions} Some tools and Info categories require permissions. If permission is denied, Lirum may show placeholders or a prompt to open iOS Settings. Common permissions include: - **Location**: needed for GPS/location data. - **Bluetooth**: needed for scanning/connecting, Metrics Server/Client, and some accessories. - **Microphone**: needed for the Microphone tool. - **Camera**: needed for the Camera tool. - **Motion & Fitness**: may be required by some sensor features (device/OS dependent), including barometer data. - **NFC**: needed for NFC Read/Write on supported iPhone models. - **Local Network**: may be prompted on iOS 14+ when using Bluetooth features such as Metrics Server/Client. ## Troubleshooting {#troubleshooting} ### Values Show "Loading" Or Are Blank {#values-show-loading-or-are-blank} - Some attributes are populated asynchronously. Leave the screen open for a moment. - Some values are device dependent, OS dependent, or restricted by iOS. ### A Tool Is Missing {#a-tool-is-missing} Tool availability can vary by device and platform (iOS/iPadOS/visionOS/macOS Catalyst). For example: - Some sensors are not available on every device. - Some tools are excluded on visionOS. - Some tools can be locked behind premium or beta access, depending on your build and entitlements. ### Bluetooth Scanning Finds Nothing {#bluetooth-scanning-finds-nothing} - Confirm Bluetooth is enabled in iOS Control Center or Settings. - Make sure Lirum has Bluetooth permission. - Stay on the Bluetooth screen for a few seconds and try starting a scan again. ### Location Is Not Updating {#location-is-not-updating} - Confirm Location Services are enabled. - Confirm Lirum has Location permission (typically "While Using"). - Try the refresh button in Info, or reopen the tool. ### Accidental Language Change {#accidental-language-change} If you accidentally set the app to a language you do not understand, navigate to **Settings** (gear icon) and look for the **Force Language** option under the General section. Select your preferred language to switch back. ## Contact {#contact} Use **About -> Contact Us** to send feedback. This opens the device's email client to compose a message -- a configured mail account is required. --- ## Settings Source: support/settings.md URL: https://docs.lirumlabs.com/support/settings Settings lets you manage updates, purchases, and a small set of preferences used across the app and widgets. ## Table Of Contents {#table-of-contents} - [Updates](#updates) - [Purchases](#purchases) - [General Preferences](#general-preferences) - [Widgets](#widgets) - [Developer Options](#developer-options) ## Updates {#updates} In **Updates**, you can: - **Check for Updates**: checks whether an update is available. - **Install Update**: appears when an update is available and opens the update progress flow. ## Purchases {#purchases} In **Purchases**, Lirum shows your current premium entitlements: - **Premium Status**: one of four states -- **Lifetime Active** (has lifetime purchase), **Subscription Active** (has active subscription), **Unlocked** (full/Pro app version), or **Free** (Lite version with no purchases). A "last verified" timestamp shows when the subscription was last checked. - **Lifetime access**: whether a lifetime purchase is active. - **Subscription**: subscription status (shown on the Lite version). - **Subscribe to Premium**: opens the paywall to purchase a subscription or lifetime access (shown on the Lite version when not subscribed). - **Restore Purchases**: re-checks your App Store purchases (shown on the Lite version). ## General Preferences {#general-preferences} In **General**, you can configure: - **Measurement Units**: metric vs imperial formatting for values shown across the app. - **Data Units**: how byte sizes are formatted (base 2 vs base 10). - **Force Language**: override the app language independently from the system language. Tap to open a searchable grid of language cards. Supported languages: English, Chinese (Simplified), Chinese (Traditional), Cantonese, Danish, German, Spanish, Finnish, French, Irish, Italian, Portuguese (Brazil), Portuguese (Portugal), Swedish, Ukrainian, Japanese, and Korean. Language changes take effect immediately. ## Widgets {#widgets} In **Widgets**, you can: - Toggle **Show Timestamp** (controls whether widgets show a timestamp). - Open **Alerts** to configure widget alert settings (see below). - See **[Widgets](/widgets)** for the full widget list and screenshots. ### Alert Settings {#alert-settings} The Alerts sub-screen lets you configure which alerts the Usage Alerts widget monitors. It includes: - **Quick Actions**: **Enable All** and **Disable All** buttons. - **Six alert categories** with individual toggles: | Category | Alerts | Default Thresholds | |----------|--------|-------------------| | **CPU** | Critical, Warning | Critical: 85%, Warning: 70% | | **Memory** | Critical, Warning | Critical: 80%, Warning: 65% | | **Storage** | Critical, Warning | Critical: <10% free, Warning: <20% free | | **Network** | Warning | Warning: >50 MB/s sustained | | **Thermal** | Critical, Serious, Fair | Based on system thermal state | | **Battery** | Critical | Critical: <10% | Alerts require sustained conditions (multiple consecutive samples meeting the threshold) rather than momentary spikes, reducing false positives. ## Developer Options {#developer-options} Developer options are only available in debug builds. They include actions like copying logs and opening debug/log views. --- ## Accelerometer Source: tools/accelerometer.md URL: https://docs.lirumlabs.com/tools/accelerometer Live accelerometer readings for device acceleration and tilt, with combined and per-axis graphs. ## Overview {#overview} The accelerometer measures acceleration along the device axes. This includes gravity, so the readings can be used to estimate tilt. ## Table of Contents {#table-of-contents} - [Overview](#overview) - [Tabs](#tabs) - [Toolbar Controls](#toolbar-controls) - [Overview Tab](#overview-tab) - [Graphs Combined Tab](#graphs-combined-tab) - [Graphs Per Axis Tab](#graphs-per-axis-tab) - [Notes And Limitations](#notes-and-limitations) ## Tabs {#tabs} - **Overview** - **Graphs (combined)** - **Graphs (per axis)** ## Toolbar Controls {#toolbar-controls} All motion-sensor tools share the same toolbar controls: - **Play / Pause**: start or pause sensor updates. - **Clear**: clear history buffers used by the graphs. - **Refresh rate**: cycle between Faster, Fast, and Slow sampling rates. ## Overview Tab {#overview-tab} The Overview tab features a real-time **3D Metal-rendered wireframe sphere** that tilts based on accelerometer data. The sphere is composed of meridians and parallels, with color-coded axis arrows extending from the origin (X = red, Y = green, Z = blue) with arrowhead indicators. A low-pass filter smooths the sphere's pitch and roll derived from the X and Y acceleration values, preventing jitter from raw sensor noise. Below the visualization, the tab shows current axis values: - **accX** (X axis) - **accY** (Y axis) - **accZ** (Z axis) Values are shown in `g`. ## Graphs Combined Tab {#graphs-combined-tab} This tab overlays X/Y/Z history on a single graph (X = red, Y = green, Z = blue). The Y-axis range is fixed at -3 to +3 g. Current values are displayed with split-precision formatting (the first 4 decimal places are bold, remaining decimals are semi-transparent). The graph retains the last 100 readings. ## Graphs Per Axis Tab {#graphs-per-axis-tab} This tab shows three separate panels (X, Y, Z), each with a dedicated graph and the current value displayed alongside the axis label. ## What You Can See {#what-you-can-see} - Acceleration along the X/Y/Z axes - Units (commonly g or m/s^2) - Optional graph/history view (if available) ## Notes {#notes} - When the device is still, most of the signal is gravity. - Sudden movement or vibration will show as spikes. ## Notes And Limitations {#notes-and-limitations} - On Mac Catalyst, motion sensors may be unavailable. --- ## AR Source: tools/ar.md URL: https://docs.lirumlabs.com/tools/ar Load any 3D model from your files and bring it to life in augmented reality — completely free. ## Overview {#overview} The AR tool turns your device into an augmented reality viewer for 3D models. Load any USDZ model — from iCloud Drive, a NAS, a USB drive, or anywhere the Files app can reach — and place it on real-world surfaces around you. Move, rotate, scale, and inspect your models from every angle. Place multiple objects to build entire scenes, then export them as USDZ files to share. This tool is **completely free** — it is not part of the premium subscription and has no usage limits. This tool is **iOS and iPadOS only** -- it uses ARKit together with your device's camera. It is not available on Apple Vision Pro; for a spatial computing experience on Vision Pro, see the separate **[Spatial Shapes](spatial-shapes)** tool. ## Table of Contents {#table-of-contents} - [Getting Started](#getting-started) - [Asset Selection](#asset-selection) - [Controls](#controls) - [Placing Objects](#placing-objects) - [Move Mode](#move-mode) - [Rotate Mode](#rotate-mode) - [Zoom Mode](#zoom-mode) - [Wireframe Mode](#wireframe-mode) - [Debug Mode](#debug-mode) - [Managing Objects](#managing-objects) - [Exporting A Scene](#exporting-a-scene) - [Supported Formats](#supported-formats) - [Permissions](#permissions) - [Notes And Limitations](#notes-and-limitations) ## Getting Started {#getting-started} 1. Open the AR tool — the camera feed starts immediately with surface detection. 2. Point your device at a flat surface (table, floor, desk) and wait for ARKit to detect it. An **ARKit coaching overlay** automatically guides you to point at surfaces until plane detection succeeds. 3. Select a 3D model from the asset picker. 4. Tap on the detected surface to place it. That's it — your model is now in AR. From here you can move, rotate, scale, toggle wireframe, and more. ## Asset Selection {#asset-selection} Tap the **+** button to open the asset selection sheet. You can choose from: **Built-in geometric shapes:** - Sphere, Cube, and Pyramid — great for quick testing and learning the controls. **Bundled 3D models:** - Lirum includes sample models like the International Space Station and the Perseverance Mars rover, ready to place. **Your own models:** - Import any compatible 3D model from the Files app. This means you can load models from **iCloud Drive**, a **NAS**, **USB drives**, **Dropbox**, **Google Drive**, or any other storage provider accessible through iOS Files. Use the search bar to filter assets by name. The asset list also supports an **Edit mode** with multi-select to delete specific assets, and a **Clear All** option to remove all imported assets. Both `.usdz` and `.scn` file types are supported in the file importer. ## Controls {#controls} The AR view runs full-screen with a floating control stack on the left side. Tap the **ellipsis (...)** button to expand or collapse the full control panel. In collapsed mode, the controls appear as a compact horizontal row of smaller icons for quick access. Only one interaction mode can be active at a time -- enabling Move disables Rotate, and vice versa. The expanded control stack includes: | Button | Function | |--------|----------| | **Move** | Position the selected object along X, Y, or Z axes | | **+** | Open asset selection to add a new object | | **Rotate** | Rotate the selected object with pan gestures | | **Objects list** | View and manage all placed objects | | **Save** | Export the scene as a USDZ file | | **Wireframe** | Toggle wireframe rendering | | **Debug** | Show AR feature points and tracking stats | | **Zoom** | Scale objects with pinch gestures | | **Reset** | Clear all objects and restart the scene | ## Placing Objects {#placing-objects} 1. Select an asset from the picker. 2. Make sure **Add mode** is active (the **+** button). 3. Tap anywhere on a detected surface — the model loads and appears at that location. 4. The tool automatically switches to **Move mode** so you can fine-tune the position right away. You can place multiple objects in the same scene. Each tap places a new instance of the selected asset. ## Move Mode {#move-mode} When Move mode is active, **X**, **Y**, and **Z** axis buttons appear next to the control stack. Tap an axis to select it, then use the full-height vertical slider on the right edge of the screen to adjust the object's position along that axis. Color-coded 3D arrows appear on the object to indicate directions (red for X, green for Y, blue for Z). ## Rotate Mode {#rotate-mode} Tap the Rotate button to enter rotation mode. Colored circles appear around the object to indicate the rotation axes. Use a **pan gesture** on the screen to rotate — horizontal drag rotates around the Y axis, vertical drag rotates around the X axis. ## Zoom Mode {#zoom-mode} Tap the Zoom button to enable scaling. Corner cubes appear at the object's bounding box for visual reference. Use a **pinch gesture** to scale the object up or down (from 0.01x to 10x its original size). Pinch-to-zoom also works whenever an object is selected, even outside of Zoom mode. ## Wireframe Mode {#wireframe-mode} Toggle wireframe rendering to see the underlying geometry of your model. All surfaces are rendered as lines instead of filled polygons, which is useful for understanding the 3D structure, inspecting mesh quality, or simply for a striking visual effect. ## Debug Mode {#debug-mode} Tap the debug button (bug icon) to overlay AR diagnostic information: - **Yellow feature points** appear on surfaces as ARKit tracks the environment. - **Real-time stats** show light intensity, color temperature, camera field of view, and tracking state. - When an object is selected, additional data is shown: **distance** from camera to the object (in meters), object **position** (X, Y, Z), **rotation** (in degrees), and **scale** (X, Y, Z). This is helpful for diagnosing surface detection issues or understanding how ARKit perceives your environment. ## Managing Objects {#managing-objects} When you have placed one or more objects, tap the **list button** to open the object management sheet: - A **header stats bar** shows the total object count and the currently selected object's name. - Each object row shows the object name, placement time (for example, "just now" or "5m ago"), and an expandable action panel. - Expand a row to access **Select**, **Duplicate**, and **Delete** actions. (**Duplicate** is currently not functional — tapping it has no effect — and is reserved for a future release.) - **Clear all** to remove every object at once. Use the search bar to filter objects by name when working with complex scenes. ## Exporting A Scene {#exporting-a-scene} Tap the **Save** button to export your entire AR scene: 1. Enter a filename for the export. 2. The scene is packaged as a **USDZ** file — a universal 3D format supported across Apple platforms. 3. Choose where to save it via the standard Files picker (iCloud, local storage, or any connected drive). Exported scenes preserve all object positions and transforms. ## Supported Formats {#supported-formats} The AR tool supports: - **USDZ** (.usdz) — the primary format, widely used across Apple platforms. - **SCN** (.scn) — native SceneKit scenes. You can load USDZ files from any source accessible through the iOS Files app — iCloud Drive, network shares, NAS devices, USB drives, third-party cloud providers, and more. ## Permissions {#permissions} - **Camera access** is required for the AR experience on iOS. - If permission is not granted, Lirum shows a prompt with a shortcut to iOS Settings. ## Notes And Limitations {#notes-and-limitations} - AR requires compatible hardware with ARKit support. - Objects can only be placed on surfaces that ARKit has detected — point your device at flat surfaces and give it a moment to map the environment. - Large 3D models may take a moment to load; Lirum optimizes loading for files over 10 MB to keep the AR session responsive. - Models are automatically scaled to a reasonable size on placement and can be resized freely with pinch gestures. - USDZ animations are not played — the tool focuses on static placement and inspection. - On **visionOS** (Apple Vision Pro), a dedicated spatial experience is available through the **[Spatial Shapes](spatial-shapes)** tool. --- ## Barometer Source: tools/barometer.md URL: https://docs.lirumlabs.com/tools/barometer Air pressure readings and related altitude estimates (device dependent). ## Overview {#overview} The barometer measures air pressure and can estimate relative altitude changes. ## Table of Contents {#table-of-contents} - [Overview](#overview) - [Tabs](#tabs) - [Overview Tab](#overview-tab) - [Graph Tab](#graph-tab) - [Details Tab](#details-tab) - [Permissions](#permissions) - [Notes And Limitations](#notes-and-limitations) ## Tabs {#tabs} - **Overview**: segmented gauge. - **Graph**: pressure and altitude history. - **Details**: large numeric readouts and high-precision values. ## Overview Tab {#overview-tab} The Overview tab displays a segmented gauge that fills based on current pressure. ## Graph Tab {#graph-tab} The Graph tab shows two charts: - **Pressure history** (kPa) - **Altitude history** (meters) ## Details Tab {#details-tab} The Details tab includes: - Pressure measurement card (kPa) - Altitude measurement card (meters) - High-precision values (many decimal places) for copy/paste and diagnostics ## Permissions {#permissions} On iOS, barometer readings may require Motion & Fitness permission. If permission is denied, Lirum shows a permissions prompt with a shortcut to iOS Settings. ## What You Can See {#what-you-can-see} - Air pressure (displayed in kPa) - Relative altitude changes (if available) - Update frequency / history graph (if available) ## Notes {#notes} - Not all devices include a barometer. - Pressure can change with weather and indoor HVAC, not just altitude. ## Notes And Limitations {#notes-and-limitations} - The tool reports **relative** altitude based on pressure changes and may not match GPS altitude. --- ## Battery Source: tools/battery-reports.md URL: https://docs.lirumlabs.com/tools/battery-reports Live battery level and charging state, plus a Specs list with model-level battery details (when available). ## Overview {#overview} Battery combines live signals from iOS (battery level/state, Low Power Mode, thermal state) with model-level battery specs sourced from the device profile. ## Table Of Contents {#table-of-contents} - [Battery Display](#battery-display) - [Status Indicators](#status-indicators) - [System Status Cards](#system-status-cards) - [Specs](#specs) - [Advanced Metrics Grid](#advanced-metrics-grid) - [Notes And Limitations](#notes-and-limitations) ## Battery Display {#battery-display} At the top of the screen, Lirum shows a large battery visualization: - Current percentage - Charging/discharging/full state (reflected in the animation) - A **liquid wave animation** inside the battery that fills based on the current level - **Energy flow particles** that animate toward the battery while charging, with a pulsing lightning bolt icon The battery fill color changes based on level: red (0-20%), orange (20-40%), yellow (40-60%), green (60-80%), and cyan (80-100%). When Low Power Mode is enabled, the fill is yellow regardless of level. The entire screen background uses an **animated gradient** that reflects the battery and thermal state: blue tones while charging, green when fully charged, purple when discharging, and red when the thermal state is critical. ## Status Indicators {#status-indicators} When **Low Power Mode** is enabled or the system thermal state is elevated (Serious or Critical), a small pulsing indicator bar appears near the top. The thermal indicator shows "Warm" for the serious state and "Overheating" for the critical state. ## System Status Cards {#system-status-cards} Two cards summarize: - **Low Power Mode**: enabled/disabled - **Thermal State**: nominal/fair/serious/critical ## Specs {#specs} Specs is a scrolling list of battery-related attributes. The exact rows vary by device and platform, but can include: - Battery type, capacity, and voltage - Wireless charging support - Energy values - Estimated runtimes for common activities (talk time, standby, video playback, browsing, audio, gaming, etc.) ## Advanced Metrics Grid {#advanced-metrics-grid} When enough model-level fields are available, Battery shows a grid of four highlighted cards: **Video Recording** duration, **GPS Navigation** duration, **Gaming (3D)** duration, and **Standby** time. Each card includes an icon and value for quick scanning. ## Notes And Limitations {#notes-and-limitations} - Specs values are based on the device profile for your model and are not a prediction of your current battery health or usage. - Some fields may be unavailable on certain devices or platforms. - On macOS Catalyst, battery status is polled every 10 seconds. On iOS, native battery notifications provide real-time updates. --- ## Benchmark Source: tools/benchmark.md URL: https://docs.lirumlabs.com/tools/benchmark Measures device performance across CPU, memory, storage, and GPU. ## Overview {#overview} Benchmark runs a series of performance tests on your device and produces a score for each category. You can choose which benchmarks to run, watch progress in real time, and review detailed results when the tests finish. ## Table Of Contents {#table-of-contents} - [Configuration](#configuration) - [Running A Benchmark](#running-a-benchmark) - [Progress And Thermal Monitoring](#progress-and-thermal-monitoring) - [Results](#results) - [Notes And Limitations](#notes-and-limitations) ## Configuration {#configuration} The suite organizes many individual benchmarks into categories (for example CPU Integer, CPU Floating, Memory Bandwidth, Memory Allocation, Storage Read, Storage Write, GPU Render, GPU Compute, GPU Particles, Cryptographic Hash, Symmetric/Asymmetric Crypto, Compression, Numerical, Accelerate, Multimedia, Machine Learning, Data, SwiftUI, and UIKit). Each category groups related workloads: - **CPU** -- measures processor speed using computation-intensive workloads. - **Memory** -- measures how fast the device can read and write data in RAM. - **Storage** -- measures internal storage read/write performance. - **GPU** -- measures graphics processing capability. You can customize which benchmarks run via the **Customize Benchmarks** sheet, which lists every benchmark grouped by category and provides a per-benchmark toggle to include or exclude it from the run. ## Running A Benchmark {#running-a-benchmark} Tap the large **Run Full Suite** button to start (in custom mode the button reads **Run Selected**). The button changes to a stop control while the benchmark is running, so you can tap it again to cancel the test at any time without waiting for it to finish. For the most consistent results, close other apps and avoid using the device while the benchmark is running. ## Progress And Thermal Monitoring {#progress-and-thermal-monitoring} While the benchmark is running, the screen shows: - A **real-time progress indicator** with a percentage that updates as each test completes. - A **thermal state gauge** that monitors how hot the device is getting during the test. The gauge uses color-coded levels: - **Nominal** (green) -- the device is running at normal temperature. - **Fair** (yellow) -- slightly warm, but no performance impact. - **Serious** (orange) -- the device is warm and may begin throttling performance. - **Critical** (red) -- the device is very hot and is actively reducing performance to cool down. Watching the thermal gauge helps you understand whether high temperatures may have affected your benchmark scores. ## Results {#results} When the benchmark finishes, a results card appears with scores for each category you selected. The results report opens automatically so you can review the details right away. Each score reflects how your device performed in that category. Higher scores indicate better performance. You can use these scores to compare performance over time or between devices. If you stopped the benchmark before it finished, only the completed tests will have scores. ## Notes And Limitations {#notes-and-limitations} - Benchmark scores can vary between runs depending on thermal conditions, background activity, and battery level. - For the most accurate results, let the device cool down between consecutive benchmark runs. - GPU benchmarks may not be available on all devices. - Results are meant for relative comparison and do not represent an absolute measure of capability. --- ## Biometrics Source: tools/biometrics.md URL: https://docs.lirumlabs.com/tools/biometrics Test Face ID / Touch ID / Optic ID availability and run an authentication check. ## Overview {#overview} Biometrics lets you confirm whether biometric authentication is available on your device and, if so, trigger a real authentication attempt using the system prompt. ## Table Of Contents {#table-of-contents} - [Main Sections](#main-sections) - [Authenticate](#authenticate) - [Status And Metrics](#status-and-metrics) - [Diagnostic Log](#diagnostic-log) - [Common Status States](#common-status-states) - [Notes And Limitations](#notes-and-limitations) ## Main Sections {#main-sections} Biometrics is a single scrolling screen with: - A hero card showing the detected biometric type and current status. - An **Authenticate** button. - A metrics section (Biometric Type and Authentication Status). - A **Diagnostic Log** that records events and errors. ## Authenticate {#authenticate} Tap **Authenticate** to trigger the system authentication prompt. The result updates the status and adds a log entry. If no biometric hardware is detected (biometric type is None), the Authenticate button is disabled. On a successful authentication, the biometric icon plays a brief pulse animation. When certain states are reached (such as Not Available, Not Enrolled, Lockout, or Failed), a contextual error callout message appears below the hero card with guidance. ## Status And Metrics {#status-and-metrics} You'll see: - **Biometric Type**: Face ID, Touch ID, Optic ID (visionOS), or None. - **Authentication Status**: the current state of the last attempt. ## Diagnostic Log {#diagnostic-log} The log records important events, such as: - Biometric type detected - Authentication started - Authentication result (success/failure/canceled) - Errors and lockout states Use **Clear** to remove the log history. ## Common Status States {#common-status-states} Depending on device configuration and user actions, the tool can show states like: - Not Authenticated - Success - Failed - Not Available - Not Enrolled - Lockout - Canceled by User / System - Fallback - Unknown ## Notes And Limitations {#notes-and-limitations} - Apps cannot access biometric data itself; they can only request an authentication evaluation. - Availability and error states are controlled by the OS (for example, lockout after too many failed attempts). --- ## Bluetooth Source: tools/bluetooth.md URL: https://docs.lirumlabs.com/tools/bluetooth Scan for nearby Bluetooth Low Energy devices, inspect signal strength and advertisement data, browse GATT services and characteristics, and view live data from connected peripherals. ## Overview {#overview} The Bluetooth tool uses Apple's CoreBluetooth framework to act as a BLE (Bluetooth Low Energy) central and scan for nearby peripherals. It displays every device it discovers, along with real-time signal strength (RSSI), advertisement data, and connection status. You can connect to connectable peripherals to browse their GATT services and characteristics, read values, subscribe to notifications, and inspect manufacturer data. ## Table of Contents {#table-of-contents} - [Overview Screen](#overview-screen) - [Search Bar](#search-bar) - [Bluetooth Status Card](#bluetooth-status-card) - [Device List](#device-list) - [Device Row](#device-row) - [Empty States](#empty-states) - [Device Details Screen](#device-details-screen) - [Header And Connection](#header-and-connection) - [Signal Strength Gauge](#signal-strength-gauge) - [Info Tab](#info-tab) - [Services Tab](#services-tab) - [Data Tab](#data-tab) - [Permissions And Requirements](#permissions-and-requirements) - [Technical Details](#technical-details) - [Notes And Limitations](#notes-and-limitations) - [Troubleshooting](#troubleshooting) --- ## Overview Screen {#overview-screen} The overview screen is the main landing view of the Bluetooth tool. It contains a search bar, a status card with scan controls, and a scrollable list of discovered devices. ### Search Bar {#search-bar} A text field at the top of the screen filters the device list by name. Typing a query instantly narrows the list to devices whose advertised or peripheral name contains the search text (case-insensitive). A clear button appears when the field is not empty. ### Bluetooth Status Card {#bluetooth-status-card} The status card displays: - **Bluetooth Status** label with the current radio state, color-coded: - **Powered On** (green) — Bluetooth is active and ready to scan. - **Powered Off** (red) — the Bluetooth radio is turned off. - **Unauthorized** (orange) — the user has denied Bluetooth permission for the app. - **Unsupported** (red) — the device hardware does not support Bluetooth. - **Unknown** / **Resetting** (gray) — the system is still determining the Bluetooth state. - A scan control button (only visible when Bluetooth is Powered On): - **Stop Scanning** (red) — stops the active scan. - **Start Scanning** (green) — begins scanning for nearby peripherals. Scanning starts automatically when the tool is opened and Bluetooth is powered on. ### Device List {#device-list} Discovered devices appear in a scrollable list, **sorted by RSSI** (strongest signal first). The list updates in real time as new devices are found or existing devices update their advertisement data. ### Device Row {#device-row} Each device is displayed as a card containing: - A **Bluetooth icon** enclosed in a circular badge. A white arc overlays the circle, filling proportionally to the device's signal strength (0–100%). - **Device name** — the advertised local name or peripheral name. Devices that do not broadcast a name appear as `[No Name]`. - **RSSI** — the received signal strength in dB (e.g. `RSSI: -43 dB`). - A **status indicator** on the bottom-left, showing one of: - **Connected** (green) — the device is currently connected. - **Connectable** (blue) — the device advertises that it accepts connections. - **Services: N** — the number of GATT services the device advertises (shown when services are present but the device is not yet connected). - *(no label)* — the device is not connectable and does not advertise services. - A **trailing indicator** on the right: - A green **checkmark** icon if the device is connected. - A **chevron** (`>`) if the device is connectable (tap to open details). - **Not Connectable** text if the device does not accept connections. Tap any device row to navigate to the [Device Details Screen](#device-details-screen). ### Empty States {#empty-states} The overview shows contextual empty states: - **Scanning** — a magnifying glass icon with a loading animation while the initial scan is in progress and no devices have been found yet. - **Bluetooth Off / Unsupported** — a slashed Bluetooth icon with the current state and a prompt to enable Bluetooth. - **Scanning Stopped** — a Bluetooth icon with a **Start Scanning** button when Bluetooth is on but scanning has been stopped manually and no devices are in the list. --- ## Device Details Screen {#device-details-screen} Tapping a device row opens a dedicated details screen. The screen is divided into a header area, a signal strength gauge, and three content tabs. ### Header And Connection {#header-and-connection} The header contains: - A **back button** (`< Devices`) to return to the overview screen. - The **device name** displayed prominently. - A **connection state indicator** — a colored dot next to a label: - **Connected** (green) - **Connecting** (orange) - **Disconnected** (red) - **Disconnecting** (orange) - A **Connect** / **Disconnect** button (only shown for connectable devices): - **Connect** (blue) — initiates a BLE connection. A loading spinner is shown while the connection is being established. - **Connecting...** (blue, disabled) — displayed during the connection attempt. - **Disconnect** (red) — terminates the active connection. When a connection is established, the tool automatically discovers all GATT services and their characteristics. Readable characteristics are read immediately, and characteristics that support notifications are subscribed to automatically. ### Signal Strength Gauge {#signal-strength-gauge} The signal strength section provides a detailed, real-time view of the device's radio signal: - **Circular gauge** — an arc that fills from 0% to 100% with an angular gradient (red to orange to yellow to green). The current RSSI value in dBm is displayed in the center. - **Approximate distance** — a human-readable estimate derived from the RSSI value: | RSSI Range | Label | |-------------|------------| | -30 to -50 dBm | Very Close | | -51 to -65 dBm | Close | | -66 to -80 dBm | Medium | | -81 to -90 dBm | Far | | Below -90 dBm | Very Far | - **Signal bars** — a 5-bar indicator that fills based on signal strength percentage. - **Signal quality** — a text label: Excellent (>80%), Good (>60%), Fair (>40%), Poor (>20%), or Very Poor (<=20%). - **RSSI** — the raw value in dBm. - **TX Power** — the transmit power level in dBm, if the device advertises it. This value represents the signal strength at 1 meter from the transmitter and can be used to estimate distance. - **Signal History** — a rolling bar chart of the last 20 RSSI readings, color-coded (green >= -60, yellow >= -75, red < -75). This helps visualize signal stability over time. ### Info Tab {#info-tab} The Info tab displays general information about the device, organized as key-value rows: | Field | Description | |-------|-------------| | **Name** | The advertised or peripheral name (or `[No Name]`). | | **Identifier** | The peripheral's UUID assigned by CoreBluetooth. This is a local identifier and is not the device's actual MAC address. | | **RSSI** | Current received signal strength in dB. | | **TX Power** | Transmit power in dBm (only shown if advertised by the device). | | **Connectable** | Whether the device accepts BLE connections (Yes / No). | | **State** | Current connection state (Connected, Connecting, Disconnected, Disconnecting). | | **Discovered** | Timestamp when the device was first seen during this scan session. | | **Last Updated** | Timestamp of the most recent advertisement or RSSI update. | Below the key-value rows, two additional sections appear when the device provides the corresponding data: - **Advertised Services** — a list of GATT service UUIDs that the device includes in its advertisement packets. Known standard services are shown with their human-readable name next to the UUID (e.g. `180F (Battery Service)`, `180A (Device Information)`). See [Recognized Services](#recognized-services) for the full list. - **Manufacturer Data** — the raw manufacturer-specific data from the advertisement, displayed as a hex string. The first two bytes encode the Bluetooth SIG company identifier (little-endian). ### Services Tab {#services-tab} The Services tab is available **only when the device is connected**. It shows the full GATT service and characteristic tree discovered during the connection. Each **service** is displayed as an expandable row: - A **colored icon** indicating the service category: - Blue — Generic services (Generic Access `1800`, Generic Attribute `1801`) - Green — Battery Service (`180F`) - Orange — Device Information (`180A`) - Purple — Vendor-specific services (UUIDs starting with `FE`) - Gray — Other / unknown services - The **service name** (resolved from UUID for known services) and the raw UUID string. - A **badge** showing the number of characteristics belonging to that service. - A **chevron** that rotates when the service is expanded. #### Recognized Services {#recognized-services} | UUID | Service Name | |------|-------------| | `1800` | Generic Access | | `1801` | Generic Attribute | | `180A` | Device Information | | `180F` | Battery Service | | `1812` | HID (Human Interface Device) | | `1813` | Scan Parameters | | `1819` | Location and Navigation | | `181C` | User Data | | `FE59` | Apple Notification Center | Expanding a service reveals its **characteristics**. Each characteristic row shows: - A **colored icon** based on the primary property (purple for read+write, blue for read-only, green for write-only, orange for notify-only, gray otherwise). - The **characteristic name** (resolved from UUID for known GATT characteristics) and the raw UUID string. - **Property pills** — small color-coded labels for each supported property: - **Read** (blue) — the value can be read on demand. - **Write** (green) — the value can be written with acknowledgment. - **Write No Response** (light green) — the value can be written without acknowledgment. - **Notify** (orange) — the characteristic can push updates to the central. - **Indicate** (light orange) — like Notify but with acknowledgment. - **Auth** (purple) — the characteristic requires authenticated signed writes. - An **eye toggle** button (shown when the characteristic has a value). Tapping it reveals the characteristic's current value, displayed in multiple formats: - **Hex** — the raw byte sequence. - **String** — a UTF-8 interpretation, if the bytes form valid text. - **Numeric** — automatic interpretation based on byte length: - 1 byte: UInt8 value - 2 bytes: UInt16 value - 4 bytes: UInt32 value and Float value #### Recognized Characteristics {#recognized-characteristics} | UUID | Characteristic Name | |------|-------------------| | `2A00` | Device Name | | `2A01` | Appearance | | `2A04` | Peripheral Preferred Connection Parameters | | `2A05` | Service Changed | | `2A19` | Battery Level | | `2A23` | System ID | | `2A24` | Model Number String | | `2A25` | Serial Number String | | `2A26` | Firmware Revision String | | `2A27` | Hardware Revision String | | `2A28` | Software Revision String | | `2A29` | Manufacturer Name String | | `2A2A` | IEEE 11073-20601 Regulatory Certification Data List | | `2A50` | PnP ID | ### Data Tab {#data-tab} The Data tab shows live, interpreted data from the connected device. If the device is not connected, a prompt is displayed with a **Connect** button (for connectable devices) or an informational message. When connected, the tab shows up to three cards: - **Manufacturer Data** — the manufacturer-specific advertisement payload: - **Manufacturer ID** — resolved from the first two bytes (little-endian) of the manufacturer data. Known IDs include Apple (`0x004C`), Microsoft (`0x0006`), Samsung (`0x0075`), Xiaomi (`0x038F`), and Bosch (`0x01D7`). Unknown IDs are shown in hex (e.g. `ID: 0x1234`). - **Raw Data** — the full hex dump of the manufacturer data bytes. - **Byte visualization** — a horizontal bar chart where each bar represents one byte. Bar height is proportional to the byte value (0–255), providing a quick visual fingerprint of the data. - **Characteristic Values** — a list of all characteristics that have a readable value. Each entry shows: - The characteristic name (or UUID if unknown). - The interpreted value (as byte, UInt16, UInt32/Float, UTF-8 string, or hex depending on data length). - A small **byte bar chart** for values up to 8 bytes, with bars color-coded by magnitude (blue < 30%, green < 60%, yellow < 80%, red >= 80%). - Values update automatically for characteristics that support notifications. - **Connection Info** — timing and signal metadata: - **Discovered** — the time the device was first seen, with elapsed time since discovery. - **Last Update** — the time of the most recent data update, with TX Power if available. --- ## Permissions And Requirements {#permissions-and-requirements} - **Bluetooth permission** — CoreBluetooth requires the user to grant Bluetooth access. If permission is **denied**, Lirum shows a permissions screen with a button to open iOS Settings so the user can re-enable access. - **Bluetooth radio** — if Bluetooth is **powered off**, the tool remains accessible but scanning controls are disabled and an empty state prompts the user to turn Bluetooth on. No permission gate is shown in this case. - Bluetooth permission is managed by the system; there is no explicit "request permission" button. The system prompt appears automatically the first time CoreBluetooth initializes. ## Technical Details {#technical-details} - The tool acts as a **BLE Central** using `CBCentralManager`. It scans for all nearby peripherals (`scanForPeripherals(withServices: nil)`), meaning it discovers devices regardless of what services they advertise. - **RSSI** (Received Signal Strength Indicator) values typically range from **-30 dBm** (very strong, device is very close) to **-100 dBm** (very weak, device is far away or obstructed). The tool normalizes this range to a 0–100% scale using the formula: `(RSSI + 100) / 70`. - For **connected devices**, RSSI is polled every **2 seconds** using `readRSSI()`. A noise filter suppresses updates smaller than 2 dB to reduce visual jitter. - On connection, the tool calls `discoverServices(nil)` to enumerate all GATT services, then `discoverCharacteristics(nil, for:)` on each service. Readable characteristics are read automatically via `readValue(for:)`, and notify-capable characteristics are subscribed to via `setNotifyValue(true, for:)`. - **TX Power** (`CBAdvertisementDataTxPowerLevelKey`) represents the signal strength at 1 meter from the transmitter. When both TX Power and RSSI are known, the difference can be used to estimate path loss and approximate distance. - **Manufacturer Data** (`CBAdvertisementDataManufacturerDataKey`) follows the Bluetooth SIG format: the first two bytes are the company identifier in little-endian order, followed by vendor-specific payload bytes. - The **peripheral identifier** shown in the Info tab is a UUID assigned by CoreBluetooth on the local device. It is stable across app launches for the same device but is not the actual Bluetooth MAC address (which iOS does not expose). ## Notes And Limitations {#notes-and-limitations} - What you can see depends on what each peripheral advertises and what iOS exposes via CoreBluetooth. Some devices advertise minimal data. - Many devices appear as `[No Name]` because they do not include a local name in their advertisement packets. - The approximate distance estimates are rough guidelines based on RSSI thresholds. Actual distances vary significantly depending on environment, obstacles, antenna orientation, and transmit power. - Not all connectable devices will successfully connect. Some require prior pairing through iOS Settings, and some may reject connections from unknown centrals. - Classic Bluetooth devices (non-BLE) are not visible through CoreBluetooth and will not appear in the scan results. - RSSI values can fluctuate rapidly due to multipath interference, body absorption, and other environmental factors. The signal history chart helps smooth out these variations visually. ## Troubleshooting {#troubleshooting} - **No devices found** — make sure Bluetooth is turned on, stay on the Bluetooth screen for a few seconds, and tap **Start Scanning** if scanning has stopped. - **Permission denied** — tap the **Open Settings** button on the permission screen and re-enable Bluetooth access for Lirum in the iOS Privacy settings. - **Connection fails** — the device may require pairing in iOS Settings first, may not support connections from third-party apps, or may have moved out of range. - **Services tab is empty** — some devices expose no services or delay service discovery. Wait a few seconds after connecting. If no services appear, the device may not support standard GATT profiles. - **Characteristic values show only hex** — the tool attempts to interpret values as UTF-8 text and common numeric types. If none of these interpretations apply, the raw hex dump is shown. --- ## Bonjour Scanner Source: tools/bonjour-scanner.md URL: https://docs.lirumlabs.com/tools/bonjour-scanner Discover Bonjour services on your local network, such as printers, smart TVs, speakers, and other shared devices. ## Overview {#overview} Bonjour Scanner finds devices and services on your local network that advertise themselves using Bonjour, Apple's implementation of zero-configuration networking (also known as mDNS/DNS-SD). Bonjour is the technology that lets your Mac automatically find a nearby printer, or lets your iPhone discover an Apple TV for AirPlay -- all without any manual configuration. This tool shows you everything that is advertising itself on your network, including printers, NAS drives, media servers, smart home devices, and more. ## Table of Contents {#table-of-contents} - [Permissions](#permissions) - [Hero Card](#hero-card) - [Stats Card](#stats-card) - [Devices Section](#devices-section) - [Search And Filters](#search-and-filters) - [Device Cards](#device-cards) - [Log Section](#log-section) - [Notes And Limitations](#notes-and-limitations) --- ## Permissions {#permissions} Bonjour Scanner requires **Local Network** permission to discover services on your network. The first time you use this tool, your device will ask you to allow Lirum to find and communicate with devices on your local network. You must grant this permission for the scanner to work. If you previously denied this permission, you can re-enable it by going to your device's Settings, finding Lirum in the app list, and turning on **Local Network**. ## Hero Card {#hero-card} The hero card at the top of the screen provides scan controls and shows the current scanning status: - **Status Pill** -- a colored badge indicating the scanner's current state: - **Idle** -- the scanner is not running and is ready to start. - **Scanning** -- the scanner is actively searching for Bonjour services on the network. - **Finished** -- the scan has completed. - **Stopped** -- the scan was manually stopped before completing. - **Error** -- something went wrong during the scan (for example, a network permission issue). - **Start / Stop Button** -- tap **Start** to begin scanning. While a scan is in progress, this changes to **Stop** so you can end the scan early. - **Clear Button** -- removes all discovered devices from the list, letting you start fresh. ## Stats Card {#stats-card} The stats card gives you a numerical overview of what the scanner has found: - **Resolved Progress Bar** -- a visual bar showing what percentage of discovered services have been fully resolved. "Resolving" a service means looking up its complete network address and details. A fully filled bar means all services have been resolved. - **Service Types** -- the number of distinct service types found (for example, `_http._tcp`, `_airplay._tcp`, and `_printer._tcp` would count as three service types). - **Total Services** -- the total number of individual service instances discovered across all types. - **Resolved** -- how many services have been successfully resolved to a network address. - **Pending** -- how many services are still waiting to be resolved. - **With TXT Records** -- how many services include TXT records. TXT records are small pieces of metadata that a service publishes about itself, such as a model name, firmware version, or supported features. ## Devices Section {#devices-section} ### Search And Filters {#search-and-filters} Above the list of discovered devices, you will find: - **Search Field** -- type to filter the device list by name, hostname, or service type. - **Filter Picker** -- a segmented control that lets you narrow the list: - **All** -- show every discovered device. - **Resolved** -- show only devices whose network address has been fully resolved. - **Pending** -- show only devices that are still being resolved. - **With TXT** -- show only devices that have TXT record metadata. ### Device Cards {#device-cards} Each discovered service appears as a card with the following information: - **Icon** -- a contextual icon representing the type of device or service. For example: - Printer icon for printing services - NAS/storage icon for file sharing services - AirPlay icon for media streaming devices - Speaker icon for audio services - Generic device icon for unrecognized service types - **Title** -- the friendly name of the service as it advertises itself (e.g., "Living Room Apple TV" or "Office Printer"). - **Primary IP** -- the IP address where the service can be reached. - **Status Badge** -- indicates whether the service has been resolved or is still pending. - **Port** -- the network port number the service is listening on. Different services use different ports (for example, web servers commonly use port 80 or 443). - **TXT Record Count** -- how many TXT metadata entries the service publishes. Tap a device card to see the full TXT record contents. - **Hostname** -- the network hostname of the device (e.g., `Living-Room-Apple-TV.local`). ## Log Section {#log-section} At the bottom of the screen, a collapsible log section shows a chronological record of the scan activity. This includes timestamped entries for when services were discovered, resolved, or encountered errors. The log can be helpful for troubleshooting if a device you expect to see is not appearing. ## Notes And Limitations {#notes-and-limitations} - Bonjour Scanner only finds devices that actively advertise services using the Bonjour/mDNS protocol. Devices that do not use Bonjour (such as many non-Apple IoT devices) will not appear. - The scanner only discovers services on your current local network. It cannot find devices on other networks or across the internet. - Some services may take a few seconds to resolve after being discovered, especially on larger or busier networks. - The Local Network permission prompt is controlled by the operating system. If you do not see the prompt, check your device's privacy settings. - Certain networks (particularly corporate or public Wi-Fi) may block mDNS traffic, which will prevent Bonjour discovery from working. - The number and type of devices found depends entirely on what is connected to your network and what services those devices advertise. --- ## Camera Source: tools/camera.md URL: https://docs.lirumlabs.com/tools/camera Capture photos and inspect detailed EXIF metadata from any available camera. ## Overview {#overview} The Camera tool provides a full-screen live viewfinder for every camera on your device. You can switch between lenses (wide, telephoto, ultra-wide, front, and more), toggle flash, capture a photo, and then inspect the resulting image along with its full EXIF, TIFF, and Apple Maker metadata. It supports both portrait and landscape orientations. ## Table of Contents {#table-of-contents} - [Controls](#controls) - [Camera Picker](#camera-picker) - [Flash Toggle](#flash-toggle) - [Orientation](#orientation) - [Taking A Photo](#taking-a-photo) - [Photo Preview](#photo-preview) - [Image Data Tab](#image-data-tab) - [Raw Data Tab](#raw-data-tab) - [Permissions](#permissions) - [Notes And Limitations](#notes-and-limitations) ## Controls {#controls} When camera permission is granted, the live preview runs full-screen. Top bar: - **Camera picker** (top-left): opens a dropdown menu to select from all available cameras. - **Rotate preview** (between the camera picker and flash toggle): cycles the live preview through 0, 90, 180, and 270 degrees so you can correct the orientation yourself. The choice is persisted between sessions. - **Flash toggle** (top-right): enable or disable flash for the next capture. The bolt icon turns yellow when flash is on. Bottom: - **Shutter button**: large circular button to capture a photo. ## Camera Picker {#camera-picker} Tapping the camera picker opens a dropdown listing every camera discovered on the device. Available options vary by model but can include: - **Telephoto** — long-range optical zoom lens - **Wide** — standard wide-angle lens (selected by default) - **Ultra-Wide** — extended field-of-view lens - **Dual Wide** — dual wide-angle camera system - **Front Camera** — front-facing TrueDepth camera The active camera is indicated with a checkmark. ## Flash Toggle {#flash-toggle} The flash toggle in the top-right corner switches between flash on and flash off. When enabled, the bolt icon fills yellow; when disabled, it appears as a slashed bolt in white. Flash availability depends on the selected camera — front cameras and some lenses may not support flash. ## Orientation {#orientation} The camera preview adapts to device orientation. The viewfinder rotates to fill the screen in both portrait and landscape, and captured photos are saved with the correct orientation metadata. ## Taking A Photo {#taking-a-photo} Tap the shutter button to capture. Photos are taken at the framework's default resolution -- Lirum does not force maximum dimensions, because explicitly setting them can trigger format-transition crashes on some devices. After capture, Lirum automatically navigates to the Photo Preview screen. ## Photo Preview {#photo-preview} The Photo Preview screen displays the captured image at the top and offers two tabs for metadata inspection: - **Image Data** — parsed, human-readable metadata organized into sections. - **Raw Data** — the full metadata dictionaries in their original form. ### Image Data Tab {#image-data-tab} The Image Data tab organizes metadata into clear sections: **Basic file information:** - File size (bytes) - Resolution (width x height) - Format (JPEG) **Parsed camera data:** - Date & Time - Make and Model - Software and Host Computer - Focal Length (mm) - Aperture (f-number) - ISO - Exposure Time (formatted as fractions, e.g. 1/1258 sec) - Flash Used (detailed status such as "Flash did not fire, Compulsory flash mode") - Lens Model (includes full lens description, e.g. "iPhone 17 Pro Max back camera 6.765mm f/1.78") - White Balance (Auto or Manual) - Color Space **Additional metadata sections:** - Other TIFF Data (resolution units, X/Y resolution) - Other EXIF Data (aperture value, brightness, exposure program, metering mode, scene type, shutter speed, pixel dimensions, and more) - Apple Maker Data - Other Metadata (color profiles, etc.) ### Raw Data Tab {#raw-data-tab} The Raw Data tab presents the unprocessed metadata dictionaries in collapsible sections: - **EXIF Data** — full EXIF dictionary - **TIFF Data** — full TIFF dictionary - **Apple Maker Data** — Apple-specific proprietary metadata Each section can be expanded or collapsed. Values are displayed in a monospaced font and are selectable for copying. ## Permissions {#permissions} Camera access requires iOS permission. - On first launch, Lirum requests camera access through the standard iOS permission dialog. - If permission is denied or restricted, Lirum shows a permissions prompt with a button to open iOS Settings where you can grant access. ## Notes And Limitations {#notes-and-limitations} - On visionOS, the Camera tool is unavailable. - The Camera tool also works on **macOS Catalyst**, with simplified camera discovery for Mac cameras and fixed orientation handling. - Some devices have multiple rear cameras; which lenses are available may vary by device model and iOS version. - Photos are captured at the framework default resolution; Lirum deliberately does not set maximum photo dimensions, to avoid format-transition crashes. - Front-facing cameras are automatically mirrored in the preview; rear cameras are not. - The Camera tool does not include manual exposure, focus, or zoom controls — it focuses on capture and metadata inspection. --- ## Cellular Bands Source: tools/cellular-bands.md URL: https://docs.lirumlabs.com/tools/cellular-bands Browse supported cellular bands by device model. ## Overview {#overview} Cellular Bands is a built-in reference database. It lets you search for Apple devices and inspect which cellular bands each model supports. ## Table of Contents {#table-of-contents} - [Overview](#overview) - [Search And Sorting](#search-and-sorting) - [Browsing The Band List](#browsing-the-band-list) - [Notes And Limitations](#notes-and-limitations) ## Search And Sorting {#search-and-sorting} At the top of the screen you can: - Search by device name. - Sort results using a segmented control: **Release Date** (default, newest first) or **Name** (alphabetical). ## Browsing The Band List {#browsing-the-band-list} The list is hierarchical with four drill-down levels: - **Device** -- device name with its release date shown underneath - **Model Variant** -- regional model variants (with model identifier, e.g. "A3212") - **Band Type** -- technology grouping (e.g. "LTE", "5G NR") - **Frequency** -- individual band entries with band number and frequency Your current device is highlighted with a blue background and typically starts expanded to the relevant model entry. ## What You Can See {#what-you-can-see} - Supported cellular technologies (for example: LTE, 5G) (device dependent) - Supported band lists (device dependent) - Current connection context such as technology, band, and identifiers (OS/carrier dependent) ## Notes And Limitations {#notes-and-limitations} - This tool does not read live modem state. It displays a bundled dataset. - Band support varies by region and device variant. - For the most accurate compatibility check, confirm your exact model identifier and carrier requirements. --- ## Colors Source: tools/colors.md URL: https://docs.lirumlabs.com/tools/colors Pick a color, view its hex value, and open a full-screen solid fill for display checks. ## Overview {#overview} Colors helps you inspect your display with a solid fill. You can choose any color using the color map or the editor. ## Table Of Contents {#table-of-contents} - [Main Screen](#main-screen) - [Full-Screen Mode](#full-screen-mode) - [Color Editor](#color-editor) - [Display Testing Tips](#display-testing-tips) - [Notes And Limitations](#notes-and-limitations) ## Main Screen {#main-screen} The main screen shows: - A **Current Color** card with the **hex** value. - A **color map**: drag anywhere to select a color. - A **palette** button (top-right) to open the color editor. ## Full-Screen Mode {#full-screen-mode} Tap the Current Color card to open a true full-screen solid fill. A "Tap to close" instruction overlay appears and automatically fades out after 2 seconds. Tap anywhere to close. The text color on the color info card and full-screen view automatically inverts to remain readable against the selected background color. ## Color Editor {#color-editor} The editor opens as a half-sheet that can be expanded to full screen. It includes: - RGB sliders (0-255) for precise values - The system Color Picker for manual selection ## Display Testing Tips {#display-testing-tips} - Use moderate brightness to spot uneven brightness and tint shifts. - For stuck/dead pixels, inspect solid red/green/blue/white at a comfortable brightness. - For OLED uniformity and burn-in checks, try mid-grays and saturated colors. ## Notes And Limitations {#notes-and-limitations} - What you can see depends on your display type (LCD vs OLED) and current brightness. --- ## Comparison Source: tools/comparison.md URL: https://docs.lirumlabs.com/tools/comparison Compare two Apple devices across categories and drill into individual specs. ## Overview {#overview} Comparison is a built-in reference tool. It uses Lirum's device database to compare two devices side-by-side (for example, display specs, CPU, camera features, and more). ## Table Of Contents {#table-of-contents} - [Selecting Devices](#selecting-devices) - [Browsing Categories](#browsing-categories) - [Understanding Comparison Rows](#understanding-comparison-rows) - [Attribute Detail View](#attribute-detail-view) - [Search](#search) - [Notes And Limitations](#notes-and-limitations) ## Selecting Devices {#selecting-devices} At the top of the screen, you'll see two device selectors (left and right). Tap either side to open the device picker. By default, the left device is set to your **current device**, and the right device is set to the **original iPhone** (iPhone 2G) for reference. Your device selections are saved and restored automatically between sessions. The device picker includes a **search bar** to filter by device name, subtitle, or identifier. Each device is shown with a color-coded icon based on its type (iPhone, iPad, Mac, Watch, etc.). ## Browsing Categories {#browsing-categories} Categories are shown as a vertical list. Each category header includes an icon, the category name, an **attribute count badge** (showing how many attributes the category contains), and a short description. Tap a category header to expand or collapse it. ## Understanding Comparison Rows {#understanding-comparison-rows} Each attribute row shows values for the left and right devices: - **Numeric** attributes show two progress bars scaled relative to the global minimum and maximum values across all devices in the database. - **Boolean** attributes show Yes/No pills. - **Text** attributes show the two values side-by-side. - **Date** attributes (such as release date or discontinued date) are parsed and displayed with formatted dates. Tap any row to open the detail view for that attribute. ## Attribute Detail View {#attribute-detail-view} The detail view includes: - The two selected devices and their values for the attribute. - A visual indicator of which device is higher (for numeric attributes). - **Highest Recorded** -- for numeric attributes, a trophy icon row shows the global maximum value across all devices in the database, along with the device name that holds that record. - A list of **all devices** in the database for that attribute. - Sorting options (Value, Name, Release Date). ## Loading {#loading} When preparing comparison data, a loading overlay displays progressive status messages (such as "Loading record X/Y -- DeviceName") as each device record is processed. ## Search {#search} Use the search field to filter what's shown (for example, categories or attributes). ## Notes And Limitations {#notes-and-limitations} - Comparison data comes from Lirum's built-in database. It is not a live hardware scan. - The Comparison tool is not available on macOS Catalyst. ## More Screenshots {#more-screenshots} --- ## Connection Rate Source: tools/connection-rate.md URL: https://docs.lirumlabs.com/tools/connection-rate Real-time monitoring of network throughput on your active connection. ## Overview {#overview} Connection Rate focuses on how fast data is flowing right now over Wi-Fi or cellular, helping you spot drops, stalls, and instability. On first launch, the tool runs a short detection window to determine which interface (Wi-Fi or Cellular) is more active, then automatically selects it. ## Table of Contents {#table-of-contents} - [Overview](#overview) - [Tabs](#tabs) - [Overview Tab](#overview-tab) - [Graphs Combined Tab](#graphs-combined-tab) - [Graphs Per Interface Tab](#graphs-per-interface-tab) - [Notes And Limitations](#notes-and-limitations) ## What You Can See {#what-you-can-see} - Download and upload rate (displayed in KB/s, MB/s, or GB/s; selectable in the Overview header) - Short history graph (if available) - Active interface (Wi-Fi vs cellular) and basic connection context (OS dependent) ## Tabs {#tabs} - **Overview**: Live rates and byte counters for Wi-Fi and Cellular. - **Graphs (combined)**: A combined graph that overlays Wi-Fi and Cellular up/down rates. - **Graphs (per interface)**: One graph per direction and interface. ## Overview Tab {#overview-tab} The Overview tab is split into two cards: - **Wi-Fi** - **Cellular** Each card includes: - Unit picker (**KB / MB / GB**) to control how speeds and totals are formatted. - Download panel: - Current speed (e.g. `0.52 MB/s`) - Total bytes transferred (formatted + raw bytes) - Upload panel: - Current speed - Total bytes transferred - Two block visualizations (download/upload) composed of 200 blocks each. The blocks fill based on a modular calculation within the selected unit -- they reset each time a full unit boundary is crossed (for example, each full MB in MB mode). ## Graphs Combined Tab {#graphs-combined-tab} Above the graph, a summary panel shows all four current speed values with interface icons and direction arrows. The combined graph shows four lines: - Wi-Fi Download (blue) - Wi-Fi Upload (green) - Cellular Download (orange) - Cellular Upload (red) The graph retains up to 600 data points of history. ## Graphs Per Interface Tab {#graphs-per-interface-tab} This tab splits the data into four panels: - Wi-Fi Download - Wi-Fi Upload - Cellular Download - Cellular Upload Each panel includes the current speed and a scrolling history graph. ## Notes {#notes} - iOS privacy restrictions can limit what apps can access; fields may vary by OS version. - For end-to-end speed testing, pair this with a dedicated speed test in Safari or a trusted app. ## Notes And Limitations {#notes-and-limitations} - This tool reports device-level transfer counters and computed rates. It is not an internet speed test. - Rates are smoothed using a rolling weighted average over 8 samples, with more recent values weighted more heavily. The UI updates speed values at 5 Hz, while the block visualization runs at 60 Hz for smooth animation. --- ## CPU Monitor Source: tools/cpu-monitor.md URL: https://docs.lirumlabs.com/tools/cpu-monitor Monitor overall CPU usage and per-core activity in real time. ## Overview {#overview} CPU Monitor is a live dashboard for CPU usage. It shows a rolling history graph, per-core breakdown, and a compact details view. ## Table Of Contents {#table-of-contents} - [Tabs](#tabs) - [Overview Tab](#overview-tab) - [Per Core Tab](#per-core-tab) - [Details Tab](#details-tab) - [Notes And Limitations](#notes-and-limitations) ## Tabs {#tabs} CPU Monitor has three tabs: - **Overview** - **Per Core** - **Details** You can swipe between tabs or tap the tab titles. ## Overview Tab {#overview-tab} The Overview tab contains two sections: - **CPU Usage** - Current CPU usage percentage displayed prominently - **Usage History** graph showing a rolling timeline of overall CPU activity - **CPU Information** - Current usage - Number of cores - Active cores (cores above a small activity threshold) - Average / highest / lowest per-core usage ## Per Core Tab {#per-core-tab} Per Core shows one card per CPU core: - Core number and current usage percentage - A mini usage history graph for that core This view is useful for spotting cores that are consistently busier than others or detecting uneven load distribution. ## Details Tab {#details-tab} Details is a compact breakdown view: - **Total Usage** card showing overall CPU usage percentage and core count - **Per Core Usage** list - Each row shows the core number, current usage percentage, and a color-coded segmented gauge that fills based on load ## Notes And Limitations {#notes-and-limitations} - CPU Monitor reports device-level overall and per-core usage. It does not list per-app or per-process CPU usage. - Values update continuously while the tool is open. --- ## Display Patterns Source: tools/display-patterns.md URL: https://docs.lirumlabs.com/tools/display-patterns Full-screen test patterns for evaluating display color accuracy, contrast, sharpness, HDR capability, and uniformity. ## Overview {#overview} Display Patterns provides a collection of industry-standard and purpose-built test patterns for evaluating your screen. Each pattern fills the entire display edge-to-edge, hiding the status bar and all UI elements so the pattern is shown without any interference. The patterns are designed to reveal issues that are invisible during normal use — color casts, banding in gradients, uneven backlight uniformity, pixel defects, poor black levels, image retention, and HDR tone-mapping problems. The tool is useful for: - Verifying color accuracy after calibrating a display or adjusting True Tone / Night Shift settings. - Checking for dead or stuck pixels using solid color screens. - Evaluating OLED black levels and backlight bleed on LCD panels. - Testing HDR and Extended Dynamic Range (EDR) capability on supported devices. - Assessing display sharpness and resolution with frequency-based patterns. - Detecting image persistence (burn-in) or PWM flicker artifacts. ## Table Of Contents {#table-of-contents} - [Browsing Patterns](#browsing-patterns) - [Pattern Categories](#pattern-categories) - [Viewing A Pattern Full Screen](#viewing-a-pattern-full-screen) - [Pattern Info Sheet](#pattern-info-sheet) - [Available Patterns](#available-patterns) - [SMPTE Color Bars](#smpte-color-bars) - [EBU Color Bars](#ebu-color-bars) - [HDR Test Pattern (EDR)](#hdr-test-pattern-edr) - [HDR-Style Color Bars (SDR)](#hdr-style-color-bars-sdr) - [Solid Colors](#solid-colors) - [Black Screen](#black-screen) - [Checkerboard Pattern](#checkerboard-pattern) - [Multiburst Pattern](#multiburst-pattern) - [PM5544](#pm5544) - [Notes And Limitations](#notes-and-limitations) --- ## Browsing Patterns {#browsing-patterns} Patterns are presented in a scrollable grid organized by category. Each category has a header label and contains one or more pattern cards arranged in a two-column adaptive grid. Each **pattern card** shows: - A **live preview thumbnail** of the pattern, rendered at a small scale so you can see what the pattern looks like before opening it. - The **pattern title** below the preview. - An **info button** (ⓘ) in the top-right corner of the thumbnail that opens a detailed description sheet. Tap anywhere on the preview thumbnail to open the pattern full screen. Tap the info button to read about the pattern without opening it. --- ## Pattern Categories {#pattern-categories} Patterns are grouped into four categories based on what aspect of the display they test: | Category | Purpose | |----------|---------| | **Color Accuracy** | Verify that the display reproduces colors correctly, with proper hue, saturation, and white balance. Contains the broadcast-standard color bar patterns (SMPTE, EBU), HDR test patterns, and solid primary colors. | | **Contrast & Black Levels** | Evaluate the display's ability to produce deep blacks and differentiate near-black shades. Important for OLED burn-in checks and LCD backlight bleed assessment. | | **Sharpness & Resolution** | Test the display's resolving power — its ability to render fine detail and high-frequency patterns without aliasing or blurring. | | **Historical** | Classic broadcast test cards that were historically used to calibrate television sets and are still useful reference patterns today. | --- ## Viewing A Pattern Full Screen {#viewing-a-pattern-full-screen} When you tap a pattern card, the pattern opens as a full-screen overlay that covers the entire display, including the status bar and safe areas. This ensures the pattern fills every pixel. - A **title overlay** with the pattern name appears at the top, and a **"Tap to exit"** hint appears at the bottom. Both fade out automatically after 3 seconds. - **Tap anywhere on the screen** to close the pattern and return to the grid. For the **HDR Test Pattern**, opening the pattern also temporarily: - Sets screen brightness to maximum. - Disables auto-lock to prevent the screen from dimming during evaluation. - Enables Extended Dynamic Range (EDR) compositing on the window layer (iOS 17+). All of these settings are restored automatically when you exit the pattern. --- ## Pattern Info Sheet {#pattern-info-sheet} Tapping the **info button** (ⓘ) on any pattern card opens a bottom sheet with: - A **larger preview** of the pattern. - A **description** explaining what the pattern tests and how to interpret it. - A **"Learn more on Wikipedia"** button (where available) that opens the relevant Wikipedia article in an in-app web view. --- ## Available Patterns {#available-patterns} ### SMPTE Color Bars {#smpte-color-bars} The [SMPTE color bars](https://en.wikipedia.org/wiki/SMPTE_color_bars) are the standard test pattern defined by the Society of Motion Picture and Television Engineers. They have been the default color reference for broadcast television in North America since 1978. **Layout:** The pattern is divided into three horizontal sections: - **Top section** (67% of height) — seven vertical bars at 75% intensity, from left to right: Gray (75% white), Yellow, Cyan, Green, Magenta, Red, Blue. - **Middle section** (8% of height) — a reverse-order row: Blue, Black, Magenta, Black, Cyan, Black, Gray. This section helps verify color phase and alignment. - **Bottom section** (25% of height) — contains the **PLUGE** (Picture Line-Up Generation Equipment) signal: a -I patch (blue-cyan), a white bar, a +Q patch (purple), and a series of near-black patches at carefully specified luminance levels (approximately 3.5%, 7.5%, and 11.4% brightness). The PLUGE region is used to set the black level (brightness control) correctly: the darkest patch should be barely invisible against the background, while the brightest patch should be just barely visible. **When to use:** - Verifying that each color bar is the correct hue and saturation — if any bar has a color cast, the display's color temperature or gamut mapping may be off. - Setting the brightness (black level) control using the PLUGE bars in the bottom section. - Checking for color fringing or chroma subsampling artifacts at the boundaries between bars. --- ### EBU Color Bars {#ebu-color-bars} The [EBU colour bars](https://en.wikipedia.org/wiki/EBU_colour_bars) (also known as 100/0/75/0 bars) are the standard test pattern defined by the European Broadcasting Union. They are the European counterpart to the SMPTE bars and are the default reference for PAL and DVB broadcast systems. **Layout:** Seven full-height vertical bars at 75% intensity, from left to right: White, Yellow, Cyan, Green, Magenta, Red, Blue. Unlike the SMPTE pattern, EBU bars use a single row of uniform-height bars with no PLUGE section, making them simpler to read but focused purely on color accuracy rather than black-level calibration. **When to use:** - Quick color accuracy check — each bar should appear as a distinct, pure color with no visible tinting or desaturation. - Comparing your display's color reproduction against a known reference (e.g. a calibrated monitor). - Verifying that the seven primary and secondary colors are balanced — if Yellow appears greenish or Magenta appears pinkish, the display's white point may be skewed. --- ### HDR Test Pattern (EDR) {#hdr-test-pattern-edr} The HDR Test Pattern uses Apple's [Extended Dynamic Range](https://en.wikipedia.org/wiki/High-dynamic-range_television) (EDR) API to push brightness values beyond the standard 0–100% SDR range. On supported displays (OLED iPhones, XDR displays), this pattern can produce luminance levels significantly brighter than normal SDR white. **Layout:** The pattern is divided into three horizontal sections: - **Top section** (60% of height) — HDR color bars rendered in the Display P3 color space with EDR boost. The first bar uses an EDR value of 1.5 (150% of SDR white) to test peak brightness reproduction. The remaining bars are 75% saturated primary and secondary colors in Display P3. - **Middle section** (20% of height) — eight luminance level patches stepping from pure black (0%) through near-black (5%), shadow detail (10%), middle gray (18%), half brightness (50%), SDR white (100%), and two EDR boost levels (150% and 200%). These test the display's tone mapping and ability to distinguish fine luminance differences across the entire dynamic range. - **Bottom section** (20% of height) — peak brightness patches, starting from near-black levels (1%, 2%, 3%), through reference gray (18%), SDR white (100%), and escalating EDR levels (150%, 200%, 300%). The 300% patch represents the maximum EDR value and tests the display's absolute peak brightness capability. All colors are specified using `UIColor(displayP3:)` for [wide color gamut](https://en.wikipedia.org/wiki/DCI-P3) support, and the view's CALayer is configured with `RGBA16Float` pixel format and `wantsExtendedDynamicRangeContent = true` for proper EDR compositing. **When to use:** - Testing whether your device supports HDR / EDR — on a capable display, the EDR patches should appear visibly brighter than the 100% SDR white patch. - Evaluating tone mapping — the luminance step patches should show smooth, distinguishable transitions. If adjacent patches appear identical, the display may be clipping or compressing the dynamic range. - Checking near-black shadow detail — the 1%, 2%, and 3% patches should each be distinguishable from pure black. On OLED displays, these test the panel's ability to reproduce very low luminance levels without crushing them to black. **Note:** When this pattern is opened, Lirum automatically sets brightness to maximum, disables auto-lock, and enables EDR. These settings are restored when you exit. --- ### HDR-Style Color Bars (SDR) {#hdr-style-color-bars-sdr} An SDR approximation of the [ITU-R BT.2111](https://en.wikipedia.org/wiki/High-dynamic-range_television) HDR test pattern. This version uses standard sRGB colors (no EDR or wide color gamut) so it works identically on all displays, including those without HDR support. It is useful as a baseline comparison against the true HDR pattern. **Layout:** The pattern has the same three-section structure as the HDR Test Pattern: - **Top section** (60% of height) — eight color bars: 100% White, 75% Yellow, Cyan, Green, Magenta, Red, Blue, and Black. - **Middle section** (20% of height) — eight grayscale luminance patches from 0% (pure black) through 5%, 10%, 18% (middle gray), 35%, 50%, 75%, to 100% (full white). - **Bottom section** (20% of height) — near-black and peak brightness patches: 1%, 2%, 3%, 18% (reference gray), 80%, 90%, 95%, and 100% white. **When to use:** - Evaluating tone mapping on non-HDR displays — the grayscale patches should show smooth, even steps with no visible banding or posterization. - Checking near-black performance — the 1%, 2%, and 3% patches in the bottom section are designed to test black crush on both OLED and LCD panels. - Comparing against the true HDR pattern to understand what EDR adds — view both patterns back-to-back on an HDR-capable device. --- ### Solid Colors {#solid-colors} Five full-screen solid color patterns are available: **White Screen**, **Red Screen**, **Green Screen**, **Blue Screen**, and **Black Screen** (listed in the Contrast & Black Levels category). Each fills the entire display with a single uniform color at 100% intensity. **When to use:** - **Dead pixel detection** — a dead pixel appears as a dark spot on a bright background (White, Red, Green, or Blue screens). A stuck pixel appears as a colored dot on the Black screen. - **Backlight uniformity** — on LCD displays, the White screen reveals uneven backlight distribution (brighter edges, darker corners, or "clouding"). OLED displays should show perfectly uniform brightness. - **Color tinting** — the White screen should appear neutral with no pink, yellow, or blue tint. If the white appears warm or cool, the display's color temperature may need adjustment. - **OLED black level** — the Black screen should show true black with no visible glow or gray lift. On OLED panels, this tests that pixels are completely off. - **Primary color purity** — the Red, Green, and Blue screens each test one color channel in isolation. They should appear as a pure, saturated color with no visible contamination from other channels. --- ### Black Screen {#black-screen} The Black screen is listed under the **Contrast & Black Levels** category. It fills the display with pure black (#000000). **When to use:** - **Backlight bleed assessment** — on LCD displays, view this pattern in a completely dark room. Any light leaking from the edges or corners indicates backlight bleed. IPS panels often show characteristic "IPS glow" in the corners. - **OLED uniformity** — on OLED displays, this tests that all pixels are truly off. Any visible glow or non-uniformity may indicate panel degradation. - **Image retention / burn-in check** — after displaying static content for a long period, switch to the black screen and look for ghost images of previously displayed elements. - **Ambient light assessment** — in various lighting conditions, this pattern helps evaluate how well the display's anti-reflective coating rejects ambient light. --- ### Checkerboard Pattern {#checkerboard-pattern} A [checkerboard pattern](https://en.wikipedia.org/wiki/Checkerboard) of alternating black and white squares (20 × 20 pixels each) filling the entire screen. **When to use:** - **Response time and ghosting** — scroll or flick the pattern. On displays with slow pixel response times, the high-contrast transitions between black and white squares will produce visible smearing or ghosting trails. - **Pixel inversion and crosstalk** — on LCD displays, a checkerboard pattern can reveal pixel inversion artifacts (where adjacent pixels interfere with each other), appearing as a slight shimmer or tint. - **Sharpness and scaling** — each square should have perfectly crisp edges. If the edges appear soft or the squares seem to vary in size, the display may be applying unwanted scaling or interpolation. - **Image retention testing** — display the checkerboard for several minutes, then switch to a uniform gray pattern to check for afterimages. - **PWM flicker detection** — at low brightness levels, the high-contrast checkerboard makes PWM flickering more perceptible if the display uses pulse-width modulation for dimming. --- ### Multiburst Pattern {#multiburst-pattern} The [Multiburst pattern](https://en.wikipedia.org/wiki/Multiburst) is a standard display and video test signal consisting of several adjacent panels, each filled with vertical sinusoidal luminance cycles (alternating bright and dark bands). The spatial frequency increases from left to right across the six panels. **Layout:** Six equal-width panels displayed side by side, containing 3, 6, 9, 12, 15, and 18 sinusoidal cycles respectively. Each panel's luminance varies smoothly from white to black following a cosine function, producing a smooth gradient between peaks and troughs rather than hard-edged bars. **When to use:** - **Resolution and sharpness evaluation** — on a capable display, all six panels should show distinct, well-separated light and dark bands. If the higher-frequency panels (right side) appear as a uniform gray mush, the display lacks the resolving power to reproduce that level of detail. - **Antialiasing and rendering quality** — the sinusoidal transitions should appear smooth, not stepped or jagged. Visible banding within individual cycles indicates quantization or poor gradient rendering. - **Contrast at high frequencies** — compare the perceived contrast between the leftmost (low-frequency) and rightmost (high-frequency) panels. A quality display maintains contrast even at high spatial frequencies. Significant contrast loss at higher frequencies indicates the display's modulation transfer function (MTF) is rolling off. - **Scaling artifact detection** — if the display is running at a non-native resolution or applying any scaling, the highest-frequency panels will show moire patterns or aliasing artifacts. --- ### PM5544 {#pm5544} The [Philips PM5544](https://en.wikipedia.org/wiki/Philips_circle_pattern) is an iconic television test card designed by Philips in 1968. It was used by broadcasters across Europe, Africa, Asia, and Oceania to calibrate TV sets and verify transmission quality. The pattern is displayed as a full-screen image of the original PM5544 test card. **Layout:** The PM5544 features a central circle with a grid overlay, color bars, grayscale wedges, convergence crosshairs, and geometric elements arranged in a standardized layout. The card was designed so that every element tests a specific aspect of display performance: - The **central circle** tests aspect ratio — it should appear as a perfect circle, not an ellipse. If it looks stretched, the display's aspect ratio is incorrect. - The **color bars** in the center test color reproduction and saturation. - The **grayscale wedges** test the display's ability to reproduce a smooth gradient from black to white. - The **crosshairs and grid lines** test geometric linearity — they should appear perfectly straight and evenly spaced. - The **fine detail areas** near the edges test resolution and convergence. **When to use:** - As a comprehensive, all-in-one display test — the PM5544 covers aspect ratio, color, grayscale, geometry, and resolution in a single pattern. - For nostalgia and reference — this is the same test card that millions of viewers saw during broadcast sign-off periods throughout the 20th century. --- ## Notes And Limitations {#notes-and-limitations} - The **HDR Test Pattern (EDR)** temporarily forces maximum screen brightness, disables auto-lock, and enables Extended Dynamic Range on the window layer. All settings are restored automatically when the pattern is closed. EDR effects are only visible on devices with HDR-capable displays (OLED iPhones, XDR iPads, XDR Macs). - On devices without HDR support, the HDR Test Pattern's EDR patches will appear identical to their SDR equivalents since the display cannot exceed 1.0 luminance. - Some patterns (particularly the Checkerboard and Multiburst at high frequencies) can reveal **PWM flicker** sensitivity; results may vary depending on the display's brightness level. Lower brightness often makes PWM flicker more perceptible. - View patterns in a **dim or dark environment** for best results, especially when evaluating black levels, backlight uniformity, or near-black shadow detail. - All patterns cover the **full display area** including the safe area insets and notch/Dynamic Island region, ensuring every pixel is tested. - The PM5544 test card is rendered from an embedded image and may not match the display's native resolution pixel-for-pixel, unlike the programmatically generated patterns which render at native resolution. --- ## Flashlight Source: tools/flashlight.md URL: https://docs.lirumlabs.com/tools/flashlight Controls the device flashlight with variable intensity. ## Overview {#overview} Flashlight gives you direct control over your device's rear torch (flashlight), including fine-grained intensity adjustment. You can turn it on or off with a single tap, jump to preset brightness levels, or dial in an exact intensity with the slider. ## Table Of Contents {#table-of-contents} - [Power Button](#power-button) - [Intensity Presets](#intensity-presets) - [Fine-Tune Slider](#fine-tune-slider) - [Status Card](#status-card) - [Notes And Limitations](#notes-and-limitations) ## Power Button {#power-button} A large circular button in the center of the screen turns the flashlight on and off. When the torch is active, the button glows to give you a clear visual confirmation that the light is on. Tap the button once to turn the flashlight on. Tap it again to turn it off. ## Intensity Presets {#intensity-presets} Below the power button, a presets card offers four brightness levels, each shown with a distinct icon representing its intensity: - **Low** -- 25% intensity. - **Medium** -- 50% intensity. - **High** -- 75% intensity. - **Max** -- 100% intensity (full power). Tap any preset to instantly jump to that brightness level. The flashlight turns on automatically if it is not already active. ## Fine-Tune Slider {#fine-tune-slider} For precise control, use the intensity slider to set the torch brightness anywhere from **0%** to **100%**. Drag the slider to adjust brightness smoothly. The current intensity percentage is displayed alongside the slider so you can see the exact value. ## Status Card {#status-card} A status card at the bottom of the screen shows: - **Torch availability** -- whether the device has a torch that can be controlled. - **Current state** -- on or off. - **Intensity** -- the current brightness percentage. ## Notes And Limitations {#notes-and-limitations} - Flashlight requires a device with a rear camera flash (torch). On devices without a torch, the screen displays an "Unavailable" message. The flashlight and the variable-intensity slider both require a device with a torch; many iPads have no torch and will show as unavailable. - The flashlight uses camera hardware. If another app is actively using the camera, the torch may not be available until that app releases the camera. - The number of distinct brightness levels depends on your device hardware. Some devices support more granular intensity steps than others. - The flashlight will turn off automatically if the app is closed or moved to the background. --- ## GPS Status Source: tools/gps-status.md URL: https://docs.lirumlabs.com/tools/gps-status Location and navigation diagnostics for your device. ## Overview {#overview} GPS Status shows the current location fix and key navigation fields so you can validate that Location Services are working and assess accuracy. ## Table of Contents {#table-of-contents} - [Overview](#overview) - [Map View](#map-view) - [Map Modes](#map-modes) - [Data Sheet](#data-sheet) - [Copying Values](#copying-values) - [Permissions](#permissions) - [Notes And Limitations](#notes-and-limitations) ## Map View {#map-view} GPS Status uses a full-screen map centered on your position (when available). The tool shows your location using a user annotation. If the data sheet is dismissed, a floating **Data** button appears so you can bring it back. ## Map Modes {#map-modes} Use the map mode control in the top-right corner to switch between map styles: - **Standard** - **Satellite** - **Hybrid** - **Satellite 3D** Example modes: ## Data Sheet {#data-sheet} The data sheet (a draggable bottom sheet) lists live GPS fields. Depending on what your device reports, you may see: - Location (Decimal) - Location (DMS) - Altitude (meters) - Speed (m/s) - Course (degrees) - Horizontal accuracy (meters) - Vertical accuracy (meters) - Timestamp - Floor (if available) - Magnetic heading / True heading / Heading accuracy (if available) - Address (when available) ## Copying Values {#copying-values} Long-press a row and choose **Copy** from the context menu to copy its value to the clipboard. ## Permissions {#permissions} GPS Status requires Location Services. - If permission is not granted, Lirum shows a permissions screen where you can request access or open iOS Settings. ## Notes And Limitations {#notes-and-limitations} - The tool shows the data iOS provides. Availability varies by device, region, and environment. - For best accuracy, test outdoors with a clear view of the sky. --- ## Gyroscope Source: tools/gyroscope.md URL: https://docs.lirumlabs.com/tools/gyroscope Live gyroscope readings for device rotation, with combined and per-axis graphs. ## Overview {#overview} The gyroscope measures rotational velocity around the device axes. Lirum shows live values and a rolling history for each axis. ## Table of Contents {#table-of-contents} - [Overview](#overview) - [Tabs](#tabs) - [Toolbar Controls](#toolbar-controls) - [Overview Tab](#overview-tab) - [Graphs Combined Tab](#graphs-combined-tab) - [Graphs Per Axis Tab](#graphs-per-axis-tab) - [Notes And Limitations](#notes-and-limitations) ## Tabs {#tabs} - **Overview** - **Graphs (combined)** - **Graphs (per axis)** ## Toolbar Controls {#toolbar-controls} All motion-sensor tools share the same toolbar controls: - **Play / Pause**: start or pause sensor updates. - **Clear**: clear history buffers used by the graphs. - **Refresh rate**: cycle between Faster, Fast, and Slow sampling rates. ## Overview Tab {#overview-tab} The Overview tab features a real-time **3D Metal-rendered wireframe gyroscope** consisting of three concentric rings in different planes and colors: - **Outer ring** (red) in the XY plane - **Inner ring** (green) in the YZ plane - **Rotor disk** (blue) in the XZ plane The rings rotate based on cumulative integrated rotation rates from the sensor. Three static axis lines (X = red, Y = green, Z = blue) provide a fixed reference frame that does not rotate with the model. Below the visualization, the tab shows current axis values: - **rotX** (X axis) - **rotY** (Y axis) - **rotZ** (Z axis) Values are shown in radians per second (`rad/s`). ## Graphs Combined Tab {#graphs-combined-tab} This tab overlays X/Y/Z history on a single graph (X = red, Y = green, Z = blue) with a legend. The Y-axis range is fixed at -10 to +10 rad/s. Current values are displayed with split-precision formatting (the first 4 decimal places are bold, remaining decimals are semi-transparent). The graph retains the last 200 readings. ## Graphs Per Axis Tab {#graphs-per-axis-tab} This tab shows three separate panels (X, Y, Z), each with a dedicated graph and the current value displayed alongside the axis label. ## What You Can See {#what-you-can-see} - Rotation rate along the X/Y/Z axes (commonly in degrees/second or radians/second) - Optional graph/history view (if available) - Refresh rate / sampling interval (if configurable) ## Notes {#notes} - Axes orientation depends on device orientation (portrait/landscape). - Readings will drift over time; this is normal for gyroscopes. ## Notes And Limitations {#notes-and-limitations} - On Mac Catalyst, motion sensors may be unavailable. - On visionOS (Apple Vision Pro), readings come from the device's motion system and require an open immersive space; the tool shows a notice with an **Open immersive space** button when the space is not active. - Gyroscope readings can drift and are affected by device movement and vibration. --- ## Hardware Browser Source: tools/hardware-browser.md URL: https://docs.lirumlabs.com/tools/hardware-browser Hardware Browser is an interactive tool that browses your device's full hardware registry as a searchable, expandable tree. ## Overview {#overview} Hardware Browser dumps the device's hardware information into a tree of registry nodes (ported from the legacy tree view) and presents it with live search, expand/collapse controls, per-node detail sheets, and JSON export. Each row can be expanded to reveal nested children and `Property_` values, and tapped to open a detail sheet with breadcrumbs and the node's full contents. A status pill and chips in the header report the current load state, total node count, last refresh time, and -- while searching -- the number of matches. ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Searching](#searching) - [Tree Controls](#tree-controls) - [Node Details](#node-details) - [Export And Share](#export-and-share) - [Report](#report) - [Notes And Limitations](#notes-and-limitations) ## Searching {#searching} The search bar filters the tree as you type. Matching nodes -- and the path to them -- are shown with the tree fully expanded so results stay visible. While a search is active: - The header shows a **matches** chip with the running count. - Expand/collapse controls are disabled (the tree is held open to display matches). - Clearing the search restores your previous expand/collapse state. ## Tree Controls {#tree-controls} Tap the **ellipsis (...)** button in the toolbar to open the controls menu: - **Refresh** -- re-dump the hardware registry and rebuild the tree. - **Expand All** -- expand every expandable node in the tree. - **Collapse All** -- collapse every node. - **Export JSON** -- export the raw dump as JSON (see [Export And Share](#export-and-share)). Each parent row shows a chevron that toggles its children; leaf rows show a small dot. On first load, the top level is expanded automatically. ## Node Details {#node-details} Tap any row (or use its context menu's **Details** action) to open a detail sheet showing: - The node title and its full **breadcrumb path** (for example, `Root > Subsystem > Node`). - The node's **contents** -- the raw registry value, pretty-printed JSON for nested objects, or a preview of its children. From the sheet you can **Copy Value** (copies the title, path, and contents to the clipboard) or **Share** the same text via the system share sheet. Row text and the detail sheet's contents are selectable. A row's context menu also offers **Copy** (copies the row name) and **Expand**/**Collapse** for parent nodes. ## Export And Share {#export-and-share} From the controls menu, **Export JSON** produces the entire raw hardware dump as pretty-printed, sorted JSON and presents it in the system share sheet for saving or sharing. The per-node share sheet similarly lets you share an individual node's title, path, and contents. ## Report {#report} Hardware Browser contributes a tool report (filename base `HardwareBrowser`) that captures the current state, node count, last refresh time, the full tree, and a JSON snippet of the raw dump. ## Notes And Limitations {#notes-and-limitations} - The hardware dump requires a real device; on a simulator or restricted environment the tool reports that the dump is unavailable. - Hardware Browser is not supported on visionOS. --- ## Tools Source: tools/index.md URL: https://docs.lirumlabs.com/tools/ Lirum Device Info includes a suite of tools for live monitoring, diagnostics, and reference lookups. Availability varies by device and platform (iOS/iPadOS/visionOS/macOS Catalyst/tvOS), and some tools require permissions (for example Camera, Microphone, Bluetooth, NFC, and Location).
Tools screen (alternate screenshot)
## Table Of Contents {#table-of-contents} - [System And Performance](#system-and-performance) - [Connectivity](#connectivity) - [Sensors](#sensors) - [Hardware And Display](#hardware-and-display) - [Testing And Reports](#testing-and-reports) - [Developer And Power Users](#developer-and-power-users) - [Apple TV](#apple-tv) ## System And Performance {#system-and-performance} - **[CPU Monitor](cpu-monitor)**: Live overall CPU usage, per-core usage, and usage history. - **[Memory](memory-manager)**: Available memory gauge plus a detailed breakdown (Active/Wired/Inactive/Free). - **[Storage](storage-analysis)**: Storage usage, media library sizes (Photos/Music), drive details, and graphs. - **[Storage Analyzer (macOS)](storage-analyzer)**: Disk scanning and deeper storage analysis (macOS Catalyst only). - **[Battery](battery-reports)**: Live level/state plus a Specs list of battery attributes (varies by device/OS). - **[Thermals](thermals)**: iOS thermal state (Nominal/Fair/Serious/Critical) and recommendations. - **[Benchmark](benchmark)**: Run CPU, memory, storage, and GPU performance benchmarks with live thermal monitoring. - **[Process List (macOS)](process-list)**: Enumerate all running processes with CPU, memory, and state details. ## Connectivity {#connectivity} - **[Connection Rate](connection-rate)**: Live download/upload rate for Wi-Fi and Cellular, plus graphs. - **[Internet Speed Test](internet-speed-test)**: Measure real internet download/upload speed, latency, and jitter against a Measurement Lab (M-Lab) server. - **[Throughput](throughput)**: Measure peer-to-peer transfer speed between two devices running Lirum. - **[Network Interfaces](network-interfaces)**: Inspect all network interfaces, addresses, DNS servers, and traffic. - **[Bonjour Scanner](bonjour-scanner)**: Discover Bonjour services on the local network and inspect responses. - **[Network Scanner](network-scanner)**: Probe LAN hosts with ping and port scanning to discover devices. - **[Network Ping](network-ping)**: Ping a host and measure latency and packet loss with real-time graphs. - **[Network Traceroute](network-traceroute)**: Trace the network path to a host and visualize hops on a map. - **[WHOIS](whois)**: Look up registration data for domains, IP addresses, and ASNs. - **[Bluetooth](bluetooth)**: Scan nearby devices, inspect details, and connect to supported peripherals. - **[Cellular Bands](cellular-bands)**: Browse a built-in database of supported cellular bands by device model. - **[Metrics Server](metrics-server)**: Broadcast CPU metrics to other devices via Bluetooth LE. - **[Metrics Client](metrics-client)**: Discover Metrics Servers via Bluetooth LE and view live CPU metrics. ## Sensors {#sensors} - **[Gyroscope](gyroscope)**: Live rotation rate (X/Y/Z) with combined/per-axis graphs. - **[Accelerometer](accelerometer)**: Live acceleration (X/Y/Z) with combined/per-axis graphs. - **[Magnetometer](magnetometer)**: Live magnetic field (X/Y/Z) plus heading, with graphs. - **[GPS Status](gps-status)**: Map + live location details (accuracy, speed, altitude, etc.). - **[Barometer](barometer)**: Pressure and relative altitude (device dependent). - **[Proximity Sensor](proximity-sensor)**: Near/Far state with an event log (device dependent). ## Hardware And Display {#hardware-and-display} - **[Microphone](microphone)**: Live input level, waveform, and audio session details. - **[Camera](camera)**: Full-screen camera preview with camera picker and photo capture. - **[Speaker Test](speaker-test)**: Generate a test tone with frequency/amplitude controls and output selection. - **[AR](ar)**: Place and manipulate AR objects (device dependent). - **[Spatial Shapes (visionOS)](spatial-shapes)**: visionOS AR tool to add and manage 3D objects in AR Space. - **[Biometrics](biometrics)**: Check Face ID/Touch ID/Optic ID availability and run an authentication test. - **[Touchscreen](touchscreen)**: Multi-touch tracking and painting mode to verify touch coverage. - **[Vibration](vibration)**: Test haptics with intensities, notification feedback patterns, and stats. - **[Flashlight](flashlight)**: Control the device flashlight with variable intensity and presets. - **[Colors](colors)**: Drag to pick a color, view its hex value, and open a full-screen solid fill. - **[Display Patterns](display-patterns)**: Full-screen test patterns to inspect uniformity, banding, and sharpness. ## Testing And Reports {#testing-and-reports} - **[Manual Test Wizard](manual-test-wizard)**: Run guided hardware checks step by step and generate a PDF report. - **[Report](report)**: Generate and export comprehensive device reports combining data from multiple tools. - **[NFC Read](nfc-read)**: Scan NFC tags, view records, import from QR, and manage saved/history lists. - **[NFC Write](nfc-write)**: Compose and write NFC messages, plus advanced operations (copy/erase/lock/format). ## Developer And Power Users {#developer-and-power-users} - **[Comparison](comparison)**: Compare two devices across categories and drill into individual attributes. - **[Timeline](timeline)**: Visual timeline of device availability, with optional Compare navigation. - **[Local AI](local-ai)**: Run supported local AI models on-device (availability varies). - **[Hardware Browser](hardware-browser)**: Browse and search a registry of hardware entries with detail views and export. ## Apple TV {#apple-tv} - **[Remote](remote)**: Monitor Apple TV Remote input events, button presses, and touch surface data in real time. - **[Remote Motion](remote-motion)**: Track Apple TV Remote motion and orientation with 3D visualization. - **[Sound System](sound-system)**: Inspect and test the connected audio system, speaker channels, and spatial audio. --- ## Internet Speed Test Source: tools/internet-speed-test.md URL: https://docs.lirumlabs.com/tools/internet-speed-test Measures real internet download and upload speed, latency (ping), and jitter against a remote server using the Measurement Lab (M-Lab) **ndt7** protocol. ## Overview {#overview} Internet Speed Test runs a genuine network measurement against a public Measurement Lab (M-Lab) server — it is **not** an estimate from local transfer counters like [Connection Rate](connection-rate). M-Lab is an open, third-party research platform; Lirum uses its **ndt7** test, which performs a multi-stage measurement: locate the nearest server, probe latency, then run a real download and upload over the connection. The first time you run a test, Lirum shows a short **consent screen** because the measurement sends some data to M-Lab (see [Privacy & Consent](#privacy--consent) below). ## Table Of Contents {#table-of-contents} - [Overview](#overview) - [Running A Test](#running-a-test) - [Phases](#phases) - [Results Screen](#results-screen) - [Latency Profile](#latency-profile) - [Connection Suitability](#connection-suitability) - [Connection Details](#connection-details) - [History](#history) - [Privacy & Consent](#privacy--consent) - [Notes And Limitations](#notes-and-limitations) ## Running A Test {#running-a-test} Tap **GO** on the idle screen. The tool then: 1. Locates the nearest M-Lab server. 2. Probes latency (ping/jitter). 3. Runs the download measurement. 4. Runs the upload measurement. 5. Shows the [results screen](#results-screen). You can cancel a running test by leaving the screen; the in-flight task is cancelled. ## Phases {#phases} While the test runs, the screen shows the current phase and a live speed dial: - **READY** — idle, before the test starts. - **LATENCY** — probing the server and measuring round-trip time. - **DOWNLOAD** — pulling data from the server; the dial reflects live download throughput. - **UPLOAD** — pushing data to the server; the dial reflects live upload throughput. - **COMPLETED** — finished, showing the [results screen](#results-screen). During download/upload, the running screen shows the live speed on the dial, a throughput bar history, an area chart of speed over time, and a compact stat strip (Download / Upload / Ping / Jitter) that fills in as each phase completes. ## Results Screen {#results-screen} After the test completes, the results screen shows: - A **hero card** with a letter grade and rating based on the download speed. - **Primary metrics**: Download and Upload in Mbps (with an MB/s conversion underneath). - A [latency profile](#latency-profile) card. - A [connection suitability](#connection-suitability) card. - A [connection details](#connection-details) card. - **Run Again** and **Share** actions. ## Latency Profile {#latency-profile} The latency card reports: - **Ping** — round-trip time in milliseconds (ms). - **Jitter** — variation in latency, in ms. - **Loss** — not reported by ndt7; shown as 0 / not available. A latency distribution readout summarizes the sampled ping values. ## Connection Suitability {#connection-suitability} The suitability card checks your measured speeds against common use cases (for example streaming, video calls, large uploads) and marks each as **PASS** or **FAIL**. Tap the card to open a detail view that explains what your connection supports — and where it hits its limits. ## Connection Details {#connection-details} The connection card shows metadata captured during the test: - **ISP** and **IP** (as reported by the M-Lab server). - **Server** — the M-Lab server location and host. - **Link** — the active network interface (for example Wi-Fi or Cellular). - **Protocol** — the transport used (for example `wss · TCP BBR`). ## History {#history} Each completed run is saved to a local history list. Tap the history button (top-right) to review past runs, each with its download/upload/ping/jitter values, timestamp, and server. History is stored on-device. ## Privacy & Consent {#privacy--consent} Because the test exchanges data with M-Lab's public servers, the first run shows a consent screen. M-Lab publishes measured results (including your public IP address, the timestamp, and the speed/latency results) under a **CC0** public-domain dedication so researchers can study internet health. No personal information (name, email, or precise location) is collected or transmitted by the test itself. Your consent choice is remembered for future runs. ## Notes And Limitations {#notes-and-limitations} - The test measures your real internet path to an M-Lab server, so results depend on your ISP, Wi-Fi/cellular conditions, distance to the server, and network load at the time. - This is distinct from [Connection Rate](connection-rate) (which reports live device-level transfer counters) and from [Throughput](throughput) (which measures peer-to-peer speed between two devices on the same network). - ndt7 does not report packet loss directly; the loss figure is best-effort. - The test requires an active internet connection and, on first run, consent to share measurement data with M-Lab. - Running the test consumes real data — avoid it on a metered connection if you are sensitive to data usage. --- ## Local AI Source: tools/local-ai.md URL: https://docs.lirumlabs.com/tools/local-ai Run supported local AI models on-device and chat with them (availability varies). ## Overview {#overview} Local AI provides an on-device chat UI with three backends: - **Apple Foundation** (when available on your OS/device) - **llama.cpp** (uses locally stored GGUF model files; exposed via the "LLM.swift" backend label) - **LiteRT-LM** (uses locally stored `.litertlm` model files; supports multimodal/vision models) It also shows live CPU and memory usage so you can see the cost of loading and running a model. ## Table Of Contents {#table-of-contents} - [Quick Start](#quick-start) - [Control Bar](#control-bar) - [Backends](#backends) - [Model Library](#model-library) - [Loading And Unloading](#loading-and-unloading) - [Chat](#chat) - [Performance Snapshot](#performance-snapshot) - [Export Conversation](#export-conversation) - [Notes And Limitations](#notes-and-limitations) ## Quick Start {#quick-start} 1. Open **Tools -> Local AI**. 2. Choose a backend. 3. Tap **Load**. 4. Type a prompt and send it. ## Control Bar {#control-bar} At the top of the chat screen, the control bar has three expansion states: ### Compact (Default) {#compact-default} Shows: - Model status (unloaded/loading/loaded/unavailable) - Backend selection menu - Model picker (LLM.swift only) - **Load** / **Unload** button ### Middle Expanded {#middle-expanded} Tap the control bar to expand it and reveal additional indicators: - Live **CPU usage** gauge - Live **Memory usage** gauge ### Full Expanded {#full-expanded} Tap again to open the full detail screen with three cards: - **Model Status Card** -- shows the backend name, model name, and file size (for LLM.swift models). Includes backend selection and model picker menus. - **Performance Card** -- shows a "Baseline" vs "Now" comparison for CPU and memory usage. Tap **Capture Baseline** to snapshot the current values, then watch how loading and running a model changes resource consumption. - **Actions Card** -- contains **Load Model** / **Unload Model**, **New Conversation** (clears messages and reloads), **Manage Models** (opens the Model Library), and **Export Conversation**. The control bar remembers its expansion state between sessions. ## Backends {#backends} ### Apple Foundation {#apple-foundation} Apple Foundation uses Apple's built-in `FoundationModels` framework. It requires iOS 26.0+ or visionOS 26.0+ and supported hardware. If it is not available on your device, Lirum shows an unavailable message. Availability is rechecked whenever the app comes to the foreground. ### LLM.swift {#llmswift} LLM.swift is the backend label for the **llama.cpp** engine, which runs GGUF model files locally on your device. It streams responses token by token as they are generated. The chat template is chosen per model; ChatML is the default fallback, but some models (for example DeepSeek-R1-Distill-Qwen) use a model-specific template for better instruction following. Technical details: - Conversation history is maintained with an **8-turn limit** -- older messages are dropped to keep context manageable. - Special model tokens (such as `<|...|>` markers) are automatically stripped from responses. - If a KV cache error occurs, Lirum shows a specific diagnostic message. ### LiteRT-LM {#litert-lm} LiteRT-LM runs `.litertlm` model files (for example Gemma 4 E2B/E4B) on-device. It is the backend used for multimodal/vision models that accept image input, routing images through the conversation multimodal API. ## Model Library {#model-library} Open the Model Library from the toolbar menu to download, manage, and select models. The library has three sections: ### Installed Models {#installed-models} Lists all downloaded model folders with their name, file count, and total size. You can: - **Select** a model to use it with LLM.swift. - **Import** a GGUF file from the iOS Files app. - Enter **selection mode** to batch-export or batch-delete multiple models at once. ### Catalog {#catalog} A curated list of models bundled with the app. Each entry shows the model name, parameter count, and colored tags indicating characteristics: | Tag | Meaning | |-----|---------| | Chat | General-purpose conversational model | | Instructions | Tuned for following instructions | | Reasoning | Designed for step-by-step reasoning | | Coding | Optimized for code generation | | Recommended | Tested and works well on-device | | Fast | Generates responses quickly | | Slow | May be slow on some devices | | Tested | Verified to work in Lirum | | Experimental | May produce inconsistent results | | Untested | Not yet verified | | Bad | Known to produce poor results | | Flaky | Works inconsistently | | Code | Tuned for code tasks | | Vision | Multimodal / image-capable model | Sort the catalog by **Default**, **Alphabetical**, **Date (Newest/Oldest First)**, or **Parameters (Largest/Smallest First)**. ### Active Downloads {#active-downloads} Shows any currently downloading models with: - Download progress (percentage, speed in MB/s, estimated time remaining) - **Abort** and **Resume** controls ### Manual Model Entry {#manual-model-entry} You can also add models manually in two ways: - **Import from Files** -- opens the iOS file picker for GGUF files and copies them with a progress display. - **Manual URL download** -- enter a direct download URL along with model name, quantization, and parameter count. Fields can be auto-filled from the catalog or parsed from the filename. ## Loading And Unloading {#loading-and-unloading} - **Load** initializes the selected backend/model. - **Unload** releases the model and clears the current conversation. Large models can take time to load and may fail if the device doesn't have enough free memory. ## Chat {#chat} The main UI is a standard chat view: - Type a prompt and send it. - While a response is streaming, you can stop generation. ## Performance Snapshot {#performance-snapshot} Local AI tracks CPU and memory usage while you use the tool. In the expanded controls (AI Model panel), you can capture a **baseline** snapshot and compare baseline vs current CPU/memory. ## Export Conversation {#export-conversation} Use **Export Conversation** to share the current chat history. The conversation is exported as a Markdown file: a top-level title and export timestamp, followed by one `### User - ` or `### Assistant - ` heading per message, each wrapping the message text in a ```` ```markdown ```` fenced block (plus an attachments count line when a message includes images). You can then share it via any standard iOS sharing method. ## Notes And Limitations {#notes-and-limitations} - On-device models can use significant CPU and memory. - Model availability, download options, and performance vary by device and OS. - Apple Foundation requires iOS 26.0+ or visionOS 26.0+ and supported hardware. - LLM.swift is not available on macOS Catalyst builds. - Large models may fail to load if the device does not have enough free memory. - The llama.cpp (GGUF) backend keeps an 8-turn conversation history window; LiteRT-LM manages its own conversation context. --- ## Magnetometer Source: tools/magnetometer.md URL: https://docs.lirumlabs.com/tools/magnetometer Live magnetic field readings for compass-related diagnostics, with combined and per-axis graphs. ## Overview {#overview} The magnetometer measures the local magnetic field around the device. It is used for compass heading and can be affected by nearby metal objects or electronics. ## Table of Contents {#table-of-contents} - [Overview](#overview) - [Tabs](#tabs) - [Toolbar Controls](#toolbar-controls) - [Overview Tab](#overview-tab) - [Graphs Combined Tab](#graphs-combined-tab) - [Graphs Per Axis Tab](#graphs-per-axis-tab) - [Notes And Limitations](#notes-and-limitations) ## Tabs {#tabs} - **Overview** - **Graphs (combined)** - **Graphs (per axis)** ## Toolbar Controls {#toolbar-controls} All motion-sensor tools share the same toolbar controls: - **Play / Pause**: start or pause sensor updates. - **Clear**: clear history buffers used by the graphs. - **Refresh rate**: cycle between Faster, Fast, and Slow sampling rates. ## Overview Tab {#overview-tab} The Overview tab shows: - A detailed **compass visualization** with: - A stationary outer ring with cardinal (N, E, S, W) and intercardinal (NE, SE, SW, NW) direction markers. North is displayed in red. - Tick marks every 5 degrees, with three levels of prominence (30-degree marks tallest, 15-degree marks medium, 5-degree marks shortest). - A rotating inner compass rose that turns opposite to the heading direction. - A stationary triangle heading indicator at the top. - A **field strength indicator** at the center -- an XY-plane dot that moves based on X and Y field values, surrounded by a ring that scales with total field magnitude (capped at 100 uT). - Live values for **magX**, **magY**, **magZ** (in microtesla, `uT`). - A computed **heading** in degrees (calculated as `atan2(y, x)`, converted to clockwise-from-north: 0 = North, 90 = East, 180 = South, 270 = West). Heading rotation is smoothed to avoid abrupt jumps. ## Graphs Combined Tab {#graphs-combined-tab} This tab overlays X/Y/Z history on a single graph (X = red, Y = green, Z = blue) and shows the current auto-scaled range. The Y-axis range is dynamically calculated based on the maximum absolute value across all readings, with 20% margin and a minimum of +/-100 uT. Current values use split-precision formatting. The graph retains up to 300 readings (larger than the 100 used by accelerometer and gyroscope). ## Graphs Per Axis Tab {#graphs-per-axis-tab} This tab shows three separate panels (X, Y, Z), each with its own independently auto-scaled range and the current value displayed alongside the axis label. ## What You Can See {#what-you-can-see} - Magnetic field strength on the X/Y/Z axes (commonly in microtesla, uT) - Total field magnitude (if available) - Optional compass/heading view (if available) ## Notes {#notes} - Readings are sensitive to interference (cases with magnets, speakers, laptops). - Compass accuracy can degrade indoors or near large metal structures. ## Notes And Limitations {#notes-and-limitations} - Magnetometer availability varies by device and platform. On visionOS (Apple Vision Pro), the magnetometer is available when device motion is active (readings come from `deviceMotion.magneticField`); if device motion is unavailable, the tool reports unavailable. - If readings look wrong, remove magnetic accessories and move away from large metal objects. --- ## Manual Test Wizard Source: tools/manual-test-wizard.md URL: https://docs.lirumlabs.com/tools/manual-test-wizard Guides you through systematic hardware testing step by step. ## Overview {#overview} Manual Test Wizard walks you through a series of hands-on tests to check whether your device's hardware is working correctly. Each step provides instructions, collects your observations, and records a verdict (such as OK or Defective). At the end, you get a summary of all results and can generate a PDF report. ## Table Of Contents {#table-of-contents} - [Navigation And Progress](#navigation-and-progress) - [Test Steps](#test-steps) - [Types Of Tests](#types-of-tests) - [Verdict Bar](#verdict-bar) - [Full-Screen Tests](#full-screen-tests) - [Resume Capability](#resume-capability) - [Summary And Report](#summary-and-report) - [Notes And Limitations](#notes-and-limitations) ## Navigation And Progress {#navigation-and-progress} At the top of the screen, a **breadcrumb trail** shows which test you are on and how far you have progressed through the full sequence. A **progress bar** fills as you complete each step, so you always know how many tests remain. Use the **Previous** and **Next** buttons to move between steps. You can revisit earlier steps to change a verdict before finishing. ## Test Steps {#test-steps} Each step presents a self-contained test with: - Clear instructions telling you what to look for or do. - An evidence-collection area where you interact with the test (for example, viewing a pattern, touching the screen, or reading a sensor value). - A verdict area where you record the result. ## Types Of Tests {#types-of-tests} The wizard includes several kinds of hardware checks: - **Visual tests** -- the screen displays test patterns, color grids, or solid colors to help you spot dead pixels, color accuracy issues, or uneven brightness. - **Touch tests** -- a touch surface appears on screen. Drag your finger across the entire area to paint coverage and verify that every part of the touchscreen responds. - **Sensor tests** -- real-time sensor readings are shown so you can verify that accelerometer, gyroscope, and other sensors are responding. - **Manual checks** -- some tests ask you to type text, choose from multiple options, or simply confirm pass/fail based on your observation (for example, checking whether buttons click properly). ## Verdict Bar {#verdict-bar} At the bottom of each step, the verdict bar lets you record your finding: - **OK** (checkmark, green) -- the hardware passed this test. - **Defective** (xmark, red) -- the hardware did not pass, or you noticed a specific defect or abnormality. - **Retry** -- repeat the current step before recording a verdict. - **Abort** -- leave the current step (a navigation action, not a recorded verdict). - **Not Available** (shown conditionally) -- mark the test as not applicable to this device. **OK** and **Defective** are the primary recorded outcomes. After choosing a verdict, tap **Next** to move on. ## Full-Screen Tests {#full-screen-tests} Display tests and touch tests expand to fill the entire screen, giving you an unobstructed view for checking pixels or covering the full touch surface. Tap a control or gesture to exit full-screen mode and return to the wizard. ## Resume Capability {#resume-capability} If you leave the wizard or the app is interrupted, your progress is saved. When you return, you can pick up where you left off without losing any previously recorded verdicts. ## Summary And Report {#summary-and-report} After completing all steps, a summary view shows the verdict for every test in one place. From here you can: - Review individual results. - Start a new testing session if needed. - **Generate a PDF report** containing all test results, which you can save or share. ## Notes And Limitations {#notes-and-limitations} - The available tests depend on the hardware capabilities of your device. Some tests may not appear on devices that lack the relevant sensor or feature. - Touch and display tests work best when the screen is clean and free of screen protectors that might interfere. - The PDF report captures your verdicts and observations; it does not include automated measurements. --- ## Memory Source: tools/memory-manager.md URL: https://docs.lirumlabs.com/tools/memory-manager Live memory breakdown (Free/Inactive/Active/Wired) with allocation charts and history. ## Overview {#overview} The Memory tool shows how your device's RAM is allocated, how much is readily reclaimable, and how the breakdown changes over time. It is designed to answer practical questions like: - "Is this device under memory pressure right now?" - "Is memory being held by the system (wired), apps (active), or caches (inactive)?" - "Is my memory usage stable over time, or spiking?" In Lirum, **Available Memory** is the amount of memory that iOS can usually reclaim quickly: **Free + Inactive**. ## Table of Contents {#table-of-contents} - [Tabs](#tabs) - [Overview Tab](#overview-tab) - [Details Tab](#details-tab) - [History Tab](#history-tab) - [Memory States](#memory-states) - [What iOS Does Under Pressure](#what-ios-does-under-pressure) - [How To Interpret The Numbers](#how-to-interpret-the-numbers) - [Notes And Limitations](#notes-and-limitations) ## Tabs {#tabs} - **Overview** - **Details** - **History** ## Overview Tab {#overview-tab} The Overview tab focuses on **memory usage**: - A circular gauge showing the **used** percentage (how much of your RAM is in use). The gauge fills and shifts from blue toward red as usage climbs. - The used amount and the total RAM. - A compact breakdown table: **Active**, **Wired**, **Inactive**, **Free**. Use this view when you want a quick "is the device healthy right now?" read. If the four-row breakdown does not add up to Total, see [Compressed and "Other"](#compressed-and-other-why-numbers-may-not-add-up). ## Details Tab {#details-tab} The Details tab provides a fuller breakdown: - **Memory Allocation** chart (Active/Wired/Inactive/Free). - **Detailed Memory Information** table with size and percentage. - An **Available** row that combines **Free + Inactive**. This is the best place to understand *what kind* of memory is being used (and whether it is likely to be reclaimed). If the percentages for Free/Inactive/Active/Wired do not sum to 100%, it is usually because some memory is currently accounted for as Compressed or "Other". ## History Tab {#history-tab} The History tab helps you understand trends instead of a single snapshot: - **Memory Allocation History**: a stacked timeline for Free/Inactive/Active/Wired. - **Memory Usage History**: a simplified view of overall usage over time. Use History when: - You suspect a leak or a runaway workload (usage rises steadily). - You want to correlate stutters/app reloads with memory pressure (usage spikes then drops). - You want to see if wired memory grows and stays high (often system/driver pressure). ## Memory States {#memory-states} Lirum uses the same high-level buckets iOS reports. These are the most useful "mental model" categories for iOS memory: | Bucket | What it usually means | Can iOS reclaim it quickly? | | --- | --- | --- | | **Free** | Unused RAM, ready to allocate | Yes (already free) | | **Inactive** | Mostly caches and pages not touched recently | Often | | **Active** | Working set that is being used right now | Not directly | | **Wired** | Pinned, non-pageable system memory | No | | **Compressed** | Pages stored in the memory compressor | Not directly | | **Other** | Remainder bucket (varies by OS/device) | It depends | ### Available (Free + Inactive) {#available-free--inactive} **Available** is a practical "how much room do I have?" metric. - **Free**: pages that are already unused. - **Inactive**: mostly cache pages that can be dropped or repurposed when something else needs memory. This is why Lirum shows **Available = Free + Inactive** in the Overview gauge and in the Details table. Note: **Available** is not a guarantee that the system will instantly hand you that amount of memory without any cost. Reclaiming inactive pages can still involve work (dropping caches, writing back dirty pages, rebuilding cached data later). What it means in practice: - If **Available** is high and stable, the device generally has headroom, even if **Free** is low. - If **Available** is consistently low (and stays low while you're doing normal tasks), iOS has less cache to reclaim and may start applying stronger pressure measures (compression, app termination). - A short dip when opening an app is normal. A slow steady decline that does not recover is a common "pressure" pattern. ### Wired {#wired} **Wired** memory is RAM that is **pinned** (non-pageable) and cannot be compressed or reclaimed on demand. Think of Wired as "must stay resident" memory. It is usually owned by the kernel and low-level system services, and it is required for correctness or real-time behavior. Typical examples: - Kernel memory and core OS services - Hardware drivers and DMA buffers - Graphics/display surfaces and some GPU-related allocations - Memory that must remain resident for real-time or correctness reasons Why it matters: - Wired memory is the least flexible bucket. If it grows large, iOS has fewer options to free RAM, so memory pressure increases sooner. - A device can show low Free memory and still be fine, but consistently high Wired is harder for iOS to work around. Common patterns: - Wired can increase during camera usage, AR, games, video pipelines, heavy I/O, or when external accessories are in use. - Wired tends to be "sticky". Some wired allocations do not shrink quickly, and some only reset after reboot. - If Wired grows steadily over time and does not come back down, it can indicate sustained system-level pressure (or a leak in system services or drivers). ### Active {#active} **Active** memory is RAM that is **currently being used** (frequently referenced) by apps and the system. Active is not just "app memory". It includes any pages the OS considers hot right now, including file-backed pages (for example, code and frameworks) and anonymous pages (for example, heaps and stacks). Typical examples: - App heaps and working sets - In-use file caches and decoded media currently being used - Data structures the system/app is actively touching Why it matters: - Active memory is not "wasted" memory; it's working memory. It will usually track whatever you're doing. - iOS cannot simply "free" active pages without consequences. Under pressure, iOS typically tries to reclaim from caches first; if that is not enough, it may compress memory and eventually terminate apps. Common patterns: - Active usually rises as you open apps and do work, and it may fall when apps are terminated or when their pages become inactive over time. - If Active keeps climbing while the workload is unchanged (or while the device is idle), it can be a hint of a memory leak or runaway cache in an app. ### Inactive {#inactive} **Inactive** memory is RAM that was **recently used** and is now mostly being kept as a cache. Inactive is where iOS gets most of its "fast reclaim" headroom. A large portion of inactive memory is clean file cache that can be dropped and rebuilt later if needed. Typical examples: - Cached file pages - Recently used app memory that can be repurposed - Data that is not actively referenced but is kept around because it may become useful again Why it matters: - Inactive is usually the first place iOS will reclaim from when a new allocation needs RAM. - High Inactive is often fine: it can mean iOS is using RAM efficiently as a cache. Common patterns: - Inactive often grows after app launches, reading files, scrolling media, or loading web content (those pages become cache). - Under memory pressure, Inactive should drop as iOS repurposes cached pages for new allocations. - If Inactive is already low and Available stays low, iOS has less "easy" memory to reclaim, and you can hit pressure sooner. ### Free {#free} **Free** memory is RAM that is currently **unallocated** and ready to use. On iOS, Free is often low by design. The OS tries to keep RAM busy as cache so your next app launch, scroll, or file read is faster. Why it matters: - Free tends to be small on iOS even on healthy devices because iOS prefers to keep RAM working as cache (Inactive) rather than leaving it unused. - Low Free alone is not a problem if Inactive is healthy and the device isn't under pressure. ### Compressed and "Other" (why numbers may not add up) {#compressed-and-other-why-numbers-may-not-add-up} In the app, iOS also reports additional memory buckets such as **Compressed** memory, plus other system allocations that do not fit cleanly into the four main page lists. **Compressed** memory is RAM that iOS has compacted by storing pages in a compressed form. This is one of iOS's primary pressure relief mechanisms: - Compression saves RAM, but it still uses RAM (and CPU to compress and decompress). - A rising compressed footprint is often a signal that the system is working harder to avoid terminating apps. - If a compressed page is accessed again, iOS must decompress it, which can add latency and increase CPU usage. **Other** is a remainder bucket for everything not represented in the four main buckets. It can include various system allocations and VM accounting categories that iOS reports differently across OS versions and devices. In Lirum: - The Overview breakdown and the Details chart focus on the four most commonly interpreted states: **Free**, **Inactive**, **Active**, **Wired**. - The **Total** memory shown is your device's physical RAM. Because of that, the four-row breakdown may not sum exactly to Total on every device and OS version. The "missing" amount is typically memory currently accounted for as Compressed, plus miscellaneous system allocations (Other). ## What iOS Does Under Pressure {#what-ios-does-under-pressure} When RAM gets tight, iOS typically applies pressure in stages: - **Reclaim caches first**: repurpose Free pages, then reclaim Inactive caches (drop clean file cache, purge some caches). - **Compress memory**: store less-recently-used pages in a compressed form to delay app termination. - **Terminate apps**: if pressure continues, iOS may terminate background apps (and eventually foreground apps) to free memory. This often shows up as apps reloading when you switch back to them. The Memory tool is most useful when you watch these stages happening over time using the **History** tab. ## How To Interpret The Numbers {#how-to-interpret-the-numbers} - **Available (Free + Inactive)** is the quickest "breathing room" metric. - **Wired** is the hardest bucket to deal with. If Wired grows, the system has fewer knobs to turn. - **Inactive** being large is often normal and good (cache). It should drop when the system needs memory. - If **Active + Wired** grows and Available shrinks over time, you may see app reloads, stutters, or system pressure. - Use the **History** tab to reason about trends. Single snapshots are easy to misread on iOS because the OS aggressively uses RAM for caching. - If you see a steady decline in Available while you're doing something repeatable, that is a stronger indicator of an issue than any single number. ## Notes And Limitations {#notes-and-limitations} - iOS manages memory automatically; seeing low **Free** memory is not always a problem by itself. - Values and categories vary by device and OS, and update continuously while the tool is open. - The Memory tool shows **system-wide** memory state (not per-app attribution). - On some iPad models and OS versions, the system may use storage as swap. The Memory tool focuses on physical RAM; on macOS Catalyst it additionally shows **Swap Used** and **Cached Files**. --- ## Metrics Client Source: tools/metrics-client.md URL: https://docs.lirumlabs.com/tools/metrics-client Discover nearby Metrics Servers and view live device metrics streamed over Bluetooth LE. ## Overview {#overview} Metrics Client connects to a **[Metrics Server](metrics-server)** running on another device and displays the server's live metrics in real time. It receives CPU usage, per-core CPU activity, device identity (server name, device model, device name), and timestamps — all streamed over Bluetooth Low Energy. ## Table Of Contents {#table-of-contents} - [Tabs](#tabs) - [Discovery Tab](#discovery-tab) - [Discovery Status Card](#discovery-status-card) - [Available Servers List](#available-servers-list) - [Server Row](#server-row) - [Metrics Tab](#metrics-tab) - [Connection Status Card](#connection-status-card) - [Real-Time Metrics Card](#real-time-metrics-card) - [CPU Usage History](#cpu-usage-history) - [Per-Core Usage](#per-core-usage) - [No Metrics State](#no-metrics-state) - [How To Use With Metrics Server](#how-to-use-with-metrics-server) - [Permissions](#permissions) - [Technical Details](#technical-details) - [Notes And Limitations](#notes-and-limitations) ## Tabs {#tabs} Metrics Client has two tabs. You can swipe between them or tap the tab titles. - **Discovery** — scan for and connect to nearby servers. - **Metrics** — view live data from the connected server. --- ## Discovery Tab {#discovery-tab} The Discovery tab is the landing screen. It scans for nearby Metrics Server peripherals and lets you connect to one. ### Discovery Status Card {#discovery-status-card} The status card shows: - A **scanning indicator** — a colored dot with a label: - **Scanning** (blue, with loading animation) — actively scanning for peripherals. - **Idle** (gray) — scanning is paused. - **Discovered Servers** — the count of Metrics Server peripherals currently visible. - A **Refresh** button — stops and restarts the BLE scan to pick up new servers. Scanning starts automatically when the tool is opened. ### Available Servers List {#available-servers-list} Below the status card, discovered servers are listed. Only peripherals that advertise the Metrics Server BLE service UUID are shown — other Bluetooth devices are filtered out. When no servers are found, a troubleshooting checklist is displayed: - A device is running the Metrics Server tool - Local Network permission is granted in Settings - Both devices are on the same network / within BLE range Servers that disappear from BLE advertisements are kept in the list for a short grace period (3 seconds) to avoid flickering. ### Server Row {#server-row} Each discovered server is displayed as a row containing: - **Server name** — the name configured in Metrics Server (e.g. "iPhone 16 Pro Max (iPhone17,2)"). Display names are debounced for 1.5 seconds to avoid rapid flickering when the BLE advertisement name changes. - **RSSI** — the signal strength in dBm, with a color-coded 3-bar signal indicator: - Green (3 bars) — strong signal (>= -60 dBm) - Orange (2 bars) — moderate signal (>= -75 dBm) - Red (1 bar) — weak signal (< -75 dBm) - **Service availability** — a green or gray dot indicating whether the server is advertising the Metrics service UUID. - A **Connect** / **Disconnect** button: - **Connect** (blue) — initiates a BLE connection to this server. - **Connecting** (gray, with loading spinner) — connection in progress. - **Disconnect** (red) — disconnects from the current server. Only one server connection is supported at a time. While connecting to one server, other server rows are disabled. --- ## Metrics Tab {#metrics-tab} When connected, the Metrics tab displays live data streamed from the server. The client automatically switches to this tab upon successful connection. ### Connection Status Card {#connection-status-card} The top card shows: - **Connection state** — a colored dot with a label: - **Connected** (green) - **Disconnected** (red) When connected, additional details appear: - **Signal Strength** — a 5-bar indicator with a quality label (Excellent, Good, Fair, Poor, Very Poor) and the raw RSSI value in dBm: | RSSI Range | Quality | Bars | |-----------|---------|------| | >= -50 dBm | Excellent | 5 | | -51 to -65 dBm | Good | 4 | | -66 to -75 dBm | Fair | 3 | | -76 to -85 dBm | Poor | 2 | | Below -85 dBm | Very Poor | 1 | - **RSSI History** — a rolling line graph of signal strength readings (up to 120 samples), providing a visual sense of connection stability. - **Server identity** — three key-value rows showing the data transmitted by the server: | Field | Description | |-------|-------------| | **Server Name** | The name configured in Metrics Server (e.g. "iPhone 16 Pro Max (iPhone17,2)"). | | **Device Model** | The server device's marketing name (e.g. "iPhone 16 Pro Max"). | | **Device** | The user-assigned device name from iOS Settings (e.g. "Rogerio's iPhone 16ProMax"). | - **Error messages** — if any BLE errors occur (connection failure, disconnection, etc.), they appear as a red warning. - A **Disconnect** button (red, full-width) to terminate the connection. ### Real-Time Metrics Card {#real-time-metrics-card} When metrics are being received, this card displays: | Field | Description | |-------|-------------| | **CPU Usage** | The server device's current overall CPU usage percentage (e.g. 30.0%), displayed as a large number. | | **Core Count** | The number of CPU cores on the server device (e.g. 6). | | **Last Update** | The timestamp of the most recent metrics packet, shown as a time string. | ### CPU Usage History {#cpu-usage-history} A rolling **line graph** showing the server's CPU usage over time. The graph holds up to 100 data points, providing roughly 100 seconds of history at the 1-second update rate. ### Per-Core Usage {#per-core-usage} When the server provides per-core CPU data, a **Per-Core Usage** view is shown below the history graph. This displays the current usage percentage for each individual CPU core, matching the same per-core visualization used in the CPU Monitor tool. ### No Metrics State {#no-metrics-state} When not connected or when no metrics have arrived yet, the Metrics tab shows a placeholder with a chart icon and a prompt to connect to a server using the Discovery tab. --- ## How To Use With Metrics Server {#how-to-use-with-metrics-server} 1. On the device you want to observe, open **Tools > Metrics Server** and tap **Start Server**. 2. On the device running Metrics Client, open **Tools > Metrics Client**. 3. In the **Discovery** tab, find the server and tap **Connect**. 4. The client automatically switches to the **Metrics** tab to display live readings. ## Permissions {#permissions} - **Bluetooth permission** — required for BLE scanning and connection. If permission is denied, enable Bluetooth access for Lirum in iOS Settings. - Bluetooth permission is handled automatically by CoreBluetooth. The system prompt appears the first time the tool initializes. ## Technical Details {#technical-details} - The client acts as a **BLE Central** using `CBCentralManager`. It scans for all nearby peripherals and filters the list to show only those advertising the Metrics Server service UUID. - Upon connection, the client discovers the Metrics Server GATT service and subscribes to both the **summary** and **per-core** notify characteristics. - Metrics arrive as binary payloads approximately once per second. The client decodes: - **Summary**: server name, device model, device name, overall CPU usage (Float), core count (UInt16), timestamp (UInt64 milliseconds). - **Per-core**: core count, per-core usage array (Float per core), timestamp (UInt64 milliseconds). - The client supports both **v1** (legacy) and **v2** (current) payload formats for backward compatibility with older Metrics Server versions. v2 adds device model, server name as separate fields, and millisecond-precision timestamps. - **RSSI** for the connected server is polled every **2 seconds** via `readRSSI()`. An RSSI history of up to 120 samples is maintained for the signal graph. - **Signal smoothing** — in the discovery list, RSSI values are exponentially smoothed (alpha = 0.15) to reduce visual jitter in the signal bars. - **Name stabilization** — server display names in the discovery list are debounced for 1.5 seconds to prevent flickering when BLE advertisement names change rapidly. - **Vanish grace period** — servers that disappear from BLE advertisements are retained in the list for 3 seconds before being removed, preventing the list from flickering. - **CoreBluetooth state restoration** is enabled, allowing the client to recover an existing connection if the app is relaunched by the system. - Metrics history is capped at 100 entries, corresponding to roughly 100 seconds of data at the default 1-second update interval. ## Notes And Limitations {#notes-and-limitations} - This tool uses **Bluetooth LE**, not Wi-Fi networking. Both devices must be within BLE range. - Only one server connection is supported at a time. - RSSI is an approximate indicator of signal strength and can fluctuate due to environmental factors. - The metrics stream includes CPU usage, per-core usage, core count, and device identity. Other device metrics (memory, storage, thermals) are not currently transmitted. - On **visionOS**, Metrics Client is unavailable because the BLE central role is not supported on that platform. --- ## Metrics Server Source: tools/metrics-server.md URL: https://docs.lirumlabs.com/tools/metrics-server Broadcast live device metrics to nearby devices over Bluetooth LE. ## Overview {#overview} Metrics Server turns your device into a Bluetooth Low Energy (BLE) peripheral that broadcasts live device metrics to nearby devices running **[Metrics Client](metrics-client)**. Connected clients receive a continuous stream of data including CPU usage, per-core CPU activity, device identity information, and timestamps — all transmitted once per second over BLE notify characteristics. This is useful for monitoring one device's performance from another in real time, without requiring a Wi-Fi network or any infrastructure. ## Table Of Contents {#table-of-contents} - [Main Sections](#main-sections) - [Metrics Server Status Card](#metrics-server-status-card) - [Server Name And Presets](#server-name-and-presets) - [Server Controls](#server-controls) - [Connected Clients](#connected-clients) - [Current Metrics](#current-metrics) - [Transmitted Data](#transmitted-data) - [How To Use With Metrics Client](#how-to-use-with-metrics-client) - [Technical Details](#technical-details) - [Notes And Limitations](#notes-and-limitations) ## Main Sections {#main-sections} Metrics Server is a single scrolling screen with four cards: - **Metrics Server** — status and server name configuration - **Server Controls** — start/stop the BLE broadcast - **Connected Clients** — count of subscribed devices - **Current Metrics** — live preview of the data being broadcast ## Metrics Server Status Card {#metrics-server-status-card} The top card displays: - A **running indicator** — a colored dot with a label: - **Running** (green) — the server is actively advertising and transmitting. - **Stopped** (red) — the server is not advertising. - **Server Name** field — an editable text field that determines the name other devices will see during BLE discovery. See [Server Name And Presets](#server-name-and-presets) for details. - **Status** — Active or Inactive. - **Bluetooth Status** — the current Bluetooth radio state (Powered On, Powered Off, Unauthorized, Unsupported, Resetting, Unknown). - **Connected** — the number of client devices currently subscribed to the metrics stream. - **Error** — any error message from the BLE stack (only shown when an error occurs). ## Server Name And Presets {#server-name-and-presets} The server name determines how this device appears to Metrics Client users during discovery. You can type any custom name, or use the **Presets** dropdown to quickly apply one of the built-in options: | Preset | Example | |--------|---------| | Marketing name + model identifier | iPhone 16 Pro Max (iPhone17,2) | | Marketing name only | iPhone 16 Pro Max | | Model identifier only | iPhone17,2 | | Device name | Rogerio's iPhone 16ProMax | The default is **Marketing name (Model identifier)** when available. Changing the name while the server is running automatically restarts BLE advertising so the new name takes effect immediately. ## Server Controls {#server-controls} The Server Controls card contains a single **Start Server** / **Stop Server** button: - **Start Server** (green) — begins BLE advertising and starts collecting CPU metrics. The server will begin transmitting data as soon as a client subscribes. - **Stop Server** (red) — stops BLE advertising and halts metric collection. A description below the button explains that the server broadcasts metrics to connected clients over Bluetooth LE. ## Connected Clients {#connected-clients} The Connected Clients card shows: - The number of currently subscribed client devices (displayed prominently as a large number). - When no clients are connected: a placeholder with an icon and a message to start the server and use Metrics Client on another device. - When clients are connected: a confirmation message showing the count (e.g. "1 client is receiving metrics"). The server only transmits data when at least one client is subscribed. When no clients are connected, the internal timer is paused to conserve resources. ## Current Metrics {#current-metrics} The Current Metrics card shows a live preview of the data being broadcast: | Field | Description | |-------|-------------| | **CPU Usage** | The current overall CPU usage percentage of this device (e.g. 30.0%). | | **Core Count** | The number of CPU cores on this device (e.g. 6). | | **Device** | The user-assigned device name (e.g. "Rogerio's iPhone 16ProMax"). | Below these fields, a **Usage History** line graph shows the CPU usage over time, giving a visual sense of how the workload fluctuates. ## Transmitted Data {#transmitted-data} The server broadcasts two BLE notify characteristics once per second to all subscribed clients: ### Summary Characteristic {#summary-characteristic} Contains the following fields in a compact binary payload: | Field | Type | Description | |-------|------|-------------| | **Server Name** | String (up to 32 chars) | The configurable name shown in the status card. | | **Device Model** | String (up to 32 chars) | The device's marketing name (e.g. "iPhone 16 Pro Max"). | | **Device Name** | String (up to 32 chars) | The user-assigned device name from iOS Settings. | | **CPU Usage** | Float (32-bit) | Overall CPU usage as a percentage (0–100). | | **Core Count** | UInt16 | Number of CPU cores. | | **Timestamp** | UInt64 | Milliseconds since Unix epoch. | ### Per-Core Characteristic {#per-core-characteristic} Contains per-core CPU usage data: | Field | Type | Description | |-------|------|-------------| | **Core Count** | UInt8 | Number of cores (up to 32). | | **Core Usages** | Float[] | One 32-bit float per core, representing that core's usage percentage. | | **Timestamp** | UInt64 | Milliseconds since Unix epoch. | ## How To Use With Metrics Client {#how-to-use-with-metrics-client} 1. On the device you want to observe, open **Tools > Metrics Server** and tap **Start Server**. 2. On another device, open **Tools > Metrics Client**. 3. In the **Discovery** tab, find the server in the list and tap **Connect**. 4. The client automatically switches to the **Metrics** tab to display live data. ## Technical Details {#technical-details} - The server acts as a **BLE Peripheral** using `CBPeripheralManager`. It advertises a custom GATT service with two notify-only characteristics (summary and per-core). - Data is transmitted once per second when at least one client is subscribed. The timer is paused when no clients are connected. - All multi-byte numeric values in the payload are **little-endian**, as produced natively by Swift on Apple platforms. - The server uses **CoreBluetooth state restoration**, allowing it to recover advertising state if the app is relaunched by the system. - BLE backpressure is handled gracefully — if the transmit queue is full, updates are queued and drained when the system signals readiness via `peripheralManagerIsReady(toUpdateSubscribers:)`. - CPU metrics are sampled from the same `ToolCPUViewModel` used by the CPU Monitor tool, ensuring consistent readings. ## Notes And Limitations {#notes-and-limitations} - This tool uses **Bluetooth LE**, not Wi-Fi networking. Devices must be within BLE range (typically 10–30 meters indoors). - BLE availability, background behavior, and connection stability vary by device and OS version. - On **visionOS**, Metrics Server is unavailable because the BLE peripheral role is not supported. - The server name is limited to 32 characters due to BLE payload size constraints. - Only CPU-related metrics are currently transmitted. Other device metrics (memory, thermals, etc.) are not included in the BLE stream. --- ## Microphone Source: tools/microphone.md URL: https://docs.lirumlabs.com/tools/microphone Live audio input monitoring with real-time waveform visualizations, volume metering, and detailed audio engine diagnostics. ## Overview {#overview} The Microphone tool turns your device into a live audio monitor. It captures audio from the selected input device using Apple's AVAudioEngine, processes the PCM buffer in real time, and presents the results through multiple visualization panels: a circular amplitude gauge, a raw audio waveform, a rolling volume history graph, and a comprehensive technical details dashboard. You can switch between all available audio input devices — built-in microphone, Bluetooth headsets (including AirPods via HFP), wired headset microphones, USB audio interfaces, CarPlay, and AirPlay — without leaving the tool. Monitoring does not start until you tap the record button. If microphone permission has not yet been granted, the tool shows a permission screen with a **Grant Access** button; once permission is granted, tap **TAP TO RECORD** to begin capturing. Audio capture stops automatically when you leave the tool or the app enters the background, ensuring no lingering microphone usage. ## Table Of Contents {#table-of-contents} - [Screen Header](#screen-header) - [Microphone Control Panel](#microphone-control-panel) - [Record Button](#record-button) - [Device Info Section](#device-info-section) - [Audio Input Device Selector](#audio-input-device-selector) - [Volume Levels Panel](#volume-levels-panel) - [Circular Amplitude Gauge](#circular-amplitude-gauge) - [Volume Bar](#volume-bar) - [Volume Metrics](#volume-metrics) - [Volume Status Bar](#volume-status-bar) - [Live Audio Waveform Panel](#live-audio-waveform-panel) - [Waveform Visualization](#waveform-visualization) - [Signal Level Indicators](#signal-level-indicators) - [Waveform Status Bar](#waveform-status-bar) - [Volume Analysis Panel](#volume-analysis-panel) - [Time Range Selector](#time-range-selector) - [Volume Graph](#volume-graph) - [VU Meter Bars](#vu-meter-bars) - [Statistics Bar](#statistics-bar) - [Technical Details Panel](#technical-details-panel) - [Performance Metrics](#performance-metrics) - [Audio Levels](#audio-levels) - [Device Configuration](#device-configuration) - [Session State](#session-state) - [Route Changes](#route-changes) - [System Information](#system-information) - [Additional Performance](#additional-performance) - [Engine Details](#engine-details) - [Quality Metrics](#quality-metrics) - [Session State Details](#session-state-details) - [Hardware Details](#hardware-details) - [Privacy Disclaimer](#privacy-disclaimer) - [Permissions](#permissions) - [Technical Details](#technical-details) - [Notes And Limitations](#notes-and-limitations) --- ## Screen Header {#screen-header} At the top of the screen, a header displays: - **Microphone Monitor** title. - A **recording status indicator** — a colored dot with a label: - **Active** (green) — the audio engine is running and capturing audio. - **Inactive** (gray) — monitoring is stopped. - A **device count** — the number of audio input devices currently available (e.g. "1 Devices"). --- ## Microphone Control Panel {#microphone-control-panel} The Microphone Control panel is the first card on the screen. Its header shows a **RECORDING** or **STANDBY** badge with a pulsing red dot when recording. ### Record Button {#record-button} A large circular button in the center of the panel: - **Mic icon** (blue) — tap to start monitoring. The audio engine starts, waveform data begins flowing, and all visualization panels activate. - **Stop icon** (red) — tap to stop monitoring. The audio engine is torn down and visualizations freeze. A label below the button reads **TAP TO RECORD** or **TAP TO STOP** depending on the current state. ### Device Info Section {#device-info-section} Below the record button, the panel shows information about the currently active audio input: - **Device** — the name of the active input device (e.g. "Built-in Microphone", "AirPods Pro", or "No Microphone" when none is detected). - Three **status cards** in a grid: | Card | Description | |------|-------------| | **Status** | Active (green) or Inactive (red). | | **Type** | The device category: Internal, Headset, Bluetooth, USB Audio, CarPlay, AirPlay, or External. | | **Quality** | HIGH QUALITY when the sample rate is 48 kHz or above, STANDARD otherwise. | - Two **technical spec cards** below the grid: | Card | Description | |------|-------------| | **Sample Rate** | The active audio session sample rate (e.g. "48.0 kHz"). | | **Channels** | The maximum number of input channels supported by the device. | --- ## Audio Input Device Selector {#audio-input-device-selector} The device selector panel lists all available audio input devices and lets you switch between them. - **Built-in Microphone** — always listed first with the subtitle "Internal device microphone". Selected by default when no external device is connected. - **External devices** — listed below the built-in microphone, each showing: - The **device name** (e.g. "AirPods Pro", "USB Microphone"). - A **subtitle** describing the connection type: | Port Type | Subtitle | |-----------|----------| | Bluetooth A2DP | Bluetooth A2DP | | Bluetooth HFP | Bluetooth Hands-Free | | Bluetooth LE | Bluetooth LE | | Headphones | Headphones | | Headset Mic | Headset Microphone | | USB Audio | USB Audio | | Other | External Device | Each device row has a **radio-button indicator** (filled when selected) and a **checkmark** icon for the active device. Tapping a different device switches the audio input. While the audio engine reconfigures, a loading indicator appears briefly over the screen. When a device is connected or disconnected (e.g. plugging in AirPods), the list updates automatically. The tool auto-selects the best available device using a priority order: Bluetooth HFP first, then headset mic, then built-in microphone. --- ## Volume Levels Panel {#volume-levels-panel} The Volume Levels panel provides a detailed real-time view of the current audio amplitude. ### Circular Amplitude Gauge {#circular-amplitude-gauge} A circular gauge in the center of the panel that fills proportionally to the current amplitude (0–100%). The arc uses an angular gradient from green (low) through yellow and orange to red (high). The current amplitude percentage is displayed as a large number in the center of the gauge. ### Volume Bar {#volume-bar} Below the gauge, a horizontal bar fills from left to right based on the current amplitude. The bar uses the same green-to-red gradient and includes scale markings at 0%, 25%, 50%, 75%, and 100%. ### Volume Metrics {#volume-metrics} Four metric cards are displayed in a 2x2 grid: | Metric | Description | |--------|-------------| | **Current** | The instantaneous amplitude as a percentage, color-coded by level (green < 30%, yellow < 60%, orange < 85%, red >= 85%). | | **Peak** | The highest amplitude value in the current waveform history buffer. | | **RMS** | The root-mean-square level computed from the waveform history, representing the average signal energy. | | **dBFS** | The current amplitude expressed in decibels relative to full scale, computed as 20 × log10(amplitude). Values range from approximately -80 dB (silence) to 0 dB (full scale). | ### Volume Status Bar {#volume-status-bar} At the bottom of the panel, a status bar shows: - **Signal quality** — "STRONG SIGNAL" (green) when dBFS is above -20 dB, or "MODERATE SIGNAL" (orange) otherwise. - **Clipping warning** — a red "CLIPPING" label with a warning icon appears when the amplitude exceeds 95%, indicating the audio signal may be distorting. --- ## Live Audio Waveform Panel {#live-audio-waveform-panel} The Live Audio Waveform panel displays the raw PCM audio data as a real-time oscilloscope-style visualization. ### Waveform Visualization {#waveform-visualization} The main area shows a scrolling waveform rendered from the raw audio buffer samples (up to 1024 samples per frame). The waveform is drawn in cyan against a dark background with a professional grid overlay: - **Grid** — vertical and horizontal reference lines for visual alignment. - **Center line** — a dashed cyan line marking the zero-crossing point. - **dB scale markers** — labels on the left edge at +0 dB, -20 dB, -40 dB, -60 dB, and -∞. - **Glow effect** — a subtle radial glow behind the waveform that intensifies with signal strength. - **Reflection** — a faint mirrored copy of the waveform below the center line for visual depth. A **LIVE** indicator with a pulsing green dot and the current sample count (e.g. "1024 samples") appears in the panel header. ### Signal Level Indicators {#signal-level-indicators} On the right edge of the waveform area, a vertical 10-segment LED-style meter lights up proportionally to the signal strength. Segments are color-coded: green (low), yellow (moderate), orange (high), red (very high). ### Waveform Status Bar {#waveform-status-bar} The bottom bar of the panel displays: - **Signal** — the RMS signal strength as a percentage, color-coded (gray < 20%, green < 50%, orange < 80%, red >= 80%). - **Peak** — the peak sample value from the current raw buffer. - **Sample rate and bit depth** — shown on the right (e.g. "48kHz 24-bit"). --- ## Volume Analysis Panel {#volume-analysis-panel} The Volume Analysis panel displays a rolling history graph of the audio amplitude over time, functioning like a traditional volume meter. ### Time Range Selector {#time-range-selector} In the panel header, a segmented control lets you choose the time range displayed in the graph: | Range | Samples | |-------|---------| | **1s** | 50 | | **5s** | 250 | | **10s** | 500 | ### Volume Graph {#volume-graph} The main area renders a filled waveform graph of the amplitude history (up to 60 data points in the rolling buffer). The graph uses a green-to-red gradient fill based on amplitude level, with a subtle glow effect and a mirrored reflection below. Reference lines are drawn: - A detailed grid with major lines every 50% and minor lines every 10%. - Dashed reference lines at 25%, 50%, and 75% amplitude, color-coded by level. - A **percentage scale** on the left (0%–100%). - A **time scale** on the bottom showing the sample range. ### VU Meter Bars {#vu-meter-bars} On the right edge of the graph, a vertical 20-segment VU meter fills from bottom to top based on the current amplitude. Segments are color-coded: green (0–50%), yellow (50–75%), orange (75–90%), red (90–100%). ### Statistics Bar {#statistics-bar} At the bottom of the panel, four statistics are displayed side by side: | Statistic | Description | |-----------|-------------| | **Min** | The minimum amplitude in the current waveform history (blue). | | **Max** | The maximum amplitude in the current history (red). | | **Average** | The mean amplitude across the history buffer (yellow). | | **Now** | The most recent amplitude value, color-coded by level. | --- ## Technical Details Panel {#technical-details-panel} The Technical Details panel is a comprehensive dashboard that exposes the full state of the audio engine, audio session, and hardware configuration. All values update every 0.5 seconds while monitoring is active. ### Performance Metrics {#performance-metrics} | Metric | Description | |--------|-------------| | **Sample Rate** | The active audio session sample rate (e.g. "48.0 kHz"). | | **Buffer Size** | The audio engine buffer size in frames (e.g. 1024). | | **Input Latency** | The input latency reported by the audio session, in milliseconds. Highlighted when latency exceeds 10 ms. | | **IO Buffer** | The I/O buffer duration in milliseconds. | ### Audio Levels {#audio-levels} | Metric | Description | |--------|-------------| | **Peak Level** | The peak amplitude as a percentage. Highlighted red when clipping is detected (above 95%). | | **RMS Level** | The root-mean-square amplitude as a percentage. | | **dBFS** | Decibels relative to full scale. Highlighted yellow when above -20 dB. | | **Signal Quality** | Derived from signal-to-noise ratio: Excellent (SNR > 40 dB), Good (SNR > 20 dB), Fair (SNR > 10 dB), or Poor. | ### Device Configuration {#device-configuration} | Metric | Description | |--------|-------------| | **Current Route** | The name of the currently active audio input device. | | **Input Channels** | The maximum number of input channels available. | | **Polar Pattern** | The preferred polar pattern of the input data source (e.g. Omnidirectional). | ### Session State {#session-state} | Metric | Description | |--------|-------------| | **Engine Status** | Running (green) or Stopped (red). | | **Category** | The active AVAudioSession category (e.g. PlayAndRecord). | | **Mode** | The active audio session mode (e.g. VoiceChat). | | **Options** | The active category options (e.g. "BT • Mix"). | ### Route Changes {#route-changes} When an audio route change is detected, this section appears showing: | Metric | Description | |--------|-------------| | **Last Change** | The timestamp of the most recent route change. | | **Reason** | The reason for the change: New Device Available, Device Disconnected, Category Changed, Route Override, Wake From Sleep, No Suitable Route, Configuration Change, or Unknown. | ### System Information {#system-information} | Metric | Description | |--------|-------------| | **Timestamp** | The current system time. | | **Samples** | The number of samples in the current raw waveform buffer. | | **Uptime** | The system uptime in seconds. | ### Additional Performance {#additional-performance} | Metric | Description | |--------|-------------| | **Output Latency** | The output latency reported by the audio session, in milliseconds. | | **Preferred Rate** | The preferred sample rate requested by the tool. | | **Preferred Buffer** | The preferred I/O buffer duration requested by the tool, in milliseconds. | | **Preferred Channels** | The preferred number of input channels. | ### Engine Details {#engine-details} | Metric | Description | |--------|-------------| | **Input Format** | The full AVAudioFormat description of the audio engine's input node (sample rate, channels, bit depth, interleaving). | | **Output Format** | The full AVAudioFormat description of the audio engine's output node. | | **Node Count** | The number of nodes attached to the audio engine. | | **Max Frames** | The manual rendering maximum frame count (shown only when the engine is in manual rendering mode). | ### Quality Metrics {#quality-metrics} | Metric | Description | |--------|-------------| | **Average Level** | The average amplitude across the waveform history buffer. | | **Dynamic Range** | The difference between the peak dBFS level and the noise floor (-60 dB reference), in dB. | | **Noise Floor** | The RMS level expressed in dBFS, representing the background noise level. | | **Clipping** | "Yes" (red, highlighted) if the peak amplitude exceeds 95%, "No" (green) otherwise. | ### Session State Details {#session-state-details} | Metric | Description | |--------|-------------| | **Session Active** | "Background Audio" if other audio is playing, "Active" otherwise. | | **Audio Hint** | "Should Silence" if the system recommends silencing secondary audio, "Can Mix" otherwise. | ### Hardware Details {#hardware-details} | Metric | Description | |--------|-------------| | **Max Output Channels** | The maximum number of output channels supported. | | **Input Available** | Whether audio input hardware is available. | | **Input Gain** | The current input gain value (if settable), or N/A. | | **Input Data Source** | The name of the active input data source (e.g. "Bottom", "Front", "Back"). | | **System Volume** | The current system output volume (0.00–1.00). | ### Session Format Info {#session-format-info} The raw description of the active input data source, providing the full system-level detail string. --- ## Privacy Disclaimer {#privacy-disclaimer} At the bottom of the screen, a privacy disclaimer with a shield icon states that no audio data is stored, recorded, or transmitted — all processing happens locally on the device in real time. --- ## Permissions {#permissions} - **Microphone permission** — required for all functionality. The system permission prompt appears automatically the first time the audio engine initializes. - If permission has not been determined, Lirum shows a permission screen with a **Grant Access** button that triggers the system prompt. - If permission was previously denied, Lirum shows an **Open Settings** button to redirect to the iOS Settings app where the user can re-enable microphone access. --- ## Technical Details {#technical-details} - The tool uses **AVAudioEngine** with an input tap on bus 0 to capture PCM audio buffers. A buffer size of **1024 frames** is used. - The audio session is configured with the `.playAndRecord` category and `.voiceChat` mode, with `.allowBluetoothHFP`, `.allowBluetoothA2DP`, and `.mixWithOthers` options enabled. This ensures Bluetooth HFP devices (such as AirPods) are discoverable as input sources. - A preferred I/O buffer duration of **5 ms** is requested for responsive visualizations. - For non-Bluetooth devices, a preferred sample rate of **48 kHz** is requested. For Bluetooth HFP devices, the sample rate is left to the system to avoid format conflicts. - **RMS amplitude** is calculated from the PCM buffer using the formula: `sqrt(sum(sample^2) / count)`, then scaled by a factor of 5 and clamped to [0, 1]. - **dBFS** (decibels relative to full scale) is calculated as `20 * log10(amplitude)`. - Raw waveform updates are throttled to **60 fps** to prevent excessive UI updates. - The waveform history buffer holds up to **60 data points**, processed from the amplitude buffer on each display link frame. - A **CADisplayLink** running at up to **120 fps** drives the waveform history updates by averaging collected amplitude samples between frames. - Audio engine details are polled every **0.5 seconds** via a timer. - When switching input devices, the audio engine is fully torn down and recreated with a fresh audio session to ensure the correct format is used. A loading overlay is shown during the transition (minimum 300 ms display time for smooth UX, with a 2-second timeout fallback). - **Bluetooth format handling** — for Bluetooth devices, the tap is installed with a `nil` format to let the system choose the appropriate format automatically, avoiding invalid format errors that can occur with HFP devices. - **Audio route changes** are observed via `AVAudioSession.routeChangeNotification`. When a new device appears or an existing device is removed, the tool automatically updates the device list and, if recording, restarts with the best available device. Route changes are throttled (300 ms minimum interval) to prevent restart loops. - **Device auto-selection priority**: Bluetooth HFP, headset mic, built-in microphone. - When the tool disappears or the app enters the background, the audio engine is stopped and the audio session is fully deactivated (switched to `.ambient` category and deactivated with `.notifyOthersOnDeactivation`) to release the microphone and allow other apps to resume audio playback. ## Notes And Limitations {#notes-and-limitations} - The tool monitors live audio input levels. It does not record, save, or transmit any audio data. - When switching input devices, Lirum briefly shows a loading indicator while the audio engine reconfigures. This typically takes less than a second. - Bluetooth headsets and USB microphones may report different gain levels and sample rates compared to the built-in microphone. - On Bluetooth HFP devices (e.g. AirPods), the sample rate may be lower (e.g. 16 kHz or 8 kHz) due to the Hands-Free Profile limitations. - The clipping indicator triggers when amplitude exceeds 95% of full scale. Persistent clipping may indicate the input gain is too high or the sound source is too close to the microphone. - Audio monitoring stops automatically when the app enters the background or is minimized, ensuring no lingering microphone access. --- ## Network Interfaces Source: tools/network-interfaces.md URL: https://docs.lirumlabs.com/tools/network-interfaces View all network interfaces on your device, including their configuration, status, and traffic statistics. ## Overview {#overview} Network Interfaces gives you a complete picture of every network connection available on your device. Whether you are connected via Wi-Fi, Ethernet, cellular, or a VPN, this tool shows the configuration details, current status, and real-time data transfer statistics for each interface. It is useful for diagnosing connectivity issues, verifying VPN configurations, or simply understanding how your device communicates with the network. ## Table of Contents {#table-of-contents} - [Network Status Card](#network-status-card) - [Controls](#controls) - [Interface Cards](#interface-cards) - [Interface Name And Icon](#interface-name-and-icon) - [Status Indicators](#status-indicators) - [Addresses](#addresses) - [Traffic Statistics](#traffic-statistics) - [Additional Details](#additional-details) - [Toolbar](#toolbar) - [Notes And Limitations](#notes-and-limitations) --- ## Network Status Card {#network-status-card} At the top of the screen, a summary card provides a quick snapshot of your device's network state: - **Network Status** -- whether the device is currently connected to a network. - **Interface Count** -- the total number of network interfaces detected on the device. This includes both active and inactive interfaces. - **Active Count** -- how many interfaces are currently up and running. - **VPN-Like Count** -- how many interfaces appear to be VPN or tunnel connections. This can help you confirm whether your VPN is active. - **Download Traffic** -- the total amount of data received across all interfaces since the last system restart. - **Upload Traffic** -- the total amount of data sent across all interfaces since the last system restart. ## Controls {#controls} Below the status card, you will find controls to filter the interface list: - **Search Field** -- type to filter interfaces by name. For example, typing "en0" or "utun" will narrow the list to matching interfaces. - **Show Loopback** toggle -- loopback interfaces (like `lo0`) are used by the device to talk to itself internally. They are **shown by default**; turn this off to hide them if they are cluttering the list, since they are rarely relevant for troubleshooting. - **Show Inactive** toggle -- inactive interfaces (those that exist on the device but are not currently in use) are **shown by default**. Turn this off to see only interfaces that are currently active. ## Interface Cards {#interface-cards} Each network interface is displayed as its own card with detailed information. ### Interface Name And Icon {#interface-name-and-icon} Each card begins with the interface name (such as `en0`, `pdp_ip0`, or `utun3`) and an icon indicating the type of connection: - **Wi-Fi icon** -- wireless LAN interfaces (commonly `en0` on iPhone/iPad or `en0`/`en1` on Mac). - **Ethernet icon** -- wired network connections (typically on Mac). - **VPN/Tunnel icon** -- VPN and tunnel interfaces (names often start with `utun` or `ipsec`). - **Cellular icon** -- mobile data connections (names often start with `pdp_ip`). - **Generic network icon** -- other interface types. ### Status Indicators {#status-indicators} Each interface card shows status badges that tell you its current state: - **Up** -- the interface is enabled and ready to send or receive data. - **Down** -- the interface exists but is not currently enabled. - **Running** -- the interface is actively processing network traffic. - **Loopback** -- the interface is a loopback interface, used by the device to communicate with itself. - **VPN** -- the interface is associated with a VPN or tunnel connection. ### Addresses {#addresses} The address section shows how the interface is identified on the network: - **IPv4 Address** -- the interface's Internet Protocol version 4 address (e.g., `192.168.1.42`). This is the address most commonly used to identify your device on a local network. - **Netmask** -- determines which portion of the IP address identifies the network and which portion identifies the device. For example, a netmask of `255.255.255.0` means the first three number groups identify the network, and the last group identifies your specific device. - **IPv6 Address** -- the interface's Internet Protocol version 6 address. IPv6 addresses are longer (e.g., `fe80::1`) and are the newer addressing standard that supports far more devices than IPv4. - **Gateway** -- the IP address of the router or gateway that this interface uses to reach the internet or other networks. - **MAC Address** (Mac only) -- the hardware address of the network adapter, a unique identifier assigned by the manufacturer (e.g., `A4:83:E7:2B:00:1F`). For privacy reasons, this is only shown on Mac. - **MTU** -- Maximum Transmission Unit. This is the largest packet size (in bytes) that the interface can send in a single transmission. A typical value is 1500 bytes for Ethernet and Wi-Fi. Larger MTU values can improve efficiency for bulk data transfers, while smaller values may be needed for certain VPN connections. ### Traffic Statistics {#traffic-statistics} Each interface card shows how much data has been transferred: - **Download** -- the total amount of data received through this interface. - **Upload** -- the total amount of data sent through this interface. - **Total** -- the combined download and upload traffic. Traffic values are displayed in human-readable units (KB, MB, GB) and update in real time while the tool is open. ### Additional Details {#additional-details} - **Interface Flags** -- a technical list of flags that describe the interface's capabilities and state (e.g., whether it supports broadcast or multicast traffic). - **DNS Servers** -- the Domain Name System servers that this interface uses to translate website names (like `apple.com`) into IP addresses. You may see your router's address or public DNS servers listed here. - **Multicast Addresses** -- addresses used for one-to-many network communication. Multicast allows a device to send data to a group of interested receivers simultaneously rather than to each one individually. ## Toolbar {#toolbar} The toolbar at the top of the screen includes a **Refresh** button. Tap it to reload all interface data and update traffic statistics to their latest values. While the tool does update traffic in real time, a manual refresh can be useful if you want to confirm the very latest state. ## Notes And Limitations {#notes-and-limitations} - Traffic counters reset when the device restarts. The values shown represent data transferred since the last boot, not all-time totals. - MAC addresses are only displayed on Mac. Apple does not expose hardware MAC addresses to apps on iPhone, iPad, Apple TV, or Apple Vision Pro for privacy reasons. - Some interfaces (such as inactive VPN tunnels) may appear with minimal information until they become active. - The number of interfaces varies significantly between devices. A Mac may show dozens of interfaces, while an iPhone typically shows fewer. - Interface names like `en0`, `pdp_ip0`, and `utun3` are system-assigned technical names. The icon next to each name helps identify the connection type at a glance. --- ## Network Ping Source: tools/network-ping.md URL: https://docs.lirumlabs.com/tools/network-ping Ping a host to measure network latency, packet loss, and connection reliability. ## Overview {#overview} Network Ping sends small test packets to a host (a website, server, or IP address) and measures how long each packet takes to make the round trip. This is one of the most fundamental network diagnostic tools. It tells you whether a host is reachable, how fast the connection is (latency), and whether packets are being lost along the way. High latency or packet loss can explain slow browsing, laggy video calls, or poor online gaming performance. ## Table of Contents {#table-of-contents} - [Target Card](#target-card) - [Settings](#settings) - [Basic Settings](#basic-settings) - [Advanced Settings](#advanced-settings) - [Results](#results) - [Latency Graph](#latency-graph) - [Statistics Grid](#statistics-grid) - [Log](#log) - [Toolbar Actions](#toolbar-actions) - [Notes And Limitations](#notes-and-limitations) --- ## Target Card {#target-card} The target card at the top of the screen is where you specify what to ping: - **Status Pill** -- a colored badge showing the current state (Idle, Pinging, Finished, Stopped, or Error). - **Host Input Field** -- type or paste the address you want to ping. This can be a domain name (e.g., `apple.com`), an IPv4 address (e.g., `8.8.8.8`), or an IPv6 address (e.g., `2001:4860:4860::8888`). A paste button next to the field lets you quickly paste an address from your clipboard. - **Address Family Picker** -- choose which type of IP address to use: - **Auto** -- the system decides whether to use IPv4 or IPv6 (recommended for most users). - **IPv4** -- force the ping to use Internet Protocol version 4 addresses only. - **IPv6** -- force the ping to use Internet Protocol version 6 addresses only. - **Resolved Address** -- once you start the ping, the actual IP address that the hostname resolved to is displayed here. This is useful for confirming which server you are reaching. - **Start / Stop Button** -- tap **Start** to begin pinging. While pinging, tap **Stop** to end the test. ## Settings {#settings} ### Basic Settings {#basic-settings} - **Count** -- the number of ping packets to send. Set to `0` for continuous pinging (the ping will run indefinitely until you tap Stop). A specific number (e.g., 10 or 50) will stop the ping automatically after that many packets have been sent. - **Interval** -- how long to wait between sending each ping packet (in seconds). A shorter interval sends packets more frequently, giving you faster results but generating more network traffic. A common default is 1 second. - **Timeout** -- how long to wait for a response before considering a packet lost (in seconds). If a response does not arrive within this time, the packet is counted as lost. - **Payload Size** -- the size of the data payload in each ping packet (in bytes). The default is typically 56 bytes. Larger payloads can help test how the network handles bigger packets, which can reveal issues that small packets do not. ### Advanced Settings {#advanced-settings} - **Hop Limit** -- the maximum number of network hops (routers) the packet is allowed to pass through before being discarded. This is also known as TTL (Time to Live). Each router the packet passes through decreases this value by one. If it reaches zero, the packet is dropped and you receive a "Time Exceeded" message. The default value (usually 64 or 128) is sufficient for virtually all destinations. - **Don't Fragment** toggle -- when enabled, the ping packet will not be broken into smaller pieces if it is too large for a network link along the path. If the packet cannot fit, you will receive an error instead. This is useful for testing the Maximum Transmission Unit (MTU) of a network path. - **Traffic Class** -- sets a priority level on the ping packets. This is mainly useful in networks that implement Quality of Service (QoS) policies to prioritize certain types of traffic. - **Payload Pattern** -- controls what data fills the ping packet: - **Timestamp** -- fills the payload with a timestamp (the default). - **Zeros** -- fills the payload with zeroes (the simplest pattern). - **Random** -- fills the payload with random data. Useful for testing whether the network handles varied data correctly. - **Hex** -- lets you specify a custom hexadecimal pattern to fill the payload. ## Results {#results} ### Latency Graph {#latency-graph} An interactive line graph plots the round-trip time (in milliseconds) of each ping packet over time. This gives you a visual picture of your connection's performance: - A **flat, low line** indicates a stable, fast connection. - **Spikes** indicate moments of higher latency, which could be caused by network congestion, Wi-Fi interference, or server load. - **Gaps** in the graph represent lost packets. You can interact with the graph to inspect individual data points. ### Statistics Grid {#statistics-grid} Below the graph, a grid summarizes the ping session with these statistics: | Statistic | What It Means | |-----------|---------------| | **Transmitted** | The number of ping packets sent. | | **Received** | The number of responses received. | | **Loss %** | The percentage of packets that were lost (did not receive a response). Zero loss means a perfectly reliable connection. Even 1-2% loss can noticeably affect real-time applications like video calls. | | **Min** | The fastest round-trip time observed (in milliseconds). | | **Avg** | The average round-trip time across all received responses. | | **Max** | The slowest round-trip time observed. A large difference between Min and Max indicates an inconsistent connection. | | **StdDev** | Standard deviation of the round-trip times. A low value means latency is consistent; a high value means it varies significantly. Think of it as a measure of connection stability. | ### Log {#log} The log section shows each individual ping response in chronological order. Each line is color-coded: - **Green** -- a successful response, showing the round-trip time in milliseconds. - **Red** -- a lost packet or error (e.g., timeout, destination unreachable, or time exceeded). The log provides the full detail behind the graph and statistics, letting you see exactly when and how each packet was handled. ## Toolbar Actions {#toolbar-actions} The toolbar provides buttons for managing your ping results: - **Share** -- share the ping results (including statistics and log) with other apps or save them to a file. - **Copy** -- copy the results to your clipboard for pasting into a message or document. - **Clear** -- remove all results and start with a clean slate. ## Notes And Limitations {#notes-and-limitations} - Some hosts, servers, and networks block ping traffic (ICMP echo requests) as a security measure. A host that does not respond to pings may still be perfectly reachable via a web browser or other applications. - Latency values represent the full round trip (your device to the host and back). The actual one-way delay is roughly half of the displayed value. - Packet loss on Wi-Fi can be caused by interference, distance from the router, or network congestion, and does not necessarily indicate an internet problem. - Continuous ping (count set to 0) will run until you manually stop it. Keep in mind that long-running pings consume some battery and network resources. - The Don't Fragment option may not work on all network paths, as some routers or networks may fragment packets regardless of this setting. - Very large payload sizes may be rejected by your network or the destination host. --- ## Network Scanner Source: tools/network-scanner.md URL: https://docs.lirumlabs.com/tools/network-scanner Scan your local network to discover connected devices using ping probes and port scanning. ## Overview {#overview} Network Scanner probes every address on your local network to find responsive devices. It sends a small test packet (called a "ping") to each possible address on your network and reports which ones respond. Optionally, it can also check for open ports on discovered devices and use Bonjour hints to identify device types. This is useful for seeing what is connected to your home or office network, finding the IP address of a specific device, or checking whether a device is reachable. ## Table of Contents {#table-of-contents} - [Permissions](#permissions) - [Hero Card](#hero-card) - [Network Context](#network-context) - [Progress Card](#progress-card) - [Scan Controls](#scan-controls) - [Device Cards](#device-cards) - [Log Section](#log-section) - [Notes And Limitations](#notes-and-limitations) --- ## Permissions {#permissions} Network Scanner requires **Local Network** permission to send probes to devices on your network. The first time you use this tool, your device will ask you to allow Lirum to find and communicate with devices on your local network. You must grant this permission for the scanner to function. If you previously denied this permission, go to your device's Settings, find Lirum in the app list, and turn on **Local Network**. ## Hero Card {#hero-card} The hero card at the top of the screen shows scan controls and your current network context: - **Status Pill** -- a colored badge showing the scanner's state (Idle, Scanning, Finished, Stopped, or Error). - **Start / Stop Button** -- tap **Start** to begin scanning your network. While a scan is in progress, tap **Stop** to end it early. - **Clear Button** -- removes all discovered devices and resets the results. ### Network Context {#network-context} The hero card also displays three tiles that describe the network you are currently connected to: - **Local IP** -- your device's IP address on the current network (e.g., `192.168.1.42`). This is the address other devices on your network see when communicating with your device. - **Subnet Mask** -- defines the size of your local network. A common value is `255.255.255.0`, which means there are up to 254 possible device addresses on your network. The subnet mask tells the scanner which range of addresses to probe. - **Gateway** -- the IP address of your router. The gateway is the device that connects your local network to the internet. It is usually the first or last address in your network range (e.g., `192.168.1.1`). ## Progress Card {#progress-card} While a scan is running, the progress card shows real-time updates: - **Scan Progress** -- a percentage bar showing how much of the network has been scanned so far. - **Hosts Scanned** -- the number of addresses that have been probed out of the total. - **Current Host** -- the IP address currently being probed. - **Responsive Hosts** -- how many addresses have responded to the ping. These are the devices that are online and reachable. - **Open Ports** -- how many open TCP ports have been found across all responsive devices (only shown when port fingerprinting is enabled). - **Bonjour Hints** -- how many devices were identified through Bonjour discovery in addition to the ping scan (only shown when Bonjour assistance is enabled). ## Scan Controls {#scan-controls} Below the hero card, several settings let you customize how the scan operates: - **Probe Timeout** (0.2 to 3.0 seconds) -- how long the scanner waits for a response from each address before moving on. A shorter timeout makes the scan faster but may miss slow-responding devices. A longer timeout is more thorough but takes more time. The default is a good balance for most networks. - **Parallel Workers** (1 to 64) -- how many addresses the scanner probes simultaneously. More workers means a faster scan, but using too many on a slow network or older device may reduce accuracy. A moderate value (8 to 16) works well in most situations. - **Show Unresponsive Hosts** toggle -- when enabled, addresses that did not respond are also shown in the results list. This is on by default; turn it off to keep the list short on large networks. - **Bonjour Assistance** toggle -- when enabled, the scanner also uses Bonjour discovery alongside ping probes. This can help identify the names and types of Apple devices and other Bonjour-enabled hardware on your network. - **Port Fingerprinting** toggle -- when enabled, the scanner checks a set of commonly used TCP ports on each responsive device. This can reveal what services a device is running (for example, a web server on port 80 or a file sharing service on port 445). Port fingerprinting makes the scan take longer but provides richer results. ## Device Cards {#device-cards} Each discovered device appears as a card with the following details: - **Icon** -- a contextual icon representing the detected device type (when identifiable). - **Host Title** -- the device's hostname or a descriptive label, if available. - **IP Address** -- the device's IP address on the local network. - **Status Badge** -- a colored indicator showing how the device was found: - **Reachable** (green) -- the device responded to the ping probe. - **Bonjour** (blue) -- the device was found through Bonjour discovery. - **Error** (red) -- the scanner encountered an error trying to reach this address. - **No Response** (orange) -- the address did not respond (only visible when "Show Unresponsive Hosts" is turned on). - **Device Type** -- when identifiable, shows what kind of device was detected (e.g., router, printer, computer). - **Open TCP Ports** -- a list of open ports found on the device (only shown when port fingerprinting is enabled). Common ports include: - **22** -- SSH (secure remote access) - **53** -- DNS (name resolution) - **80** -- HTTP (web server) - **139** -- NetBIOS (Windows file/session) - **443** -- HTTPS (secure web server) - **445** -- SMB (file sharing) - **548** -- AFP (Apple file sharing) - **631** -- IPP (internet printing) - **9100** -- Printer raw (direct printing) - **62078** -- iPhone sync (USB/iTunes sync) - **Hostname** -- the device's network hostname, if available. - **Bonjour Metadata** -- additional information discovered through Bonjour, such as the device's advertised service names and model information. ## Log Section {#log-section} A collapsible log at the bottom of the screen records each step of the scan in chronological order. Log entries are timestamped and include probe results, errors, and discovery events. This can be helpful for troubleshooting when a device you expect to find does not appear. ## Notes And Limitations {#notes-and-limitations} - Network Scanner only scans your current local network (the subnet you are connected to). It does not scan across the internet or reach devices on other subnets. - Some devices are configured to ignore ping requests (ICMP echo) for security reasons. These devices will appear as unresponsive even though they are connected and functioning normally. Enabling Bonjour Assistance may help discover such devices if they advertise Bonjour services. - Firewalls on your network or on individual devices may block the scan probes, leading to incomplete results. - The scan duration depends on your network size, the probe timeout, and the number of parallel workers. A typical home network scan with default settings completes in under a minute. - Port fingerprinting only checks a predefined set of common TCP ports. It does not perform a comprehensive port scan of all 65,535 possible ports. - On very large networks (for example, a `/16` subnet with over 65,000 addresses), the scan is automatically truncated to the first 1024 addresses for safety, so only a subset of hosts is probed. - The Local Network permission is required. Without it, the scanner cannot send probes to other devices. --- ## Network Traceroute Source: tools/network-traceroute.md URL: https://docs.lirumlabs.com/tools/network-traceroute Trace the network path to a host, showing every router hop along the way with timing and geolocation data. ## Overview {#overview} Network Traceroute maps the route that your data takes to reach a destination on the internet. Every time you visit a website or connect to an online service, your data passes through a series of routers -- the traceroute tool reveals each of these intermediate stops (called "hops") and measures how long it takes to reach each one. This is invaluable for diagnosing where a slow connection bottleneck occurs: is the problem on your local network, with your internet provider, or at the destination itself? ## Table of Contents {#table-of-contents} - [Target Card](#target-card) - [Route Map](#route-map) - [Hop-By-Hop Breakdown](#hop-by-hop-breakdown) - [Raw Output View](#raw-output-view) - [Toolbar Actions](#toolbar-actions) - [Notes And Limitations](#notes-and-limitations) --- ## Target Card {#target-card} The target card at the top of the screen is where you set up the traceroute: - **Status Pill** -- a colored badge indicating the current state (Idle, Tracing, Finished, Stopped, or Error). - **Host Input** -- type or paste the destination address. This can be a domain name (e.g., `apple.com`) or an IP address (e.g., `8.8.8.8`). - **Start / Stop Button** -- tap **Start** to begin the traceroute. While tracing, tap **Stop** to end it early. - **Settings** -- configure traceroute parameters (such as maximum hops, timeout, and protocol) before starting. ## Route Map {#route-map} One of the most distinctive features of this tool is the interactive **Route Map**, which plots the geographic path of your data on a map. - The map uses **MapKit** and shows a visual representation of the route from your device to the destination. - Each hop that has geolocation data appears as a **node on the map**, connected by lines showing the path your data takes. - **Animated nodes** pulse to indicate the traceroute progression. - You can **tap on individual nodes** to see details about that hop, including its hostname, IP address, response time, and location. - The map automatically adjusts its view to fit the entire route as new hops are discovered. Not all hops will appear on the map. Geolocation data is looked up via third-party IP geolocation services and requires an internet connection, and some routers use private or unlocatable IP addresses. When geolocation is unavailable for a hop, it is still shown in the hop-by-hop breakdown below. ## Hop-By-Hop Breakdown {#hop-by-hop-breakdown} Below the map, each hop along the route is displayed as a row with detailed information: - **TTL Number** -- the hop number in the route (1, 2, 3, and so on). Hop 1 is typically your local router, and the final hop is the destination. TTL stands for Time to Live -- each router decreases this value by one, which is how traceroute discovers each successive hop. - **Hostname** -- the hostname of the router at this hop, if available (e.g., `core-router.isp-name.net`). Some routers do not provide a hostname and will show only an IP address. - **IP Address** -- the IP address of the router at this hop. - **Response Times** -- the time in milliseconds it took to receive a response from this hop. Multiple probes are sent to each hop, so you may see several time values. Lower values mean a faster connection to that point. A large jump in response time between two consecutive hops can indicate a bottleneck at that link. - **Geolocation** -- the approximate geographic location of the router, including country and city when available. This information is looked up via third-party IP geolocation services (ipwho.is primary, with ipinfo.io fallback) and requires an internet connection; results depend on the service and are approximate. It can reveal interesting details about your data's journey, such as which countries your traffic passes through. - **Status** -- whether the hop responded normally or timed out. Hops shown as `* * *` (asterisks) indicate that the router at that point did not respond to the probe, which is common and does not necessarily indicate a problem. ## Raw Output View {#raw-output-view} For users who prefer the traditional traceroute format, the **Raw Output** view shows the complete traceroute text output in a familiar terminal-style layout. This includes all hops, response times, and any error messages in the standard format that network administrators are accustomed to. ## Toolbar Actions {#toolbar-actions} The toolbar provides buttons for managing your traceroute results: - **Share** -- share the traceroute results (including the route data and timing information) with other apps or save them to a file. - **Copy** -- copy the full traceroute output to your clipboard. - **Clear** -- remove all results and reset the tool for a new trace. ## Notes And Limitations {#notes-and-limitations} - Some routers along the path are configured to not respond to traceroute probes. These appear as `* * *` (asterisks) in the output. This is normal behavior and does not mean there is a problem. - Geolocation data comes from third-party IP geolocation services and may not be perfectly accurate. The location shown for a hop represents where the IP address is registered, which may differ from the router's physical location. - Firewalls, corporate networks, and some internet service providers may block or interfere with traceroute traffic, leading to incomplete results. - The route your data takes can change over time. Running a traceroute at different times of day may show different paths as internet routing adjusts for traffic patterns. - The number of hops to a destination typically ranges from 5 to 30. If the traceroute reaches the maximum hop limit without arriving at the destination, the target may be unreachable or blocking traceroute traffic. - The map view requires an internet connection to load map tiles. The hop-by-hop breakdown and raw output remain available regardless of map connectivity. - Response times at each hop represent the round-trip delay from your device to that specific router, not the delay between consecutive routers. --- ## NFC Read Source: tools/nfc-read.md URL: https://docs.lirumlabs.com/tools/nfc-read Scan NFC tags, inspect NDEF records in detail, and import/export tag data via QR codes. ## Overview {#overview} NFC Read lets you scan compatible NFC tags, view tag metadata and NDEF records, and keep a library of saved tags. You can also move NDEF messages between devices using **Import QR Code** and **Export QR Code**. ## Table of Contents {#table-of-contents} - [Tabs](#tabs) - [Scanner Tab](#scanner-tab) - [Tag Details](#tag-details) - [Export QR Code](#export-qr-code) - [Save Tag](#save-tag) - [Import QR Code](#import-qr-code) - [Saved Tags Tab](#saved-tags-tab) - [History Tab](#history-tab) - [Supported NFC Manufacturers](#supported-nfc-manufacturers) - [Permissions And Requirements](#permissions-and-requirements) - [Notes And Limitations](#notes-and-limitations) ## Tabs {#tabs} - **Scanner** - **Saved Tags** - **History** ## Scanner Tab {#scanner-tab} The Scanner tab is the main scan screen: - A status indicator (Ready/Scanning/Processing/Success/Error). - **Scan Tag** button to start or stop scanning. - A large NFC icon that mirrors the current scan state. - **Import QR Code** button to import NDEF data from a QR code. When a tag is read successfully (or you open a tag from Saved Tags/History), Lirum shows **Tag Details** so you can review what was found. ## Tag Details {#tag-details} Tag Details is split into a few sections: - **Tag information**: tag type, UID/serial number, technologies, writable state, and (when available) NDEF status and size. - **Manufacturer**: when Lirum can resolve the NFC IC manufacturer from the tag's manufacturer code, it shows a friendly manufacturer name. - **Additional tag details** (best-effort): extra fields depend on tag type (for example MiFare family, ISO15693 IC serial, protocol and NFC Forum data format). - **NDEF records**: one or more records found on the tag. For NDEF records, Lirum shows: - A human-readable summary (for example a URL). - Record metadata such as payload size, TNF (Type Name Format), record type, and identifier (when present). - Payload data in multiple formats (for example raw hex, decimal bytes, base64, binary, and ASCII when applicable). Tapping a record attempts a useful action when possible (for example open a URL, start a call, open Maps for a location). If a record can't be opened, Lirum copies the record content to the clipboard. ## Export QR Code {#export-qr-code} From Tag Details, tap the **QR code** button to export the tag's NDEF message as a QR code. This is useful for: - Moving an NDEF message between devices without re-scanning the physical tag. - Capturing a tag once and then using it as input for **NFC Write** later. ## Save Tag {#save-tag} From Tag Details, tap **Save** to add the tag to your Saved Tags library. The Save Tag sheet includes: - A name field (used as the label in the Saved Tags list). - Suggested names (based on the UID suffix and tag type). - A tag preview (type, UID, and record count). ## Import QR Code {#import-qr-code} Tap **Import QR Code** to scan a QR code that contains NFC tag data and import it into the NFC tools. ## Saved Tags Tab {#saved-tags-tab} Saved Tags shows tags you have saved. From this library you can: - Open tag details - Rename or delete a saved tag (menu on each item) - **Write Now**: write the saved NDEF message to another tag (when supported) - **Load**: load the saved NDEF message into the [NFC Write](nfc-write) composer ## History Tab {#history-tab} History keeps a record of recent scans (including QR imports), so you can revisit tags you've read previously. Tap **Clear History** to remove all history entries on this device. ## Supported NFC Manufacturers {#supported-nfc-manufacturers} Lirum can display a manufacturer name when it can resolve the NFC tag's manufacturer code (for example from ISO15693 tags, or from the tag identifier on some tag types). If the tag does not provide a known manufacturer code, Lirum may show an unassigned/unknown value instead.
Supported manufacturer names - Not specified / Unassigned - Motorola - STMicroelectronics - Hitachi - NXP Semiconductors - Infineon Technologies - Cylink - Texas Instruments - Fujitsu - Matsushita (Panasonic) - NEC - Oki Electric - Toshiba - Mitsubishi Electric - Samsung Electronics - Hynix - LG Semiconductors - Emosyn (EM Micro) - INSIDE Secure (Inside Tech) - ORGA Kartensysteme - Sharp - Atmel - EM Microelectronic-Marin - Smartrac Technology - ZMD AG - Xicor - Sony Corporation - Malaysia Microelectronic - Emosyn (US) - Shanghai Fudan Microelectronics - Magellan Technology - Melexis - Renesas Technology - TAGSYS - Transcore - Shanghai Belling - Masktech - Innovision R&T (Topaz) - Hitachi ULSI Systems - Yubico - Ricoh - ASK (Paragon ID) - Unicore Microsystems - Dallas Semiconductor/Maxim - Impinj - RightPlug Alliance - Broadcom - MStar Semiconductor - BeeDar Technology - RFIDsec - Schweizer Electronic - AMIC Technology - Mikron JSC - Fraunhofer IPMS - IDS Microchip AG - Kovio (Thinfilm) - HMT Microelectronic - Silicon Craft Technology - Advanced Film Device - Nitecrest Ltd. - Verayo Inc. - HID Global - Productivity Engineering - Austriamicrosystems (ams) - Gemalto - Renesas Electronics - 3Alogics - Top TroniQ Asia - Gentag Inc. - Invengo - Guangzhou Sysur - CEITEC - Shanghai Quanray - MediaTek - Angstrem PJSC - Celisic Semiconductor - LEGIC Identsystems - Balluff - Oberthur Technologies - Silterra Malaysia - DELTA (Danish Electronics) - Giesecke+Devrient (G+D) - Shenzhen China Vision - Shanghai Feiju Microelectronics - Intel Corporation - Microsensys - Sonix Technology - Qualcomm - Realtek Semiconductor - Freevision Technologies - Giantec Semiconductor - Angstrem-T - STARCHIP - SPIRTECH - GANTNER Electronic - Nordic Semiconductor - Verisiti Inc. - Wearlinks Technology - Userstar Information Systems - Pragmatic Semiconductor - LSI-TEC (Brazil) - Tendyron Corporation - MUTO Smart - ON Semiconductor - TÜBİTAK BİLGEM - Huada Semiconductor - SEVENEY - ISSM - Wisesec Ltd. - Holtek
## Permissions And Requirements {#permissions-and-requirements} - NFC is only available on supported devices and OS versions. If NFC is unavailable, Lirum shows an unavailable/permission screen. - iOS may prompt you for NFC permission the first time you use NFC Read. ## Notes And Limitations {#notes-and-limitations} - NFC availability depends on your device model and OS. - Some tag types, records, and actions may be unsupported or read-only. --- ## NFC Write Source: tools/nfc-write.md URL: https://docs.lirumlabs.com/tools/nfc-write Compose and write NFC messages, or perform advanced tag operations (device dependent). ## Overview {#overview} NFC Write lets you create an NDEF message (a set of records) and write it to a compatible NFC tag. It also includes an **Advanced** tab for operations like copy, erase, lock, format, and multi-write (device and tag dependent). ## Table of Contents {#table-of-contents} - [Tabs](#tabs) - [Compose Tab](#compose-tab) - [Record Types](#record-types) - [Add Record](#add-record) - [Imported Message (QR Import Mode)](#imported-message-qr-import-mode) - [Import And Export QR](#import-and-export-qr) - [Writing A Tag](#writing-a-tag) - [Advanced Tab](#advanced-tab) - [Copy To Multiple Tags (Multi-Write)](#copy-to-multiple-tags-multi-write) - [Safety Notes](#safety-notes) - [Permissions And Requirements](#permissions-and-requirements) - [Notes And Limitations](#notes-and-limitations) ## Tabs {#tabs} - **Compose** - **Advanced** ## Compose Tab {#compose-tab} Compose is where you build what you want to write: - **Saved Tags**: open your saved tag library and choose Write now or Load to composer. - **Import QR**: import NFC data from a QR code. - **Export QR**: export the current message as a QR code (when a message exists). - **Add Record**: add one or more records to the message. Depending on your state, Compose can show: - An empty state (no records added yet) - A record list (when records exist) - An imported message view (when imported QR data provides a full message override) ## Record Types {#record-types} When you add a record, you can choose common NDEF-friendly types: - **Text**: plain text with an optional language code. - **URL**: a website (or app link). - **Email**: email address (optionally with subject). - **Phone Number**: a phone number. - **SMS**: phone number and optional message body. - **Contact (vCard)**: simple contact card fields (name, phone, email). Includes an **Add from Contacts** button that imports data from the iOS Contacts app. - **Wi-Fi**: network SSID, password, and security type (None, WPA/WPA2, or WEP). - **Location**: latitude and longitude (encoded as a `geo:` URI). Includes a **Use Current Location** button and an interactive **map picker** where you can tap to select coordinates. - **Custom Data**: a simple custom payload (treated as text). ## Add Record {#add-record} Tap **Add Record** to open a 2-column grid of record type tiles, each showing an icon, name, and description. Select a type to enter its details. After records are added, Compose shows a record list where you can: - Tap a record to edit it. - Swipe to delete records. - See an estimated total message size and clear all records. ## Imported Message (QR Import Mode) {#imported-message-qr-import-mode} When you import NFC data from a QR code, NFC Write switches into **Imported Message** mode: - The composed record list is cleared to avoid mixing formats. - The **Imported Message Ready** state appears. - **Write** writes the imported NDEF message as-is until you clear the imported message. Use **View Imported Data** to inspect raw record bytes (type/identifier/payload) before writing. ## Import And Export QR {#import-and-export-qr} Use QR import/export to move NFC messages between devices or share a composed message. ## Writing A Tag {#writing-a-tag} When you tap **Write**, iOS opens the system NFC writing session. Keep the NFC tag close to the top of the device until the operation completes. If an error occurs, Lirum shows a detailed error sheet with sections for: Summary, Context, Failure Reason, Recovery Suggestion, Technical Details (domain, code, userInfo), Additional Info, Underlying Errors, Debug Description, and Raw Error. A **Copy to Clipboard** button lets you share the full error for troubleshooting. ## Advanced Tab {#advanced-tab} Advanced includes operations such as: - **Copy Tag**: read a tag and duplicate its NDEF data onto another tag. - **Erase Tag**: delete NDEF data (make the tag blank). - **Lock Tag**: permanently write-protect a tag to prevent further changes (tag dependent). - **Format Tag**: initialize a tag to NDEF format (tag dependent). - **Copy to Multiple Tags**: continuously write the same data to many tags (multi-write workflow). These operations run through the system NFC session and may not be supported by every tag type. ## Copy To Multiple Tags (Multi-Write) {#copy-to-multiple-tags-multi-write} Multi-write mode helps when you want to write the same message to many tags. While active, the status card shows an "Active" label with a spinner, success/failure counters, last write feedback text, a **Stop** button, and a **Reset Counters** button. The Advanced tab also offers a **Copy to Multiple Tags** operation that reads a source tag once and then continuously writes its content to subsequent tags. This is distinct from the compose-based multi-write, which uses your composed message. ## Safety Notes {#safety-notes} - **Lock** and **format/erase** operations can be permanent. Only use them if you understand what your tag supports. - Start with a spare tag when experimenting. ## Permissions And Requirements {#permissions-and-requirements} - NFC is only available on supported devices and OS versions. - iOS may prompt you for NFC permission the first time you use NFC Write. - Some record types (for example Location helpers) may require additional permissions (like Location) to prefill data. ## Notes And Limitations {#notes-and-limitations} - NFC availability depends on device model and OS. - Some tags are read-only or do not support writing/locking/formatting. --- ## NFC Source: tools/nfc.md URL: https://docs.lirumlabs.com/tools/nfc Lirum Device Info provides NFC tools to scan tags and write NDEF messages on supported iPhone models. ## NFC Tools {#nfc-tools} - **[NFC Read](./nfc-read)**: Scan tags, view records, and manage saved/history lists. - **[NFC Write](./nfc-write)**: Compose and write NDEF messages, plus advanced operations (copy/erase/lock/format). ## Notes {#notes} - NFC availability varies by device model and iOS version. - You may be prompted for NFC permission when first using these tools. --- ## Process List Source: tools/process-list.md URL: https://docs.lirumlabs.com/tools/process-list View all running processes on your system with detailed resource usage information. ## Overview {#overview} Process List gives you a comprehensive view of every process running on your device. You can sort, filter, and search processes, see CPU and memory usage at a glance, and drill into any individual process for full details. The layout adapts to your screen size, showing a side-by-side view on larger displays or a stacked layout on smaller ones. ## Table Of Contents {#table-of-contents} - [Summary Strip](#summary-strip) - [Control Bar](#control-bar) - [Process Table](#process-table) - [Detail Panel](#detail-panel) - [Filters](#filters) - [Layout](#layout) - [Notes And Limitations](#notes-and-limitations) ## Summary Strip {#summary-strip} At the top, a row of quick-glance stats summarizes your system's process activity: - **Total Processes** -- the number of processes currently running. - **Visible** -- how many processes are shown after applying the current filter. - **Current User** (blue) -- the number of processes owned by your user account. - **Root** (red) -- the number of processes running as root. - **Running** (green) -- the number of processes in an active running state. - **Resident Memory** (purple) -- total memory used by visible processes. - **CPU and Memory Trend Graphs** -- small sparkline charts showing recent CPU and memory usage over time. ## Control Bar {#control-bar} Below the summary strip, a control bar provides: - **Search** -- type to filter the process list by name or PID instantly. - **Refresh** -- manually refresh the process list on demand. - **Settings** (expandable) -- open additional options such as auto-refresh interval, column visibility, and display preferences. ## Process Table {#process-table} The main table lists all visible processes. You can sort by tapping any column header: - **Process Name** -- the name of the application or system process. - **PID** -- the unique process identifier. - **CPU %** -- current CPU usage for that process. - **Memory** -- the amount of memory the process is using. - **State** -- the current process state (running, sleeping, etc.). - **User** -- the account the process is running under. Columns can be customized -- show or hide columns based on what matters to you. You can also copy any cell value by selecting it. ## Detail Panel {#detail-panel} Select any process in the table to see its full details in the detail panel. This includes all of the information from the table columns plus any additional metadata available for that process. ## Filters {#filters} Use the filter options to narrow down the process list: - **All** -- show every process on the system. - **Current User** -- show only processes owned by your user account. - **Root** -- show only processes running as root. - **System** -- show only system-level processes. The summary strip and visible count update to reflect the active filter. ## Layout {#layout} Process List adapts to your screen size: - **Wide layout** (large screens) -- the process table and detail panel appear side by side, so you can browse the list and view details at the same time. - **Narrow layout** (smaller screens) -- the process table is stacked above the detail panel. Select a process in the table, then scroll down to see its details. ## Notes And Limitations {#notes-and-limitations} - Process List shows system-level processes. The amount of detail available for each process depends on the operating system and your account permissions. - Auto-refresh updates the list at a set interval. You can also refresh manually at any time. - CPU and memory values are snapshots and may fluctuate between refreshes. - Available on Mac only. --- ## Proximity Sensor Source: tools/proximity-sensor.md URL: https://docs.lirumlabs.com/tools/proximity-sensor Near/far detection for validating proximity behavior (device dependent). ## Overview {#overview} The proximity sensor typically reports a simple state: something is close to the sensor (near) or not (far). It is commonly used to turn off the screen during calls. ## Table of Contents {#table-of-contents} - [Overview](#overview) - [Tabs](#tabs) - [Live Status Tab](#live-status-tab) - [Event Log Tab](#event-log-tab) - [Notes And Limitations](#notes-and-limitations) ## Tabs {#tabs} - **Live Status**: current Near/Far/Unknown state plus sensor status. - **Event Log**: a timestamped history of state changes (up to 100 events). ## Live Status Tab {#live-status-tab} The Live Status tab shows: - A large circular indicator with an icon and the current state. Three states are possible: **Near**, **Far**, and **Unknown** (each with a distinct icon). - **Haptic feedback** is provided on each state change (success for Near, warning for Far, error for Unknown). - A status panel with: - Sensor monitoring status (Active/Inactive) - Device orientation at last event - Last event time - Total events recorded The layout adapts to orientation -- in portrait, the indicator and status panel stack vertically; in landscape, they are laid out side by side. ## Event Log Tab {#event-log-tab} The Event Log tab includes: - A **Clear** button to remove the recorded event history. - A table-like list with state and time. In landscape orientation, additional **Orientation** and **Status** columns are shown. ## What You Can See {#what-you-can-see} - Proximity state (near/far) - Update behavior while the screen is on (device/OS dependent) ## Notes {#notes} - Not all devices expose proximity sensor data in the same way. - Cases, screen protectors, and dirt can affect proximity behavior. ## Notes And Limitations {#notes-and-limitations} - If your device does not have a proximity sensor, Lirum shows the tool as unavailable. - The proximity sensor is not available on visionOS. --- ## Remote Motion Source: tools/remote-motion.md URL: https://docs.lirumlabs.com/tools/remote-motion Monitor Apple TV Remote motion and orientation in real time. ## Overview {#overview} Remote Motion tracks the physical movement and orientation of your Apple TV Remote using its built-in motion sensors. You can see a live 3D visualization of the remote's position, watch real-time graphs of acceleration and rotation, and view precise numeric values for every axis. A guided calibration wizard helps you establish a baseline for accurate readings. ## Table Of Contents {#table-of-contents} - [Calibration](#calibration) - [3D Visualization](#3d-visualization) - [Sparkline Graphs](#sparkline-graphs) - [Live Data Panel](#live-data-panel) - [Recalibration](#recalibration) - [Notes And Limitations](#notes-and-limitations) ## Calibration {#calibration} When you first open Remote Motion, a calibration status pill at the top of the screen indicates the current state: - **Unavailable** -- no motion-capable remote is connected, so calibration is not possible. - **Awaiting Hold** -- place the remote on a flat, stable surface as directed. - **Counting Down** -- hold the remote still while the countdown completes. - **Calibrated** -- the baseline pose has been captured and live readings are active. To calibrate, a guided wizard walks you through the process: 1. Position the remote on a flat, stable surface as directed. 2. Start the countdown, then hold the remote still while it runs. 3. Wait for the confirmation that calibration is complete. Once calibrated, all motion data is displayed relative to the calibrated baseline. ## 3D Visualization {#3d-visualization} A wireframe 3D model of the Apple TV Remote is displayed on screen. It rotates and tilts in real time to match the physical orientation of your actual remote. This makes it easy to see how the remote is positioned without looking at raw numbers. ## Sparkline Graphs {#sparkline-graphs} Three mini graphs provide a quick visual overview of motion activity: - **Total Acceleration** -- combined acceleration across all axes. - **Rotation** -- the rate of rotation around all axes. - **Gravity** -- the direction and magnitude of the gravity vector as sensed by the remote. Each graph updates continuously, giving you a rolling history of recent motion. ## Live Data Panel {#live-data-panel} Below the visualization and graphs, a sensor grid shows precise numeric values that update in real time. The grid is laid out as a 2x2 set of axis cards: - **Acceleration (X/Y/Z)** -- raw acceleration values along each axis, in g. - **Gravity (X/Y/Z)** -- the gravity vector broken down by axis, in g. - **Rotation Rate (X/Y/Z)** -- the rate of rotation around each axis, in radians per second. - **Euler Angles (R/P/Y)** -- the remote's roll, pitch, and yaw orientation angles, in degrees. Spanning the full width beneath the four cards is a **Quaternion (X/Y/Z/W)** strip that reports the remote's attitude as a four-component quaternion. All values update continuously as you move the remote. ## Recalibration {#recalibration} If readings seem off or you want to reset the baseline, tap the **Recalibrate** button to run through the calibration wizard again. This is useful if the remote was bumped or moved since the last calibration. ## Notes And Limitations {#notes-and-limitations} - Remote Motion requires an Apple TV Remote with built-in motion sensors. - The 2nd- and 3rd-generation Siri Remotes (the 2021 Lightning redesign and the 2022 USB-C refresh) have no accelerometer or gyroscope. When one of these is connected, a synthetic-data banner explains this and the tool displays simulated motion data derived from clickpad touches instead. Those values are labeled as derived rather than measured. - The accuracy of readings depends on a successful calibration. Recalibrate if values seem inaccurate. - Available on Apple TV only. --- ## Remote Source: tools/remote.md URL: https://docs.lirumlabs.com/tools/remote Monitor Apple TV Remote input events in real time. ## Overview {#overview} Remote shows you exactly what happens when you press buttons and touch the surface of your Apple TV Remote. It detects the connected remote model, visualizes button presses and touch events as they happen, and exposes the raw alias and gesture-routing details that the tvOS input frameworks report. This is useful for verifying remote functionality, understanding input behavior, and troubleshooting unresponsive controls. ## Table Of Contents {#table-of-contents} - [Top Bar](#top-bar) - [Events](#events) - [Inventory](#inventory) - [Limits](#limits) - [Notes And Limitations](#notes-and-limitations) ## Top Bar {#top-bar} Across the top of the screen, a bar holds three controls: - **Section Selector** -- a segmented control that switches between the [Events](#events), [Inventory](#inventory), and [Limits](#limits) sections. - **Layout Selector** -- a segmented control that chooses the remote layout rendered in the Live Remote: Auto (detected automatically), 1st gen, or 2nd gen. - **Event Count Pill** -- a small pill showing the running total of input events recorded since the tool opened. ## Events {#events} The Events section shows remote input as it happens, split into two cards: - **Live Remote** -- an on-screen representation of the remote that highlights buttons and touch areas as they are activated. Its artwork follows the [Layout Selector](#top-bar) choice, and the caption shows which generation is currently displayed. A strip below the remote lists the buttons that are pressed right now. - **Recent Activity** -- a scrolling feed of button presses, touch-surface movements, and controller connect/disconnect events, newest first. ## Inventory {#inventory} The Inventory section reports the input capabilities the connected remote exposes to the app, split into two cards: - **Button Mappings** -- for each button alias reported by the profile, shows the mapped action, the current system-gesture routing state (Enabled, Always Receive, or Disabled), and the live pressed/idle state. - **Input Inventory** -- groups the raw input aliases into blocks: D-pad Aliases, Touchpad Aliases, Axis Aliases, Element Aliases, and Unmapped Inputs. A row of summary stats along the bottom counts the available Buttons, Axes, D-pads, Touchpads, and Elements. ## Limits {#limits} The Limits section lists the tvOS-imposed capture restrictions that affect which presses the app can actually see -- for example, the TV/Home control being system-owned, and buttons bound to system gestures being delayed, transformed, or suppressed before app delivery. ## Notes And Limitations {#notes-and-limitations} - The detected remote model and available features depend on which Apple TV Remote is paired with your Apple TV. - First-generation and second-generation remotes have different button layouts and touch surface capabilities. - Input events are delivered only while this app is frontmost and the tool is active. Events are not recorded in the background. - Available on Apple TV only. --- ## Report Source: tools/report.md URL: https://docs.lirumlabs.com/tools/report Generates comprehensive device reports combining data from multiple tools. ## Overview {#overview} Report captures a snapshot of your device's information from many different tools and combines it into a single exportable file. You choose which data sources to include, optionally add real-time metrics, and then export the result in your preferred format. ## Table Of Contents {#table-of-contents} - [Hero Panel](#hero-panel) - [Options](#options) - [Sources Checklist](#sources-checklist) - [Capture Progress](#capture-progress) - [Export](#export) - [Notes And Limitations](#notes-and-limitations) ## Hero Panel {#hero-panel} At the top of the screen, two prominent buttons let you start: - **Capture** -- gathers data from all selected sources and prepares the file. - **Export** -- opens the export options after capture is complete. ## Options {#options} Before capturing, you can toggle: - **Also capture ephemeral metrics** -- when enabled, the output includes real-time readings such as current CPU usage, memory pressure, and thermal state. These values reflect what the device is doing at the moment of capture and will differ each time you run it. When this option is off, only static device information is included (model, specs, storage capacity, and so on) that does not change between captures. ## Sources Checklist {#sources-checklist} Below the options, a checklist lets you choose which categories of data to include. By default, **CPU**, **Memory**, **Storage**, **Battery**, **Thermals** are selected (and **GPS**, **Barometer**, **Sensors** are also selected on iPhone/iPad). **Device Info**, **Microphone**, and **NFC** are off by default — tap them to include them: - **Device Info** -- model, name, OS version, and general hardware details. - **CPU** -- processor specifications and (if ephemeral metrics are enabled) current usage. - **Memory** -- RAM capacity and usage. - **Storage** -- disk capacity, available space, and storage details. - **Battery** -- battery level, charging state, and battery specs. - **Thermals** -- current thermal state. - **GPS** -- location-related information (if available). - **Barometer** -- atmospheric pressure and altitude readings (if available). - **Sensors** -- accelerometer, gyroscope, magnetometer, and proximity sensor data. - **Microphone** -- microphone availability and specifications. - **NFC** -- NFC capability and status. ## Capture Progress {#capture-progress} After you tap **Capture**, the screen shows: - A **progress bar** that fills as each source is collected. - The **current step** being captured (for example, "Capturing Battery..."). - A **step count** showing how many sources have been completed out of the total. - A **Cancel** button to stop the capture if needed. Capture typically takes a few seconds, depending on how many sources are selected and whether ephemeral metrics are included. ## Export {#export} Once capture is complete, tap **Export** to save or share your data: - **Format selection** -- choose the file format. - **File name** -- you can customize the file name. - **Share dialog** -- the standard share sheet appears so you can save the file, send it via email or messaging, AirDrop it, or copy it to another app. ## Notes And Limitations {#notes-and-limitations} - Some data sources may not be available on every device or platform. Unavailable sources are skipped during capture. - Ephemeral metrics represent a single point in time and will vary between captures. - GPS data requires location permission. If permission has not been granted, GPS information will be omitted. - The file size depends on how many sources are selected. --- ## Sensors Source: tools/sensors.md URL: https://docs.lirumlabs.com/tools/sensors Lirum Device Info includes multiple tools to validate sensor availability and behavior. Most sensor tools stream live readings so you can confirm the sensor responds to movement and environment changes. ## Sensor Tools {#sensor-tools} - **[Accelerometer](./accelerometer)**: Live acceleration (X/Y/Z) plus history graphs. - **[Gyroscope](./gyroscope)**: Live rotation rate (X/Y/Z) plus history graphs. - **[Magnetometer](./magnetometer)**: Live magnetic field (X/Y/Z) and heading (device dependent). - **[GPS Status](./gps-status)**: Map + live location (accuracy, speed, altitude), with permission guidance. - **[Barometer](./barometer)**: Pressure and relative altitude (device dependent). - **[Proximity Sensor](./proximity-sensor)**: Near/Far state with an event log (device dependent). ## Shared Controls {#shared-controls} All motion sensor tools (Accelerometer, Gyroscope, Magnetometer) share the same toolbar controls: - **Play / Pause**: start or pause sensor updates. - **Clear**: clear history buffers used by the graphs. - **Refresh rate**: cycle between three sampling rates -- Faster (100 Hz), Fast (2 Hz), and Slow (1 Hz). The Accelerometer and Gyroscope tools both feature real-time **3D Metal-rendered visualizations** (a wireframe sphere and wireframe gyroscope rings, respectively). The Magnetometer includes a detailed **compass visualization** with field strength indicator. ## Notes {#notes} - Availability varies by device and OS version. Motion sensors are unavailable on **macOS Catalyst** and **visionOS** (the magnetometer is also unavailable on visionOS). - Some tools require permissions (for example Location for GPS, Motion & Fitness for Barometer). --- ## Sound System Source: tools/sound-system.md URL: https://docs.lirumlabs.com/tools/sound-system Inspect and test the connected audio system on Apple TV. ## Overview {#overview} Sound System gives you a detailed look at the audio setup connected to your Apple TV. You can see what type of system is active, how many channels are available, test individual speakers with tone playback, and review diagnostic logs for any audio issues. It is useful for verifying surround sound configurations, checking spatial audio support, and troubleshooting audio problems. ## Table Of Contents {#table-of-contents} - [Quick Stat Card](#quick-stat-card) - [Overview Section](#overview-section) - [Channels Section](#channels-section) - [Diagnostics Section](#diagnostics-section) - [Controls](#controls) - [Notes And Limitations](#notes-and-limitations) ## Quick Stat Card {#quick-stat-card} At the top, a summary card gives you an at-a-glance look at your audio setup: - **System Type** -- the kind of audio system detected (stereo, surround, Atmos, etc.). - **Output Port** -- where audio is being sent (HDMI, AirPlay, built-in speaker, etc.). - **Active Channels** -- how many audio channels are currently active. - **Playing Indicator** -- shows whether a test tone is currently playing. ## Overview Section {#overview-section} The Overview section provides detailed metric cards covering: - **Active Channels** -- the number of channels in use. - **Max Output** -- the maximum output level. - **Spatial Audio** -- whether spatial audio is detected and active. - **Port Type** -- the type of audio output connection. - **Channel Order** -- a display showing the layout and order of all channels in the current configuration. ## Channels Section {#channels-section} The Channels section lists each individual audio channel as a card. Each card shows: - **Channel Number** -- the position in the channel layout. - **Label** -- the channel label (for example: Front Left, Center, Rear Right, LFE). - **Test Tone Frequency** -- the frequency of the test tone assigned to that channel. Two main controls are available: - **Cycle All Channels** -- plays a test tone through each speaker one at a time in sequence, so you can verify that every speaker in your setup is working and correctly positioned. - **Stop** -- stops any currently playing test tone immediately. An equalizer visualization animates during playback, giving you visual feedback that audio is active. ## Diagnostics Section {#diagnostics-section} The Diagnostics section helps you identify problems with your audio setup: - **Recent Issues** -- a list of any warnings or errors detected, such as missing channels or unexpected configurations. - **Diagnostic Log** -- a timestamped log of audio events and state changes, useful for troubleshooting intermittent issues. ## Controls {#controls} The Overview section includes an action row with these controls (rather than a separate bottom bar): - **Refresh Route** -- re-scans the audio route to pick up any changes (for example, if you plugged in a new receiver or switched outputs). - **Stop Playback** -- stops all audio playback immediately. This control appears only while a test tone is currently playing. ## Notes And Limitations {#notes-and-limitations} - The information shown depends on the audio system connected to your Apple TV. Some fields may not be available for all configurations. - Spatial audio detection requires compatible hardware and content. - If you change your audio setup (connect a soundbar, switch HDMI ports, etc.), use Refresh Route to update the display. - Available on Apple TV only. --- ## Spatial Shapes (visionOS) Source: tools/spatial-shapes.md URL: https://docs.lirumlabs.com/tools/spatial-shapes Spatial Shapes is a visionOS-only AR tool for Apple Vision Pro. It provides a glass-styled control surface to enter an AR space and add/manage 3D objects. ## Table Of Contents {#table-of-contents} - [Availability](#availability) - [Enter AR Space](#enter-ar-space) - [Add Object](#add-object) - [Object List](#object-list) - [Selected Object](#selected-object) - [Wireframe Mode](#wireframe-mode) - [Notes And Limitations](#notes-and-limitations) ## Availability {#availability} - Spatial Shapes is available only on **visionOS**. - On iOS/iPadOS, the **[AR](ar)** tool provides the AR experience instead. ## Enter AR Space {#enter-ar-space} The right-side controls include an **Enter AR Space** / **Exit AR Space** button. You must enter AR Space before you can add objects. ## Add Object {#add-object} At the top of the screen, the header button changes based on state: - **Enter AR Space First**: shown when AR Space is not active. - **Add Object...**: shown after entering AR Space. When you tap **Add Object...**, a picker appears with three tabs: - **Primitives** -- a grid of four primitive shapes: **Sphere**, **Cube**, **Cylinder**, and **Cone**. Each has a distinct icon and color. - **Bundled** -- a searchable grid of bundled USDZ models. Use the search bar to filter by name. - **Import** -- a file import section with a **Browse Files** button that opens the Files app to import USDZ files from iCloud Drive, local storage, or any connected provider. If an object is loading, the tool displays a loading overlay showing the name of the object being loaded. Objects are placed at eye level, approximately 50 cm in front of the user by default. ## Object List {#object-list} The left card shows the current object list: - When empty, it shows an empty-state hint. - When populated, you can select an object to focus it, or delete objects from the list. ## Selected Object {#selected-object} The Selected Object card shows: - Name - Scale - Position (X/Y/Z) - Rotation (Y) ## Object Manipulation {#object-manipulation} In the immersive space, objects can be directly manipulated using hand gestures. Use **pinch and drag** to move, rotate, and scale objects spatially. Objects stay where you place them after releasing your grip. The Selected Object card updates in real time as you manipulate objects, keeping position, rotation, and scale values synchronized. ## Hand Tracking {#hand-tracking} Spatial Shapes includes real-time hand tracking using ARKit. For each hand (left and right), floating data panels are attached to your wrists (like a virtual wristwatch) and display: - **Position** (X, Y, Z in meters) from the wrist joint - **Rotation** (Euler angles in degrees) - **Direction** (forward vector) - **Velocity** (m/s) - **Tracking status** (green indicator when tracked, red when lost) These panels follow hand movement in real time, providing live feedback on how ARKit perceives your hand positions. ## Wireframe Mode {#wireframe-mode} Spatial Shapes includes a wireframe mode toggle. When enabled, all object materials are replaced with line-based rendering, showing only the mesh edges. Disabling wireframe mode restores the original materials. ## Notes And Limitations {#notes-and-limitations} - The exact set of available objects depends on the build and what assets are bundled or supported for import. - Some bundled assets have preconfigured rotation and scale values that are applied on placement. - Spatial Shapes is only available on visionOS. On iOS/iPadOS, use the [AR](ar) tool instead. --- ## Speaker Test Source: tools/speaker-test.md URL: https://docs.lirumlabs.com/tools/speaker-test Generate a test tone to verify audio output (frequency, amplitude, and routing). ## Overview {#overview} Speaker Test generates a continuous tone. You can change the **frequency** and **amplitude**, pick an **output route**, and watch a waveform visualization. ## Table Of Contents {#table-of-contents} - [Main Sections](#main-sections) - [Playback](#playback) - [Output](#output) - [Frequency](#frequency) - [Amplitude](#amplitude) - [Technical Details](#technical-details) - [Safety Tips](#safety-tips) - [Notes And Limitations](#notes-and-limitations) ## Main Sections {#main-sections} Speaker Test is a single scrolling screen with: - A **Waveform** visualization. - A **Playback** panel (play/stop + status cards). - An **Output** selector (when alternate routes exist). - A **Frequency** slider with presets. - An **Amplitude** slider. - A **Technical Details** panel (audio session values). ## Playback {#playback} Tap the large play button to start the test tone. Tap again to stop. The status cards summarize: - Status (Active/Inactive) - Mute (Muted/Unmuted) - Output (Built-in speaker, headphones, Bluetooth, etc.) ## Output {#output} When multiple outputs are available, use the Output menu to select where audio should play. ## Frequency {#frequency} Use the Frequency slider to sweep from **20 Hz** to **20 kHz**. The default frequency is **440 Hz** (the A4 concert pitch). Six preset buttons make it easy to jump to common test tones: **250 Hz**, **500 Hz**, **1 kHz**, **2 kHz**, **4 kHz**, and **8 kHz**. ## Amplitude {#amplitude} Amplitude controls how loud the generated tone is inside the app's audio engine. The default amplitude is **50%**. An amplitude visualization bar shows the current level graphically. ## Technical Details {#technical-details} Technical Details shows values from the current audio session, such as: - Sample rate - Output latency - Current output device - Output type - Audio session category - Output volume ## Safety Tips {#safety-tips} - Start with **low amplitude** and increase gradually. - If you hear rattling, distortion, or buzzing, stop the tone and reduce volume. - Be cautious with headphones and external speakers. ## Notes And Limitations {#notes-and-limitations} - Available output routes depend on what is connected (Bluetooth, AirPlay, wired headphones, etc.). - iOS controls overall system volume; the amplitude slider is not a replacement for the system volume buttons. - If you don't hear audio, verify: - The device volume is up and Silent Mode is off (if applicable). - The selected output route is the one you expect (for example, unplug/reconnect headphones or Bluetooth). --- ## Storage Source: tools/storage-analysis.md URL: https://docs.lirumlabs.com/tools/storage-analysis Storage usage, mounted volumes and partitions, media library sizes, and charts. ## Overview {#overview} The Storage tool gives you a complete picture of how storage is used on your device. It shows overall disk utilization, enumerates every mounted volume and partition, breaks down your Photo and Music libraries (with permission), and presents everything through interactive charts. Lirum detects all mounted filesystems, including external USB storage drives when connected on supported devices (iPad with USB-C, Mac Catalyst). On macOS Catalyst, Lirum also includes **[Storage Analyzer](storage-analyzer)** for deeper disk scanning and file-level analysis. ## Table Of Contents {#table-of-contents} - [Tabs](#tabs) - [Overview Tab](#overview-tab) - [Details Tab](#details-tab) - [Graphs Tab](#graphs-tab) - [Permissions](#permissions) - [Notes And Limitations](#notes-and-limitations) ## Tabs {#tabs} The Storage tool has three tabs. You can swipe between them or tap the tab titles. - **Overview** - **Details** - **Graphs** ## Overview Tab {#overview-tab} The Overview tab includes: - An animated circular **storage gauge** that fills to show the proportion of used storage relative to total capacity. The center displays the used amount and total capacity in human-readable units (e.g. "804.16 GB of 953.13 GB"). - A **Photo Library** panel (requires Photos permission): - Photos count and total size - Videos count and total size - Combined total item count and size - A progress indicator while the library is being scanned - A **Music Library** panel (requires Media Library permission): - Songs, playlists, albums, and artists counts displayed in a grid - A progress indicator while the library is being scanned - A **Refresh** button (arrow icon) in the Photo Library header that re-runs both the Photos and Music library calculations. ## Details Tab {#details-tab} The Details tab enumerates all mounted volumes and partitions visible to the app. Each partition is listed as a card identified by its **mount point path** (e.g. `/`, `/private/preboot`, `/private/xarts`, `/private/var`). Each partition card displays: - A **gradient progress bar** showing used space (red) vs. free space (blue), with raw byte counts above and percentages below - **Mount point** — the directory path where the volume is mounted - **Device** — the block device identifier (e.g. `/dev/disk2s1`) - **Filesystem** — the filesystem type (e.g. `apfs`, `msdos`, `exfat`) - **Total** — total capacity in human-readable units and raw bytes - **Used** — used space with percentage and raw bytes - **Free** — free space with percentage and raw bytes Tapping a partition card opens a dedicated **drive detail view** with a circular utilization gauge and the same key-value information in a larger, more readable layout. On devices that support external storage (iPad with USB-C, Mac Catalyst), connected USB drives and their partitions also appear in this list with the same level of detail. ## Graphs Tab {#graphs-tab} The Graphs tab presents four interactive charts that visualize storage and media library data: - **Media Distribution** — a bar chart showing the size split between Photos and Videos, with the total media size displayed below. - **Photo vs Video Comparison** — a horizontal bar chart comparing item counts for Photos and Videos, with summary statistics for total items and average file size. - **Music Library Statistics** — a horizontal bar chart showing counts for Songs, Albums, Artists, and Playlists, with derived metrics like songs per album and songs per playlist. - **Storage Breakdown** — a bar chart splitting total storage into Photos, Videos, Other Used, and Free, with the total capacity and a legend showing each category's size and percentage. Charts that depend on Photo or Music library data display a permission-required message if access has not been granted. ## Permissions {#permissions} The Storage tool may request: - **Photos** permission — required for the Photo Library panel, Media Distribution chart, Photo vs Video Comparison chart, and the Photos/Videos portions of the Storage Breakdown chart. - **Media Library** permission — required for the Music Library panel and Music Library Statistics chart. If permission is denied, Lirum shows a permission-required state with a **Grant Access** button (for first-time requests) or an **Open Settings** action (if previously denied). ## Notes And Limitations {#notes-and-limitations} - Library size calculations can take time on large libraries; while calculating, Lirum shows a progress indicator and partially updated counts. - The list of mounted volumes and partitions varies by OS version and device. On iOS, only volumes visible to the app sandbox are shown. On Mac Catalyst, all mounted volumes are listed, including external USB drives. - Pseudo-filesystems (e.g. `devfs`) are filtered out automatically. --- ## Storage Analyzer (macOS) Source: tools/storage-analyzer.md URL: https://docs.lirumlabs.com/tools/storage-analyzer Storage Analyzer is a macOS Catalyst-only tool that scans a disk volume and builds an index so you can explore disk usage with interactive visualizations and reports. ## Overview {#overview} Storage Analyzer is designed for deeper storage investigation than the iOS/iPadOS **Storage** tool: - Scan a selected volume and build a searchable index. - Navigate folders using a treemap-style visualization and a breadcrumb trail. - Review reports for folder sizes, large files, duplicate candidates, and cleanup suggestions. ## Table Of Contents {#table-of-contents} - [Availability](#availability) - [Drives Sidebar](#drives-sidebar) - [Scanning And Index](#scanning-and-index) - [Navigation](#navigation) - [Modes](#modes) - [Notes And Limitations](#notes-and-limitations) ## Availability {#availability} - Storage Analyzer is available only in the **macOS Catalyst** build of Lirum Device Info. - On first use, macOS may prompt for permissions (and some folders may be inaccessible without additional access). ## Drives Sidebar {#drives-sidebar} The left sidebar lists mounted volumes and includes: - Volume name and type. - Used/total capacity and a usage bar. - Scan status (idle, scanning, ready, failed). - Actions to refresh the volumes list and start/rescan a volume. You can also open Finder at the Volumes location from the sidebar. ## Scanning And Index {#scanning-and-index} Storage Analyzer builds an on-disk index for the selected volume: - The bottom toolbar shows when the index was built. - If an index is older than 24 hours, the tool marks it as outdated and highlights **Update Now**. - You can rescan to rebuild the index for fresher results. The Treemap view also shows index information (size, document count, location), and includes a **Delete Index** action if you want to remove the stored index and start over. ## Navigation {#navigation} Storage Analyzer provides multiple ways to move around a volume: - **Breadcrumbs** at the top show your current path and let you jump back to a parent folder. - In **Treemap**, select a segment to drill into that folder. - A side panel lists the largest items in the current folder; selecting a folder navigates into it. ## Modes {#modes} Storage Analyzer uses a two-level navigation system. The bottom toolbar has a mode picker with five top-level **Modes**: **View**, **Large Files**, **Duplicates**, **Cleanup**, and **Search**. ### View Mode {#view-mode} Within View mode, a floating selector on the left lets you switch between three **View Modes**: #### Treemap {#treemap} The default View Mode is **Treemap**, which renders an interactive radial (sunburst) visualization of disk usage. Concentric rings represent nested folders -- inner rings are parent folders, outer rings are children. Hover over a segment to see a detailed callout with folder name, size, and percentage, connected to the segment by a line. A resizable **details panel** on the right lists the largest items in the current folder. Hovering an item in the panel highlights the corresponding segment in the chart (and vice versa). The panel also shows the Lucene index information (index size, document count, and location) and a **Delete Index** button. #### Mosaic {#mosaic} A rectangular treemap visualization where each rectangle represents a file or folder, colored by file type. The mosaic view includes: - File type statistics showing the breakdown of space by extension. - File type color highlighting -- tap a file type to filter and highlight only matching files. - Extension filtering in the sidebar. #### Folders {#folders} A list-based view showing folder sizes for the current path, with navigation controls to drill into subfolders. ### Large Files {#large-files} Shows files above a configurable size threshold. Features include: - **Size threshold picker** with presets (for example, 1 GB) and a custom threshold option. - File list with name, size, and path. - **Reveal in Finder** and **Move to Trash** actions per file. ### Duplicates {#duplicates} Shows files that may be duplicates, grouped by file size. - Files are presented as **candidates** -- same-size files that may or may not be identical. A warning banner explains this distinction. - Each group has a **Verify** button that performs a byte-level file comparison to confirm whether files are truly identical. - **Verify All** sequentially verifies all candidate groups. - Verification results show one of three states: **Confirmed duplicate**, **Not duplicates**, or **Failed**. - **Size threshold picker** to filter by minimum file size. - **Reveal in Finder** and **Move to Trash** actions per file. - If files are deleted externally (for example, in Finder), they are automatically removed from the list and index. ### Cleanup {#cleanup} Cleanup scans for common categories of reclaimable space. It is only available on the boot/system volume -- on other volumes, an "Unavailable" message is shown. Categories are organized by **risk level**, each with a distinct color: | Risk Level | Description | |------------|-------------| | **Safe** | Temporary files and caches that can be safely removed | | **Moderate** | Files that are likely safe to remove but may affect some apps | | **Developer** | Build artifacts, derived data, and other developer-specific files | | **Consent** | Files that require your explicit agreement before removal | For each cleanup category you can: - **Expand** it to see About (description), Consequences (what happens if cleaned), and Locations (path patterns being scanned). - **Reveal in Finder** to inspect the files before cleaning. - **Select/deselect** categories via checkboxes. After selecting categories, tap **Clean Selected** to begin. A confirmation dialog shows the item count and total size before proceeding. During cleaning, a progress view shows a circular gauge and per-item status. After completion, a results view summarizes freed space and any errors. Scanning runs concurrently across categories, with an elapsed timer and the current path being scanned displayed in real time. ### Search {#search} Performs a full-text search across the scanned index for the volume. Enter a query to find files and folders anywhere in the scanned tree by name, matching against the on-disk index that was built during scanning. ## Notes And Limitations {#notes-and-limitations} - Results depend on what the app is allowed to scan. Without broader permission (for example, Full Disk Access), some directories may be marked inaccessible and excluded from analysis. - Scanning large volumes can take time. While scanning or loading, the tool shows a progress overlay and blocks interaction until ready. - If the index is older than 24 hours, the bottom toolbar shows an orange **Index Outdated** warning with an **Update Now** button. --- ## Thermals Source: tools/thermals.md URL: https://docs.lirumlabs.com/tools/thermals Monitor your device's thermal state and heat-related constraints. ## Overview {#overview} The Thermals tool helps you understand when your device is getting hot and whether iOS is applying thermal limits that can reduce performance. ## Table of Contents {#table-of-contents} - [Overview](#overview) - [Main Sections](#main-sections) - [Thermal States](#thermal-states) - [Notes And Limitations](#notes-and-limitations) ## Main Sections {#main-sections} Thermals is a single scrolling screen with: - A **hero gauge** that visualizes the current thermal state and a percentage-style level. - A **thermal stack** that highlights the current state across Nominal, Fair, Serious, and Critical. - A **Current State** card. - A **Recommendation** card with guidance based on the current thermal state. ## Thermal States {#thermal-states} Lirum uses iOS thermal states, each with a color and icon: | State | Color | Icon | Gauge Level | |-------|-------|------|-------------| | **Nominal** | Green | Checkmark | 0% | | **Fair** | Yellow | Warning triangle | 33% | | **Serious** | Orange | Flame | 67% | | **Critical** | Red | Exclamation octagon | 100% | The animated background gradient shifts to match the current state color. The **thermal stack** shows all four states and uses a cascade effect -- all states up to and including the current level are lit. For example, if the state is Serious, then Nominal, Fair, and Serious segments are all filled. Lirum records a **state history** of thermal state transitions with timestamps (up to 100 entries), letting you track how the thermal state has changed over time. ## What You Can See {#what-you-can-see} - Thermal state (for example: nominal, fair, serious, critical) - Indicators that performance may be reduced due to heat (device/OS dependent) - Related context from other tools (CPU usage, charging, background activity) ## Notes {#notes} - Available thermal details vary by device model and iOS version. - Sustained high CPU/GPU load, charging, direct sunlight, and poor ventilation can trigger thermal limits. ## Notes And Limitations {#notes-and-limitations} - On iOS/iPadOS the tool reports the system thermal state (Nominal/Fair/Serious/Critical), not a physical temperature reading. On macOS Catalyst it additionally reads and displays real hardware temperature sensor readings -- per-sensor °C values, an average temperature, and the hottest sensor. --- ## Throughput Source: tools/throughput.md URL: https://docs.lirumlabs.com/tools/throughput Measures peer-to-peer data transfer speed between two devices running Lirum. ## Overview {#overview} Throughput tests how fast two nearby devices can transfer data to each other over a local connection. One device acts as the Sender and the other as the Receiver. During the transfer, you see live speed measurements and a real-time graph of throughput performance. ## Table Of Contents {#table-of-contents} - [Requirements](#requirements) - [Configuration](#configuration) - [Peer Discovery](#peer-discovery) - [Transfer Test](#transfer-test) - [Throughput Metrics](#throughput-metrics) - [Notes And Limitations](#notes-and-limitations) ## Requirements {#requirements} To run a throughput test, you need: - **Two devices** both running the Lirum app. - Both devices must be nearby (on the same local network or within peer-to-peer range). - **Local Network permission** must be granted on both devices. The system will prompt you for this permission the first time you use Throughput. ## Configuration {#configuration} At the top of the screen, a configuration card lets you choose two options: - **Media** -- a segmented picker that selects the transport used for the transfer: - **Bluetooth LE (BLE)** -- the test runs over a Bluetooth Low Energy connection. - **Wi-Fi** -- the test runs over a local Wi-Fi (peer-to-peer) connection. - **Role** -- a segmented picker that selects what this device does: - **Sender** -- this device will send data to the other device and control the test. - **Receiver** -- this device will receive data from the sender. A connection status indicator shows whether you are connected to a peer. ## Peer Discovery {#peer-discovery} Once you select a role, Throughput begins looking for the other device. **In Sender mode**, a peer discovery section appears listing nearby devices that are available. Each discovered peer shows signal strength information when available -- signal strength (RSSI) is shown for BLE peers; Wi-Fi peers do not report RSSI. Tap a peer to connect, or tap again to disconnect. You can only connect to one peer at a time. **In Receiver mode**, the screen shows a readiness status indicating that the device is waiting for a Sender to connect. No further action is needed on the Receiver side -- just keep the screen open and wait for the Sender to initiate the connection. ## Transfer Test {#transfer-test} After both devices are connected, the Sender can start the test. - Tap **Start** on the Sender device to begin the data transfer. - Tap **Stop** at any time to end the test early. Only the Sender device controls when the test starts and stops. The Receiver device participates automatically. During the transfer, two metric cards display: - **Transfer amount** -- how much data has been sent so far. - **Elapsed time** -- how long the transfer has been running. ## Throughput Metrics {#throughput-metrics} While the test is running, the screen shows detailed speed measurements: - **Current** -- the transfer speed right now, in MB/s. - **Average** -- the average speed over the entire test duration, in MB/s. - **Peak** -- the highest speed reached during the test, in MB/s. A **real-time throughput graph** plots the transfer speed over time, so you can see how performance varies during the test. Spikes and dips in the graph can reveal network congestion or interference. ## Notes And Limitations {#notes-and-limitations} - Both devices must be running Lirum and have Throughput open at the same time. - Transfer speed depends on network conditions, distance between devices, interference, and device hardware. - Local Network permission is required on both devices. If permission is denied, peer discovery will not work. - The test measures the speed of the peer-to-peer connection between the two devices, not your internet speed. - Wi-Fi conditions, Bluetooth interference, and physical obstacles between devices can affect results. --- ## Timeline Source: tools/timeline.md URL: https://docs.lirumlabs.com/tools/timeline Visual timeline of device availability, with pinch-to-zoom and compare. ## Overview {#overview} Timeline shows devices on a time axis, making it easy to see when a device was first released, when it was discontinued, and how lineups overlap. ## Table Of Contents {#table-of-contents} - [Navigating The Timeline](#navigating-the-timeline) - [Zoom](#zoom) - [Selecting A Device](#selecting-a-device) - [Compare From Timeline](#compare-from-timeline) - [Notes And Limitations](#notes-and-limitations) ## Navigating The Timeline {#navigating-the-timeline} The timeline is a scroll view that supports: - Vertical scrolling (more devices) - Horizontal scrolling (more years/half-years) Each device is shown as a colored bar spanning from its release date to its discontinuation date. Device names are displayed directly on the bars (truncated with "..." if the bar is too narrow). Bars cycle through a palette of 13 colors to visually distinguish devices. The grid includes year labels at the top and **H1/H2 half-year markers** within each year column. A red vertical **"Now" line** marks the current date on the timeline when it is within the visible range. ## Zoom {#zoom} Use pinch-to-zoom to change how wide each time column is (zoom ranges from 0.5x to 3.0x). When zoomed, a **Reset Zoom** button appears in the top-right corner to return to the default 1.0x zoom level. ## Selecting A Device {#selecting-a-device} Tap a device bar to open a detail card. A visual connector line links the selected bar to the detail card. The card shows: - First release date - Discontinued date (or "ongoing" if the device is still current) - Availability period (formatted as years and months, for example "3 years, 6 months") ## Compare From Timeline {#compare-from-timeline} From the detail card, tap **Compare** to open the [Comparison](comparison) tool with the selected device preloaded as the right device. The comparison database is prewarmed when the Timeline tool opens so that navigation to the Comparison tool is immediate. ## Notes And Limitations {#notes-and-limitations} - Timeline is based on Lirum's device database (not a live scan). - Loading time depends on device/database size; a loading overlay may appear while data is prepared. --- ## Touchscreen Source: tools/touchscreen.md URL: https://docs.lirumlabs.com/tools/touchscreen Multi-touch tracking and paint mode to verify touch coverage and responsiveness. ## Overview {#overview} Touchscreen is a full-screen tool that shows where your touches are being detected. It's useful for spotting dead zones, dropped drags, or phantom touches. ## Table Of Contents {#table-of-contents} - [Modes](#modes) - [Tracking Mode](#tracking-mode) - [Paint Mode](#paint-mode) - [Controls Menu](#controls-menu) - [Tips](#tips) - [Notes And Limitations](#notes-and-limitations) ## Modes {#modes} Touchscreen has two modes: - **Tracking**: shows active touch points with crosshairs and details. - **Painting**: draws stroke paths so you can verify continuous input. ## Tracking Mode {#tracking-mode} Each active touch shows: - Crosshairs at the touch location - X/Y coordinates - Pressure/force (when available) - Azimuth angle (when available) - Touch type: **Direct (Finger)**, **Indirect**, **Pencil**, or **Pointer** (indirect pointer) Touches have a fade-out animation when released, rather than disappearing instantly. ## Paint Mode {#paint-mode} In Paint Mode, touches draw white strokes on a black background. **Multi-touch painting** is supported -- each simultaneous finger creates its own separate painting path, which is useful for verifying multi-touch behavior. This makes it easy to check: - Continuous drags (no gaps) - Edge tracking (corners and bezels) - Multi-touch registration ## Controls Menu {#controls-menu} Tap the gear button to open the menu: - **Paint Mode** / **Track Mode**: switch modes. - **Clear**: clears drawing (only enabled in Paint Mode). - **Close**: exits the tool. The gear button cycles through four corners (top-right, top-left, bottom-left, bottom-right) if you touch near it, so it stays easy to tap without interfering with your test area. ## Tips {#tips} - Remove gloves and clean the screen for more consistent results. - If you use a screen protector or thick case, test with and without it. ## Notes And Limitations {#notes-and-limitations} - Pressure/angle values depend on hardware and input type (for example, Apple Pencil). --- ## Vibration Source: tools/vibration.md URL: https://docs.lirumlabs.com/tools/vibration Test haptics/vibration patterns and intensities (device dependent). ## Overview {#overview} Vibration helps you confirm that the device's haptic engine is working and that different feedback patterns feel distinct. ## Table Of Contents {#table-of-contents} - [Main Sections](#main-sections) - [Classic Vibration](#classic-vibration) - [Select Intensity](#select-intensity) - [Vibrate Button](#vibrate-button) - [Notification Feedback Types](#notification-feedback-types) - [Statistics](#statistics) - [Notes And Limitations](#notes-and-limitations) ## Main Sections {#main-sections} Vibration includes: - A **Classic Vibration** button (legacy-style). - A **Select Vibration Intensity** row. - A large **Vibrate** button for the selected intensity. - **Notification Feedback Types** (Success/Warning/Error). - **Vibration Statistics** with a reset action. ## Classic Vibration {#classic-vibration} Tap **Classic Vibration** to trigger a more noticeable legacy-style vibration. This uses the system alert vibration when available, falling back to a sequence of heavy impact haptics on devices without the legacy vibration motor. ## Select Intensity {#select-intensity} Choose one of the intensity presets: - Light - Medium - Heavy - Rigid - Soft ## Vibrate Button {#vibrate-button} Tap **Vibrate** to trigger the currently selected intensity. ## Notification Feedback Types {#notification-feedback-types} These buttons trigger system-style notification haptics: - Success - Warning - Error ## Statistics {#statistics} The stats section tracks how many vibrations were triggered in the tool, the time of the last vibration, and the currently selected intensity. ## Notes And Limitations {#notes-and-limitations} - Haptics depend on hardware and system settings (for example, Silent Mode or accessibility settings). - Haptics are not available on **visionOS** or **macOS Catalyst**. On those platforms, the tool tracks vibration statistics but does not produce haptic feedback. --- ## WHOIS Source: tools/whois.md URL: https://docs.lirumlabs.com/tools/whois Look up registration and ownership data for domain names, IP addresses, and autonomous system numbers (ASNs). ## Overview {#overview} WHOIS lets you look up public registration information for any domain name (like `apple.com`), IP address, or ASN (Autonomous System Number). When a domain is registered, the owner provides contact and administrative information to a registrar, and much of this data is publicly available through WHOIS databases. This tool queries those databases and displays the results, which can include the registrant organization, registration and expiration dates, name servers, and the registrar used. It is useful for checking who owns a domain, when it was registered, when it expires, or which organization controls an IP address block. ## Table of Contents {#table-of-contents} - [Lookup Card](#lookup-card) - [Manual Server Configuration](#manual-server-configuration) - [Advanced Options](#advanced-options) - [Results](#results) - [Toolbar Actions](#toolbar-actions) - [Notes And Limitations](#notes-and-limitations) --- ## Lookup Card {#lookup-card} The lookup card at the top of the screen is where you enter your query: - **Status Pill** -- a colored badge showing the current state (Idle, Looking Up, Finished, or Error). - **Query Input** -- type or paste the domain name, IP address, or ASN you want to look up. Examples: - Domain: `apple.com` - IP address: `17.253.144.10` - ASN: `AS714` (Apple's autonomous system) - **Paste Button** -- quickly paste a value from your clipboard into the query field. - **Lookup Mode** -- choose how the WHOIS server is selected: - **Automatic** (recommended) -- the tool automatically determines the correct WHOIS server to query based on the domain extension (such as `.com`, `.org`, or `.uk`), IP address range, or ASN. It follows referrals to find the most authoritative source. - **Manual Server** -- lets you specify exactly which WHOIS server to query. This is useful for advanced users who need to query a specific registry directly. ## Manual Server Configuration {#manual-server-configuration} When you select **Manual Server** mode, additional settings appear: - **Host** -- the hostname or IP address of the WHOIS server to query (e.g., `whois.verisign-grs.com`). - **Port** -- the port number to connect to (the standard WHOIS port is 43). - **Preset Server Picker** -- a list of well-known WHOIS servers you can select instead of typing the address manually: | Preset | Organization | Coverage | |--------|-------------|----------| | **ARIN** | American Registry for Internet Numbers | IP addresses and ASNs allocated in North America | | **RIPE** | RIPE Network Coordination Centre | IP addresses and ASNs allocated in Europe, the Middle East, and parts of Central Asia | | **APNIC** | Asia-Pacific Network Information Centre | IP addresses and ASNs allocated in the Asia-Pacific region | | **LACNIC** | Latin America and Caribbean Network Information Centre | IP addresses and ASNs allocated in Latin America and the Caribbean | | **AfriNIC** | African Network Information Centre | IP addresses and ASNs allocated in Africa | These are the five Regional Internet Registries (RIRs) that manage IP address allocation worldwide. In Automatic mode, the tool determines which RIR to query based on the IP address or ASN. ## Advanced Options {#advanced-options} Fine-tune how the lookup is performed: - **Follow Referrals** toggle -- when a WHOIS server responds with a referral to another server (common for many domain lookups), the tool can automatically follow that referral to get more detailed results. This is enabled by default and is recommended for most lookups. - **Follow Registrar WHOIS** toggle -- some domain registrars operate their own WHOIS servers with additional detail. When enabled, the tool will also query the registrar's WHOIS server after the initial lookup. This can provide extra information like detailed contact data or domain status flags. - **Max Hops** -- the maximum number of referrals the tool will follow. This prevents infinite loops in case of circular referrals. The default value is sufficient for virtually all queries. - **Timeout** -- how long to wait for a response from each WHOIS server before giving up (in seconds). Increase this if you are on a slow network or querying a distant server. ## Results {#results} WHOIS results are displayed as one or more response blocks. When referrals are followed, each server's response appears separately, so you can see the full chain of lookups: Each response block includes: - **Server Name** -- the hostname of the WHOIS server that provided this response (e.g., `whois.verisign-grs.com`). - **Address and Port** -- the server's address and port number that were queried. - **Query Sent** -- the exact query string that was sent to this server. This is useful for understanding what the tool asked. - **Referral Hints** -- if the server's response included a referral to another WHOIS server, the referral target is shown here. - **Response Text** -- the full WHOIS response from the server. This typically includes: - **Domain Name** -- the queried domain (e.g., `APPLE.COM`). - **Registrar** -- the company where the domain is registered. - **Registration Date** -- when the domain was first registered. - **Expiration Date** -- when the domain registration expires. - **Updated Date** -- when the registration was last modified. - **Name Servers** -- the DNS servers authoritative for the domain. - **Status** -- domain status codes (such as `clientTransferProhibited`, which means the domain cannot be transferred to another registrar without authorization). - **Registrant / Admin / Tech Contacts** -- contact information for the domain owner and administrators (when not redacted for privacy). For IP address lookups, results typically show the organization that controls the IP range, the range itself (in CIDR notation), and the regional registry that allocated it. ## Toolbar Actions {#toolbar-actions} The toolbar provides buttons for managing your results: - **Share** -- share the WHOIS results with other apps or save them to a file. - **Copy** -- copy the full WHOIS response text to your clipboard. - **Clear** -- remove all results and reset the tool for a new query. ## Notes And Limitations {#notes-and-limitations} - WHOIS data is public registration information provided by domain registrars and regional registries. The accuracy and completeness of this data depends on the registrar and the domain owner. - Many domain registrations now use **privacy protection** services that redact personal contact information (name, email, phone, address) from WHOIS results. This is standard practice and does not indicate anything suspicious about a domain. - WHOIS is not offered in the Apple TV (tvOS) build of Lirum. - Response times vary depending on which WHOIS server is queried and your network connection. Some servers may take several seconds to respond. - Rate limiting may apply. If you perform many lookups in rapid succession, some WHOIS servers may temporarily block your queries or return an error message asking you to slow down. - The information returned varies significantly depending on the domain extension (TLD). Some country-code TLDs (like `.de` for Germany) provide very limited WHOIS information, while generic TLDs (like `.com`) tend to provide more detail. - ASN lookups show which organization operates a specific autonomous system on the internet. An autonomous system is a large network or group of networks managed by a single organization (such as an internet provider or large company). --- ## Widgets Source: widgets.md URL: https://docs.lirumlabs.com/widgets Lirum Device Info includes **widgets** for **iOS**, **iPadOS**, and **visionOS** so you can monitor key metrics at a glance. ## Available Widgets {#available-widgets} Lirum currently includes these widgets. All widgets support Small, Medium, and Large sizes unless noted otherwise. | Widget | Description | Tap Action | Refresh Interval | |--------|-------------|------------|-----------------| | **System Overview** | Compact summary of CPU, memory, storage, and network | Opens Home tab | Every 10 minutes | | **CPU Usage** | CPU usage percentage with recent history | Opens CPU tool | Every 10 minutes | | **Memory Usage** | Memory usage percentage and breakdown (when space allows) | Opens Memory tool | Every 10 minutes | | **Network Activity** | Wi-Fi and cellular upload/download activity | Opens Connection Rate tool | Every 10 minutes | | **Storage** | Used/free storage and percentages | Opens Storage tool | Every 30 minutes | | **System Uptime** | Time since last boot | — | Every 1 minute | | **Usage Alerts** | Health-style alerts based on configurable thresholds (CPU, memory, storage, network, thermal, battery) | Opens Home tab | Every 2 minutes | The **Usage Alerts** widget also supports a **Lock Screen** size (`accessoryRectangular`), letting you see alert status directly on the Lock Screen without unlocking. In Medium and Large sizes, the **Memory Usage** widget displays a segmented bar showing Active (blue), Wired (orange), Inactive (green), and Free memory. The Large size also shows Compressed memory when present. ## Data Freshness {#data-freshness} Widgets display the latest snapshot collected by Lirum. If Lirum has not been opened recently, widgets may show **stale** data (visually dimmed) or **No Data**. Tip: open Lirum and leave it in the foreground briefly to refresh widget data. ## Widget Settings {#widget-settings} In **Settings > Widgets**, you can: - Toggle **Show Timestamp** (shows/hides the “as of …” label on widgets). - Configure **Alerts** thresholds used by the **Usage Alerts** widget (see [Settings > Alerts](/support/settings#alert-settings) for details on the six alert categories and their default thresholds). ## iOS {#ios} ## iPadOS {#ipados} ## visionOS {#visionos} On visionOS, widgets can be placed in your space to create an always-on dashboard.