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
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
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.
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...
- Is there a "more correct" way that I should have gone about the installations from source?
- How do I get
gvfsto reliably mount my phone on the first try?
- Should I stop using
rhythmboxand start using