Libimobiledevice: Difference between revisions

imported>Onny
Add information on tethering
imported>Onny
Add instruction to avoid bugs
Line 1: Line 1:
[https://www.apple.com/ios/ iOS] is an operating system created by Apple Inc. for use in the iPhone series of smartphones. Although connecting iOS devices to Linux is not supported by Apple, the [https://libimobiledevice.org/ libimobiledevice] project provides libraries and tools to connect and transfer data between iOS devices and Linux machines.


== Usage ==
== Usage ==
Line 10: Line 11:
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
services.usbmuxd.enable = true;
services.usbmuxd.enable = true;
environment.systemPackages = with pkgs; [
environment.systemPackages = with pkgs; [
   libimobiledevice
   libimobiledevice
   ifuse # optional, to mount using 'ifuse'
   ifuse # optional, to mount using 'ifuse'
];
];
</syntaxhighlight>
{{Note|Parts of this instruction and module are not yet stable and will be available in the upcoming NixOS 23.05 release.}}
In case you're going to experiencing issues mounting or pairing with your device (as described [https://github.com/NixOS/nixpkgs/issues/152592 here], you could 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>
</syntaxhighlight>


Line 24: Line 37:
$ 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>:
<syntaxhighlight>
$ sudo systemctl status usbmuxd.service
</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)


=== Tethering ===
=== Tethering ===