Fixing gvfs-backend-afc for iPhone/iPod Touch access



Hi all,

As talked about briefly with David Zeuthen on IRC, I'll try to announce
a new backend for GVFS in order to get some help making it work and
allow User Joe to plug'n'play his devices.

It is a backend using libiphone to communicate with iPhone/iPod Touch
devices using the AFC protocol in a native way and allow filesystem
access to those.

It uses the afc://uuid:port/ scheme (uuid is a unique device id, port is
used to spawn a different afc service on the device and allow root
filesystem access on jailbroken devices).

The effect is that other projects (like libgpod or audio players) could
use GVFS to access the music database on the devices.

The current state of the backend is based on prior work of Patrick
Walton and others but it has been improved and brought to the latest
state regarding the libiphone API.

I also adjusted the sources so that one is able to build it almost stand
alone (still needs a GVFS source tree somewhere else).

David proposed including it in the main GVFS tree with a conditional
build.

The source code can be found here:
http://cgit.sukimashita.com/gvfs-backend-afc.git/

I am aware that the attempt at this backend is probably not perfect as
the main goal was to quickly have a very very basic thing working with
proper automounting to replace a HAL fdi "fake" mount method we use now
along with a fuse fs driver (and be able to close our last bug for a 1.0
libiphone release).

However writing a GVFS backend without documentation where small things
can hold progress back for hours because one does not know how the whole
system works is like a science itself and not really straightforward...

Thus I ask for help, especially for the volume monitor code.

The backend currently detects a plugged in device however one ends up
with:
- Volume (is the enclosing volume for the mount)
  - Mount (seems to be the mount from afc volume)
- Mount (as if mounted using afc://uuid/ directly)

The volume monitor appears to do the g_file_mount_enclosing_volume() but
the gvfs-backend creates another mount point.

As the gvfs-backend knows how to set the right display name and icons,
it would desired if it would create the mount but with the volume as the
parent.

When removing the device the volume monitor mount and volume is removed
and disappears while the backend mount is still sitting there and
causing issues when plugging the device back in.

Well, any help is appreciated also on IRC in channel #nautilus (psp250).

--- Martin S.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]