Skip to content

Display Modes

Specchio offers multiple display modes to suit different needs — from pixel-perfect video streaming to ultra-low-bandwidth synthetic UI.

Table of Contents

  1. Mode Overview
  2. Auto Mode
  3. USB Video Mode
  4. Screenshot Mode
  5. Lite Mode (Accessibility)
  6. Choosing the Right Mode

Mode Overview

ModeTransportFPSQualityBandwidthLicense
AutoBest availableUp to 60BestVariesFree
USB VideoUSB (CoreMediaIO)30-60Pixel-perfectHighFree
ScreenshotHTTP polling5-15Pixel-perfectMediumFree
Lite (A11y)HTTP XML diff2-5Synthetic UIVery lowFree

When to Use Each Mode

  • Auto: Let Specchio choose the best mode automatically
  • USB Video: Maximum quality and smoothness (USB only)
  • Screenshot: Reliable pixel-perfect mirroring
  • Lite: Poor network or need minimal bandwidth

Auto Mode

Auto mode automatically selects the best available display mode based on your connection type and device capabilities.

How Auto Mode Chooses

  1. USB Connection: Uses USB Video if device supports it
  2. WiFi Connection: Uses Screenshot mode
  3. Fallback: Automatically degrades if issues detected

Advantages

BenefitDescription
🤖 AutomaticNo manual mode switching needed
🎯 Best QualityAlways uses best available mode
🔄 AdaptiveDegrades gracefully if issues occur

When to Use Auto

  • ✅ Most users should use Auto mode
  • ✅ Don't know which mode to pick
  • ✅ Want automatic optimization
  • ✅ Switch between USB and WiFi frequently

USB Video Mode

USB Video mode uses CoreMediaIO to capture H.264 video stream directly from your iPhone over USB.

How it Works

  1. Specchio uses CMIO to create a USB video capture session
  2. iPhone streams H.264 encoded video over USB
  3. Specchio decodes and displays in real-time
  4. Input is sent separately via WebDriverAgent

Advantages

BenefitDescription
🎬 Smooth VideoHardware-accelerated H.264 decoding
🖼️ Pixel-PerfectExact representation of iPhone screen
⚡ Low LatencyDirect USB video path
🔋 EfficientHardware encoding/decoding

Requirements

  • USB connection required
  • iPhone with USB Video capability (most modern devices)
  • CoreMediaIO support in macOS

Performance

MetricValue
Frame Rate30-60 FPS
Latency5-15ms
ResolutionNative device resolution
CPU UsageLow (hardware decode)

When to Use USB Video

  • ✅ Connected via USB
  • ✅ Need smooth, real-time video
  • ✅ Gaming or dynamic content
  • ✅ Want best possible quality

Screenshot Mode

Screenshot mode polls WebDriverAgent for periodic screenshots of your iPhone screen.

How it Works

  1. Specchio requests screenshots via HTTP GET /screenshot
  2. WDA captures current screen as JPEG/PNG
  3. Image is sent back over HTTP
  4. Specchio displays the image

Advantages

BenefitDescription
🎯 Pixel-PerfectExact screenshot from device
🔌 Works on WiFiNo special hardware needed
✅ ReliableSimple HTTP, less to go wrong
📱 UniversalWorks on all iOS devices

Performance

MetricValue
Frame Rate5-15 FPS
Latency50-200ms
ResolutionNative device resolution
CPU UsageMedium (image decode)

When to Use Screenshot

  • ✅ WiFi connection
  • ✅ Pixel-perfect quality needed
  • ✅ Content is mostly static
  • ✅ USB Video not available

Lite Mode (Accessibility)

Lite mode uses the iOS accessibility tree to render a synthetic version of your iPhone's UI.

How it Works

  1. Specchio fetches accessibility tree via HTTP GET /source
  2. XML represents UI hierarchy and element properties
  3. Specchio renders a simplified UI using SwiftUI
  4. Only changed elements are updated (diffing)

Advantages

BenefitDescription
📉 Minimal BandwidthXML is tiny compared to images
🎨 Clean UISynthetic, readable interface
🔍 AccessibleShows accessibility metadata
⚡ EfficientOnly updates changed elements

Limitations

LimitationImpact
Not Pixel-PerfectSynthetic UI, not screenshots
Lower Frame Rate2-5 FPS
Missing VisualsCustom graphics, videos, animations may not show

Performance

MetricValue
Frame Rate2-5 FPS
Latency100-300ms
ResolutionSynthetic (not pixel-based)
BandwidthVery low (XML)

When to Use Lite

  • ✅ Poor network connection
  • ✅ Need minimal bandwidth usage
  • ✅ Static content (forms, text)
  • ✅ Accessibility testing

Choosing the Right Mode

Decision Tree

Need best quality?
├─ Yes → USB Video (if USB connected)
│        → Screenshot (if WiFi)
└─ No / Poor network?
   └─ Lite Mode

Quick Reference

Your SituationRecommended Mode
USB connected, want smooth videoUSB Video
USB connected, don't careAuto
WiFi connected, want qualityScreenshot
Poor network, need basic mirroringLite
Don't knowAuto

Performance Comparison

Quality: USB Video > Screenshot > Lite
Speed:  USB Video > Screenshot > Lite
Efficiency: Lite > Screenshot > USB Video

Switching Display Modes

How to Switch

  1. In the Specchio menu bar, click the display mode indicator
  2. Select your preferred mode from the dropdown
  3. The switch takes effect immediately

Mode Persistence

Specchio remembers your mode preference:

  • Per device (USB vs WiFi)
  • Resets to Auto on new devices
  • Can be changed in Settings

Troubleshooting Display Modes

USB Video Not Available

Problem: USB Video mode option is greyed out.

Solutions:

  • Make sure you're connected via USB
  • Try disconnecting and reconnecting
  • Check if your device supports USB Video
  • Restart Specchio

Screenshot Mode Slow/Laggy

Problem: Screenshot updates are very slow.

Diagnostic commands:

bash
# Test screenshot endpoint directly
time curl http://localhost:8100/screenshot --output test.png

# Check file size (smaller = faster)
ls -lh test.png

Solutions:

  • Try Lite mode for better performance
  • Check your USB cable quality
  • Close other apps using USB bandwidth
  • Try USB Video mode if available

Lite Mode Shows Blank Screen

Problem: Lite mode shows nothing or incomplete UI.

Diagnostic commands:

bash
# Test accessibility endpoint
curl http://localhost:8100/source

# Should return XML with UI tree

Solutions:

  • Some apps don't expose accessibility properly
  • Switch to Screenshot mode for those apps
  • Ensure Accessibility permissions are granted to WDA

For more help, see Troubleshooting.

Released under the MIT License.