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

That makes sense. I probably should split the exported channel list down to separate my sources. Then, I could do a "find and replace" on each one and import them back in.

Yeah then you can create a channel collection for each source and then break them up on your guide.

I've been curious what kinda setup you were running.. I set up ah4c w/ ospreys this fall and agree, simple and reliable.
so the advantage of adbtuner would be quicker tuning (channel# or deeplink?) and multiview? (i don't have an atv)
I assume you have onn in the mix and got started with adbtuner for the other apps correct?

2nd this, including u buddy :slight_smile:

1 Like

I will have to do a Deep Dive at some point. I have multiple dockers, capture sources and devices in the mix, with tuner priority differences on server and streaming devices. This tuner diversity gives me control over how the sources are used. Fast-live turning, slower tuning for recordings and mixing the two as backups in case one of the source goes offline. Of course, none of this is necessary. I just like redundancy (and messing with settings).

Yes. ADBTuner sending Deep Links to Osprey Boxes works surprisingly well. I have an ADBT Docker dedicated to a set of Ospreys. It's faster tuning than AH4C scripting of Channel Numbers. These boxes are primarily to Live TV watching, including MultiView.

Although I've found this setup reliable the last few months, it's not proven like AH4C Channel Scripting. When I did AH4C testing a few years (?) ago, I just left it running for months without touching it. And it just kept working. AH4C+Osprey is rock solid. If it's working for you, would not recommend you switch to ADBT.

Yes. Originally for the NBC App when their channels dropped off of TVE. It worked, but that app is a pain at times. When I saw the the new features in ADBT, along with the findings DTV works with Deep Links (thanks again AH4C thread), I bough a few Onn 4K Plus boxes, a pair of which are in production.

Currently the Onn 4K Plus boxes run a number of sports and news apps, along with DirecTV app, all using deep links. They act as secondary sources if the Ospreys' are in use (MultiView) or go offline.

TLDR: My setup is way more complex than most people need. I have six active tuners, across ADBT and AH4C. I didn't use or need more than a few active tuners until the Multi View came along (amazing). With multiple sources, I now have backup options to tune channels, which I set as priorities in Channels DVR Server. If you have DirecTV, Osprey Boxes and AH4C is the most reliable setup, but ADBT works well enough and does tune faster. Happy to continue answering any questions. Happy Streaming.

It almost seems like something like ADBTuner or A4HC is going to have to be a part of the actual main Channels server at some point down the line. Especially with DRM seemingly coming to broadcast TV. There's going to need to be a first party solution for this idea of using an HDMI encoder with an Android TV box. Although I have to say the community is doing an amazing job right now, thank you @turtletank and @bnhf!! If either of you guys have a BuyMeACoffee or GitHub donation page, please do share!

While Technically correct, The use of stuff like ADB Tuner goes against the majority of terms of service with these paid providers.
The ideas and concept is great but the providers and content owners would rather people use the native apps.
If channels were to have built in support for some of these hacks, it would turn into an endless work load of support.
We have to remember that channels users aren't the majority.
If a solution were to be provided, the entire solution would need to be part of the plan.

2 Likes

Do Fire Sticks work well? I've given up on Google coming up wtih a fix for the CCwGTV adb. I have a bunch of old Fire Stick 4Ks that I can setup.

The FireStick 4K Max and 4K Max 2nd Gen are good choices.

That is valid. It does kind of go against the terms of service of some of the providers. So, yeah, building it in might be a bad idea.

This is a really great community I found though and it's great to see how well supported these community projects are. :blush:

Did the channel numbers in your JSON come from the grab I made from the DirecTV guide?
EDIT: I see that the numbers match the DirecTV guide channel numbering...

I noticed that they are all numbered below 5000. That would keep them in a range below typical TVE channel numbers.

I'll have to look at them because some may conflict with default Pluto channel numbers which I have coming from the Pluto for Channels docker container.

If anyone used my Philo config, I made a whole bunch of changes that seems to make it more reliable, because I noticed some of the FAST channels have the skip to live button in a different position than other channels. So obviously if this issue isn't occurring for you, don't use this config. But it was happening to me, especially on REELZ, so it might be worth using for some people, at least for reliability. It does slow down tuning a lot, so there is that trade-off. But this updated version seems to work 100% of the time.

It required quite a bit of scripting to figure out exactly where the button is on each channel to click.

1 Like

I managed to Get FrndlyTV working with ADBTuner. I was able to figure out the deep link scheme that is supported. It requires a custom configuration in order to work.

{
    "name": "Frndly TV",
    "author": "David B",
    "version": "1.0.0",
    "description": "Custom configuration for Frndly TV",
    "uuid": "f7d3a891-5c42-4e8b-9a16-7b2d0e8f4c5a",
    "global_options": {
        "wait_for_video_playback_detection": false,
        "use_fixed_delay": true,
        "fixed_delay_seconds": 12,
        "check_for_and_clear_whos_watching_prompts": true,
        "wait_after_post_playback_start_commands_seconds": 0
    },
    "pre_tune_commands": [
        "input keyevent KEYCODE_MEDIA_STOP",
        "am force-stop '||TARGET_PACKAGE_NAME||'",
        "sleep 2"
    ],
    "tune_commands": [
        "am start -W -a android.intent.action.MAIN -c android.intent.category.LEANBACK_LAUNCHER -n '||TARGET_PACKAGE_NAME||'/$(cmd package resolve-activity -a android.intent.action.MAIN -c android.intent.category.LEANBACK_LAUNCHER '||TARGET_PACKAGE_NAME||' | awk -F= '/name=/{print $2; exit}') --es LaunchId '||TARGET_URL_OR_IDENTIFIER||'"
    ],
    "post_playback_start_commands": [],
    "post_tune_commands": [
        "am force-stop '||TARGET_PACKAGE_NAME||'",
        "input keyevent KEYCODE_HOME"
    ]
}

Here is a JSON to import of all channels with Gracenote ID's. Everything seems to tune quickly and reliably. After testing all channels I only had one fail to tune on me, and it did end up tuning after a retry.

It was likely due to trying each channel one after another.

From what I was reading, it seemed like deep linking wasn't possible, but fortunately I was able to decompile the APK and find a solution.

Edit: I set a fixed delay of 12 seconds to allow the playback controls to hide before displaying. Hopefully someone can tell me if this is the best way. I tried the back button first but for some reason that triggered closed captions.

1 Like

This will be pretty useful. Hopefully @bnhf can add the configs to Olivetin for newbies to copy and paste.

Before that, hopefully some others can test it and confirm that I'm not doing something stupid. :laughing: This is all pretty new to me. I hope Claude isn't lying to me, but I believe that cmd package resolve activity should resolve it to whatever activity would handle the intent if they refactor the app or something.

It's really amazing what you can do with a good AI model these days and clever prompting. Opus 4.5 walked me through dumping the APK and reverse engineering it to find the correct intent.

It would also be really great if someone could test this on a Fire TV Stick. I don't have one. I believe it will work, but I just want to be certain.

Edit: Also, if someone more experienced than me would like to take a look at the custom config and perhaps perfect it, that would be great. ~For example, once tuning, the UI for Friendly TV shows up, and if there's a way to flick back out of that so it doesn't show as soon as the channel loads, that might be awesome, I just don't know how to do that. I kind of want to tinker and see if pressing the back button would do that but I'm not sure.~

Setting a fixed delay to wait for the controls to hide works best!

Looking for some help understanding "wireless debugging".

I use (2) CC w/GTV devices. I now there are issues withe the ADB port which I use an app called tvQuickActions Pro to reset it each time the device gets restarted. I'm also trying to use an ethernet connection since I find the CC w/GTV devices have terrible wifi.

My question is, when I plug in the ethernet cable the wireless debugging gets disabled. Do I need to always have wireless debugging enabled for ADBTuner to communicate or can I just pull the ethernet cable, authenticate ADBTuner, and plug it back in. Any help understanding this is appreciated.

On Android 14, turn on USB debugging instead. I believe that will open TCP 5555 and it persists reboots. It's worked on all the Onn 4K boxes I have.

How does that change the ADBTuner application?

Do I need to do anything different setting it up? Note that the Ethernet cable is not connected via USB but through a dongle (which I guess is USB). I dont know.

Just put the IP address in and allow debugging on the Android box.

I'll be happy to take a look at the Frndly channels on ADBTuner later today, after we run our morning errands.

Thanks, I just made some changes to the config to delay tuning so the player controls have a chance to hide. I tried KEYCODE_BACK but that was turning on closed captions.

Hopefully someone with more experience can take a look and make sure I am doing this the most efficient way. 12 seconds seemed to be just long enough for it to tune and the player UI to disappear before appearing in Channels.