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

I'm a "belt and suspenders" kind of guy, preferring to have a back-up plan for everything. Even when running multiple tuners on ADBTuner, I have always used it along with TVE. When I had YouTube TV, TVE was solid. Now that I have DirecTV, TVE authentication has been sketchy. I struggled to get DTV to work properly with ADBT and my ONN boxes, and ended up changing over from ADBT to Roku Tuner Bridge.

In any case, I have been preferring the TVE sources, as the channel numbers stay consistent across providers.

What's the best YTTV alternative that works with ADBTuner? ESPN networks going away from YTTV tonight

Sling has worked very well for me with Blue. Have not tried any Orange but imagine it's the same

Has anyone set up ADBTuner to use the ESPN app directly? I have no idea if it supports deep links. It would be nice to get their 1080p streams into CDVR.

The ESPN app supports deep links with (from memory) the prefix sportscenter:// but didn’t test enough to get working past launching the app.

1 Like

3 posts were split to a new topic: DeepLinks: ESPN+

I apologize. I have been too busy to think much about ADBTuner and haven't touched it at all since early September.

Thank you everyone for stepping in to help out. Especially @bnhf who helps everyone with everything around here lol.

The recent experimental version (20250908-3) has some breaking bugs that I need to fix. As far as I can tell, the most recent development tagged version (20250903-1) is quite stable. I'm going to work on releasing that version as a new "stable" release and then we can get back into development.

5 Likes

When you release the final edition of the latest release, it would be helpful under configuration if we had abels for the different services.
Something like Deeplinik-sling
The preset would have the best tweak for Sling.
deeplink-fubo
Best for fubo
I liked all the neat tricks used to get ADBTuner to properly handle the opening and closing of the app along with handling the video signal.
I think it would help the casual user.

I pushed some of the changes from the recent experimental builds to the development version.
The development version at the time of this post is 20251106-2.

  • The keep alive feature now tries to find a valid activity for the specified app instead of making assumptions. This should make most applications open properly.
  • Default configurations were updated to make sure apps don't idle in the foreground. This helps with apps that always play video if they are open.
  • To avoid Channels DVR timeout, the video stream will always start after 20 seconds regardless of playback status.

The earlier experimental builds had a feature that tried to retry if tuning didn't start after a fixed amount of time. This feature was removed as it sometimes caused loading to fail entirely.

If you run intro any issues, please let me know. Thanks!

I added a new option to the development version (currently 20251107-2) to provide the ability to restore the old timeout behavior. There are some situations where it would be preferred to return an error instead of a stream in which media might not be playing.

As a start, I think it would be helpful if we could start compiling a list of I guess what I would call "community recommendations" for each android package. For now, just a simple list of package name ("com.google.android.youtube.tvunplugged") and a recommended default configuration ("Deep Links - Default"). With this, we could include a tooltip with the recommended configuration for that specific app.

I'm open to possibly adding support for third-party configuration repositories so users can load configurations from outside of ADBTuner, but I'm very hesitant in doing something which could actually make things more complicated. I would much prefer to improve the compatibility of the two defaults (standard, compatibility mode) versus creating a situation where there are hundreds of configurations to choose from.

1 Like

I had to update the NBC app on my Onn stick because 9.9.1 just kept showing an error when trying to live play. Is there any fixes for the dim screen in ADBTuner program yet, in any release

I just pushed another update (20251107-8) to development.

It primarily fixes some bugs related to playback detection.

It seems that the log data related to media_session changed from state=3 to state=PLAYING(3) so this form of playback detection has been broken since that happened.

I also added another fallback method for playback detection. ADBTuner now looks to see if the target application is blocking the screensaver from starting. Every app should do this when video playback starts. For reference, it's doing something equivalent to this:
adb shell dumpsys power | grep "Wake Locks:" -A 20 | grep "SCREEN_BRIGHT_WAKE_LOCK" | grep com.whatever.application


I also added an experimental feature for querying a remote URL to obtain the actual deeplink url.
If the URL associated with a channel in ADBTuner includes a "dynamic_url_json_key" parameter the specified URL will be loaded by ADBTuner and the value specified as the "dynamic_url_json_key" within the remote endpoint's json response will be used for loading the content on the android device.

Example:
If the URL configured for the channel in ADBTuner is this:
http://x.x.x.x?dynamic_url_json_key=deeplink_url

Then http://x.x.x.x will be loaded by ADBTuner and the "deeplink_url" key in the json response will be used to obtain the URL:

{
  "example_field": "something",
  "deeplink_url": "http://android_deep_link_for_something"
}

will be used to load the content on the Android.

This was just something to try to help those that are working on solutions for ESPN. I don't know how much value it has, but it's there now.

turtletank, I started testing your latest 20251107-8 build and it seems to be working great so far. My current setup is using a ONN TV 4K Pro box with Sling TV and Link PI single port box. I was using your stable build and I had to set it to use the compatibility mode for ever link to get it to work. With this build I was able to put it back to using the default deep links and so far its rock solid.

Thank you so much for all your hard work.

I moved over to watching get comedy from Sling and am using the latest development build.
I was able to set Sling to use the normal deep link option and it now pulls up the stream with a brief view of the channel logo as it starts.
I have the ONN 4k from 2023.

1 Like

I pushed a new development build (20251108-1) this morning with some adjustments to media playback detection. I had to listen to the YTTV startup sound once and that was not ok lol.

I also added a new default configuration choice (“Deep Links - Show Tuning Process”) for users that want to see the video as soon as possible and don’t care about watching the content load. It should start streaming after about 2 seconds.

3 Likes

I pushed a small update to the development version (20251109-3) this morning.

It includes a small timing adjustment for media playback detection and to perhaps help with occasional troubleshooting I added some basic remote buttons to the tuner streaming endpoint preview (note: this is just in the tuner section, not in the individual channels).

Edit:
20251109-4 adds a "wake" button as the other buttons won't necessarily wake up a sleeping device.

1 Like

You can now configure ADBTuner for ESPN+ events. Here are the steps:

1 Like

Hello everyone. It's time to take some steps towards a new stable release.
For lack of a better name I'm going to call this ADBTuner 2.0.

For now, this release is scheduled for December 1st, 2025.

The current stable release is quite old and I'm concerned it might be a bumpy upgrade process for some.

For users that have always been on a stable build the upgrade should work just fine. If you have jumped back and forth between stable and development builds there could be some complications.

A beta release is available now using the turtletank99/adbtuner:beta tag.

If your configuration is setup to automatically pull updated versions I suggess you disable that, and/or install the the beta at a time when it would be convenient to troubleshoot any small issues that could come up.

I'm really hoping not to surprise anyone with a broken ADBTuner setup on December 1st.

I appreciate any help I can get in testing this beta build (turtletank99/adbtuner:beta). If you run into any issues please post them here and share Docker logs if possible.

Thanks!


Changes since the last stable release:

Switched to a dedicated proxy server that is always running instead of bringing one up for each stream and tearing it down afterwards. This enabled the following:

  • Significantly improved control over tuner locking.
  • Streams are now kept active for short while after a disconnect so clients can reconnect and continue watching without having to start over. This fixes issues with dodgy network connections and with client apps that retry if the stream doesn't start immediately (Kodi).
  • Tuners will now be shared if more than one client app is streaming the same thing. Shared tuners will be locked until the last client disconnects.

Added experimental support for custom tuning configurations. These configurations can be used to define a set of custom ADB commands for applications that don't work with the default standard or compatibility mode options. A web interface for this is provided at /configurations. This feature is still experimental and may change in the future.

Added health check / status page at /up.

Improved playback detection.

Improved profile screen detection clearing (who's watching).

Added more detailed logging. Specifcally around locked tuners.

Added preview window for each streaming endpoint in the web UI.

Added remote buttons to streaming endpoint preview window for troubleshooting purposes.

Enabled admin preview windows on mobile devices and tablets.

Improved keep alive functionality. This should now work with most applications.

Apps kept awake with the keep alive feature will no longer sit in the foreground. This is preferred as some apps always stream video when they are in the foreground.

By default, all video streams will now start after 20 seconds regardless of if the requested content has started playing. This allows for slow loading content that previously failed if the client connection timed out. The old behavior can be restored by selecting "Terminate Connection" for the "Slow / Failed Tuning Behavior" setting in the admin interface.

Added support for obtaining a deeplink url from a remote endpoint. This can be used by including "dynamic_url_json_key" parameter in the URL. The value should match the key that contains the URL in the json response. This is being used by ESPN+ with Custom Channels via ADBTuner.

And finally, there have been many bug fixes since the last release. This version of ADBTuner should provide a better experience overall.

7 Likes

Will pull the beta here in a few and will start testing. Thanks as always!