The Quest for an iTunes Replacement (Updated)

As the Frankenstein of the Apple media ecosystem, iTunes gets a (deservedly) bad rep for having become one the most counter-intuitive pieces of software known to man. It is a syncing and update tool for iOS devices, an app store, a music store, and, sometimes, a passable music library management tool – something it only bothers to do for a hobby.

My guess is that having a single touch point for media purchases is the only reason Apple doesn’t break it off into a set of separate apps, but to be honest, I really wish they split it into at least three things: an iOS maintenance utility, a unified macOS/iOS app store, and a simpler, faster, media management (and store) app.

The only thing about it I use regularly is iCloud Music Library, a service that I’ve come to rely on because most of the music I listen to isn’t on streaming services (which don’t interest me in the least) and it is the only thing that syncs (almost) seamlessly to my phone.

But I cringe every time I have to use iTunes to import a new album (not in the least because USB CD-ROM drive support in macOS seems to be getting flakier and flakier), or when trying to match classical music tracks (which is almost impossible to get right the third time), and I suspect that, as a service, iCloud Music Library is not long for this world, since it simply isn’t as profitable to Apple as their new music service.

Not Even On Rainy Days

That said, the overall flakiness of iTunes and Apple‘s growing disconnect with their user base has been getting to me to such a degree that I decided to replace it for one of my use cases – managing my video library, which I’ve been doing with it for nearly six years, after almost another eight during which I mostly used several variations of what is now Kodi.

I have entirely too many kids’ movies in my iTunes library, all of which were painstakingly tagged using Subler and hence have nearly perfect metadata, and alongside them are a few hundred episodes of classic TV shows that I got on DVD at discount rates off Amazon (I’m probably one of the few humans alive who has yet to watch Game of Thrones or Breaking Bad, largely because I’m waiting until I can pick them up at leisure).

And yes, I know about BitTorrent – I just like to get decent audio and subtitles into the bargain, so all the files I ripped are in .m4v format, neatly bundling dual 5+1 and AAC stereo audio tracks (often more in the case of kids’ movies, of which I save both English and Portuguese versions), subtitles, metadata and cover art.

The Hardware Stack

All that stuff sits on an ancient Synology NAS that I got six years ago, which is auto-mounted on an ancient Mac mini (until recently, my old desktops got retired into media center duty), where I run iTunes as a unified (if schizophrenic) management UI of sorts.

But keeping a mini on life support for the sole purpose of serving up my media library is no longer a feasible approach. Not only has Apple apparently put its non-iMac desktop ranges out to pasture, it’s also a waste of computing resources when compared to newer alternatives.

Also, over the years, they kept making a hash of things like Home Sharing – my Apple TVs randomly complain about not finding the server, iTunes keeps getting stuck after running a couple of weeks, and it takes forever to find and stream music from my home library using an iPad.

So I turned to third-party solutions like AirVideo to be able to stream my own media properly to my iPad. It works great (and I use it to sync stuff to my iPad when I travel), but it’s something I wish Apple had done properly.

And speaking of things they could have done properly, I’ve been holding off on getting a new Apple TV, too, at least until it is at least nominally able to playback 4K content – I’ve recently sold off my Apple TV 2 and am only holding on to the 3 because AirPlay is super-useful, but I’ve decided enough is enough and began looking beyond the Apple ecosystem.

Enter (Ras)Plex

After years of people telling me to try Plex, I finally decided to do it in earnest. I’m not a fan of their pricing model or the need to authenticate to run a home-only server (you can bypass that, but only to a point), but so far the experience was very nice – I set up Plex server on a small VM on my i7, pointed it to the NAS, and it slurped everything in (with some mistakes, since the metadata importer isn’t very bright).

The iOS app is nice, too (although, again, authentication and the “upgrade to premium” prompts still irk me a bit), but the big surprise for me was RasPlex – a free Plex client for the Raspberry Pi – which is an amazingly polished experience.

I installed RasPlex on a Raspberry Pi 3 and it “just worked” – pointing it to the server was trivial, and I could navigate the whole UI using the original TV remote (via HDMI-CEC).

It’s not as nice and polished as an Apple TV 4, but it surely does the trick, and at a much lower price point. I also tried it on a Raspberry Pi 2, and the user experience on both was fluid and without any performance glitches, but it was noticeably faster on the 3.

Everything has been working out fine over the past few weeks (except occasionaly glitches when I switch the HDMI input on my LG TV and CEC gets confused), so I decided to up the ante a bit and migrate the server to a Raspberry Pi 3 as well.

However, since I don’t fully trust the Plex binaries and don’t want to pollute the host userland, I decided to build a Docker container to run the server, which lets me keep tabs on it and upgrade it relatively easily in the future. The setup is straightforward (if geeky) since and I’m taking advantage of Docker‘s macvlan network driver to publish the container directly on my LAN – that makes it easier to mount my NAS on it via SMB and get auto-discovery to work.

The only obvious caveat here is that the Raspberry Pi 3 is useless for transcoding media on the fly, but since all my videos are already in the “right” format I just disabled automatic transcoding. I left thumbnail generation on, though, so it took a few hours to scan through my entire library.

Total cost for both client and server? Oh, around €80 (including nice cases and one new PSU) – i.e., nearly a third of a new Apple TV (which would never be able to talk to my NAS on its own).

I might buy a new Apple TV when it’s out (because Netflix beckons and I like my current audio setup in my living room, which requires an optical audio out port), but I suspect I’ll use it to talk to Plex too.

I will also look at moving my music library completely outside iTunes for listening on the go, but since I don’t like the Plex player for music, I’ll take up that challenge later.

Maybe it’s a sort of “reverse halo” effect, but I feel myself getting further and further from Apple ever since their Fall event (if you’ll pardon the pun). They keep dropping the ball, and I have better things to do than putting up with half-baked solutions – I’d rather roll my own.

Update: Two Weeks Later

A few days later I decided to try importing my music library into Plex (again by mounting it as a read-only folder via SMB) with the rather predictable outcome that the metadata, album art and extras it downloaded completely filled the SD card.

So I started doing a few more experiments, one of which was running Plex with the metadata folder stored on a writable SMB share. That was appreciably slower, but the deal-breaker was that Plex apparently uses hard links to manage assets, so that effectively broke all the cover art.

I then briefly considered moving everything to NFS (and might well end up doing it for the extra performance when accessing media), but since that wouldn’t satisfy the hard link requirements I caved in, dug out an USB disk and mounted that as the Plex working folder (with all my original media still on the NAS) and the Docker container root – with the nice side effect that container builds are now much faster.

But the icing on the cake was that I chanced upon an old Gen 1 Chromecast (which I had put away because it’s pretty much useless in an iOS-centric household). As it happens, Plex supports it for “casting”, sure, but is also able to display cover art and metadata when playback is paused, and the overall experience is (it must be said), way smoother than Apple‘s.

There are a few drawbacks (I do need to use an iPad or an Android device for playback control and there’s no optical audio out on this model), but it neatly circumvents the HDMI-CEC issues I was having with RasPlex, so I’m now using the Chromecast for video playback, and exploring the wild new frontier of Plex shared libraries.

I’m also planning on getting rid of iTunes for managing media (except music, at least until I figure out when my iCloud Music Library subscription expires) and replacing the Mac mini with a Pi (for now, until I find something a little beefier).

I don’t think I’ll be embracing Plex for syncing my music to my phone (it feels too clunky for that), but I’ll definitely start looking at alternatives.

In short, I’ve never had it this good, and by the looks of it, if Apple ever wants to get near my TVs again they’d better come out with something really good – not just in hardware and UX, but also as far as openness is concerned.