My kid loves audio books and stories. We got him a Yoto player, which has little NFC cards that point to audiobooks/playlists and it’s been amazing. Whenever we do a long (or even not so long) family drive we put on an audio book and he’s happy as can be watching the scenery and listening.
We had a longer drive coming up and I wanted to get him Harry Potter since he also likes the Harry Potter Lego game. The audiobooks are kind of expensive ($200+ for all of them), so I thought I’d get them from the library. Then we could have the audio books and not have to pay an arm and a leg. It seemed like a win/win.
This tale catalogues some of the unexpected complexities involved here and how if time were money, I should have just bought the dang books.
Ripping
So once we got the CDs in hand, it was time to get ripping. I was able to rip everything to mp3 and got the files. A bunch of files. And I also got some interesting behavior on the file naming. Presumably if I’d have been paying more attention to the match, I could have corrected for this, but alas I did not notice before I returned the discs.

So this was annoying, but it gets worse. The naming of the files differs depending on the match it found:

vs:

(Side note, I ripped everything to both mp3/m4a since previously the Yoto website had trouble parsing some of the mp3s from other stuff).
Okay, so that’s kinda to be expected I suppose. Where it gets really sticky is when a chapter goes across two discs because now you’ve got weird naming and can’t necessarily keep things in order. What a bother.
Still, we can move forward with just manually arranging the playlist after uploading everything. That will be faster than renaming a bunch of files by hand. (Haha, I had to rename them anyways later).
Yoto
Now, keep in mind this is not meant to be a knock against Yoto in any way. They’re a great service and nothing I ran into was unreasonable.
So, I start uploading and manually arranging the files. I go chapter by chapter since it takes a few minutes to upload. Towards the end though, I encountered an issue: Yoto playlists are limited to 100 tracks (and 500MB). Again, these are not unreasonable limits (given that they have to end up hosting all of the content themselves. We might get into this in a future post). Note that the chapters are split into multiple files:

Okay, so I just need to combine all of the tracks into single chapter files. I did a quick check and I would be under the file size limit, so no worries there. Okay, let’s combine those files. First, we need a tool!
Combining audio files
So this should be pretty easy right? Just combining a bunch of audio files into one. I did some googling and ended up on: https://mp3wrap.sourceforge.net/
It’s old, but mp3s haven’t changed much. All I needed to do was ensure that the files are in a single directory and in the correct order. Crap, I’m going to have to rename all of these files aren’t I.
Once that’s done, I run mp3wrap and it spits out a single chapter. I pull it up in VLC and everything plays fine, so time to upload!

So I guess mp3wrap updates the id3 tag to this, which means in the playlist, they’re all indistinguishable from one another. That’s annoying, but I’ve been at this for about 3 hours now and I can just upload them in the correct order manually.
Getting it on my phone
Okay, so I have it all uploaded and in Yoto’s app, which has a nice Android Auto interface. We’re doing a trip the next day through some mountains, so I want to ensure that I download the playlist just in case we lose reception. This brings me to my only real complaint about Yoto: there is no way to download/cache a playlist or book.
Okay, crap. We leave in the morning for a drive. How can we solve this? I upload the files to Jellyfin, but Jellyfin ALSO does not have a way to download a playlist (Okay maybe I’m the weird one?). However, I use Symphonium (great app, strong recommend) to listen to music hosted in Jellyfin on my phone. Maybe that can do it? It takes a bit of digging and tweaking, but I eventually get it downloaded on my device. I have to manually re-arrange the playlist again, but we’re now sitting somewhere between 4-5 hours of working on this and I just quickly listen to the first few seconds of each track to ensure everything is right.
Here, I notice a few of the file merges weren’t correct, so I fix those and upload them to Jellyfin (and only Jellyfin, which is important later). I re-sync and everything is cached on my phone ready to go.
In the car
In the morning we start our drive and listen to the intro and first chapter when we hit our first snag: After about 2 minutes of the first chapter, it skips to chapter 2! What on earth? Luckily, I never deleted the Yoto playlist and that doesn’t seem to have the issue. We switch over to that and keep driving. We are able to get to chapter 4 before I hit one of the files that was merged in the incorrect order. However I’m driving and can’t debug, so we switch over to something else and keep going.
Once we stop for lunch, I can dig into the issue a little bit. It looks like the merge tool may have dropped in chapter markers or some equivalent. VLC didn’t care about these, nor does the Yoto app, however Symphonium gets to the end of the first wrapped file and then can’t understand what to do so it skips the rest of the file. I find some information about a companion file I can maybe add to the mp3 file (cue files), but I’m not doing that from my phone on a trip. Instead we listen to some other stuff on the way home.
Getting it working
Okay, so we’re back home and have another drive coming up. Let’s get it actually working.
First, I could just upload the corrected files to the Yoto playlist, but I don’t know what file is what since the tag is all messed up. Besides, I can’t download it and that’s important. Let’s not worry about that for now.
I look at some tools and land on Audiobookshelf. I spin it up on my server and point it to the files and lo and behold! It looks good! Mostly!

I’ve been fooled by this before, though so I make a point to actually listen to the first chunk of each track to ensure it plays properly, and it all does.
Okay, now how do I get this on my phone? Turns out there’s an official app. Once I point to it, I can see my book and download it. I once again test playback to ensure that everything plays okay, and it’s all looking good. Problem solved!
Retrospective
Okay, so let’s recap: for a single book we used the following tools:
- Asunder (CD Ripping)
- mp3wrap (combining the audio files)
- Yoto (playback, failed)
- Symphonium (playback, failed)
- Audiobookshelf (service and app)
We also managed to take no less than 6 hours of time. In that amount of time, dear reader, I could have almost NARRATED the book, which is sitting not 5 feet behind me.
All of this to save myself from spending $32 (on Libro.fm) or $35/book if I’d bought the bundle straight form Yoto (this bundle also includes the cards). So if I’d instead worked a minimum wage job those ~6 hours, I’d have made money.
I think for book two I might just buy the dang thing.