ADBTuner: A "channel tuning" application for networked Google TV / Android TV devices

Enable USB debugging.

Many thanks that did the trick. Also had to add the :8090/stream0 to stop the endpoint continuous reconnect. Now on to setting up my Hulu channels.

The loss of TVE support for Disney-owned channels got me looking at my ADBTuner setup again. I want to verify that I'm using the best configs for my hardware and content providers.

If I'm using onn 4k boxes with DTV, @mackid1993, did this configuration work to get around the 4 hour "still watching" prompt? If not, which of your configs was preferable for my setup?

{
    "name": "DirecTV X",
    "author": "David B.",
    "version": "X.X.X",
    "description": "Fast tuning for DirecTV. Prevent are you still there prompt from showing.",
    "uuid": "3c7d5a19-6f2e-4b8a-9d3f-8e1c4b7a5f92",
    "global_options": {
        "wait_for_video_playback_detection": true,
        "use_fixed_delay": false,
        "fixed_delay_seconds": 0,
        "check_for_and_clear_whos_watching_prompts": false,
        "wait_after_post_playback_start_commands_seconds": 0
    },
    "pre_tune_commands": [
    ],
    "tune_commands": [
        "am start -W -n '||TARGET_PACKAGE_NAME||'/$(cmd package resolve-activity -a android.intent.action.MAIN '||TARGET_PACKAGE_NAME||' | awk -F= '/name=/{print $2; exit}') -a android.intent.action.VIEW -d '||TARGET_URL_OR_IDENTIFIER||'"
    ],
    "post_playback_start_commands": [
    ],
    "post_tune_commands": [
        "input keyevent KEYCODE_MEDIA_STOP",
        "input keyevent KEYCODE_HOME"
    ],
    "timed_keep_active_commands": [
        {
            "run_every_minutes": 60,
            "commands": [
                "input keyevent KEYCODE_MEDIA_PLAY"
            ]
        }
    ]
}
{
    "name": "DirecTV X",
    "author": "David B.",
    "version": "X.X.X",
    "description": "Fast tuning for DirecTV. Prevent are you still there prompt from showing.",
    "uuid": "3c7d5a19-6f2e-4b8a-9d3f-8e1c4b7a5f92",
    "global_options": {
        "wait_for_video_playback_detection": true,
        "use_fixed_delay": false,
        "fixed_delay_seconds": 0,
        "check_for_and_clear_whos_watching_prompts": false,
        "wait_after_post_playback_start_commands_seconds": 0
    },
    "pre_tune_commands": [
    ],
    "tune_commands": [
        "am start -S -W -n '||TARGET_PACKAGE_NAME||'/$(cmd package resolve-activity -a android.intent.action.MAIN '||TARGET_PACKAGE_NAME||' | awk -F= '/name=/{print $2; exit}') -a android.intent.action.VIEW -d '||TARGET_URL_OR_IDENTIFIER||'"
    ],
    "post_playback_start_commands": [
    ],
    "post_tune_commands": [
        "input keyevent KEYCODE_MEDIA_STOP",
        "input keyevent KEYCODE_HOME"
    ],
    "timed_keep_active_commands": [
        {
            "run_every_minutes": 60,
            "commands": [
                "input keyevent KEYCODE_MEDIA_PLAY"
            ]
        }
    ]
}

I would add -S to ensure a clean start each time. It'll tune much slower, but you'll definitely get the right channel every time.

I thought that this might be the latest. I see where you added the -S. I'll give it a try this evening. Thanks!

It slows it down so maybe you want like two configs or two ADB tuner instances.
One for recording with that -S and one without.

Like DTV recording with -S then another playlist without it for channel flipping.

I just tested the config including the -S. I am seeing 10-12 second tuning with my old onn 4k boxes. The first tune after sitting for a while may have been 14 seconds. It is certainly fine for recording. I don't do much channel surfing, so, I'm going to leave it as is.

Yeah, using that flag will be more reliable for recording.

1 Like

I was wondering if anyone else is having an issue with some FireSticks where it constantly has the popup to "Allow USB debugging" even though I have clicked many times to "always allow from this computer" It seems the firestick forgets the adbkey? Is there a fix for this?

Definitely not.

Which specific FireStick model are we talking about here?

The Firestick 4k max

1 Like

Gen 1 or Gen 2? And is this with ADBTuner or ah4c?

Gen 2 adbtuner. Also tested via windows command line

That is the one FireStick 4K model (Max Gen 2) that needs to have adb_allowed_connection_time set to 0 to prevent ADB authorization expirations, however that setting is adjusted automatically by ADBTuner.

In an ADB shell, you can confirm this if you like with:

settings get global adb_allowed_connection_time

Which should return:

0

To change it manually (which should not be needed in ADBTuner):

settings put global adb_allowed_connection_time 0

I'm going to test it later, thanks

I would definitely like to make things easier where I can, but I'd be concerned this might trigger unwanted inputs with apps that just happen to have those words in their on screen display.

I think the configurations thing needs to be grow up and not be the complicated thing it is now so I'm going to focus on that when time allows. A lot of people here are doing great work and it needs to be more discoverable.

1 Like

Need a little help I am setting up ADBTuner on ONN4K Pro with Hulu. It seems to tune fine however after long periods of idle or ONN reboot it gets stuck at the "Who is watching" screen on the first tune attempt.
Do i need to set compatibility mode? Will that slow down tuning?

Not if your only issue is a "Who is watching".

Using the most recent :development tagged container, you can setup your own desired text matches to get past screens like that. Search this thread, and you should see some specifics about how to do this. Relevant hits will be from the last part of 2025 to now.

Before I go that route, I took a look and the Configuration I am using and it has this in it:
"global_options": {
"wait_for_video_playback_detection": false,
"use_fixed_delay": true,
"fixed_delay_seconds": 1,
"check_for_and_clear_whos_watching_prompts": true, <<<--- This
"wait_after_post_playback_start_commands_seconds": 0
},
So It seems that that is not working. Is what I am seeing a bug of some sort?

You need to make sure the exact text in your who's watching prompt is being matched.