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

I'm starting to move in that direction. Dumped philo and left YTTV long ago.
Thanks for all the help with deep linking

1 Like

I've been using Osprey boxes, with AH4C, for over two years. They have updated many times. They sell a dongle "air" version that is pretty simiar. And yes, the Osprey hardware is used for satellite customers. No one knows for sure, but I don't seem the killing off connections any time soon.

In fact yes, done by your Internet IP address to determine home network. I put the unlimited to good use :slight_smile:


Some other small notes. Ospreys will stream a channel all day if you want it to, no time-out prompt. Also, Ospreys allow you to input DirecTV channel numbers, which was the basis for my AH4C Scripts. If Deep Links every stopped working, you can use the powerful and reliable AH4C. Channel numbers are unlikely to every change.

Ospreys boxes have proven an excellent match for my automation, but they have limitations. I'm eager to see how @anon38303228 setup goes. Maybe then we can share a setup guide.

As you discovered, it's an environment variable and should be part of the Docker configuration, not a custom configuration within ADBTuner. It would looks something like this in a Docker Compose file:

...
environment:
      - KNOWN_STREAM_DEFAULT_TIMEOUT=40
...

The docker logs should help understand what exactly what is happening on your end.

A line like this would indicate that the tuner was released because it exceeded the amount of time as configured by this setting.

Releasing tuner 3 as it has been inactive for 40 seconds.

A line like this would indicate that the hardcoded maximum time (40 seconds) is exceeded:

Releasing tuner 3 as it is no longer tracked by the proxy server.

I appreciate what you are trying to accomplish, but it wasn't something I hadn't even thought about and I'm not sure if playing with this will achieve much. But I can confirm that it will respect that setting up to the 40 second maximum.

The 2.0 release (currently adbtuner:stable or adbtuner:2.0) is the same as that release. There were no changes other than the version number. At this point, I would suggest that you switch to adbtuner:stable.

Going forward, adbtuner:stable should be the preferred version for day-to-day use. New features will be pushed to adbtuner:development. I'm going to delete the now outdated latest, beta, experimental and other tags. As always, I appreciate everyone's help in testing all of these builds.

Edit: people are still pulling adbtuner:latest. I will keep this around, but it will just mirror adbtuner:stable.

2 Likes

Walmart has them for $41. Free returns until Jan 31.

That's great! :slightly_smiling_face:

1 Like

I've added a new OliveTin/Project One-Click Action to automate everything needed to use DTV with ADBTuner.

This includes:

  • Capturing the deeplinks for your set of specific DTV packages, including locals.
  • Converting those deeplinks into a JSON for use with ADBTuner.
  • Adding Gracenote Station IDs to each of the channels in your custom list.
  • Adding those virtual channels to your ADBTuner installation.
  • Adding whatever ADBTuner Custom Config you'd like to use to ADBTuner.
  • Importing those channels complete with DTV channel numbers and GracenoteIDs into ADBTuner.
  • Creating a CDVR Custom Channels Source with that set of ADBTuner channels call ADBTuner - DirecTV

More details here:

This Action should go live tomorrow (08 Dec 25)...

3 Likes

I recently upgraded to the latest stable release, and it seems like my endpoints are broken. I have encountered this issue with previous updates, but it's been a while, and rolling back usually resolved the problem. Unfortunately, this time rolling back doesn’t seem to help. Is anyone else experiencing this issue?

The URLs you have configured in the Streaming Endpoint field actually redirect to another URL. You should be able to just update the Streaming Endpoint field with the URL suggested in the error message. In your case it seems it's redirecting the https?

Hi guys!
There are sooo many posts and replies about fixes, adjustments and new developments here that I bet this post gets lost in the shuffle.

I’m not one who can participate in such discussions, but I am a user of ADB Tuner for about a year or so. I only have a single encoder, fed by a single Fire TV.

I just want to say thank you. That’s all.

5 Likes

I attempted the suggested fix, and the URL changed to HTTPS as a result. The second tuner reflects the original message I received before trying the fix. I also double-checked my endpoint URLs on the encoder, and there have been no changes.

LOL I literally just pushed that. It's just a quick implementation, and I will document this more, but your DTV config converted for this is as follows.

I don't have DTV, and haven't really tested other than verifying that the commands are executed.

{
    "name": "DirecTV",
    "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"
            ]
        }
    ]
}
1 Like

More information on this, I tried all iterations that error tells me to try and once I switch the URL I get a complete connection failure which would make sense. The endpoints the program is telling me to use are not real endpoints. Thanks

What encoding device(s) are you using?

Edit: if it's a single LinkPi device, can you try:

http://192.168.2.11:8090/FS1 and http://192.168.2.11:8090/FS2

I have 4 LinkPi Devices. They are all doing the same thing after this last update.... weird thing I spun up a new container since the suggested fix was not working I thought maybe I broke something. Intially this new container was doing the same thing. But I tried to add the fix that you stated along with the ADB tuner program suggesting and now its working all of a sudden. Not sure why thing change was needed all of a sudden and why in my orginal container the fix would not take. But it seems to be all good now I will try it on the rest of my tuners and let you know if I have any more trouble

Thanks for an awesome program!

1 Like

There are some firmware updates that reset config. Possible your play URLs for the LinkPi streams changes. One of the firmware updates changed all my bitrate and encoding settings too. Something to check. Glad it is working.

@turtletank I will start by start by saying the challenge I'm having is so unique, it may only apply to me. I don't want to request development for such a small audience. But with the newly created ADBT Thread dedicated to DirecTV, figured I would open discussion.

I've been testing my Osprey Boxes with ADBT for a few months. It works rather well, but I have to use a work around. It seems ADBT needs to verify the declared Package Name is installed before continuing with the rest of the tuning process. The Osprey does not have an installed app. Instead it uses the System App com.att.tv.openvideo baked into the Osprey Firmware.

I bypass this challenge by selecting a random installed app during my Channel setup, then use a custom config to manually target the "openvideo" system app. Is there any way to use a System App as Package Name? Possible to skip this verification of installed, and just trust the declared (manual input) package name is good?

Again, this is not a show stopper for me. The bypass I'm using now works. Appreciate all you do.

1 Like

Are you on the stable branch or the development version. I think it was address in the threads.
a configuration is available to address the boxes.

Can you take a look at the current development version (20251208-1) and let me know if this issue is resolved? In this build the full list of packages is used when allocating tuners instead of the filtered third-party list.

Gave it a quick test on the new dev version before work. Did not seem to take. I will pull a log and see what's happening. Thank you so much for attention to this config!

Okay, so I checked the logs. The dev version in fact does allow me to manually enter the system package by typing it in, and attempts to tune, but then errors out saying "Application is not installed".

2025-12-08 20:08:10.057 - stream - [Tune (3hR7ibUCQDsDwXMvn9rjMH)] No active tuners found for CNNHD. Reserving a new tuner.
2025-12-08 20:08:10.058 - tuner_management - [Tune 3hR7ibUCQDsDwXMvn9rjMH] Attempting to reserve tuner for: ['com.att.tv.openvideo'].
2025-12-08 20:08:10.059 - tuner_management - [Tune 3hR7ibUCQDsDwXMvn9rjMH] Available Tuners:
2025-12-08 20:08:10.059 - tuner_management - [Tune 3hR7ibUCQDsDwXMvn9rjMH] Name: Opsrey1 Priority: 
2025-12-08 20:08:10.059 - tuner_management - [Tune 3hR7ibUCQDsDwXMvn9rjMH] Name: Osprey2 Priority: 
2025-12-08 20:08:10.059 - tuner_management - [Tune 3hR7ibUCQDsDwXMvn9rjMH] Name: Osprey0 Priority: 
2025-12-08 20:08:10.059 - tuner_management - [Tune 3hR7ibUCQDsDwXMvn9rjMH] Selecting random tuner
2025-12-08 20:08:10.060 - tuner_management - [Tune 3hR7ibUCQDsDwXMvn9rjMH] Reserved Tuner: Name: Opsrey1 Priority: 
2025-12-08 20:08:10.060 - stream - [Tune (3hR7ibUCQDsDwXMvn9rjMH)] Tuning to CNNHD on Opsrey1
2025-12-08 20:08:10.063 - stream - [Tune (3hR7ibUCQDsDwXMvn9rjMH)] Using channel configuration: DTV: Osprey Deep Link (DODL) (870d0f68-6c1f-4358-b3c3-0c97fd0cb316)
2025-12-08 20:08:10.444 - lib.adb - [Tune (3hR7ibUCQDsDwXMvn9rjMH)] ADB: 192.168.xxx.xxx - input keyevent KEYCODE_WAKEUP
2025-12-08 20:08:11.757 - tuner_management - [Tune (3hR7ibUCQDsDwXMvn9rjMH)] Released tuner (1).
2025-12-08 20:08:11.757 - stream - [Tune 3hR7ibUCQDsDwXMvn9rjMH] Application (None) is not installed. Exiting.
2025-12-08 20:08:11.764 - stream - [Tune 3hR7ibUCQDsDwXMvn9rjMH] Tuner (Opsrey1) is no longer available.