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
- Fork the repository
- Create a feature branch
- Implement changes with tests
- 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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support