Contents |
iFuse and libiphone
iFuse allows you to mount an iPhone or iPod Touch under Linux using the USB cable. You can view and edit the files similar to a normal USB disk drive. iFuse does not require "jailbreaking" or voiding your warranty and works without needing extra software installed on the phone (such as `ssh`).
What is it?
libiphone is a software library that talks the native Apple USB protocols that the iPhone uses. Unlike other projects, `libiphone` does not depends on using any existing `.dll` or `.so` libraries from Apple.
iFuse is a FUSE filesystem driver which uses `libiphone` to connect to devices without jailbreak. iFuse is using the native Apple "AFC" protocol, over the normal USB cable in order to access the iPhone's (or iPod Touch's) media files under Linux.
Does it work yet?
Yes! As of 2008-09-02, iFuse is currently able to read and write files and directories and will quite happily copy 10GB+ of files without problems, allowing you to do a backup under Linux. However at this point it is recommended only for use by developers ...to ensure that there are no unexpected issues.
What can it do?
Once the iPhone is mounted, you can copy on, or copy off any media files that live inside the `/var/root/Media` chroot directory. This includes photographs and music files.
Photos: These are EXIF/JPEGs stored in the DCIM hierarchy. With iFuse you can use the `.jpg` files directly, or the use the existing USB 'PTP' camera interface.
MP3 player: the iPhone uses a proprietary database format to store song information and playlists, simply copying extra music to the iPhone's filesystem without updating this database will not work. `libgpod (svn)` and `gtkpod` can be used to update and re-sign the song database and make new music show up on players using firmware versions up to 1.3.
- Note for libgpod users: Apple's cryptographic signing algorithm changed with the new 2.0+ firmware. The new algorithm has not been discovered yet and `libgpod` will be unable to re-sign the database. If you try to update the song database on 2.0 devices, your music library will be destroyed and require restoring through iTunes. This problem is not with iFuse and applies equally to all the `ssh`-based mounting methods. To assist, you can help reverse-engineer the new signing algorithm with the GtkPod team.
Addressbook/Calendar: these databases live outside of the chroot. You can currently only access/update the files directly on phones that have been jailbroken. There is an experimental module for Conduit Syncing from a jailbroken phone.
Work is in progress to reverse-engineer more the backup/sync protocols and to make Addressbook access possible using the "proper" protocols.
Known bugs
As of 2008-09-02, there are still some threading/locking issues. A workaround is to use `ifuse <mountpoint> -s` which will force single-threaded mode until the issue can be finally tracked down.
Can I help?
Right now we need alpha testers to ensure that things are working appropriately. You're also welcome to contribute patches (or even just suggestions) for bug fixes, additional documentation, test cases and to help with packaging.
If you have access to a Windows, or Apple machine, you maybe also be able to create a trace by capturing the USB traffic going to and from iTunes!
Documents
- Protocol Documentation, information gained from reverse-engineering.
Contact
- Sign up and use the iphone-linux-dev mailing list.
Related Projects
- iPHUX - An application to manage the data on your iPhone from Linux. It currently only works on iPhones which have been unlocked and have SSH installed.
- Disk for iPhone - A Fuse filesystem for Mac (much easier as apple has provided a libmobiledevice.so)
- Manaza - A C# interface for browsing iPhone files (but it doesn't work as there is no libmobiledevice.so in Linux)
- iPhone Linux - Porting Linux to the iPhone.
- iPhone Dev Wiki Page - Not strictly a project but a nice collection of information about integrating the iPhone and Linux.
