APITuner — ADB-free virtual tuner for Android TV / Google TV

FireTV are more locked down than the onn pucks or Chromecasts. Thats really it. Its tough to change it without rooting...and its very difficult to root FireTVs anyways. Maybe a split option for the Fire OS system is necessary here.

One suggestion I have: Have apituner control the chromecasts/streamers/onn pucks via API and if its FireOS, have apituner control them via adb.

1 Like

APITuner 0.1.11 — App Play / babsonnexus configs

You can now import ADBTuner / babsonnexus App Play configurations (D-pad navigation scripts) and keep configuration_uuid on stations — no more being stuck on ADBTuner just for native-app channel configs.

What’s new

  • Import App Play config JSON + stations (dashboard Configurations tab)
  • Run those scripts ADB-free on Google TV via androidtv_remote
  • Fire Stick / Fire TV: firetv_rest when the Remote API is available, or new adb backend as a fallback when :8080 isn’t there (common on Fire OS 7)

Day-to-day Google TV deep-link tuning is still Agent / ADB-free. Network ADB is only for Fire App Play when the Remote API isn’t an option.

Release: Release Release v0.1.11: App Play configurations and Fire Stick adb backend. · matthewfkoch/APITuner · GitHub
Docker: ghcr.io/matthewfkoch/apituner:0.1.11

Feedback welcome — especially if you’re moving off ADBTuner App Play configs.

1 Like

I tried out the recent version with the configs. I wasn't able to play HBO as it was stuck on the profile screen. I did import the adbtuner compatibility config which let's me bypass that screen on adbtuner....but it wasn't able to press the buttons necessary to get by it on apituner

Can you share the config, logs or both? Was this on a fire stick or a onn device? I can try to recreate it

1 Like

configs

logs

Same problem on both devices

And BTW, I tried my other configs for FDL and it couldn't work with the lanes for some reason. Not too sure if you need to implement that feature like @turtletank did.

(Paging @KineticMan for some assistance)

I don't see the logs anymore. Can you reupload them?

1 more time

config

logs

APITuner v0.1.12

Pull ghcr.io/matthewfkoch/apituner:0.1.12 (or :latest).

Fixes for Max “who’s watching,” App Play / key_macro, and FruitDeepLinks lane URLs. On Agent tuners that need D-pad, set Keys / D-pad (androidtv_remote on Google TV / onn, adb or firetv_rest on Fire), then Pair.

Release: Release APITuner v0.1.12 · matthewfkoch/APITuner-releases · GitHub

This sorted out the issue with FDL but it still can't play anything from HBO

Also I can't play anything from ESPN native. I tried to play ESPN Deportes and it was a no go

Max is stuck on Who’s Watching because that tuner has no D-pad plane yet. Edit the tuner → set Keys / D-pad to androidtv_remote (onn) or adb /firetv_rest (Fire) → Pair → try HBO again. Same setup is required for ESPN App Play. Your log shows skipped_no_dpad then “ready,” which is why the stream opens on the profile screen.

1 Like

Ok, that worked. Now let me see if I can get native working

ESPN is still not working

Logs

APITuner v0.1.13 is out — pull ghcr.io/matthewfkoch/apituner:0.1.13 (or :latest).

Your Max log showed the real issue: Who’s Watching was skipped because the onn tuner had no D-pad backend (skipped_no_dpad), then the tune still reported ready. ESPN was hitting Agent launch-intent with a 400 and also getting marked ready. Both of those now fail the tune with a clear error instead of a false ready. The dashboard also warns when Agent tuners are missing Keys / D-pad but you have Max / App Play channels.

Setup (needed for Max + ESPN native):

  1. Edit each Agent tuner → set Keys / D-pad backend
  • onn / Google TV: androidtv_remote → Pair (PIN on the TV)
  • Fire: firetv_rest if :8080 works, else adb → Pair / enable network ADB as needed
  1. Confirm the ESPN app is installed on that device and the channel package_name / alternate_package_name match (com.espn.score_center and/or com.espn.gtv)
  2. ESPN App Play stations should keep configuration_uuid and a loop index URL ("0", "1", …), not an http deeplink

After that, try Max and ESPN again. If either still fails, the log / dashboard error line should say exactly why (missing keys, launch failed, etc.) — paste that and we can dig in.

Agent: Release v0.1.13 (once the workflow finishes)

  1. Done that part
  2. Done that part
  3. Done that part

Onn puck just randomly selects a show from the default launcher screen instead of launching the ESPN app and doing its thing
The Firetv doesn't respond even tho I gave it adb permission and adb remote

Logs

v0.1.14 is up — pull ghcr.io/matthewfkoch/apituner:0.1.14 (or :latest).

That ships the ESPN App Play fix (open the app on the Keys / D-pad plane instead of Agent VIEW, so navigation isn’t stuck on the home launcher) plus dashboard Preview on each tuner card.

You still need hybrid setup on each Agent tuner:

  • onn: Keys / D-pad = androidtv_remote → Pair
  • Fire: firetv_rest or adb → Pair

v0.1.13 already hard-fails Max when D-pad is missing, and fails bad Agent launches instead of a false “ready.” After pairing Keys, retry Max and ESPN and let me know what the logs show if either still fails.

It still not launching the app. Somehow and someway, its launching the Google play store on my onn puck...and it doesnt even try on my firetv.

Logs

My assumption is the package for ESPN that is installed on your stick is not the one in the configuration. I'll work on some better error handling for this but I assume it's opening the play store to have you download it because it doesnt exist. It's currently trying to use. com.espn.gtv

That's bizarre since I put the alternative package name in the channel config. It should be trying the other package too

What is the package on your Onn and what’s the one on your fire stick?

Onn
com.espn.score_center

Firetv/fireos
com.espn.gtv