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

From the guide.
Click on the channel icon, not the show.
Then take the link from the address bar.
Replace the word "Network" in the link to "Watch"
That worked for me, even though nothing is playing in the browser, it will in the app.

I've only done this with a couple of channels so.....no guarantee.

1 Like

I am trying to get VICE up but it won't work. Boooo...Lol

1 Like

Not sure if this is the same stream you are looking for, but the 398th channel in Plex’s M3U is VICE News: https://i.mjh.nz/Plex/us.m3u8

1 Like

Thanks but this is the Regular Vice CHannel. I wanna record all the Dark Side of Wrestling shows as well as Dark side of Sports, Comedy etc. Basically all their Dark Side of stuff...

1 Like

Plex has a second VICE Channel (not News) also at #383. Is that it?

I also see VICE Channel on SamsungTV+, it's #45. I'm pretty sure that's where I recorded some of those shows from in the past...

M3U: https://i.mjh.nz/SamsungTVPlus/us.m3u8
Guide data: https://i.mjh.nz/SamsungTVPlus/us.xml.gz

2 Likes

I'm getting the following link.
https://www.hulu.com/network/vice-bde4af8e-b348-448f-a580-a7ea6e5d4dc4
According to the example posted in the group it should be as follows.
https://www.hulu.com/watch/vice-bde4af8e-b348-448f-a580-a7ea6e5d4dc4

Trying to get the hand of Hulu myself. I get the channel on FRNDLY tvso don't need it but good to know it is here.

In the Hulu link, replace the word "Network", with "Watch"

Now I can no longer watch my Haystack TV app. Is there any way to have this as an optional setting. Worked great before.

1 Like

I've been able to reproduce the stutter now consistently when watching the main stream on my Onn device, and tuning in a second channel on my iPhone. When I tune in the second channel, the first device stutters, and the second channel comes in briefly on the iPhone, before it disappears and I get the "tuner lost" message. I don't know how this works, but it's almost like the tuner thinks the channel hasn't tuned, so takes some action which ends the stream.

My expericence is siimular but for recordings. I had two movies recorded this morning and both have no issue. Later on a New recording started and 30mins in my second recording started. The first recording studders and shows interrupted. The Second recording also shows interrupted.

I think this was a transition from a finished recording and new recording. The recording were on the same network and looks like the 2nd recording started then the first recording stopped. Then the second recording closed connection and started on "tuner 1" instead of staying on the current "tuner 2"
Maybe something below cateches your eye

Part of the log showing the closed/open connection.

2023/07/14 17:31:09.027538 [DVR] Starting job 1689373800-ch5002 Ping Pong Summer (2014) on ch=[5002]
2023/07/14 17:31:09.027650 [DVR] Waiting 1h28m50.972356779s until next job 1689379200-100 On Patrol: First Shift
2023/07/14 17:31:09.027820 [TNR] Closed connection to 107104F1/0 for ch6.1 WBRC
2023/07/14 17:31:09.027845 [TNR] Sharing existing connection to M3U-HDMIEncoder for ch5002 HDNETMV (clients=2, len=29431164)
2023/07/14 17:31:09.046313 [DVR] Recording for job 1689373800-ch5002 from M3U-HDMIEncoder ch5002 into "Movies/Ping Pong Summer (2014) 2023-07-14-1731.mpg" for 1h44m50.972297071s
2023/07/14 17:31:09.050447 [SNR] Statistics for ch6.1 WBRC: ss=100% snq=99%,60%-100% seq=99%,0%-100% bps=6263383,866304-12424544 pps=535,0-1063 sigerr=1%
2023/07/14 17:31:09.050904 [SNR] Buffer statistics for 192.168.1.96 (SHIELD) for ch6.1 WBRC: buf=0% drop=0%
2023/07/14 17:31:09.050961 [HTTP] | 200 | 29m49s | 192.168.1.96 | GET "/devices/107104F1/channels/6.1/stream.mpg?transcode=none&codec=copy"
2023/07/14 17:31:09.084121 [HTTP] | 200 | 29m52s | 192.168.1.96 | GET "/dvr/events/subscribe"
2023/07/14 17:31:22.757798 [HTTP] | 502 | 13.62806624s | 192.168.1.96 | GET "/tmsimg/assets/p22550246_v_v12_aa.jpg?w=480&h=720"
2023/07/14 17:31:22.758090 [HTTP] | 502 | 13.62690807s | 192.168.1.96 | GET "/tmsimg/assets/p20892668_v_v12_aa.jpg?w=480&h=720"
2023/07/14 17:31:22.772799 [NAT] Successfully mapped port 8090 using natpmp
2023/07/14 17:31:23.545465 [HTTP] | 200 | 14.428685515s | 192.168.1.96 | GET "/tmsimg/assets/p10880351_b_h9_ah.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.546132 [HTTP] | 200 | 14.421981042s | 192.168.1.96 | GET "/tmsimg/assets/p8257644_b_h9_ae.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.546617 [HTTP] | 200 | 14.411756836s | 192.168.1.96 | GET "/tmsimg/assets/p185469_b_h9_bn.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.547076 [HTTP] | 200 | 14.414316372s | 192.168.1.96 | GET "/tmsimg/assets/p185469_b_h9_bn.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.547754 [HTTP] | 200 | 14.427346787s | 192.168.1.96 | GET "/tmsimg/assets/p185469_b_h9_bn.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.675938 [HTTP] | 200 | 124.799508ms | 192.168.1.96 | GET "/status"
2023/07/14 17:31:23.696263 [HTTP] | 200 | 14.545989561s | 192.168.1.96 | GET "/status"
2023/07/14 17:31:23.697807 [HTTP] | 200 | 14.645971783s | 192.168.1.96 | GET "/status"
2023/07/14 17:31:23.699791 [HTTP] | 200 | 1.222019ms | 192.168.1.96 | GET "/auth"
2023/07/14 17:31:23.738242 [HTTP] | 200 | 14.634525496s | 192.168.1.96 | GET "/tmsimg/assets/p185880_b_h9_as.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.814875 [HTTP] | 200 | 14.672097839s | 192.168.1.96 | GET "/tmsimg/assets/p24717477_b_h9_aa.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.815446 [HTTP] | 200 | 14.674665227s | 192.168.1.96 | GET "/tmsimg/assets/p24717477_b_h9_aa.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.821545 [ERR] Could not start stream for 107104F1 ch6.2 Bounce: HDHomeRun: Tuner Unreachable: Could not tune to http://192.168.1.29:5004/auto/v6.2?transcode=none after 30s
2023/07/14 17:31:23.821625 [HTTP] | 503 | 14.719471249s | 192.168.1.96 | GET "/devices/107104F1/channels/6.2/stream.mpg?transcode=none&codec=copy"
2023/07/14 17:31:23.849606 [HTTP] | 200 | 569.459µs | 192.168.1.96 | GET "/dvr"
2023/07/14 17:31:23.896409 [HTTP] | 200 | 14.796263251s | 192.168.1.96 | GET "/tmsimg/assets/p160676_v_v11_ac.jpg?w=480&h=720"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.897108 [HTTP] | 200 | 14.798392753s | 192.168.1.96 | GET "/tmsimg/assets/p160676_v_v11_ac.jpg?w=480&h=720"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.897584 [HTTP] | 200 | 14.813102035s | 192.168.1.96 | GET "/tmsimg/assets/p12555556_b_h9_aa.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.899401 [HTTP] | 200 | 14.776861807s | 192.168.1.96 | GET "/tmsimg/assets/p22241315_v_v12_aa.jpg?w=480&h=720"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.901062 [HTTP] | 200 | 14.774901174s | 192.168.1.96 | GET "/tmsimg/assets/p10030424_b_h9_aq.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.901703 [HTTP] | 200 | 14.76500386s | 192.168.1.96 | GET "/tmsimg/assets/p12555556_b_h9_aa.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.902187 [HTTP] | 200 | 14.757440962s | 192.168.1.96 | GET "/tmsimg/assets/p160676_v_v11_ac.jpg?w=480&h=720"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.902637 [HTTP] | 200 | 14.764117411s | 192.168.1.96 | GET "/tmsimg/assets/p160676_v_v11_ac.jpg?w=480&h=720"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.919548 [HTTP] | 200 | 14.800805683s | 192.168.1.96 | GET "/tmsimg/assets/p10274105_b_h9_ae.jpg?w=720&h=540"
2023/07/14 17:31:23.923101 [HTTP] | 200 | 14.809987946s | 192.168.1.96 | GET "/tmsimg/assets/p7893519_b_h9_ac.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.923623 [HTTP] | 200 | 14.795753601s | 192.168.1.96 | GET "/tmsimg/assets/p20810046_v_v12_aa.jpg?w=480&h=720"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.945845 [HTTP] | 200 | 6.748551ms | 192.168.1.96 | GET "/dvr/groups"
2023/07/14 17:31:23.969555 [HTTP] | 200 | 102.130182ms | 192.168.1.96 | GET "/dvr/files?deleted=true&raw=false"
2023/07/14 17:31:23.971980 [HTTP] | 200 | 14.864608165s | 192.168.1.96 | GET "/tmsimg/assets/p12567318_b_h9_aa.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.982970 [HTTP] | 200 | 10.485725ms | 192.168.1.96 | GET "/dvr/rules"
2023/07/14 17:31:23.984589 [HTTP] | 200 | 14.878825696s | 192.168.1.96 | GET "/tmsimg/assets/p12567318_b_h9_aa.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.985152 [HTTP] | 200 | 14.873365603s | 192.168.1.96 | GET "/tmsimg/assets/p279398_b_h9_aa.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:23.985619 [HTTP] | 200 | 14.875264093s | 192.168.1.96 | GET "/tmsimg/assets/p7893929_b_h9_aa.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:24.020034 [HTTP] | 200 | 14.911163256s | 192.168.1.96 | GET "/tmsimg/assets/p18335752_b_h9_ac.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:24.020803 [HTTP] | 200 | 197.7136ms | 192.168.1.96 | GET "/dvr/jobs"
2023/07/14 17:31:24.038963 [HTTP] | 200 | 1.215176ms | 192.168.1.96 | GET "/dvr/collections/content"
2023/07/14 17:31:24.076663 [HTTP] | 200 | 1.201636ms | 192.168.1.96 | GET "/dvr/collections/channels"
2023/07/14 17:31:24.089394 [HTTP] | 200 | 1.20975ms | 192.168.1.96 | GET "/dvr/guide/on_later/settings"
2023/07/14 17:31:24.278580 [HTTP] | 200 | 428.304094ms | 192.168.1.96 | GET "/dvr/files?raw=false"
2023/07/14 17:31:24.492499 [HTTP] | 200 | 45.80753ms | 192.168.1.96 | GET "/dvr/recordings/upnext"
2023/07/14 17:31:24.609760 [HTTP] | 200 | 623.761281ms | 192.168.1.96 | GET "/dvr/programs"
2023/07/14 17:31:27.792090 [HTTP] | 200 | 18.6774173s | 192.168.1.96 | GET "/tmsimg/assets/p528489_b_h9_ab.jpg?w=720&h=540"
Error #01: net/http: abort Handler
2023/07/14 17:31:27.804013 [HTTP] | 200 | 4.052157646s | 192.168.1.96 | GET "/devices"
2023/07/14 17:31:30.466362 [TNR] Closed connection to M3U-HDMIEncoder for ch5002 HDNETMV
2023/07/14 17:31:32.947236 [HTTP] | 200 | 1.426147ms | 192.168.1.60 | GET "/dvr/files/2242?raw=false"
2023/07/14 17:31:32.951582 [HTTP] | 200 | 1.364443ms | 192.168.1.44 | GET "/dvr/files/2242?raw=false"
2023/07/14 17:31:34.009914 [SNR] Buffer statistics for "Movies/Ripped (2017) 2023-07-14-1546.mpg": buf=11%,0%-100% drop=6%
2023/07/14 17:31:34.010176 [DVR] Finished job 1689367500-ch5002 Ripped (2017)
2023/07/14 17:31:36.150077 [HTTP] | 200 | 1.209404ms | 192.168.1.60 | GET "/dvr/files/2243?raw=false"
2023/07/14 17:31:36.171141 [HTTP] | 200 | 1.197502ms | 192.168.1.44 | GET "/dvr/files/2243?raw=false"
2023/07/14 17:31:44.869985 [DVR] Processing file-2242: Movies/Ripped (2017) 2023-07-14-1546.mpg
2023/07/14 17:31:45.931162 [HTTP] | 200 | 22.111575785s | 192.168.1.96 | POST "/dvr/clients/register"
2023/07/14 17:31:46.314614 [HTTP] | 200 | 366.780333ms | 192.168.1.96 | GET "/devices/ANY/guide?time=1689373903&duration=28800"
2023/07/14 17:31:46.533075 [HTTP] | 200 | 1.216066ms | 192.168.1.96 | GET "/dvr/files/2242?raw=false"
2023/07/14 17:31:46.545535 [DVR] Waiting 1h28m13.45447531s until next job 1689379200-100 On Patrol: First Shift

Can you try using https://haystack.tv as the URL? It loads right into the fullscreen video. Is that what you intended?

{
    "provider_name": "Haystack",
    "number": 1000000,
    "name": "Haystack",
    "url": "https://haystack.tv",
    "package_name": "com.haystack.android",
    "alternate_package_name": "",
    "compatibility_mode": true,
    "tvc_guide_stationid": ""
}

It is actually possible to get what is read as
Dolby 2.0 (ac3) from some versions.

The audio is richer than what they produce by default as aac encoded. I don't know about aac++ if you have that option. Never tested it.

Anyway, if you really just want to hear sound coming from your surround system you can create artificial 5.1 or sorts by upmixing like so if you are on linux:

ffmpeg -I input.mpg -filter_complex "[0:a]pan=5.1(side)|FL=FL|FR=FR|FC=FL+FR|LFE=LFE|SL=FL-FR|SR=FR-FL[a]" -map 0 -map -0:a -map "[a]" -c copy -c:a ac3 output.mkv 

For me, even with those settings for Haystack, it just comes up showing the YoutubeTV home screen.

2 Likes

Hmm.. Are you using a FireTV device? If so, it looks like that version of the app isn't setup for any http:// URLs, but you can use haystacktv:// as the URL. That seems to work.

FireTV:

adb shell dumpsys package com.haystack.android

Activity Resolver Table:
  Schemes:
      fbconnect:
        aeb6576 com.haystack.android/com.facebook.CustomTabActivity filter 511b948
          Action: "android.intent.action.VIEW"
          Category: "android.intent.category.DEFAULT"
          Category: "android.intent.category.BROWSABLE"
          Scheme: "fbconnect"
          Authority: "cct.com.haystack.android": -1
      haystacktv:
        e685777 com.haystack.android/.tv.ui.activities.LoadingActivity filter 17a6665
          Action: "android.intent.action.VIEW"
          Category: "android.intent.category.DEFAULT"
          Scheme: "haystacktv"

Chromecast:

adb shell dumpsys package com.haystack.android

Activity Resolver Table:
  Schemes:
      intent:
        e1ac0a3 com.haystack.android/.tv.ui.activities.LoadingActivity filter 927dfa0
          Action: "android.intent.action.VIEW"
          Category: "android.intent.category.DEFAULT"
          Category: "android.intent.category.BROWSABLE"
          Scheme: "intent"
          Authority: "com.haystack.android": -1
          AutoVerify=true
      http:
        e1ac0a3 com.haystack.android/.tv.ui.activities.LoadingActivity filter 1dd2759
          Action: "android.intent.action.VIEW"
          Category: "android.intent.category.DEFAULT"
          Category: "android.intent.category.BROWSABLE"
          Scheme: "http"
          Scheme: "https"
          Authority: "www.haystack.tv": -1
          Authority: "haystack.tv": -1
          AutoVerify=true
      https:
        e1ac0a3 com.haystack.android/.tv.ui.activities.LoadingActivity filter 1dd2759
          Action: "android.intent.action.VIEW"
          Category: "android.intent.category.DEFAULT"
          Category: "android.intent.category.BROWSABLE"
          Scheme: "http"
          Scheme: "https"
          Authority: "www.haystack.tv": -1
          Authority: "haystack.tv": -1
          AutoVerify=true
      fbconnect:
        466ff2a com.haystack.android/com.facebook.CustomTabActivity filter 615a11b
          Action: "android.intent.action.VIEW"
          Category: "android.intent.category.DEFAULT"
          Category: "android.intent.category.BROWSABLE"
          Scheme: "fbconnect"
          Authority: "cct.com.haystack.android": -1

Sadly it doesn't. Just shows the YoutubeTV home screen. Onn device.

It works fine with the origional HDMI turner on my PC with using this...

c:\platform-tools\adb -s %ip% shell am start -a android.intent.action.VIEW -n com.haystack.android/.tv.ui.activities.LoadingActivity

I'm happy to just devote the 4th encoder on my URayCoder to the more manual loading of unsupported apps. As long as ADBTuner only knows about the first 3 encoders, and the PC HDMI4C only knows about the 4th there shouldn't be any conflicts. I am going to have to do that with the Weather Channel app anyway to bypass an annoying prompt that comes up when there is a special weather event going on.

Hmm. That's really odd. Is this the newer Onn 4k device? Android 12?

Out of curiosity, can you run the following connected to the Onn device?

adb -s <device ip> shell dumpsys package com.haystack.android

and share the content from the "Activity Resolver Table" section?

This actually works perfectly on my Onn 4k box.

This is from my onn box:

      https:
        63e8c49 com.haystack.android/.tv.ui.activities.LoadingActivity filter c198a6f
          Action: "android.intent.action.VIEW"
          Category: "android.intent.category.DEFAULT"
          Category: "android.intent.category.BROWSABLE"
          Scheme: "http"
          Scheme: "https"
          Authority: "www.haystack.tv": -1
          Authority: "haystack.tv": -1
          AutoVerify=true

com.haystack.android/.tv.ui.activities.LoadingActivity is associated with the https://haystack.tv so it should work as it did when specifying com.haystack.android/.tv.ui.activities.LoadingActivity manually.

Overall I'm trying to find a compromise between ease-of-use and flexibility which has me trying to have less form fields instead of more. I do appreciate the interest in expanding beyond the "standard" apps, but at least for now I want to make sure the "standard" apps are working as well as they can first.

Sure... Here it is

Activity Resolver Table:
Schemes:
intent:
a8750a7 com.haystack.android/.tv.ui.activities.LoadingActivity filter e5a6954
Action: "android.intent.action.VIEW"
Category: "android.intent.category.DEFAULT"
Category: "android.intent.category.BROWSABLE"
Scheme: "intent"
Authority: "com.haystack.android": -1
AutoVerify=true
http:
a8750a7 com.haystack.android/.tv.ui.activities.LoadingActivity filter 38ea0fd
Action: "android.intent.action.VIEW"
Category: "android.intent.category.DEFAULT"
Category: "android.intent.category.BROWSABLE"
Scheme: "http"
Scheme: "https"
Authority: "www.haystack.tv": -1
Authority: "haystack.tv": -1
AutoVerify=true
https:
a8750a7 com.haystack.android/.tv.ui.activities.LoadingActivity filter 38ea0fd
Action: "android.intent.action.VIEW"
Category: "android.intent.category.DEFAULT"
Category: "android.intent.category.BROWSABLE"
Scheme: "http"
Scheme: "https"
Authority: "www.haystack.tv": -1
Authority: "haystack.tv": -1
AutoVerify=true
fbconnect:
20b1b3e com.haystack.android/com.facebook.CustomTabActivity filter fbad9f
Action: "android.intent.action.VIEW"
Category: "android.intent.category.DEFAULT"
Category: "android.intent.category.BROWSABLE"
Scheme: "fbconnect"
Authority: "cct.com.haystack.android": -1

Which HDMI encoder device are you using?

1 Like

Thank you!

Thank you!