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

What IP address did you use for custom Channel? I'm wondering if you are having issues as you defined local host (127.0.0.1) in your setup.

EDIT: I see TurtleTank already mentioned local host previously. I have a test setup that is Windows Host for channels with Desktop docker. I will see how I configured it later tonight.

1 Like

Well if the orange light is following the ports when switched then it's not the router, one of the other devices (LinkPi or Onn) or the cable are holding down your connection speed.
However if the custom channel played fine in the testing then I would have to guess that speed of connection is not causing your errors.

Yeah, I changed my IP address in the custom channel settings for ADBTuner to: http://192.168.1.xx:5592/channels.m3u and unfortunately still get the same problems.

Ok so we've narrowed the problem to the adbtuner config. All adbtuner does is find a tuner and then run and adb command to change the channel and tell Channels what IP address to connect to.
Copy and paste the output of ipconfig /all as well as your docker config/containers. I'm not familiar with Docker for Windows (I use Linux) but I might be able to gleen something from your docker config. If not I'm sure someone more familiar with docker on Windoze will chime in

So I've had the adbtuner working great with my cablecard hdhomerun app on chromecast and a linkpi. Today I noticed it wouldn't tune to the DRM channels, or rather it would tune, but give me content protection error. Has something changed on the chromecast pros that won't allow it it to play drm channels on the hdhomerun app? I know it's the chromecast, because I am able to tune to those channels using the windows hdhomerun app, and I tested the chromecast device on a tv with the same result.

I'm starting to think your Netgear R7000 may the issue. There seems to be a history of this router dropping wireless connections. Yeah, all routers have quirks. But does Google often call out specific models on their support page?

Netgear Nighthawk router and your Google Nest or Home device
If you have trouble setting up your Google Nest or Home speaker or display using the Netgear Nighthawk router, particularly model R7000, try the following:

Disable Access Control.
Enable the option "Allow guests to see each other and access my local network" in the "Guest Network Setup."

Source: Netgear Nighthawk router and your Google Nest or Home device - Chromecast Help

I would say you have a few choices. You can upgrade your router. You are currently running AC speeds, which are more than fine for most use cases, but AX (WiFi 6) routers have come way down in price. If you are on a budget, you could buy one of these $15 Linksys Routers, put it into AP mode and let it do your WiFi (fire sale, nice hardware, don't expect much firmware updates, don't use as router).

You could also look at getting the $50 Onn 4K Pro which has Ethernet.

So I can easily access ipconfig /all through a windows command prompt. When you mention docker config/containers however, I’m a little confused as to what exactly you need me to get there. Am I looking for a config file for ADBTuner? I was able to download a .config folder which contains three files…adbkey, adbkey.pub, and config.db

I’m wondering if anyone has successfully gotten Thursday night football to work for them. I can get prime video to load and open to the TNF game but not the final step of playing the game.

I have adbtuner running using URay encoders and chromecast with google tv devices. I created a channel in adbtuner for prime video. I map the local broadcast channel for that game to the prime video channel and use the event sharing link as the deep link. At program start, it gets to the program but doesn’t play without click play or watch.

Is there an extra parameter I can send to take the final step?

ADBTuner is not the ideal application. For Prime, you should use AH4C.

Similar idea and set up, but can handle those extra play events Prime requires.

2 Likes

Apparently this is a Google problem, quoting someone from silcondust
<We have confirmed an issue with Android devices reactivating due to a Google dropping support for an API used to activate.

Working on a solution...>
Hope they can. But has anyone tried doing a screen capture in windows to grab the hdhomerun windows app? Would that work?

Yes please post this

I'm looking for your docker compose or portainer stacks file. I have no idea if Docker desktop has any of these as I am not using Windows so any type of config where you set up the docker container.

Also please post your network topology. How the computer is connected to the network, hopefully wired and not wireless, etc.

1 Like

So I'll start with the easiest one...my server computer is connected to the network WIRED. And here are the results from ipconfig /all

Windows IP Configuration

Host Name . . . . . . . . . . . . : DESKTOP-IJJ8OS8
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter Ethernet:

Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Realtek PCIe GbE Family Controller
Physical Address. . . . . . . . . : C0-3F-D5-5E-9B-DE
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fe80::19a4:3b48:2112:a74f%9(Preferred)
IPv4 Address. . . . . . . . . . . : 192.168.1.6(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Lease Obtained. . . . . . . . . . : Wednesday, August 28, 2024 6:05:25 AM
Lease Expires . . . . . . . . . . : Thursday, August 29, 2024 6:05:24 PM
Default Gateway . . . . . . . . . : 192.168.1.1
DHCP Server . . . . . . . . . . . : 192.168.1.1
DHCPv6 IAID . . . . . . . . . . . : 130039765
DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-25-F4-F2-B0-C0-3F-D5-5E-9B-DE
DNS Servers . . . . . . . . . . . : 192.168.1.1
NetBIOS over Tcpip. . . . . . . . : Enabled

Ethernet adapter vEthernet (Default Switch):

Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter
Physical Address. . . . . . . . . : 00-15-5D-B2-07-69
DHCP Enabled. . . . . . . . . . . : No
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fe80::b97b:72dc:35f0:cd42%14(Preferred)
IPv4 Address. . . . . . . . . . . : 172.26.128.1(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.240.0
Default Gateway . . . . . . . . . :
DHCPv6 IAID . . . . . . . . . . . : 234886493
DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-25-F4-F2-B0-C0-3F-D5-5E-9B-DE
DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1
fec0:0:0:ffff::2%1
fec0:0:0:ffff::3%1
NetBIOS over Tcpip. . . . . . . . : Enabled

Ethernet adapter vEthernet (WSL):

Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter #2
Physical Address. . . . . . . . . : 00-15-5D-FF-84-F9
DHCP Enabled. . . . . . . . . . . : No
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fe80::9715:798c:bdad:a2ce%26(Preferred)
IPv4 Address. . . . . . . . . . . : 172.18.96.1(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.240.0
Default Gateway . . . . . . . . . :
DHCPv6 IAID . . . . . . . . . . . : 436213085
DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-25-F4-F2-B0-C0-3F-D5-5E-9B-DE
DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1
fec0:0:0:ffff::2%1
fec0:0:0:ffff::3%1
NetBIOS over Tcpip. . . . . . . . : Enabled

When it comes to docker compose or portainer stack files, I don't believe I have anything like that in Docker Desktop for Windows. When I setup containers, I typically just do simple commands through a Windows Command Prompt. I'll start with a pull command, and then eventually the docker run command. I'll then go to Docker Desktop for Windows and see the container running. I can view a list of all the files that are a part of the container, and in some cases I can actually view the files. The only config file I can find that the ADBTuner seems to reference as its volume is a .db file. I tried opening this in MySQL and there's not much there. If I open it raw in notepad, there are a bunch of characters that aren't recognized. I can inspect the container as well though within Docker Desktop and here is what I get when selecting that:
{
"Id": "692e52146854277b6528a224b0565956bf4e28a26457888f7f86adf7bc66bd00",
"Created": "2024-08-26T05:16:20.644800288Z",
"Path": "./entrypoint.sh",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 537,
"ExitCode": 0,
"Error": "",
"StartedAt": "2024-08-29T10:34:59.95933746Z",
"FinishedAt": "2024-08-29T10:34:51.494125125Z"
},
"Image": "sha256:18bcfb88da548226f948084a8e219217e1860fbd5cf0041fefb4c94ce86db5ee",
"ResolvConfPath": "/var/lib/docker/containers/692e52146854277b6528a224b0565956bf4e28a26457888f7f86adf7bc66bd00/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/692e52146854277b6528a224b0565956bf4e28a26457888f7f86adf7bc66bd00/hostname",
"HostsPath": "/var/lib/docker/containers/692e52146854277b6528a224b0565956bf4e28a26457888f7f86adf7bc66bd00/hosts",
"LogPath": "/var/lib/docker/containers/692e52146854277b6528a224b0565956bf4e28a26457888f7f86adf7bc66bd00/692e52146854277b6528a224b0565956bf4e28a26457888f7f86adf7bc66bd00-json.log",
"Name": "/adbtuner",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": [
"b69f799bad457c735547363c479cb6873c6364670bf1e6647746ad46eac2f376",
"aa8a411c2b86a48ffb7b1d98c533b6450fb9ef4bcc27cf9d8b3a5e4737a33569"
],
"HostConfig": {
"Binds": [
"adbtuner_config:/app/.config"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "bridge",
"PortBindings": {
"5592/tcp": [
{
"HostIp": "",
"HostPort": "5592"
}
]
},
"RestartPolicy": {
"Name": "unless-stopped",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"ConsoleSize": [
30,
120
],
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "host",
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": [],
"BlkioDeviceWriteBps": [],
"BlkioDeviceReadIOps": [],
"BlkioDeviceWriteIOps": [],
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DeviceRequests": null,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": [],
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware",
"/sys/devices/virtual/powercap"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
],
"Init": true
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/3e8d6d760b07a20b84ebecdafba005701eedded0ebb0e2ecdd35f4e297e8a78e-init/diff:/var/lib/docker/overlay2/18b167a38bce50b18740d676df4467eefa74345a0cc51c17badd3e6fb3eb3286/diff:/var/lib/docker/overlay2/23cd8935fef8ae7b90df0727ecac5460c20e94794127027397a9545f9f74ef78/diff:/var/lib/docker/overlay2/4ed03ee640e6ba28d57865e326ad5532502fc65949f619a7b937843685d2aaad/diff:/var/lib/docker/overlay2/ec7764302b0faebfefc45ca1e1eccd971e6f8eb3b56799a84a44c86790bcb573/diff:/var/lib/docker/overlay2/4bdeeb7e0d4f819f2ebb1fe5d33fb927a896c7630640d96222dbb6ea18897caf/diff:/var/lib/docker/overlay2/f6c2f01952dc83cec41cbb7cd12e0ee164d27e845f2329fdafa9576d37faa235/diff:/var/lib/docker/overlay2/702dd6e4a1e35141c157e30d24aab5e9176d1b81dfb38dd6b13955bf8e3c7b2d/diff:/var/lib/docker/overlay2/8aac6d2f06e1b4f28a2766816143a23ef67a7f707cbc3903f1948f538bf1e327/diff:/var/lib/docker/overlay2/72b899d042683920a5228cd90d833cc8ef9d06413d7699c8aabb77b6ee99d9d5/diff:/var/lib/docker/overlay2/9b19adce205eedd182b77cedc1d18c0dc3df8dc84e9193cb40bb35c63b18a478/diff:/var/lib/docker/overlay2/e82d405dca3f525a6e79e7d02d83fbef28d223e73c89a02f6aa1fcb9e2b0bda5/diff:/var/lib/docker/overlay2/17797ba2924335fc128cead3dbc10da2ae57192e415cc20160fb2b38e3208738/diff:/var/lib/docker/overlay2/64586372ea2c10a6eccc04d55991d257a7379e70a9b2dfd44875713c47050aa7/diff",
"MergedDir": "/var/lib/docker/overlay2/3e8d6d760b07a20b84ebecdafba005701eedded0ebb0e2ecdd35f4e297e8a78e/merged",
"UpperDir": "/var/lib/docker/overlay2/3e8d6d760b07a20b84ebecdafba005701eedded0ebb0e2ecdd35f4e297e8a78e/diff",
"WorkDir": "/var/lib/docker/overlay2/3e8d6d760b07a20b84ebecdafba005701eedded0ebb0e2ecdd35f4e297e8a78e/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "volume",
"Name": "adbtuner_config",
"Source": "/var/lib/docker/volumes/adbtuner_config/_data",
"Destination": "/app/.config",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
}
],
"Config": {
"Hostname": "692e52146854",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"5592/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LANG=C.UTF-8",
"GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D",
"PYTHON_VERSION=3.11.4",
"PYTHON_PIP_VERSION=23.1.2",
"PYTHON_SETUPTOOLS_VERSION=65.5.1",
"PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/0d8570dc44796f4369b652222cf176b3db6ac70e/public/get-pip.py",
"PYTHON_GET_PIP_SHA256=96461deced5c2a487ddc65207ec5a9cffeca0d34e7af7ea1afc470ff0d746207"
],
"Cmd": null,
"Image": "turtletank99/adbtuner",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": [
"./entrypoint.sh"
],
"OnBuild": null,
"Labels": {}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "36905f017aafde42264289a37e1aa952935ad075171254e31f8fcf9e60d63696",
"SandboxKey": "/var/run/docker/netns/36905f017aaf",
"Ports": {
"5592/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "5592"
}
]
},
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "e3ac0a7b3c389fce2ff984ad18e65d10735da841ab78c5f556fc92657a83d053",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null,
"NetworkID": "2755283d23f02e4c3f43146588ccb3763975cd9259519bb8a2602c0426ff3e01",
"EndpointID": "e3ac0a7b3c389fce2ff984ad18e65d10735da841ab78c5f556fc92657a83d053",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"DNSNames": null
}
}
}
}

So when you mention buying this $15 router and putting it in AP mode and having it do Wifi are you saying to plug it into my main netgear nighthawk router and then plug the LinkPi device into the Linksys router?

Working on an assumption your Onn TV may be dropping WiFi, and issues with the R7000, thought it might be worth a try using different WiFi. You could also grab an Onn 4K Pro with Ethernet and see if it acts better.

I agree with getting a pro and trying the ethernet connection also its a MUCH better device than the wifi only version (you can always return it after you test if you want to)

@Accustiver, do you have a network switch? If not you can pick up a 5 port gigabit switch on amazon dirt cheap. Take the ethernet cable out of your pc and plug it into the switch. Then plug the Onn pro, the encoder, and your computer into the switch. (Of course you will have to reconfigure adb tuner with the ip of the onn pro). This will elimitate wifi and the entire wired network. See how that test pans out and if it still fails then we'll have to cross the next bridge :slight_smile:

I actually do have a network switch. I’ve ordered the onn 4k pro and it should be arriving today. Will hook that up, set up, and put the new ip in adbtuner and we’ll see what happens. Will let you know. Thanks for all your help!

1 Like

Apologies ahead of time, but I've read most of this thread, and still have probably a dumb question.

I've been using TVE with DirecTV Stream and more and more channels are being removed from it. So I was messing around with Chrome Capture and while it works, it's not passing the wife test. So, I'm now looking into this solution.

We use Emby as a frontend, fed from the Channels server backend, with Threadfin as middleware to prune and massage the channel list. That all more or less works fine, with TVE channels, but not so hot for those that aren't TVE.

Do I need a linkpi enc5-v2 for 4 concurrent streams? If we want to watch different programs in the living room and the kids room for example, that occupies 2 "inputs" on the linkpi with 2 independent streaming devices (like the onn pro)?

Conceptually, I get the idea, I think.

Input 1 on the linkpi = onn pro #1 tuned to NFL Network
Input 2 on the linkpi = onn pro #2 tuned to Nickelodeon
Input 3 on the linkpi = onn pro #3 tuned to Hallmark

..etc and so on

Is that...accurate? Essentially every screen needs its own dedicated backend streaming device? If we wanted to do 6 screens, I'd be looking at the Link Pi ENC8 as the go to device?

ADBTuner is a great project, but it's not the right one to use with DTVStream, you'll want to head over to the ah4c thread.

There was a brief period in time when the DTV app worked with deeplinks using this project, but a DTV app update broke that compatibility. ah4c still works fine though.

2 Likes

Well I'm beginning to think the problem is my router. I got the onn 4k pro and hooked it up via ethernet cable and interestingly enough, I get an orange light on my router for this connection as well. Anyway, I set everything up correctly, put in the IP address into the ADBTuner settings, and unfortunately I'm just getting the same failed results. I'm thinking it might be time to get a newer WIFI 6 router?

Hmm im not sure what you mean when you say you had an orange light. Im not familiar with consumer routers. Does the onn device work on its own if you stream something? If it does i dont think your router is preventing it from working. The whole idea of isolating this equipment to a switch is to rule out the router. The computer, channels server, adbtuner, and the linkpi's traffic does not have to traverse the router. SInce they are all on the same switch the router does not have any involvement with that traffic. The only device where it does is the onn device and that is for just traffic destined for the internet. Even then if you had an issue where the onn device couldnt connect to the internet, you still should be able to communicate with it locally via adbtuner.

I could be 100% wrong though so swapping your router could help even though my experience says no.

Im leaning with it being an issue with your computer/docker. I am really not a fan of docker for windows but since that is the platform you are on, you dont have much choice. If this were my situation i would rule that out by setting up a linux server, installing docker and adbtuner and seeing if the issue persists. That may be too much in the weeds for you though...

1 Like