Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Has anyone here already run a Linux iFuse (libimobiledevice) port on Windows?

2 views
Skip to first unread message

Andy Burnelli

unread,
Jan 17, 2022, 12:12:49 AM1/17/22
to
This is a question that only an _expert_ can answer.

Has anyone here already run an iFuse (libimobiledevice) port on Windows?
If so, can you help me to get up to speed on running it on my Windows 10?

If this question has _zero_ responses, that's OK.
It just means nobody knows more than I do - and that's fine.

In another thread I made the mistake of including the Apple newsgroup.
*How to copy files both ways anywhere you want to/from iPhone/iPad over USB
between Windows & iOS using Linux*
<https://groups.google.com/g/misc.phone.mobile.iphone/c/qmkDxzo4bN0>

That just invited the three Apple kooks to brazenly fabricate functionality
that simply does not exist - which is what they always do - so they're not
being asked to respond if they see this (because they just make it all up).
a. Lewis
b. nospam
c. Jolly Roger

Here are screenshots showing Android and Linux can do it (just not Windows):
a. Two-way file transfer (aka read _and_ write)
b. Into the entire iOS visible file system
c. (Often of very large files) over USB
<https://i.postimg.cc/NFkXsJ0X/files01.jpg> Windows, 1-way only, DCIM only
<https://i.postimg.cc/L8b18Zmx/files02.jpg> iOS "Files" does nothing useful
<https://i.postimg.cc/d3SGkdgr/files03.jpg> Android is two way, everything
<https://i.postimg.cc/QMk7tvZW/files04.jpg> Ubuntu is two way, everything
<https://i.postimg.cc/qqg61Rh8/files05.jpg> Ubuntu, movies _to_ iOS on USB
<https://i.postimg.cc/Jhmy9KH7/files06.jpg> Ubuntu uses iFuse for its magic
<https://i.postimg.cc/KjK4nHwf/files07.jpg> Ubuntu is two-way, everything

The Apple kooks _hate_ that iTunes can't do even this, one of the simplest
of operations over USB (which is two-way file transfer of large files into
the visible space of the iOS file system). So they fabricate it can do it.

And yet, iTunes can't possibly do it (even those kooks know it to be true).
Now back to Windows _without_ those rather odd Apple kooks on the thread.

The question remains a valid question of the Windows newsgroup.
The question remains a _difficult_ one to answer given it's a tough problem.

The linux people _solved_ the problem (with iFuse, libimobiledevice).
I'm hoping someone on the Windows group has _also_ solved this problem.

Do you have libimobiledevice already working on Windows?
If so, how did you do it (I'd like to try it for myself)?

BTW, if I knew the answer, I wouldn't be asking this difficult question.

Has anyone here already run an iFuse (libimobiledevice) port on Windows?
If so, can you help me to get up to speed on running it on my Windows 10?

My goal is to get on Windows the _same_ functionality I already have with
a. Android
b. Linux

If you have nothing to contribute, please do not respond.
It's ok if I know more than anyone else about this, as it's to be expected.

But I'm hoping _someone_ out there knows more than I do.
Otherwise I wouldn't bother asking the question again of this newsgroup.

VanguardLH

unread,
Jan 17, 2022, 1:44:51 AM1/17/22
to
Andy Burnelli <sp...@nospam.com> wrote:

> Has anyone here already run an iFuse (libimobiledevice) port on
> Windows? If so, can you help me to get up to speed on running it on
> my Windows 10?
>
> If this question has _zero_ responses, that's OK. It just means
> nobody knows more than I do - and that's fine.
>
> In another thread I made the mistake of including the Apple
> newsgroup. *How to copy files both ways anywhere you want to/from
> iPhone/iPad over USB between Windows & iOS using Linux*
> <https://groups.google.com/g/misc.phone.mobile.iphone/c/qmkDxzo4bN0>
> ...
No, I never used [i]FUSE, or ever had a need to mount a volume as an
interface on one host to connect to a file system under iOS. The below
is just what I read. I'm sure you won't find respondents here using a
interface and protocal that attempts to connect the host OS file system
to one under iOS using iFUSE, libimobiledevice, and all the
dependencies. Plus, this isn't really a programming venue, but about
end-user freeware products; i.e., wrong community to ask (free doesn't
mean this freeware community will know about compiling of source code).

https://github.com/libimobiledevice/ifuse/issues/31
"This is a utility for *nix systems, I'm not aware of any versions
ported to windows."
That response was back on Jan 21, 2017. Maybe it's changed since then.

https://en.wikipedia.org/wiki/Filesystem_in_Userspace
"FUSE was merged into the mainstream Linux kernel tree in kernel
version 2.6.14"
So, the FUSE module was ported and bundled in Linux distros since then.

Says a FUSE module is available for Windows, but that doesn't mean iFUSE
ever got ported to interface to the Windows file systems.

https://github.com/libimobiledevice/ifuse
"This project allows mounting various directories of an iOS device
locally using the FUSE file system interface."
https://github.com/libimobiledevice
"A cross-platform protocol library to access iOS devices."

Linux <-> iFUSE + libimobiledevice -> iOS

but presumably you're trying to do:

Windows -> iFUSE + libimobiledevice -> iOS

libimobiledevice is just the protocol to communicate between one host
(Linux, Windows) and an iOS host; i.e., differentiate between TCP to
connect hosts versus FTP as the protocol to commit actions on the
endpoint hosts. That's just the communication once the interface
between hosts is established.

You still need to get a FUSE module, like iFUSE, onto the endpoint OS'es
through which libimobiledevice can communicate. You need a FUSE module,
like iFUSE, on a Windows host (to use libimobiledevice through the FUSE
module).

https://github.com/libfuse/libfuse
"FUSE (Filesystem in Userspace) is an interface for userspace programs
to export a filesystem to the Linux kernel."

No mention that libfuse got ported to use under Windows.

https://github.com/libimobiledevice
Says it is cross-platform, but Windows is not included.

https://github.com/libimobiledevice/libimobiledevice
"libimobiledevice is a cross-platform software library that talks the
protocols to interact with iOS devices."
Yet the instructions don't mention how to install on a Windows host.
Started back in 2007, and yet:
"Documentation about using the library in your application is not
available yet."

https://libimobiledevice.org/
"A cross-platform FOSS library written in C to communicate with iOS
devices natively."
Maybe you're expected to compile the C code to create the lib on the
host OS.
"It has already been built and run on Linux, Mac, Windows, Android
and embedded ARM SoCs."
"built" means you have to build it by compiling the C code.

https://libimobiledevice.org/#downloads
For libimobiledevice to work, you'll also have to get its dependencies
on Windows (libusbmuxd, libplist, libgnutls, libtasn1, openssl). I
didn't see them provide a compiled bundle to operate under Windows, or
under any OS. You get the code, and you compile it.

https://libimobiledevice.org/#downloads
Well, they have a "Communities" page, you you end up at the Github
projects to use their Issues page, but that's really a bug/ticket
reporting communication venue. Yet, as per my first citing, users do
ask questions there.

https://lists.libimobiledevice.org/mailman/listinfo/libimobiledevice-devel
That's an [e-]mailing list. Apparently none of their Github projects
have a peer community or forum.

At the iFUSE Github project, I didn't see an installable bundle was
built for Windows. Linux users are lucky in that iFUSE, and its
dependencies, got included in the distro.

https://github.com/libimobiledevice/ifuse/issues?q=windows
A search in their Issues page didn't bring up how to get iFUSE
compiled on, or installed, under Windows - other than the first cited
article in my reply where the answer was iFUSE has no built .exe, lib,
or other component to use under Windows. There are so many
dependencies to iFUSE and libimobiledevice that it will a lot of
hit-and-miss trying to get them to all be present and work under
Windows. A response to that "issue" article has someone say you can
get iFUSE working by using Dokany.

https://github.com/dokan-dev/dokany
"User mode file system library for windows with FUSE Wrapper"
and
"When you want to create a new file system on Windows, other than FAT
or NTFS, you need to develop a file system driver. Developing a device
driver that works in kernel mode on windows is extremely technical. By
using Dokan, you can create your own file systems very easily without
writing device drivers. Dokan is similar to FUSE (Linux file system in
user space) but works on Windows. Moreover, dokany includes a FUSE
wrapper that helps you to port your FUSE filesystems without changes."

Looks like you'll be asking LOTS of questions to those Github projects
via their Issues page on just what all you need to compile the code for
all the projects (to also include the dependencies), and also using
Dokany as the FUSE wrapper to get Windows file systems linked to the iOS
file systems.

Seems it'd be easier to use a VMM (Virtual Machine Manager), like
Virtualbox or VMware Player, to run a Linux distro that already has all
the [i]FUSE, libimobiledevice, and dependencies under Linux running as a
guest OS in a VM on Windows. However, anything running inside a VM will
be slower than running on the native/host OS, and I saw users reporting
iFUSE was slow, so you'll be running slow under slower.

Andy Burnelli

unread,
Jan 17, 2022, 10:26:06 PM1/17/22
to
On Mon, 17 Jan 2022 00:44:44 -0600, VanguardLH wrote:

> No, I never used [i]FUSE, or ever had a need to mount a volume as an
> interface on one host to connect to a file system under iOS.

Thanks for trying to help out where almost nobody on Usenet knows what I
know about this (from experience only) and even then I admit I know almost
nothing since I'm not a developer - I'm just a user.

I use whatever works, where I _prove_ what I do with screenshots since I'm
a big believer in "pictures or it didn't happen" (especially given the Apple
kooks must think everyone is a bullshitter by the way they brazenly lie).

For those who haven't tried to copy files _to_ the entire visible file
system of a mobile device, you might not know what you can learn from these
<https://i.postimg.cc/NFkXsJ0X/files01.jpg> iOS/Win is 1-way & DCIM only
<https://i.postimg.cc/L8b18Zmx/files02.jpg> iOS "Files" does nothing useful
<https://i.postimg.cc/d3SGkdgr/files03.jpg> Android is two way, everything
<https://i.postimg.cc/QMk7tvZW/files04.jpg> Ubuntu is two way, everything
<https://i.postimg.cc/qqg61Rh8/files05.jpg> Ubuntu, movies _to_ iOS on USB
<https://i.postimg.cc/Jhmy9KH7/files06.jpg> Ubuntu uses iFuse for its magic
<https://i.postimg.cc/KjK4nHwf/files07.jpg> Ubuntu is two-way, everything
<https://i.postimg.cc/3xcCBngd/files08.jpg> iOS is just a dumb brick on Win
<https://i.postimg.cc/mDx3xkp4/files09.jpg> iOS only DCIM & only 1-way copy
<https://i.postimg.cc/9MGdc2s7/files10.jpg> Android is 2-way fast over USB
<https://i.postimg.cc/cChf8mx1/files11.jpg> iOS requires hacks just to copy
<https://i.postimg.cc/pVJf72fN/files12.jpg> iOS hacks very often will fail

Note that I've tried every way possible, where those screenshots show many
of the huge differences in how each mobile device handles file copy on PCs.
a. iOS connected to Linux works perfectly (no extra software needed)
b. Android connected to Linux or Windows works perfectly also
c. It's just iOS connected to Windows that is a horrid clusterfuck

That's the problem we can solve but it will take work because we need an
iFuse port that's working on Windows and Apple will never provide a working
solution for full two-way file transfer without restriction to the entire
visible file system which we already have for all platforms except iOS.

> The below
> is just what I read. I'm sure you won't find respondents here using a
> interface and protocal that attempts to connect the host OS file system
> to one under iOS using iFUSE, libimobiledevice, and all the
> dependencies.

All I need is _one_ person who has done it since I can follow in his footsteps
(which happens rather frequently because I do believe there are people who
know a lot more than I do about any question I may ask).

> Plus, this isn't really a programming venue, but about
> end-user freeware products; i.e., wrong community to ask (free doesn't
> mean this freeware community will know about compiling of source code).

Given the Canonical team has already included a Linux port of iFuse in their
Ubuntu distros, what we need to find, as Paul suggested, is a Windows port.
<https://github.com/libimobiledevice/ifuse>
"A fuse filesystem implementation to access the contents of iOS devices."
Features
This project allows mounting various directories of an iOS device locally
using the FUSE file system interface.

Some key features are:
*Media*: Mount media directory of an iOS device locally
*Apps*: Mount sandbox container or document directory of an app
*Browse*: Allows to retrieve a list of installed file-sharing enabled apps
*Implementation*: Uses libimobiledevice for communication with the device
*Jailbreak*: Mount root filesystem on jailbroken devices
(requires AFC2 service)

> https://github.com/libimobiledevice/ifuse/issues/31
> "This is a utility for *nix systems, I'm not aware of any versions
> ported to windows."
> That response was back on Jan 21, 2017. Maybe it's changed since then.

Yup. I've found a few links indicating libimobiledevice may be ported to Win
but I have yet to test it out as I was asking first to find someone who has
_already_ run these libimobiledevice ports on Windows before me.

Paul already explained that the Android-style solution Microsoft won't give.
But if we ask this next question, we may find the solution that may exist.
Q: *What gives Linux read/write access to/from iOS over USB?*

One possible answer is 'libimobiledevice' <https://libimobiledevice.org/>
"A cross-platform FOSS library to communicate with iOS devices natively."

Apparently these FOSS source apps provide the necessary file transfer tools.
1. ifuse 1.1.4
*A fuse filesystem to access the contents of iOS devices*
Dependencies: {libimobiledevice,libplist,libfuse}
<https://github.com/libimobiledevice/ifuse/releases/download/1.1.4/ifuse-1.1.4.tar.bz2>
2. libimobiledevice 1.3.0
*A cross-platform protocol library to communicate with iOS devices*
Dependencies: {libusbmuxd,libplist,libgnutls,libtasn1,openssl}
<https://github.com/libimobiledevice/libimobiledevice/releases/download/1.3.0/libimobiledevice-1.3.0.tar.bz2>
3. ideviceinstaller 1.1.1
*Manage apps of iOS devices*
Dependencies: {libimobiledevice,libplist,libzip}
<https://github.com/libimobiledevice/ideviceinstaller/releases/download/1.1.1/ideviceinstaller-1.1.1.tar.bz2>
4. idevicerestore 1.0.0
*Restore/upgrade firmware of iOS devices*
Dependencies: {libirecovery,libimobiledevice,libplist,libcurl,libzip,openssl,zlib}
<https://github.com/libimobiledevice/idevicerestore/releases/download/1.0.0/idevicerestore-1.0.0.tar.bz2>
5. libusbmuxd 2.0.2
*A client library to multiplex connections from and to iOS devices*
Dependencies: {libplist}
<https://github.com/libimobiledevice/libusbmuxd/releases/download/2.0.2/libusbmuxd-2.0.2.tar.bz2>
6. usbmuxd 1.1.1
*A socket daemon to multiplex connections from and to iOS devices*
Dependencies: {libimobiledevice,libplist,libusb}
<https://github.com/libimobiledevice/usbmuxd/releases/download/1.1.1/usbmuxd-1.1.1.tar.bz2>
7. libirecovery 1.0.0
*Library & utility to talk to iBoot/iBSS via USB on Mac OS X, Windows, & Linux*
Dependencies: {libusb}
<https://github.com/libimobiledevice/libirecovery/releases/download/1.0.0/libirecovery-1.0.0.tar.bz2>
8. ibideviceactivation 1.1.1
*A library to handle the activation process of iOS devices*
Dependencies: {libimobiledevice,libplist,libcurl,libxml2}
<https://github.com/libimobiledevice/libideviceactivation/releases/download/1.1.1/libideviceactivation-1.1.1.tar.bz2>
9. libplist 2.2.0GitHub Workflow Status
*A library to handle Apple Property List format in binary or XML*
Dependencies: {none}
<https://github.com/libimobiledevice/libplist/releases/download/2.2.0/libplist-2.2.0.tar.bz2>

> https://en.wikipedia.org/wiki/Filesystem_in_Userspace
> "FUSE was merged into the mainstream Linux kernel tree in kernel
> version 2.6.14"
> So, the FUSE module was ported and bundled in Linux distros since then.

Yup. See my screenshots in the beginning.

I've been using iFuse on Canonical's Ubuntu for years and it works
EXACTLY like we need it to work.

a. You plug the iOS device into the PC USB port
b. You have full access to the entire visible file system
c. Both read and write

The goal is to get _that_ on Windows!

> Says a FUSE module is available for Windows, but that doesn't mean iFUSE
> ever got ported to interface to the Windows file systems.

That's the problem I'm trying to find out if someone solved it already!
But I'm not a developer so I can only follow using someone else's binaries!
*How to build libimobiledevice on Windows?*
<https://github.com/libimobiledevice/libimobiledevice/issues/582>

> https://github.com/libimobiledevice/ifuse
> "This project allows mounting various directories of an iOS device
> locally using the FUSE file system interface."
> https://github.com/libimobiledevice
> "A cross-platform protocol library to access iOS devices."
>
> Linux <-> iFUSE + libimobiledevice -> iOS

Yup. This works perfectly.
>
> but presumably you're trying to do:
>
> Windows -> iFUSE + libimobiledevice -> iOS

Yup. This would be our utopia.

>
> libimobiledevice is just the protocol to communicate between one host
> (Linux, Windows) and an iOS host; i.e., differentiate between TCP to
> connect hosts versus FTP as the protocol to commit actions on the
> endpoint hosts. That's just the communication once the interface
> between hosts is established.
>
> You still need to get a FUSE module, like iFUSE, onto the endpoint OS'es
> through which libimobiledevice can communicate. You need a FUSE module,
> like iFUSE, on a Windows host (to use libimobiledevice through the FUSE
> module).

There are a bunch of dependencies for libimobiledevice & iFuse for sure.
1. ifuse 1.1.4
Dependencies: {libimobiledevice,libplist,libfuse}
2. libimobiledevice 1.3.0
Dependencies: {libusbmuxd,libplist,libgnutls,libtasn1,openssl}
3. ideviceinstaller 1.1.1
Dependencies: {libimobiledevice,libplist,libzip}
4. idevicerestore 1.0.0
Dependencies: {libirecovery,libimobiledevice,libplist,libcurl,libzip,openssl,zlib}
5. libusbmuxd 2.0.2
Dependencies: {libplist}
6. usbmuxd 1.1.1
Dependencies: {libimobiledevice,libplist,libusb}
7. libirecovery 1.0.0
Dependencies: {libusb}
8. ibideviceactivation 1.1.1
Dependencies: {libimobiledevice,libplist,libcurl,libxml2}
9. libplist 2.2.0GitHub Workflow Status
Dependencies: {none}
>
> https://github.com/libfuse/libfuse
> "FUSE (Filesystem in Userspace) is an interface for userspace programs
> to export a filesystem to the Linux kernel."
>
> No mention that libfuse got ported to use under Windows.

Drat.

>
> https://github.com/libimobiledevice
> Says it is cross-platform, but Windows is not included.

Drat.

>
> https://github.com/libimobiledevice/libimobiledevice
> "libimobiledevice is a cross-platform software library that talks the
> protocols to interact with iOS devices."
> Yet the instructions don't mention how to install on a Windows host.
> Started back in 2007, and yet:
> "Documentation about using the library in your application is not
> available yet."
>
> https://libimobiledevice.org/
> "A cross-platform FOSS library written in C to communicate with iOS
> devices natively."
> Maybe you're expected to compile the C code to create the lib on the
> host OS.
> "It has already been built and run on Linux, Mac, Windows, Android
> and embedded ARM SoCs."
> "built" means you have to build it by compiling the C code.
>
> https://libimobiledevice.org/#downloads
> For libimobiledevice to work, you'll also have to get its dependencies
> on Windows (libusbmuxd, libplist, libgnutls, libtasn1, openssl). I
> didn't see them provide a compiled bundle to operate under Windows, or
> under any OS. You get the code, and you compile it.

I'm not the person to be running Makefiles on Windows.
I'm just not.

>
> https://libimobiledevice.org/#downloads
> Well, they have a "Communities" page, you you end up at the Github
> projects to use their Issues page, but that's really a bug/ticket
> reporting communication venue. Yet, as per my first citing, users do
> ask questions there.
>
> https://lists.libimobiledevice.org/mailman/listinfo/libimobiledevice-devel
> That's an [e-]mailing list. Apparently none of their Github projects
> have a peer community or forum.

Drat.

> At the iFUSE Github project, I didn't see an installable bundle was
> built for Windows. Linux users are lucky in that iFUSE, and its
> dependencies, got included in the distro.

Yeah. Bummer on the Windows port.
Thanks for looking as that's all that we need! Sigh.

>
> https://github.com/libimobiledevice/ifuse/issues?q=windows
> A search in their Issues page didn't bring up how to get iFUSE
> compiled on, or installed, under Windows - other than the first cited
> article in my reply where the answer was iFUSE has no built .exe, lib,
> or other component to use under Windows. There are so many
> dependencies to iFUSE and libimobiledevice that it will a lot of
> hit-and-miss trying to get them to all be present and work under
> Windows. A response to that "issue" article has someone say you can
> get iFUSE working by using Dokany.
>
> https://github.com/dokan-dev/dokany
> "User mode file system library for windows with FUSE Wrapper"
> and
> "When you want to create a new file system on Windows, other than FAT
> or NTFS, you need to develop a file system driver. Developing a device
> driver that works in kernel mode on windows is extremely technical. By
> using Dokan, you can create your own file systems very easily without
> writing device drivers. Dokan is similar to FUSE (Linux file system in
> user space) but works on Windows. Moreover, dokany includes a FUSE
> wrapper that helps you to port your FUSE filesystems without changes."
>
> Looks like you'll be asking LOTS of questions to those Github projects
> via their Issues page on just what all you need to compile the code for
> all the projects (to also include the dependencies), and also using
> Dokany as the FUSE wrapper to get Windows file systems linked to the iOS
> file systems.

The problem is I'm not a developer.
Sure I've written code (Fortran before the IV days for example).
And COBOL. And PL/1. And IBM Assembly Language. etc.
But that was in the sixties and seventies.

> Seems it'd be easier to use a VMM (Virtual Machine Manager), like
> Virtualbox or VMware Player, to run a Linux distro that already has all
> the [i]FUSE, libimobiledevice, and dependencies under Linux running as a
> guest OS in a VM on Windows. However, anything running inside a VM will
> be slower than running on the native/host OS, and I saw users reporting
> iFUSE was slow, so you'll be running slow under slower.

I can't disagree that one of the three Linux implementations will work.
1. Dual boot Windows to Linux without Hibernation
(this allows all three simultaneously, iOS, Windows & Linux)
2. WSL inside of Windows 10
This may allow access to the USB ports.
3. Linux inside a VM
This amy allow access to the USB ports.

But _before_ I resort to running Linux inside of Windows,
I was hoping to find an existing libimobiledevice port on Windows.
0 new messages