Skip to main content
Impactor can generate pairing files that allow apps to communicate with your iOS device remotely over WiFi. This is essential for apps like SideStore, Feather, and other sideloading tools.

What is a pairing file?

A pairing file (.mobiledevicepairing or .plist) contains:
  • Device-specific certificates and keys
  • Trusted credentials for lockdown communication
  • WiFi debugging authorization
  • UDID and device identification
These files enable apps to perform operations like app installation, file access, and system queries without requiring a direct USB connection.
Pairing files become invalid if you:
  • Untrust your computer on the device
  • Reset or restore your device
  • Update iOS (in some cases)

Supported applications

Impactor automatically generates and installs pairing files for these apps:
ApplicationBundle IDFile Path
SideStorecom.SideStore.SideStore/Documents/ALTPairingFile.mobiledevicepairing
Featherthewonderofyou.Feather/Documents/pairingFile.plist
LiveContainercom.kdt.livecontainer/Documents/SideStore/Documents/ALTPairingFile.mobiledevicepairing
Antragthewonderofyou.antrag2/Documents/pairingFile.plist
Protokollethewonderofyou.syslog/Documents/pairingFile.plist
StikDebugcom.stik.sj/Documents/pairingFile.plist
SparseBoxcom.kdt.SparseBox/Documents/pairingFile.plist
EnsWildecom.yangjiii.EnsWilde/Documents/pairingFile.plist
ByeTunescom.EduAlexxis.MusicManager/Documents/pairing file/pairingFile.plist

How pairing file generation works

1

Retrieve pairing record

Impactor retrieves the existing pairing record from usbmuxd:
// From plume_utils/src/device.rs:171
let mut pairing_file = usbmuxd.get_pair_record(&self.udid).await?;
2

Enable WiFi debugging

WiFi debugging must be enabled for remote communication:
// From plume_utils/src/device.rs:177
lc.set_value(
    "EnableWifiDebugging",
    true.into(),
    Some("com.apple.mobile.wireless_lockdown"),
).await.ok();
3

Add device UDID

The device’s UDID is added to the pairing file:
pairing_file.udid = Some(self.udid.clone());
4

Install to app container

The pairing file is written to the app’s Documents directory using House Arrest:
// From plume_utils/src/device.rs:187
let hc = HouseArrestClient::connect(&provider).await?;
let mut ac = hc.vend_documents(identifier.clone()).await?;

Automatic installation

Impactor automatically detects supported apps and installs pairing files during sideloading:
  1. App detection - Impactor identifies the app by bundle ID or name
  2. Path determination - The correct file path is selected based on the app
  3. Directory creation - Parent directories are created if needed
  4. File installation - The pairing file is written to the app’s container
// From plume_utils/src/options.rs:276
pub fn pairing_file_path(&self) -> Option<&'static str> {
    match self {
        SideStore => Some("/Documents/ALTPairingFile.mobiledevicepairing"),
        Antrag | Feather | Protokolle => Some("/Documents/pairingFile.plist"),
        LiveContainer => Some("/Documents/SideStore/Documents/ALTPairingFile.mobiledevicepairing"),
        // ...
    }
}

Manual pairing file installation

You can manually install pairing files using the Utilities page:
1

Connect device

Connect your iOS device via USB and ensure it appears in Impactor.
2

Open Utilities

Navigate to the Utilities page in Impactor.
3

Select app

Choose the app you want to install a pairing file for.
4

Install

Click “Install Pairing File” and Impactor will handle the rest.
The device must be trusted and unlocked for pairing file installation to succeed.

Re-trusting your device

If you need to generate a new pairing record:
// From plume_utils/src/device.rs:132
pub async fn pair(&self) -> Result<(), Error> {
    let mut lc = LockdownClient::connect(&provider).await?;
    let id = uuid::Uuid::new_v4().to_string().to_uppercase();
    let buid = usbmuxd.get_buid().await?;
    let mut pairing_file = lc.pair(id, buid).await?;
    pairing_file.udid = Some(self.udid.clone());
    let pairing_file = pairing_file.serialize()?;
    usbmuxd.save_pair_record(&self.udid, pairing_file).await?;
}
This creates a new trust relationship between your computer and device.

Technical implementation

House Arrest protocol

Impactor uses the House Arrest service to access app containers:
// Connect to House Arrest
let hc = HouseArrestClient::connect(&provider).await?;
// Access app's Documents directory
let mut ac = hc.vend_documents(identifier.clone()).await?;
This provides secure file system access to the app’s sandbox.

Directory creation

Nested directories are created automatically:
// From plume_utils/src/device.rs:193
if let Some(parent) = Path::new(path).parent() {
    for component in parent.components() {
        if let Component::Normal(dir) = component {
            current.push_str(&dir.to_string_lossy());
            ac.mk_dir(&current).await?;
        }
    }
}
This ensures paths like /Documents/SideStore/Documents/ are fully created.

File writing

The pairing file is written atomically:
let mut f = ac.open(path, AfcFopenMode::Wr).await?;
f.write_entire(&pairing_file.serialize().unwrap()).await?;

Verifying installation

After installation, you can verify the pairing file:
  1. Open the app on your device
  2. Check for WiFi connectivity features
  3. For SideStore: Navigate to Settings → Check “WiFi Sync”
  4. For Feather: Verify the pairing file appears in Settings

Troubleshooting

Pairing file not working

  • Ensure WiFi debugging is enabled
  • Verify the device is on the same network
  • Check that the pairing file hasn’t expired
  • Re-trust your device and regenerate the file

”Device not paired” error

  • Connect via USB and unlock your device
  • Trust your computer when prompted
  • Use Impactor’s “Re-trust Device” utility

App can’t find pairing file

  • Verify the file path matches the app’s expectations
  • Check file permissions in the app container
  • Reinstall the app and pairing file together

Security considerations

Pairing files contain sensitive credentials. Never share them publicly or commit them to version control.
  • Pairing files grant full access to your device
  • They can be used to install apps, read files, and access system information
  • Store them securely and regenerate them if compromised
  • Each device has unique pairing files

Next steps

P12 Export

Export certificates for LiveContainer

Device Utilities

Learn about device management features

Build docs developers (and LLMs) love