How To Make Custom Yoto Cards


We have a Yoto player, and we love it. It’s a great device and is perfect for when the kiddo wakes up before anyone else and you want to keep them in their room. They sell lots of genuinely great cards on their website (I highly recommend the Brain Bots series), and if you’re willing to double dip getting the book and card is a great way to promote reading early since they can follow along.

So we’re going to look at the process for making custom Yoto cards. We’ll go over the easy way and the cheap way. We’ll also look at some tips for making your custom cards look nice and some potential paths forward to address some of the general concerns.

The tl;dr

So if you don’t care about the nitty gritty and just want the best way to do this the answer is simple: buy the Yoto branded Make Your Own (MYO) cards. They’re expensive, but if you want something that just works nothing else comes close.

How does the Yoto player work?

They don’t include a ton of information on this, so I’ll break down what I know. I still intend to do some proper analysis on this at some point, but as yet haven’t gotten around to busting out Wireshark or anything.

So the Yoto player is a little box with a pixel display, speaker, and a slot for a card. You put the card in and it starts playing the story/music/etc.

On the whole this works pretty well, but it’s important to consider how the cards work. The cards are a standard Mifare Ultralight EV1 NFC card. As such, they don’t actually store much in the way of data on them. Instead, they simply have a URL pointing to the data on Yoto’s servers.

This is good and bad. On the upside, if you lose a card the data is still associated with your account and you can just make a new one pointing to it and there is minimal impact.

On the downside, if Yoto ever loses a license or goes out of business, all of that data evaporates. We don’t have to look too hard to find instances of this with big companies like Apple, Amazon, etc so it’s not a stretch by any margin to imagine it happening with a smaller company like Yoto.

It also means that you need an internet connection to play anything, at least the first time you play it. The process is essentially as follows:

  • You hook the player up to Wifi
  • You put the card in
  • The player looks up the data and grabs it, caching it locally
  • Whenever you put the card in again it can skip the wifi download and just use the cached version

This last step is the one we’re going to leverage to use our own cheaper cards. First though, let’s walk through the steps of making a custom card using the official MYO cards they sell.

They also include a Yoto branded MYO card with the purchase of a player. “The first one is always free” I suppose.

Yoto Make Your Own cards

Using the official MYO cards is a pretty simple process that they outline here. Essentially:

  • Upload the audio to a playlist on Yoto’s site
  • Use the app to link it to a card
  • Put the card in as you normally would

There are a few limitations on what you can upload, but they’re honestly very generous and likely only there to prevent abuse (If you think about it you can use a free Yoto account as a cloud storage option if you don’t mind the headache that using it would give you).

The limit for each card is as follows:

  • 100 tracks per card
  • 1 hour running time for any single track
  • 100MB maximum file size of any single track
  • 500MB maximum total file size of the audio content for any one card

You can combine this process with sites like Libro.fm if you don’t want to pay a premium for the custom artwork etc. straight from Yoto, or if you want some stuff they don’t have.

All in all a simple process, with the cards costing ~$3 each. This is expensive but you can end up saving money.

Consider this story pack from Yoto https://us.yotoplay.com/products/the-gruffalo-and-friends-collection which retails for $40 (on sale, $60 not) vs https://libro.fm/audiobooks/9781035000234-julia-donaldson-reads-the-gruffalo-and-other-stories for $10 from Libro.fm, which includes more stories. If you consider that 500MB can fit on a single card/playlist, you can spend $30 for 10 MYO cards, $10 for the Gruffalo stories from Libro.fm, and pay the same price as buying them direct except you now have 9 other MYO cards do use as well.

Okay that’s all well and good, but I want the cheap way

Alrighty, now it is possible to use much less expensive cards (I got 100 for $75 including shipping from AliExpress), which come in at 1/4 the cost per card, a very significant savings. Just be sure to get Mifare Ultralight EV1 48b cards, and you’re golden.

So with these cards you should just be able to follow the same process, right? No such luck. There is some mechanism (Likely they just have a list of valid UIDs) that prevents the Yoto from downloading anything pointed to by these cards. You get a fun little symbol indicating that this card won’t work:

So how do we get past this? The process is actually simple, if a bit cumbersome. You’ll need the following tools:

  • The off-brand card you want to use
  • A regular official MYO Yoto card
  • An app to read/write NFC tags
  • Patience

The process is as follows

  • Upload the data as you would for a regular card
  • Write the playlist to a regular MYO Yoto card
  • Put the official MYO card into your yoto player
  • Let the card play for as long as you can
    • Remember here that it’s downloading and caching the data, so you have to give it an opportunity to download everything.
  • Open up a tool like NFC Tools, format your off-brand card, then select “Copy Card”
  • Copy the official MYO card to the newly formatted off brand card
  • Insert the off brand card and verify that it works as intended.

Danger!

If you’re not careful or just playing around like me, you can render the official cards unusable if you write the wrong settings to it. Be careful not to break anything.

Why this works

So here we’re leveraging the fact that they want folks to be able to play their cards if they don’t have internet. They cache the data local to the player, and when a card is inserted the link is checked against the data that’s cached. This step bypasses whatever authentication they have in place to verify that it’s an official card, which lets the much cheaper off-brand cards work.

Why this approach is less reliable

We don’t know how they’re caching stuff under the hood. If anything gets purged the off-brand card will just stop working. They also could invalidate the cache periodically, or if everything fills up, or any other reason that it would need to re-grab the data. And I can promise you that the last thing you want is to have to go through the above process while you have an child and/or spouse angry that nothing is working.

Again, if you can afford it, just buying the official cards makes all of these headaches go away, and is my recommended approach.

Making your cards look nice

So you’ve got a custom card, either MYO or off-brand. However, the official cards have some killer art and stuff. How can we make ours look nice? I looked at a bunch of different options, and they make some neat inkjet printable cards and you could invest into a badge printer if you have the money and want nothing but the best. I found a nice little middle ground though.

I use this printer and found it works great for my needs. The film it prints on isn’t crazy expensive, and they are stickers by default. The size is also a great fit for the cards:

The quality is great and it’s not terribly expensive to get enough to last me through all of my cards. Now if only my sticker placement were more on center.

Next steps

So I have a handful of potential next steps that I have on my todo list:

  • Wireshark analysis to see if we can skip whatever authentication they do for official MYO cards
  • Get a semi-broken player from ebay and play with the hardware
    • Can we expand the storage to mitigate some of the cache invalidation risk? If so how much?
    • Can we fiddle with anything else?
  • Test out pointing to a service outside of Yoto’s ecosystem
    • The documentation says that any public podcast will work, so can we use a tool like https://www.audiobookshelf.org/guides/rss_feeds/ to bypass Yoto entirely?
  • Make our own equivalent
    • Grab an NFC reader and a speaker and roll our own


Leave a Reply

Your email address will not be published. Required fields are marked *