YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

iOSDiag - iOS Hardware Diagnostics for Linux

A comprehensive Rust-based diagnostic tool for iOS devices running on Linux, enabling hardware health assessment, evidence collection, and intelligent analysis.

Project Status

🚀 Early Development - Core architecture and foundational modules implemented.

Features

  • Device Discovery: List and identify connected iOS devices via USB
  • Secure Pairing: Establish trusted connections with iOS devices
  • Evidence Collection: Gather hardware diagnostics including:
    • Battery health and metrics
    • Storage/NAND information
    • Wi-Fi diagnostics
    • Thermal sensor data
    • Reboot and panic logs
    • System information
  • Data Normalization: Convert raw evidence into canonical JSON format
  • Intelligent Inference: Apply diagnostic rules to identify hardware issues
  • Report Generation: Export findings in JSON, HTML, and PDF formats

Architecture

Transport Layer (USBMUX/CoreDevice)
    ↓
Security & Pairing
    ↓
iOS Service Clients (Lockdown, DiagnosticsRelay, etc.)
    ↓
Data Collectors (Battery, Storage, Thermal, etc.)
    ↓
Normalization Engine
    ↓
Inference Engine
    ↓
Report Generation

Project Structure

iosdiag/
├── crates/
│   ├── iosdiag-core/          # Core library
│   │   └── src/
│   │       ├── transport/     # Device communication
│   │       ├── security/      # Pairing & crypto
│   │       ├── services/      # iOS service clients
│   │       ├── collectors/    # Evidence gathering
│   │       ├── normalize/     # Data normalization
│   │       ├── inference/     # Diagnostic engine
│   │       └── report/        # Report generation
│   └── iosdiag-cli/           # Command-line interface
├── kb/                        # Knowledge base
│   ├── rules/                 # Diagnostic rules
│   ├── mappings/              # Device mappings
│   └── signatures/            # Panic signatures
├── schemas/                   # JSON schemas
├── docs/                      # Documentation
└── tests/                     # Test suite

Building

cd crhon/iosdiag
cargo build --release

Usage

# List connected devices
iosdiag devices

# Pair with a device
iosdiag pair <UDID>

# Collect diagnostics
iosdiag collect <UDID>

# Analyze collected data
iosdiag analyze <bundle.json>

# Generate report
iosdiag report <bundle.json> --format html

Dependencies

  • Rust 1.70+
  • tokio: Async runtime
  • plist: Property list parsing
  • serde: Serialization
  • log: Logging
  • uuid: Device identification
  • sha2: Cryptographic hashing

Development

Running Tests

cargo test

Building Documentation

cargo doc --open

Code Style

  • Follow Rust conventions (rustfmt)
  • Use clippy for linting
  • Maintain modular architecture
  • Keep files under 400 lines for readability

Investigation: 500-Line Code Limit

Status: ✅ NO LIMITATION FOUND

See ANALYSIS_500_LINE_LIMIT.md for detailed investigation results.

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Implement changes with tests
  4. Submit a pull request

License

MIT License - See LICENSE file for details

Roadmap

  • Complete USBMUX transport implementation
  • Implement CoreDevice tunnel support
  • Add full service client implementations
  • Expand knowledge base with more diagnostic rules
  • Implement PDF report generation
  • Add GUI interface (Tauri/GTK)
  • Support for iOS 15-18 devices
  • Performance optimization

Support

For issues, questions, or contributions, please open an issue on the project repository.


Project: iOSDiag
Version: 0.1.0
Status: Active Development
Last Updated: 2026-02-10

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support