MobileDevice Implementation
C Perl Makefile C++ Assembly DIGITAL Command Language Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
Core @ c5a316c updating name Sep 9, 2015
Framework Make it work for iOS 10.2 – change method to TLSv1 Apr 3, 2017
iOSConsole removing dependence on xcode Jan 14, 2017
openssl-0.9.8zg removing dependence on xcode Jan 14, 2017
usbmuxd updating name Sep 9, 2015
.gitignore adding back code to close socket on invalid connection Nov 23, 2014
.gitmodules broke submodules Jan 29, 2014 updating contributing instructions for opening issues Jul 29, 2015
LICENSE updating name Sep 9, 2015
Makefile fixing problem with doing an initial clean Mar 28, 2017
OpenSSL.xcconfig adding openssl to support building on 10.11 Nov 13, 2015
Presentation.pdf adding slides Aug 10, 2013 updating read me with contact info Feb 13, 2014
circle.yml adding submodule command Mar 28, 2017


Table of Contents

What is this?

SDMMobileDevice is a framework that enables access to communicating with iOS devices. This framework serves as a public and documented way to interact with iOS devices and the services that exist on iOS devices.

SDMMobileDevice is a framework that can be used interchangeably with Apple's private framework MobileDevice.framework

What can this project do for me?

This framework gives access to a number of technologies that have previously been "off limits" to developers. Due to being a private and undocumented API, MobileDevice.framework has not been something that can be safely interacted with. This framework provides access to:

  1. Detecting attached iOS devices
  2. Querying iOS devices for software and hardware configurations
  3. Communication with device services
  4. Sandbox access to applications installed on iOS devices
  5. Installation of applications onto iOS devices
  6. File transfers

How do I use this?

SDMMobileDevice is an OS X framework and can be used in two ways:

  1. Bundled Framework
  2. Source Code

Special Note: Entitlements

Bundled Framework

You are already almost done!

  1. Add SDMMobileDevice.framework as a linked library
  2. Add a new build phase that copies "SDMMobileDevice.framework" to the "Frameworks" directory of your app.
  3. Add "@loader_path/../Frameworks" to "Runtime Search Paths"
  4. Add #include <SDMMobileDevice/SDMMobileDevice.h> to your source code

Source Code

If you wish you use this as source code, it will require the following libraries:

  • CoreFoundation.framework
  • libcrypto.dylib
  • libssl.dylib
  • IOKit.framework

If you have trouble locating any of these, please look at the "-Framework" xcode project file to get the paths for these libraries.

Entitlements (where applicable)

See this file


Q. Why do I get so many warnings when compiling?

A. The warnings are from the openssl and libcrypto calls that Apple has deprecated starting in 10.7, I am looking to replace these with CommonCrypto or bundling openssl and libcrypto so these errors don't happen.

Q. When is the Cocoa version coming?

A. Soon! I am working to provide a few more core features and keeping the whole thing compatible with MobileDevice and keeping it as a completely C library. The Cocoa wrapper for this will come as soon as I have finished the AFC implementation and have working wireless communication.

Q. How do I use this with MobileDevice.framework

A. For the most part SDMMobileDevice is cross-compatible with MobileDevice's function calls and object types. Function calls with matching names (remove the "SDMMD" prefix and underscores), will have matching parameters and types to what MobileDevice uses. Majority of the object types are reconstructed to match in internal layout.

Q. How can I contribute?

A. See the wiki for details on submitting pull requests.


I have created a IRC room on freenode to serve as general discussion and research.


Room: #sdmmobiledevice

Quicklink: webchat