I have been using Rhythmbox on Ubuntu 14.04 to play music from my iPhone for a while now. Sometimes I get the annoying "initialize your iPhone" dialog box, but I just cancel it, unmount and reconnect my phone, and the problem is solved.
Background: Getting things to work with iOS 10
Recently, I updated to iOS 10, and mounting the iPhone stopped working. I somehow fixed this by cloning libplist, libimobiledevice, libusbmuxd, usbmuxd, and ifuse [note: ifuse
doesn't seem necessary if you use gvfs
], checking out the master
branch in each repo, and installing via
./autogen.sh
make
sudo checkinstall
so that the package versions and dependencies could be managed via dpkg
.
For libimobiledevice
I also did ./autogen.sh --disable-openssl
so that I'd use GnuTLS instead.
Because I had originally installed most of these packages via apt-get
, I installed libplist
as the dpkg package libplist1
, libimobiledevice
as libimobiledevice4
, and libusbmuxd
as libusbmuxd2
. I also did echo /usr/local/lib > /etc/ld.so.conf.d/libimobiledevice-libs.conf
and some extra symlinking when programs complained that /usr/lib/libimobiledevice.so.4
and such were missing.
Getting gvfs to work
ifuse
will now successfully mount the iPhone, but my actual goal is to get gvfs
to detect and mount the phone so that it'll work with Rhythmbox. I may have needed to do additional symlinking to even get the gvfs
-related programs to run, I forget.
If I naively try to plug in my phone at this point, I (with high probability) get the error message Message did not receive a reply (timeout by message bus)
. I have to run /usr/lib/gvfs-gvfs-afc-volume-monitor
3+ times until I get lucky enough for the phone to mount; this seems very wrong.
Running sudo usbmuxd -f -v
spams me with messages like
New client on fd 19
Client 19 connection closed
Disconnecting client fd 19
over and over, plus an instance of Receive from client fd 19 failed: Connection reset by peer
and Connection reset by device 4 (3->62078)
. Basically, I have no idea why mounting only works intermittently. Things seem to work more often when I run usbmuxd
in the foreground with -f
, but that may just be confirmation bias.
When I finally do get the phone to mount, Rhythmbox will start and display the "initialize your iPhone" dialog, with two problems: (1) it hangs for a long time while loading this dialog (trying to connect with phone, possibly, or maybe Rhythmbox is just ultra slow?) and (2) if I hit "cancel," I can no longer see the phone mounted on Rhythmbox. Before, after cancelling once, I could unmount and reconnect my phone and the dialog would no longer pop up, but this method is far less reliable because I can't reliably mount my phone! So after all this...
Questions
- Is there a "more correct" way that I should have gone about the installations from source?
- How do I get
gvfs
to reliably mount my phone on the first try? - Should I stop using
gvfs
/rhythmbox
and start usingifuse
+something else?