Libimobiledevice: Difference between revisions

imported>Onny
Add section on how to perform factory reset
Klinger (talk | contribs)
mNo edit summary
 
(12 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{DISPLAYTITLE:libimobiledevice}}
The [https://libimobiledevice.org/ libimobiledevice] project provides libraries and tools to connect and transfer data between iOS devices and Linux machines.


== Usage ==
== Usage ==


In order to be able to automatically mount your iOS device (such as an iPhone) when connecting it, you need to install <code>libimobiledevice</code> and to activate the <code>usbmuxd</code> service.
=== Preparation ===
 
In order to be able to automatically mount your iOS device (such as an iPhone) when connecting it or to enable USB tethering, you need to install <code>libimobiledevice</code> and to activate the <code>usbmuxd</code> service.


Add the following to your <code>configuration.nix</code>:
Add the following to your <code>configuration.nix</code>:
Line 8: Line 12:
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
services.usbmuxd.enable = true;
services.usbmuxd.enable = true;
environment.systemPackages = with pkgs; [
environment.systemPackages = with pkgs; [
   libimobiledevice
   libimobiledevice
Line 14: Line 19:
</syntaxhighlight>
</syntaxhighlight>


You can then mount your device using ifuse:
If you experience issues mounting or pairing your device (for example as described [https://github.com/NixOS/nixpkgs/issues/152592 here]), you can try to switch the <code>usbmuxd</code> daemon package to an alternative more updated implementation, <code>usbmuxd2</code>.
 
<syntaxhighlight lang="nix">
services.usbmuxd = {
  enable = true;
  package = pkgs.usbmuxd2;
};
</syntaxhighlight>
 
=== Mounting ===
 
Mounting the device via iFuse is possible with the following commands
 
<syntaxhighlight>
<syntaxhighlight>
$ mkdir /tmp/iphone
$ mkdir /tmp/iphone
$ ifuse /tmp/iphone
$ ifuse /tmp/iphone
</syntaxhighlight>
</syntaxhighlight>
If you get an error about <code>ERROR: No device found!</code>, check the status of <code>usbmuxd</code>:
 
=== Tethering ===
 
Tethering on iOS is possible via Wifi hotspot, Bluetooth or USB. In order to enable USB tethering, first enable tethering in the iOS networking settings. After that run following command
 
<syntaxhighlight>
<syntaxhighlight>
$ sudo systemctl status usbmuxd.service
$ idevicepair pair
</syntaxhighlight>
</syntaxhighlight>
If you see an error
<syntaxhighlight>
ERROR: Could not connect to lockdownd on device [...], lockdown error -8
</syntaxhighlight>
you may need to restart the usbmuxd service as reported [https://github.com/NixOS/nixpkgs/issues/152592 here]:
<syntaxhighlight>
$ sudo systemctl restart usbmuxd.service
</syntaxhighlight>
(it may take a bit of time)


== Maintainence ==
Confirm pairing by accepting the connection on your iOS device. After that an ethernet device will appear in your network device list.
 
== Maintenance ==


=== Factory reset ===
=== Factory reset ===
Line 45: Line 59:
];
];
</syntaxhighlight>
</syntaxhighlight>
Shutdown your iDevice and put it into DFU/recovery mode. How to achieve this depends on your iDevice model. See [https://www.theiphonewiki.com/wiki/DFU_Mode DFU Mode on the iPhone Wiki] for more details.
Once your iDevice is in recovery mode, run following command to reset your device. You will get asked which firmware to install and a final confirmation that everything will be erased.
{{Warning|The following command will reset your iPhone. All user data will be lost. Be sure to backup everything before proceeding.}}


<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
Line 65: Line 85:
This restore will erase your device data.
This restore will erase your device data.
################################ [ WARNING ] #################################
################################ [ WARNING ] #################################
# You are about to perform an *ERASE* restore. ALL DATA on the target device                         #
# You are about to perform an *ERASE* restore. ALL DATA on the target device
# will be IRREVERSIBLY DESTROYED. If you want to update your device without                     #
# will be IRREVERSIBLY DESTROYED. If you want to update your device without
# erasing the user data, hit CTRL+C now and restart without -e or --erase                                   #
# erasing the user data, hit CTRL+C now and restart without -e or --erase
# command line switch.                                                                                                                 #
# command line switch.
# If you want to continue with the ERASE, please type YES and press ENTER.                           #
# If you want to continue with the ERASE, please type YES and press ENTER.
#############################################################################
#############################################################################
> YES
> YES