Restoring OUYA everywhere on Mad Catz Mojo

The OUYA gaming console amassed over 1200 games in its online store, most of which have been preserved on the Internet Archive and made available to OUYAs via the community server ouya.cweiske.de.

Other companies thought it would be great if their Android TV consoles would have access to this large library of games, and so OUYA Inc. announced the "OUYA everywhere" program in 2014-03. The first partner was Mad Catz with its MOJO microconsole, and with firmware update MO0205-TS in 2014-06 they shipped the OUYA everywhere installer and put it onto the Mojo's desktop:

OUYA icon on Mojo desktop

Forward 8 years later, and Ryo on the OUYA saviors discord chat server tries to get the OUYA community server working with his Mojo but fails in the end. User Toast offers to send his spare Mojo to me so I can look into the problem, which I happily accept. A couple of weeks later it arrives and I can have a first look at it.

OUYA everywhere installer

After a factory reset I see that the Mojo firmware does not contain the "OUYA everywhere" software but on the "OUYA everywhere installer" which tries to download, install and launch the actual OUYA software. The installer requests an API endpoint /api/v1/partner_builds that my documentation did not know of, and thus my server does not support.

OUYA installer says no

With the help of the awesome jadx-gui I reverse engineer the JSON file format that the installer expects. The API endpoint tells the installer what to do: Install or uninstall .apk files, show a message, start an application or exit. A first test shows a popup:

OUYA everywhere installer shows a test popup

Since I factory reset the Mojo, I don't have the previously downloaded ouya everywhere apk files anymore :( A XDA forum thread contains early files (version 1.2.145), and a post on page 3 the latest version 1.2.897. So I built a JSON that tells the Mojo to install the OUYA OOBE (setup), OUYA framework and the OUYA launcher packages and starts the latter.

This was all it took: A single file on my server with the correct content, and now all Mojo owners can play OUYA games again!

OUYA everywhere installer is installing OUYA launcher menu

Setup

The Mojo must be told to use the new server by putting a file ouya_config.properties in the folder /sdcard/. Contents of the file can be found on ouya.cweiske.de.

When this is done, simply open the OUYA icon on the Mojo's desktop and the OUYA OOBE setup will greet you.

My xposed module works on the Mojo as well, so most of the games can be unlocked.

OUYA anywhere

The first beta of OUYA everywhere 1.2.145 could be installed and started on all devices, but later ones only ran on on whitelisted consoles like the Mojo. This first version has been dubbed "OUYA anywhere" by the community.

Today when looking at the source code I found that the "is this device supported" check has another condition:

//tv.ouya.console.launcher.home.HomeActivity
if (!DeviceInfoReceiver.getInstance().checkIsSupportedDevice()
    && !SystemProperties.getDebug()
) {
    DeviceNotSupportedDialog.show(this);
    return;
}

Debugging can be enabled by putting the line DEBUG=1 into the ouya_config.properties file.

With that extra configuration line, I am able to use the OUYA launcher on my Nexus 7 tablet with Android 11:

OUYA launcher 1.2.897 running on Nexus 7

We have some problems, though:

Written by Christian Weiske.

Comments? Please send an e-mail.