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

Rack it up!

Just finished building the 2.0 version of my rack-mounted PoE-powered "HDMI Encoder plus streaming devices with Ethernet" setup. So here it is, just in case anyone else is into this kind of stuff.

I'm using 3x FireStick 4K Max units with the DTV app at the present, but I plugged in an ONN Google TV box as well, so you can see this will support various devices. I'd be willing to put together a parts list for the build if there's interest.

PoE+ is pretty much mandatory to supply the watts required. Everything, including the HDMI Encoder, is being PoE-powered and is Ethernet connected:

6 Likes

Very nice. Would you like to come over and tidy up my set up? :smiley:

I suspect you're not the only one whose setup needs a little tidying. :laughing: I don't know who invented the 19" rack, but without it I'd probably be featured on an episode of Hoarders or maybe on a short list to be cancelled by my homeowner's insurance provider.

And, on a completely different subject, I hope you've all managed to settle your "differences" with FOX before tonight -- 'cause here we... go USWNT!

1 Like

I know this was directed at @Fofer, but I hooked my FBE200 back up as a third device to see how it worked. But for some reason, when I tune into 3 channels, Channels uses both of the URayCoders, but skips right over the FBE200 and goes to my Chrome Capture setup for the third stream. I have "Endpoint Connection Successful" and "Android 12" and "Available" showing in ADBTuner, and I reloaded the M3U in Channels' sources. I watch the streamer attached to the FBE200 using VLC, and it never leaves the Home Screen. I'm probably overlooking something obvious.

This is working great, thanks! Really appreciate being able to access the Haystack News and TikTok apps this way. If anyone has other auto-playing apps that aren't conventional linear broadcasts, please share, I'm finding this very cool.

Sure, happy to test anything out... pretty sure I just successfully updated but don't see a version number. How can I check? I'm using Docker Desktop but installed and later updated (I think?) via terminal command:

docker run -d --restart unless-stopped --init -p 5592:5592 --name adbtuner -v adbtuner_config:/app/.config turtletank99/adbtuner:latest

If there was ever a crowd that is perfect for Portainer -- this is it! Forget about Docker Desktop, forget about the command line -- and install Portainer:

docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 --name portainer \
    --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data \
    cr.portainer.io/portainer/portainer-ce:latest

You want to pull the latest image on a re-deploy, use the slider:

You want to change something in your Docker-Compose:

You want to check the logs:

You want to exec into the container to check something or run a command:

You want see when the image you've downloaded was created:

You want to see what super-cool Channels containers are running, and what ports they're using:

I know developers very often give Docker command line instructions, but Portainer gives you all that same capability with a nice WebUI.

@Fofer docker pull turtletank99/adbtuner will always pull the latest version.

docker stop adbtuner
docker rm adbtuner
docker pull turtletank99/adbtuner
docker run -d --restart unless-stopped --init -p 5592:5592 --name adbtuner -v adbtuner_config:/app/.config turtletank99/adbtuner

Your data will be ok as long as you don't delete the adbtuner_config volume. You can also use the handy "export channel list" feature in ADBTuner to create a backup of the channel config.

@bnhf that rack setup looks great!

@cyberskier Not sure what's going on there, but I do know that Channels can be a bit opaque and sometimes inconsistent regarding source selection when the same channel exists via multiple sources. For testing it might help using a channel that doesn't exist in your Chrome Capture config.

Totally agree with @bnhf. Portainer is very much worth the effort learning. It is so much easier to manage docker setups with more complex configurations. The GUI is so much easier than remembering docker command line syntax.

1 Like

Thanks. I’ve clearly messed something up, because when I do that, to force it to go to the 3rd encoder (FBE200), I get a “404 Not Found” message in the Channels client.

How are you managing Haystack? I have been trying with ADBTuner (on a Synology) with no success (I have to use the original HDMI method instead.) I am using Onn and a Chromecast devices with the same results.

With these settings...


I am getting only this result...

Yep, it was a stupid user error. I forgot that I needed to set the alternate package, as my first two encoders have Fire devices hanging off them, and this third one has an Onn box. So after adding the alternate package on one channel and testing it (I need to go set the alternate package on the others), the first time tuning I had the channel come in momentarily, and then got the "The connection to the tuner was lost. Press play to try again" message. It worked after exiting to the guide and going back to the same channel, but then repeated the message on the third time doing that. This is with the FBE200.

Thanks for that nudge. I have Portainer on one of my Pi's for Scrypted and now it's replaced Docker Desktop on my Mac too. All of my existing dockers and containers still working fine. And you're right, the interface and control are much better with Portainer.

Moving forward, how do I get to that re-deploy slider? I see "recreate" but not "update."

Thanks for this too! I'm now all updated.

I've tested a bit and am still getting the occasional "The connection to the tuner was lost. Press play to try again" error. I could be wrong, but it seems slightly less frequent? But it's still there. Pressing play reconnects to the tuner almost every time, once in a while I have to try twice. Overall it seems a little better though. If I'm channel surfing it's easy to get by, but I'm mostly concerned about this potentially missing scheduled recordings.

Thanks again for your work on this, it's awesome.

Change the URL from "haystacktv://" to "https://haystack.tv"

1 Like

Holy crap! As always awesome @Fofer. Thanks, worked like a charm and skipped the 20 second full screen wait.

Just in case this wasn't obvious with Haystack News, I'd also suggest using the Android remote when logged into the app, to customize it with your interests, weather location, and link to your Google Calendar, etc. Then the ticker at the bottom is personalized for you too.

With android-HDMI-for-Channels and now ADBTuner, the Haystack News app has catapulted to the top of my list of options for "background TV on autoplay." It's a varied-yet-personalized mix of current news clips across multiple sources, including local news, few/no commercials, really well done. Previously I put together a Virtual Channel in CDVR to achieve something similar, but this is much less resource-intensive, no downloading or commercial-skipping needed, the content just streams live.

1 Like

Lol, you loudly proclaimed that these exact settings did not work for you last week so I went digging into the app configuration on your behalf. I don't mind, it's just funny.

Maybe there was some other bug involved at the time though. Glad it's working now!

@Fofer and @cyberskier thanks for the additional testing on the FBE200. I will continue looking towards a solution on that. It it drops out like that it would definitely be an issue with recording and I'm not ok with that if it can be avoided.

You'll want to use Portainer-Stacks moving forward with Docker-Compose. Your stack for ADBTuner would look similar to this, and when you click "Update the stack" you'll see the slider to pull a new image when you redeploy:

Here's my recommended docker-compose yaml for this project:

version: '3.9'
services:
  adbtuner:
    image: turtletank99/adbtuner:latest
    container_name: adbtuner
    dns_search: localdomain # Change to the name of your LAN's domain, which is usually local or localdomain
    init: true
    ports:
      - 5592:5592
    volumes:
      - adbtuner_config:/app/.config
    restart: unless-stopped
volumes:
  adbtuner_config:
1 Like

I hate to do it because I would rather identify and fix the root cause, but I just pushed an update in which ADBTuner will attempt to reconnect to the streaming endpoint a few times if that connection temporarily fails after starting to stream (FBE200).

@Fofer and @cyberskier when you have a free moment if you can update and test it will be much appreciated as always.

I just updated, and gave it a whirl. Maybe it is doing something on the backend without fixing the root cause, but to me, the end user, it seems to be working just like the first two encoders. :+1: :+1: I got two channels working on other devices, to force things thereafter to the FBE200, and I tried about 5 or 6 channels from the guide, and they all loaded fast. Perhaps there was a slight hitch after it first came in, but I'm not sure about that, and wouldn't even see it if I weren't looking for it. Thank you for this! I really appreciate all the effort you've put into this, and sharing it with the community.

3 Likes

I wouldn’t use the words loudly proclaimed. What I stated was exactly the truth and fact. I am assuming that something you did to the docker since then and revisiting those settings have now corrected the issue. Or maybe just uninstalling and reinstalling cleared an error I made. In any case it is working now. And I do loudly proclaim my extreme gratitude to you for this docker and your hard work. Thank you very much.

I'm also going to do an appreciation post to @turtletank for putting in an amazing effort deploying ADBTuner. It's been a really solid application given all a the variabilities in hardware configurations. It a has been really solid for me especially since I returned an old FireTV stick that I borrowed from a friend that was running Android OS 6. I picked up a Onn 4k box that that has been working just fine.

It's the Channels community that really makes the already great Channels app better. Thanks @turtletank !

2 Likes