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

My bad. I think I need to rename that "check_after_seconds" parameter. That's actually when it starts checking. It will check approximately once a second after that delay until either video playback is detected or the tune fails. If you set that to a smaller number (ex. 5) it will probably catch that "watch live" screen one second after clearing the "who's watching" screen.

Edit: This parameter has been renamed to start_checking_after_seconds in the current development version (20251228-1). If this new parameter isn't provided it will default to 5 seconds which should be generally safe.

That's what I assumed at the beginning, but if you look at the log:

:44 Tuning starts
:59 Who's Watching first detected
:13 keyevent sent

The above is with these match commands:

Match commands: [{'match_text': ["who's watching", 'add profile', 'edit profiles'], 'commands': ['input keyevent KEYCODE_DPAD_CENTER'], 'check_after_seconds': 24}, {'match_text': ['watch live', 'start from beginning'], 'commands': ['input keyevent KEYCODE_DPAD_CENTER'], 'check_after_seconds': 6}]

From this it looks like it was configured to start looking for ["who's watching", 'add profile', 'edit profiles'] after 24 seconds and ['watch live', 'start from beginning'] after 6 seconds. So when you see the On screen text: 'who's watching? select or create a profile... text in the log output, but no corresponding keyevent, it's likely it wasn't looking for the "who's watching" text yet, so it was ignored. You probably meant to configure it the other way with the "watch live" check at 24 seconds?

I will add some better logging to help confirm this.

Oh, so the second check timing doesn't start after the first -- they both start at the beginning of the tune...

Yes. Exactly.

There are some bugs here that I need to look into. And it will probably be better to combine the checks into one when they overlap.

2 Likes

Development build 20251228-2 includes some bug fixes and some better logging around text matches.

Example:

stream - [Tune xxx] Text match result: Text to match: ["who's watching", 'choose an account', 'edit profiles']. Matches found: ["who's watching", 'edit profiles'].
lib.adb - [Tune xxxt] ADB: input keyevent KEYCODE_DPAD_CENTER
stream - [Tune xxx] Text match result: Text to match: ['watch live']. Matches found: ['watch live'].
lib.adb - [Tune xxx] ADB: input keyevent KEYCODE_DPAD_CENTER

To provide some extra clarification, these matches aren't necessarily processed in sequence and may be processed more than once. For example. if the "who's watching" text is detected multiple times it will be matched each time and the linked commands will be executed (ex. KEYCODE_DPAD_CENTER).

As a result, if the commands to be executed are always the same (ex. KEYCODE_DPAD_CENTER) one could just add extra text strings to match in one list.

For example, this alone might be sufficient for this specific use case:

"tune_match_text_commands": [
    {
        "match_text": [
            "who's watching",
            "choose an account",
            "edit profiles",
            "watch live"
        ],
        "commands": [
            "input keyevent KEYCODE_DPAD_CENTER"
        ],
        "start_checking_after_seconds": 5
    }
]

It will trigger when "who's watching" appears and then trigger again when "watch live" appears.

Let me know if this implementation causes any issues. It made sense yesterday morning at 6am, it most certainly might not be the best way to handle this.

I'm thinking about adding a way to optionally specify that all of the supplied strings should match. If we can match multiple UI elements it could help avoid false positives.

No issues so far. 5+ perfect tunes in a row, using FruitDeepLinks with Paramount+. Nicely done.

I appreciate the heads-up about this potential problem.

Is it safe to assume that the auto sign-in issue could happen with any pre-owned model of Osprey or Gemini box? 60164, 60233, or Black Label?

I have a pile too, but don't remember running into this kind of problem. I know I had one with an account, even an active netflix or something, but doing the regular hard-reset with the button worked as advertised.

the only black label I got had been flashed with the satellite firmware, and there's currently no known way to go back to streaming. any of the the 3 you listed can have this issue, but it is more likely with a black label as those were what was sent to satellite customers with a gemini dvr.

I also have a couple old c71kw-200. one works, albeit slow. the other one is stuck on the original firmware that's looking for a remote that only shipped with the first beta shipment. I've not located one. apparently once past that screen and a firmware update, the newer remotes work. the problem lies in not being able to bypass the connect remote screen (even with keyboard) in that particular firmware.

This very discussion is all over Reddit. Osprey's are tricky if from a private seller. You may get an old box that won't take a firmware update (AT&T old), a box that is tied to an account or under contract, or one that is running Satellite Firmware. But there are many reputable sellers, you just need to find them.

The link I posted a week or so back lists the vendor I used, recommended and no issues. Only the 2GB/xx164 model though.

More Info: https://www.reddit.com/r/DirectvStream

2 Likes

last time i looked there seemed to be sombody dead set on it so i'm not supprised. I'll give it a shot again this weekend. maybe get my unused pile sorted and offer what I don't need to fellow channelers

i bought a few bulk untested lots box only, cuz i really only needed 1 remote for setup. I installed dtv back in the day so I had a bunch of power supplies and IR remotes collecting dust. :slight_smile:
I think it was only the 2 out of a dozen didn't work the 200 and black lable.

Anyone successfully added the new NBCSports network (not the 4K one) to a YTTV JSON? Been a while since i did this, and it seems to be misbehaving.

I have a question for our DirecTV experts. I am away from my LinkPi / ADBTuner equipment stack and am viewing Channels DVR remotely. I fouled up my login a few times and had to reset my password. Attempting to play results in an error due to the old password. Now, the onn 4k devices which I use as ADBTuners are needing the new password to sign in. Is there any way to remotely control the onn devices to launch the DTV app and input the new password?

I am able to remotely view the LinkPi screens, and successfully used the Roku app to get my Roku 4k sticks running. Unfortunately, I don't think that there is an equivalent remote control app for the onn 4k boxes...

From the ADBTuner WebUI, click the small "View" hyperlink. In the View window, there are some basic remote control keys you can use to login to the DTV app. Repeat for each virtual tuner's streaming stick:

5 Likes

That was AWESOME! Thanks! I'll say it again, I may not know much...but, I learn something new each day.:slightly_smiling_face:

1 Like

I used the on-screen remote commands to navigate the DTV app to the login screen with the qr code, which I was able to scan with my phone from my Chromebook screen. Easy-peasy! I also had no idea that this was a feature of ADBTuner. @turtletank , this program is amazing! @bnhf , thank you for educating me.

4 Likes

Hi @boukmandutty, I have my ADBTuner running with SlingTV and also have the slow 15 second tuning.

Do you know which config file I need to change to add this?

adb -s 192.168.1.133 shell "input keyevent 3"

Thanks,

I was comparing it to what I was able to do in ah4c (android HDMI for channels). With that program I was able make the adjustment you see there.

Ok thank you for the info!

@boukmandutty SlingTV tuning load time is much faster with ah4c after adjusting the stopbmitune.sh script with that command. Thanks again! :+1:

1 Like