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

I just finished setting up my ADBTuner - huge thank you to everyone who put this together. It works extremely well and gives a lifeline to getting ESPN after it was removed from TV Everywhere.

I wanted to share this very detailed step-by-step of my install, in case others are on the fence. All of these steps exist in various Community discussion threads and GitHub ReadMe's, but I thought it would be helpful to share one detailed snapshot of one specific setup.

My Ingredients

These are my ingredients… not saying these are optimal or what you should use. Just sharing what specifically I used.

  • Xfinity login. First verify it works in a normal web browser at xfinity.com/stream
  • Channels DVR server
  • LinkPi Encoder v3 with one port
  • FireStick 4k Max v2
  • Machine to host ADBTuner - can be any 24/7 server you already have up and running, including your Channels server; in my case I used a RaspberryPi that was already running Docker

Prerequisites

With your FireStick plugged into a normal TV, install the Xfinity Stream app on your FireStick and login. Use the FireStick remote to click around the Xfinity Stream app to ensure it's working and you're seeing the channels you expect.

Put your FireStick into developer mode and enable ADB. Details here.

Make a note of the IP address of your Channels DVR - typically ends with port 8089 which you can confirm in a web browser. Mine is 192.168.0.x:8089

Make a note of the IP address of the machine that will host ADBTuner. As mentioned above, I'm hosting on a different machine than Channels - mine is 192.168.107.xx

Make a note of the IP address of your FireStick. Mine is 192.168.0.yy

Make a note of the IP address of your LinkPi. Mine is 192.168.107.zz. And then for the path to the live stream add the port 8090 and path stream0 like this - 192.168.107.zz:8090/stream0

Ideally on your router you'd set all of the above IP addresses as fixed IP addresses, so the IP's don't randomly change after a power outage and break all your configs.

Actions

  1. Connect your already setup FireStick to your LinkPi. Verify that you can see the FireStick from your LinkPi Dashboard on 192.168.107.zz. Keep that page open and you'll need to be within remote control range of your FireStick.

  2. Install Docker on your ADBTuner host. I had done this previously so not repeating steps here.

  3. Install ADBTuner on your host machine using this command in your Terminal.

docker run -d --init -p 5592:5592 --name adbtuner -v adbtuner_config:/app/.config turtletank99/adbtuner:stable

  1. Now in any web browser on your local network, you should be able to see your ADBTuner admin console on port 5592. Mine is http://192.168.107.xx:5592/

  2. In the ADBTuner console add your tuner. Name = FireStick, Device IP is the IP of your FireStick = 192.168.0.yy, and Streaming Endpoint = http://192.168.107.zz:8090/stream0

  3. Now on your LinkPi dashboard, keep an eye on the FireStick preview. Your FireStick should display popup message(s) asking you to Allow ADB access. Use your FireStick remote to check the "Always" box and then click OK for however many messages come up.

  4. Now in your ADBTuner dashboard, you should see two green bubbles by the Tuner - mine are "Endpoint Connection Successful" and "Android 11". If these are green that means your ADBTuner machine sees the FireStick (first bubble) and can connect with ADB (second bubble)

  5. In the ADBTuner dashboard, now edit the tuner and turn on Keep Device Awake and choose the Keep Alive Package Name for Xfinity. Mine is com.xfinity.cloudtvr.tenfoot

  6. Now in the ADBTuner dashboard, add your channels. I started with ESPN. To get the URL, on a computer go to Stream and fully open the channel. Copy that URL, and you can simplify the bit after /live/ to just the channel name. So for ESPN:

https://www.xfinity.com/stream/live/ESPND/7642769970651506105/ESPND

Enter Provider Name of Xfinity, Package Name of com.xfinity.cloudtvr.tenfoot and optionally enter the Gracenote ID if you have it - good source here in the tvc-guide-stationid field. If you don't have the Gracenote ID it's fine, you can solve that in Channels. For Configuration, choose Deep Links - Compatibility Mode.

Repeat the above for whatever other channels you want from Xfinity.

  1. Now go to Channels DVR's web interface and choose Settings->Sources. Click Add Source -> Custom Channels. Populate to match the image in the first post on this thread using the URL of your ADB Server port 5592 plus the channels.m3u file. So like this: http://192.168.107.xx:5592/channels.m3u

  2. Still in Channels, click to Manage Lineup for your source. You should see the channels you entered in ADBTuner, and ideally they auto-mapped to a known channel. If not just click the pencil icon and manually map to a known channel so you get the guide data. Also choose favorite channels here by clicking the Heart icon.

  3. Now moment of truth… on your TV, tune to one of your newly-appeared channels that you know came from Xfinity. Simultaneously on your computer keep an eye on the stream on the LinkPi dashboard. Hopefully two things are happening. (1) Hopefully the LinkPi stream shows the Xfinity Stream app booting up and the desired channel being selected. If yes, that would tell you the channel tuning part is working. And (2) hopefully the TV is showing you the same thing you're seeing on the LinkPi stream. If yes, that would tell you the encoder relay is working.

That is it for core setup! Many optional next steps - add more channels from the Xfinity Stream website, add more tuners if your encoder has multiple ports, or just sit back and enjoy Xfinity Stream content through your Channels DVR.

1 Like

If you get an Elgato Cam Link 4K and also a short USB extension, just to protect it you can add a second 1080p 60FPS input to your LinkPi. In the interface it is called USB cam if you aren't aware. I'm sure there are cheaper options for HDMI capture, but I just know that these work very well, although they are pricey. I just have validated that these will output 1080p 60FPS easily.

1 Like

Worth a mention here, that the ah4c project is probably a better choice for at least some Xfinity Stream users -- in particular those who subscribe to premium movie channels; especially if you have a LinkPi Encoder. This is due to ah4c's autocrop feature, which uses the LinkPi API to deal with the half dozen of those premium channels that stream with black borders on all four sides:

Is anyone successfully using ADB Tuner with an NVIDIA Shield and LinkPi setup?
I noticed last night that my Shield issues disappear when I watch OTA channels. It makes me wonder if if the lockups and RST storms I was having with the Shield had something to due with ADBT's proxy. I've already moved on to Apple TV but am still curious as to what was causing my Shield lockup mystery that disappears with Apple TV.

I am using this combination. I don't notice too much out of the ordinary. Though, as we have discussed before, I don't channel surf, so my experience with live TV is not extensive. Also, most of my recordings still are TVE based. It has been a while since we visited this subject. Please refresh my memory...when you mention your "Shield lockup mystery" what exactly do you mean? Perhaps I can test something on my system to replicate your problem.

It's just watching live TV, but with the Shield connected to Wi-Fi specifically, it's more reproducible.
If I have the shield connected over Ethernet, it's much less reproducible. But it's still reproducible. After about 5 minutes, it'll say error connection reset. Sometimes it goes a little bit longer if I'm lucky.

After they came out with a firmware update for the Shield, I decided to test it again alongside all the channels updates for the client. So I played with it last night and realized my OTA channels were just fine and it seems to be what's coming through an ADB Tuner that is having an issue. So, I was just curious if anyone else maybe saw the same thing. I don't really care because I bought two Apple TVs and I'm kind of like done with the shield. It's more of just like peace of mind and closing a chapter, lmao.

My Shield is plugged into one of my mesh nodes, which in turn is hardwired to the network. So, essentially a direct ethernet connection. When I get a chance, I can try unplugging my Shield, enable wifi, and put on a live channel through one of the ADBTuners and see what happens. I'll let you know.

2 Likes

@mackid1993 , I have concluded the test using wifi and an ADBTuner channel, live viewing. It took 24 minutes for the feed to disconnect and give the error message.
As an additional test, I have reconnected the ethernet cable and launched the live viewing again. I'll give it another half hour to see what happens.

So that confirms that it isn't just me me going crazy yay! Thank you @jsfullam. Maybe if this an ADB Tuner issue @turtletank can take a look? I may try AH4C and see if I can repro there.

Edit: It let's not ADBTuner causing the issue. I just confirmed that AH4C also has the same problem, so it's clearly the encoders not playing nicely with the Shield.

I have encountered a strange issue when using ADBTuner with Multiview on channels (AppleTV). I am new to ADBTuner and just got everything setup this week; was doing some testing last night since March Madness is here. I have 2 encoders 1 x LinkPi ENC1-v3 (with Elgato Cam Link) and 1 x LinkPi Enc5-v2 for a total of 7 streams. I have a mix of streaming devices (1x Onn 4k Pro, 3x Onn 4k Plus, 2x Onn Stick and 1x Fire TV Ultra) and all of this works on initial testing however last night I was pushing the setup to it's limits by having 4 x multiview on one TV using 4 of the streams and 3 x multiview on another TV using 3 streams. No issues during playback but when I stopped the TV with 3 streams going 2 of the streams on the 4 stream TV stopped playback and exited back to the YoutubeTV main screen. I reset everything so 7 streams were going again and when I exit multiview on one 2 stop on the other TV as well. I was running the latest development build (20260228-1) so I backed up to the latest stable build (20251228-2) and the same problem exists.

I am not sure if I can blame this issue on ADBTunner or Channels DVR but I don't experience the same behavior when using multiview with TVE/HDHomerun. I am attaching some logs below, the issue occurs in the log time at 15:02:22; I expected the streams to stop for LinkPi 2-1, LinkPi 2-3 and LinkPi 2-2 but not LinkPi 1-1 and LinkPi 2-4. Below is a screenshot showing the 2 streams I did not expect to stop as well just showing the YTTV main screen. Anyone else seen this before, if not anyone up to test and see if you experience the same behavior? I don't find much in the logs to point give me a hint of where the issue is.

ADBTuner Logs:

2026-03-20 15:01:32.884 - stream - [Tune Z6yS6FBsRErjwPU985rPZF] 192.168.130.64:5592 | Go-http-client/1.1
2026-03-20 15:01:32.885 - stream - [Tune (Z6yS6FBsRErjwPU985rPZF)] No active tuners found for SEC Network. Reserving a new tuner.
2026-03-20 15:01:32.885 - tuner_management - [Tune Z6yS6FBsRErjwPU985rPZF] Attempting to reserve tuner for: ['com.google.android.youtube.tvunplugged', 'com.amazon.firetv.youtube.tv'].
2026-03-20 15:01:32.886 - tuner_management - [Tune Z6yS6FBsRErjwPU985rPZF] Available Tuners:
2026-03-20 15:01:32.886 - tuner_management - [Tune Z6yS6FBsRErjwPU985rPZF] Name: LinkPi 2 - 1 Priority: 2
2026-03-20 15:01:32.886 - tuner_management - [Tune Z6yS6FBsRErjwPU985rPZF] Name: LinkPi 2 - 2 Priority: 3
2026-03-20 15:01:32.886 - tuner_management - [Tune Z6yS6FBsRErjwPU985rPZF] Name: LinkPi 2 - 3 Priority: 3
2026-03-20 15:01:32.886 - tuner_management - [Tune Z6yS6FBsRErjwPU985rPZF] Using first available tuner (by priority).
2026-03-20 15:01:32.886 - tuner_management - [Tune Z6yS6FBsRErjwPU985rPZF] Reserved Tuner: Name: LinkPi 2 - 1 Priority: 2
2026-03-20 15:01:32.886 - stream - [Tune (Z6yS6FBsRErjwPU985rPZF)] Tuning to SEC Network on LinkPi 2 - 1
2026-03-20 15:01:32.886 - stream - [Tune (Z6yS6FBsRErjwPU985rPZF)] Using channel configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8)
2026-03-20 15:01:33.364 - lib.adb - [Tune (Z6yS6FBsRErjwPU985rPZF)] ADB: 192.168.130.14 - pidof com.amazon.firetv.youtube.tv
2026-03-20 15:01:33.407 - stream - [Tune (Z6yS6FBsRErjwPU985rPZF)] Using https://tv.youtube.com/watch/LU-XElpC4Zo to load channel.
2026-03-20 15:01:33.407 - lib.adb - [Tune (Z6yS6FBsRErjwPU985rPZF)] ADB: 192.168.130.14 - input keyevent KEYCODE_MEDIA_STOP
2026-03-20 15:01:34.292 - lib.adb - [Tune (Z6yS6FBsRErjwPU985rPZF)] ADB: 192.168.130.14 - am start -W -a android.intent.action.VIEW -d 'https://tv.youtube.com/watch/LU-XElpC4Zo' 'com.amazon.firetv.youtube.tv'
2026-03-20 15:01:34.395 - stream - [Tune Z6yS6FBsRErjwPU985rPZF] Starting tune match text monitoring. Match commands: [{'match_text': ["who's watching", 'choose an account', 'edit profiles'], 'commands': ['input keyevent KEYCODE_DPAD_CENTER'], 'start_checking_after_seconds': 5}]
2026-03-20 15:01:35.669 - stream - [Tune kz3MGWKARR2qzPHttxw2AR] 192.168.130.64:5592 | Go-http-client/1.1
2026-03-20 15:01:35.670 - stream - [Tune (kz3MGWKARR2qzPHttxw2AR)] No active tuners found for ACC Network. Reserving a new tuner.
2026-03-20 15:01:35.670 - tuner_management - [Tune kz3MGWKARR2qzPHttxw2AR] Attempting to reserve tuner for: ['com.google.android.youtube.tvunplugged', 'com.amazon.firetv.youtube.tv'].
2026-03-20 15:01:35.671 - tuner_management - [Tune kz3MGWKARR2qzPHttxw2AR] Available Tuners:
2026-03-20 15:01:35.671 - tuner_management - [Tune kz3MGWKARR2qzPHttxw2AR] Name: LinkPi 2 - 2 Priority: 3
2026-03-20 15:01:35.671 - tuner_management - [Tune kz3MGWKARR2qzPHttxw2AR] Name: LinkPi 2 - 3 Priority: 3
2026-03-20 15:01:35.671 - tuner_management - [Tune kz3MGWKARR2qzPHttxw2AR] Selecting random tuner
2026-03-20 15:01:35.671 - tuner_management - [Tune kz3MGWKARR2qzPHttxw2AR] Reserved Tuner: Name: LinkPi 2 - 3 Priority: 3
2026-03-20 15:01:35.671 - stream - [Tune (kz3MGWKARR2qzPHttxw2AR)] Tuning to ACC Network on LinkPi 2 - 3
2026-03-20 15:01:35.671 - stream - [Tune (kz3MGWKARR2qzPHttxw2AR)] Using channel configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8)
2026-03-20 15:01:36.257 - lib.adb - [Tune (kz3MGWKARR2qzPHttxw2AR)] ADB: 192.168.130.16 - pidof com.google.android.youtube.tvunplugged
2026-03-20 15:01:36.358 - stream - [Tune (kz3MGWKARR2qzPHttxw2AR)] Using https://tv.youtube.com/watch/HmB4f8_5kwE to load channel.
2026-03-20 15:01:36.358 - lib.adb - [Tune (kz3MGWKARR2qzPHttxw2AR)] ADB: 192.168.130.16 - input keyevent KEYCODE_MEDIA_STOP
2026-03-20 15:01:36.469 - lib.adb - [Tune (kz3MGWKARR2qzPHttxw2AR)] ADB: 192.168.130.16 - am start -W -a android.intent.action.VIEW -d 'https://tv.youtube.com/watch/HmB4f8_5kwE' 'com.google.android.youtube.tvunplugged'
2026-03-20 15:01:36.661 - stream - [Tune kz3MGWKARR2qzPHttxw2AR] Starting tune match text monitoring. Match commands: [{'match_text': ["who's watching", 'choose an account', 'edit profiles'], 'commands': ['input keyevent KEYCODE_DPAD_CENTER'], 'start_checking_after_seconds': 5}]
2026-03-20 15:01:37.344 - lib.adb - [Tune (Z6yS6FBsRErjwPU985rPZF)] Detected 100.0% black pixels. Assuming HDCP is active and video is playing.
2026-03-20 15:01:37.345 - stream - [Tune Z6yS6FBsRErjwPU985rPZF] Waiting for playback start. Status: playing
2026-03-20 15:01:37.345 - lib.adb - [Tune (Z6yS6FBsRErjwPU985rPZF)] ADB: Closing connection - 192.168.130.14
2026-03-20 15:01:37.345 - stream - [Tune Z6yS6FBsRErjwPU985rPZF] Tuning completed after 4.46 seconds. [Tune Z6yS6FBsRErjwPU985rPZF] Display was on, application (com.amazon.firetv.youtube.tv) was running.
2026-03-20 15:01:37.345 - stream - Initializing keep active command schedule for tuner LinkPi 2 - 1 (8).
2026-03-20 15:01:37.391 - uvicorn.access - 192.168.130.60:0 - "GET /stream/5 HTTP/1.1" 307
2026/03/20 15:01:37 [PROXY] 192.168.130.60 -> GET "/proxy/8?requestKey=Z6yS6FBsRErjwPU985rPZF" -> "http://192.168.130.10:8090/stream1"
2026-03-20 15:01:39.388 - stream - [Tune 3e7pP6LJZTgsuHsm9ckkFD] 192.168.130.64:5592 | Go-http-client/1.1
2026-03-20 15:01:39.389 - stream - [Tune (3e7pP6LJZTgsuHsm9ckkFD)] No active tuners found for BTN. Reserving a new tuner.
2026-03-20 15:01:39.389 - tuner_management - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Attempting to reserve tuner for: ['com.google.android.youtube.tvunplugged', 'com.amazon.firetv.youtube.tv'].
2026-03-20 15:01:39.389 - tuner_management - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Available Tuners:
2026-03-20 15:01:39.389 - tuner_management - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Name: LinkPi 2 - 2 Priority: 3
2026-03-20 15:01:39.389 - tuner_management - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Using first available tuner (by priority).
2026-03-20 15:01:39.389 - tuner_management - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Reserved Tuner: Name: LinkPi 2 - 2 Priority: 3
2026-03-20 15:01:39.389 - stream - [Tune (3e7pP6LJZTgsuHsm9ckkFD)] Tuning to BTN on LinkPi 2 - 2
2026-03-20 15:01:39.390 - stream - [Tune (3e7pP6LJZTgsuHsm9ckkFD)] Using channel configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8)
2026-03-20 15:01:39.946 - lib.adb - [Tune (3e7pP6LJZTgsuHsm9ckkFD)] ADB: 192.168.130.15 - pidof com.google.android.youtube.tvunplugged
2026-03-20 15:01:40.034 - stream - [Tune (3e7pP6LJZTgsuHsm9ckkFD)] Using https://tv.youtube.com/watch/X6Y2XObNyAc to load channel.
2026-03-20 15:01:40.034 - lib.adb - [Tune (3e7pP6LJZTgsuHsm9ckkFD)] ADB: 192.168.130.15 - input keyevent KEYCODE_MEDIA_STOP
2026-03-20 15:01:40.138 - lib.adb - [Tune (3e7pP6LJZTgsuHsm9ckkFD)] ADB: 192.168.130.15 - am start -W -a android.intent.action.VIEW -d 'https://tv.youtube.com/watch/X6Y2XObNyAc' 'com.google.android.youtube.tvunplugged'
2026-03-20 15:01:40.339 - stream - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Starting tune match text monitoring. Match commands: [{'match_text': ["who's watching", 'choose an account', 'edit profiles'], 'commands': ['input keyevent KEYCODE_DPAD_CENTER'], 'start_checking_after_seconds': 5}]
2026-03-20 15:01:40.586 - stream - [Tune Z6yS6FBsRErjwPU985rPZF] Text match result: Text to match: ["who's watching", 'choose an account', 'edit profiles']. Matches found: None.
2026-03-20 15:01:41.212 - server - 
--------------------------------------------------
Tuner "LinkPi 1 - 0" is currently in use and locked.
Tune ID: 7yZ4eGYatL4YTALp9fADWX

Channel: TBS
Lock Obtained: 2026-03-20 14:59:55 (1.77 minutes ago)
Last Seen: 2026-03-20 15:01:40 (1.21 seconds ago)
Bytes Transferred: 103687832 (98.88MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
--------------------------------------------------
Tuner "LinkPi 1 - 1" is currently in use and locked.
Tune ID: WsUXgdqcPUeakJp2Sxj3dv

Channel: TRU
Lock Obtained: 2026-03-20 14:59:58 (1.72 minutes ago)
Last Seen: 2026-03-20 15:01:40 (1.21 seconds ago)
Bytes Transferred: 105560496 (100.67MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
--------------------------------------------------
Tuner "LinkPi 2 - 0" is currently in use and locked.
Tune ID: iQJb7Zytnd84grcgGdWVrd

Channel: TNT
Lock Obtained: 2026-03-20 15:00:00 (1.69 minutes ago)
Last Seen: 2026-03-20 15:01:40 (1.21 seconds ago)
Bytes Transferred: 70148252 (66.9MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
--------------------------------------------------
Tuner "LinkPi 2 - 4" is currently in use and locked.
Tune ID: 45LqZSAsKYd6YoRZve4wGj
Channel: ESPNUHD
Lock Obtained: 2026-03-20 15:00:09 (1.54 minutes ago)
Last Seen: 2026-03-20 15:01:41 (0.21 seconds ago)
Bytes Transferred: 92343720 (88.07MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
--------------------------------------------------
Tuner "LinkPi 2 - 1" is currently in use and locked.
Tune ID: Z6yS6FBsRErjwPU985rPZF
Channel: SEC Network
Lock Obtained: 2026-03-20 15:01:32 (0.15 minutes ago)
Last Seen: 2026-03-20 15:01:40 (1.21 seconds ago)
Bytes Transferred: 4796444 (4.57MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
--------------------------------------------------
Tuner "LinkPi 2 - 3" is currently in use and locked.

Tune ID: N/A
Channel: ACC Network
Lock Obtained: 2026-03-20 15:01:35 (0.1 minutes ago)
Last Seen: N/A
Bytes Transferred: None
Remote User Agent:
N/A
--------------------------------------------------
--------------------------------------------------
Tuner "LinkPi 2 - 2" is currently in use and locked.

Tune ID: N/A

Channel: BTN
Lock Obtained: 2026-03-20 15:01:39 (0.04 minutes ago)
Last Seen: N/A
Bytes Transferred: None
Remote User Agent:
N/A
--------------------------------------------------
2026-03-20 15:01:42.474 - lib.adb - [Tune (kz3MGWKARR2qzPHttxw2AR)] Detected 100.0% black pixels. Assuming HDCP is active and video is playing.
2026-03-20 15:01:42.475 - stream - [Tune kz3MGWKARR2qzPHttxw2AR] Waiting for playback start. Status: playing
2026-03-20 15:01:42.475 - lib.adb - [Tune (kz3MGWKARR2qzPHttxw2AR)] ADB: Closing connection - 192.168.130.16
2026-03-20 15:01:42.475 - stream - [Tune kz3MGWKARR2qzPHttxw2AR] Tuning completed after 6.81 seconds. [Tune kz3MGWKARR2qzPHttxw2AR] Display was on, application (com.google.android.youtube.tvunplugged) was running.
2026-03-20 15:01:42.475 - stream - Initializing keep active command schedule for tuner LinkPi 2 - 3 (10).
2026-03-20 15:01:42.477 - uvicorn.access - 192.168.130.60:0 - "GET /stream/6 HTTP/1.1" 307
2026/03/20 15:01:42 [PROXY] 192.168.130.60 -> GET "/proxy/10?requestKey=kz3MGWKARR2qzPHttxw2AR" -> "http://192.168.130.10:8090/stream3"
2026-03-20 15:01:42.627 - lib.adb - [Tune Z6yS6FBsRErjwPU985rPZF] On screen text: '~  = ui t “ hs ayia ft to > is 5 sd | ~ hee'
2026-03-20 15:01:42.627 - stream - [Tune Z6yS6FBsRErjwPU985rPZF] Text match result: Text to match: ["who's watching", 'choose an account', 'edit profiles']. Matches found: None.
2026-03-20 15:01:42.904 - lib.adb - H264 video with a short GOP (1-3 seconds) is highly recommended. Other configurations will result in tuning delays.
2026-03-20 15:01:43.453 - stream - [Tune kz3MGWKARR2qzPHttxw2AR] Text match result: Text to match: ["who's watching", 'choose an account', 'edit profiles']. Matches found: None.
2026-03-20 15:01:44.871 - lib.adb - [Tune Z6yS6FBsRErjwPU985rPZF] Detected 100.0% black pixels. Assuming HDCP is active and video is playing.
2026-03-20 15:01:44.871 - stream - [Tune Z6yS6FBsRErjwPU985rPZF] Media playback detected. Stopping tuning text match process.
2026-03-20 15:01:45.135 - lib.adb - [Tune kz3MGWKARR2qzPHttxw2AR] On screen text: 'ae h  ' . - ve : can " " - — : " a a  - m= e a tn'
2026-03-20 15:01:45.135 - stream - [Tune kz3MGWKARR2qzPHttxw2AR] Text match result: Text to match: ["who's watching", 'choose an account', 'edit profiles']. Matches found: None.
2026-03-20 15:01:45.951 - maintenance - Skipping keep alive tasks as it's currently the top or middle of the hour.
2026-03-20 15:01:46.527 - lib.adb - [Tune (3e7pP6LJZTgsuHsm9ckkFD)] Detected 100.0% black pixels. Assuming HDCP is active and video is playing.
2026-03-20 15:01:46.528 - stream - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Waiting for playback start. Status: playing
2026-03-20 15:01:46.528 - lib.adb - [Tune (3e7pP6LJZTgsuHsm9ckkFD)] ADB: Closing connection - 192.168.130.15
2026-03-20 15:01:46.528 - stream - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Tuning completed after 7.14 seconds. [Tune 3e7pP6LJZTgsuHsm9ckkFD] Display was on, application (com.google.android.youtube.tvunplugged) was running.
2026-03-20 15:01:46.528 - stream - Initializing keep active command schedule for tuner LinkPi 2 - 2 (9).
2026-03-20 15:01:46.598 - uvicorn.access - 192.168.130.60:0 - "GET /stream/40 HTTP/1.1" 307
2026/03/20 15:01:46 [PROXY] 192.168.130.60 -> GET "/proxy/9?requestKey=3e7pP6LJZTgsuHsm9ckkFD" -> "http://192.168.130.10:8090/stream2"
2026-03-20 15:01:47.092 - stream - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Text match result: Text to match: ["who's watching", 'choose an account', 'edit profiles']. Matches found: None.
2026-03-20 15:01:49.088 - stream - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Text match result: Text to match: ["who's watching", 'choose an account', 'edit profiles']. Matches found: None.
2026-03-20 15:01:49.146 - lib.adb - [Tune kz3MGWKARR2qzPHttxw2AR] Detected 100.0% black pixels. Assuming HDCP is active and video is playing.
2026-03-20 15:01:49.146 - stream - [Tune kz3MGWKARR2qzPHttxw2AR] Media playback detected. Stopping tuning text match process.
2026-03-20 15:01:53.185 - lib.adb - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Detected 100.0% black pixels. Assuming HDCP is active and video is playing.
2026-03-20 15:01:53.185 - stream - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Media playback detected. Stopping tuning text match process.
2026-03-20 15:02:11.227 - server - 
--------------------------------------------------
Tuner "LinkPi 1 - 0" is currently in use and locked.
Tune ID: 7yZ4eGYatL4YTALp9fADWX

Channel: TBS
Lock Obtained: 2026-03-20 14:59:55 (2.27 minutes ago)
Last Seen: 2026-03-20 15:02:10 (1.23 seconds ago)
Bytes Transferred: 132848492 (126.69MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
--------------------------------------------------
Tuner "LinkPi 1 - 1" is currently in use and locked.
Tune ID: WsUXgdqcPUeakJp2Sxj3dv

Channel: TRU
Lock Obtained: 2026-03-20 14:59:58 (2.22 minutes ago)
Last Seen: 2026-03-20 15:02:10 (1.23 seconds ago)
Bytes Transferred: 139035588 (132.59MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
--------------------------------------------------
Tuner "LinkPi 2 - 0" is currently in use and locked.
Tune ID: iQJb7Zytnd84grcgGdWVrd

Channel: TNT
Lock Obtained: 2026-03-20 15:00:00 (2.19 minutes ago)
Last Seen: 2026-03-20 15:02:10 (1.23 seconds ago)
Bytes Transferred: 102838632 (98.07MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
--------------------------------------------------
Tuner "LinkPi 2 - 4" is currently in use and locked.
Tune ID: 45LqZSAsKYd6YoRZve4wGj
Channel: ESPNUHD
Lock Obtained: 2026-03-20 15:00:09 (2.04 minutes ago)
Last Seen: 2026-03-20 15:02:11 (0.23 seconds ago)
Bytes Transferred: 115021220 (109.69MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
--------------------------------------------------
Tuner "LinkPi 2 - 1" is currently in use and locked.
Tune ID: Z6yS6FBsRErjwPU985rPZF
Channel: SEC Network
Lock Obtained: 2026-03-20 15:01:32 (0.65 minutes ago)
Last Seen: 2026-03-20 15:02:10 (1.23 seconds ago)
Bytes Transferred: 19484132 (18.58MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
--------------------------------------------------
Tuner "LinkPi 2 - 3" is currently in use and locked.
Tune ID: kz3MGWKARR2qzPHttxw2AR
Channel: ACC Network
Lock Obtained: 2026-03-20 15:01:35 (0.6 minutes ago)
Last Seen: 2026-03-20 15:02:10 (1.23 seconds ago)
Bytes Transferred: 29635004 (28.26MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
--------------------------------------------------
Tuner "LinkPi 2 - 2" is currently in use and locked.
Tune ID: 3e7pP6LJZTgsuHsm9ckkFD

Channel: BTN
Lock Obtained: 2026-03-20 15:01:39 (0.54 minutes ago)
Last Seen: 2026-03-20 15:02:10 (1.23 seconds ago)
Bytes Transferred: 30101056 (28.71MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
2026-03-20 15:02:18.581 - tuner_management - Releasing tuner 8 as it has been inactive for 3 seconds.
2026-03-20 15:02:18.581 - tuner_management - Releasing tuner: {'lock_obtained': 1774018892, 'tuner_name': 'LinkPi 2 - 1', 'name': 'SEC Network', 'number': 6144, 'provider_name': 'YTTV', 'tuner_id': 8, 'channel_id': 5, 'tuning_status': 'tuned', 'request_key': 'Z6yS6FBsRErjwPU985rPZF', 'target_package': 'com.amazon.firetv.youtube.tv'}
2026-03-20 15:02:18.985 - tuner_management - [Tune Z6yS6FBsRErjwPU985rPZF] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.
2026-03-20 15:02:18.985 - lib.adb - [Tune Z6yS6FBsRErjwPU985rPZF] ADB: 192.168.130.14 - input keyevent KEYCODE_MEDIA_STOP
2026-03-20 15:02:20.032 - lib.adb - [Tune Z6yS6FBsRErjwPU985rPZF] ADB: 192.168.130.14 - input keyevent KEYCODE_MEDIA_PAUSE
2026-03-20 15:02:20.916 - tuner_management - [Tune Z6yS6FBsRErjwPU985rPZF] Released tuner (8).
2026-03-20 15:02:20.916 - tuner_management - [Tune Z6yS6FBsRErjwPU985rPZF] Cleanup complete. LinkPi 2 - 1 (SEC Network)
2026-03-20 15:02:20.916 - tuner_management - Releasing tuner 10 as it has been inactive for 5 seconds.
2026-03-20 15:02:20.916 - tuner_management - Releasing tuner: {'lock_obtained': 1774018895, 'tuner_name': 'LinkPi 2 - 3', 'name': 'ACC Network', 'number': 6147, 'provider_name': 'YTTV', 'tuner_id': 10, 'channel_id': 6, 'tuning_status': 'tuned', 'request_key': 'kz3MGWKARR2qzPHttxw2AR', 'target_package': 'com.google.android.youtube.tvunplugged'}
2026-03-20 15:02:21.299 - tuner_management - [Tune kz3MGWKARR2qzPHttxw2AR] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.
2026-03-20 15:02:21.299 - lib.adb - [Tune kz3MGWKARR2qzPHttxw2AR] ADB: 192.168.130.16 - input keyevent KEYCODE_MEDIA_STOP
2026-03-20 15:02:21.512 - lib.adb - [Tune kz3MGWKARR2qzPHttxw2AR] ADB: 192.168.130.16 - input keyevent KEYCODE_MEDIA_PAUSE
2026-03-20 15:02:21.735 - tuner_management - [Tune kz3MGWKARR2qzPHttxw2AR] Released tuner (10).
2026-03-20 15:02:21.735 - tuner_management - [Tune kz3MGWKARR2qzPHttxw2AR] Cleanup complete. LinkPi 2 - 3 (ACC Network)
2026-03-20 15:02:21.735 - tuner_management - Releasing tuner 6 as it has been inactive for 3 seconds.
2026-03-20 15:02:21.735 - tuner_management - Releasing tuner: {'lock_obtained': 1774018798, 'tuner_name': 'LinkPi 1 - 1', 'name': 'TRU', 'number': 6037, 'provider_name': 'YTTV', 'tuner_id': 6, 'channel_id': 33, 'tuning_status': 'tuned', 'request_key': 'WsUXgdqcPUeakJp2Sxj3dv', 'target_package': 'com.google.android.youtube.tvunplugged'}
2026-03-20 15:02:22.192 - tuner_management - [Tune WsUXgdqcPUeakJp2Sxj3dv] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.
2026-03-20 15:02:22.192 - lib.adb - [Tune WsUXgdqcPUeakJp2Sxj3dv] ADB: 192.168.130.13 - input keyevent KEYCODE_MEDIA_STOP
2026-03-20 15:02:22.321 - lib.adb - [Tune WsUXgdqcPUeakJp2Sxj3dv] ADB: 192.168.130.13 - input keyevent KEYCODE_MEDIA_PAUSE
2026-03-20 15:02:22.461 - tuner_management - [Tune WsUXgdqcPUeakJp2Sxj3dv] Released tuner (6).
2026-03-20 15:02:22.461 - tuner_management - [Tune WsUXgdqcPUeakJp2Sxj3dv] Cleanup complete. LinkPi 1 - 1 (TRU)
2026-03-20 15:02:22.461 - tuner_management - Releasing tuner 11 as it has been inactive for 4 seconds.
2026-03-20 15:02:22.461 - tuner_management - Releasing tuner: {'lock_obtained': 1774018809, 'tuner_name': 'LinkPi 2 - 4', 'name': 'ESPNUHD', 'number': 6142, 'provider_name': 'YTTV', 'tuner_id': 11, 'channel_id': 3, 'tuning_status': 'tuned', 'request_key': '45LqZSAsKYd6YoRZve4wGj', 'target_package': 'com.google.android.youtube.tvunplugged'}
2026-03-20 15:02:22.772 - tuner_management - [Tune 45LqZSAsKYd6YoRZve4wGj] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.
2026-03-20 15:02:22.772 - lib.adb - [Tune 45LqZSAsKYd6YoRZve4wGj] ADB: 192.168.130.17 - input keyevent KEYCODE_MEDIA_STOP
2026-03-20 15:02:22.847 - lib.adb - [Tune 45LqZSAsKYd6YoRZve4wGj] ADB: 192.168.130.17 - input keyevent KEYCODE_MEDIA_PAUSE
2026-03-20 15:02:22.985 - tuner_management - [Tune 45LqZSAsKYd6YoRZve4wGj] Released tuner (11).
2026-03-20 15:02:22.985 - tuner_management - [Tune 45LqZSAsKYd6YoRZve4wGj] Cleanup complete. LinkPi 2 - 4 (ESPNUHD)
2026-03-20 15:02:22.985 - tuner_management - Releasing tuner 9 as it has been inactive for 7 seconds.
2026-03-20 15:02:22.985 - tuner_management - Releasing tuner: {'lock_obtained': 1774018899, 'tuner_name': 'LinkPi 2 - 2', 'name': 'BTN', 'number': 6199, 'provider_name': 'YTTV', 'tuner_id': 9, 'channel_id': 40, 'tuning_status': 'tuned', 'request_key': '3e7pP6LJZTgsuHsm9ckkFD', 'target_package': 'com.google.android.youtube.tvunplugged'}
2026-03-20 15:02:23.252 - tuner_management - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.
2026-03-20 15:02:23.252 - lib.adb - [Tune 3e7pP6LJZTgsuHsm9ckkFD] ADB: 192.168.130.15 - input keyevent KEYCODE_MEDIA_STOP
2026-03-20 15:02:23.441 - lib.adb - [Tune 3e7pP6LJZTgsuHsm9ckkFD] ADB: 192.168.130.15 - input keyevent KEYCODE_MEDIA_PAUSE
2026-03-20 15:02:23.673 - tuner_management - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Released tuner (9).
2026-03-20 15:02:23.673 - tuner_management - [Tune 3e7pP6LJZTgsuHsm9ckkFD] Cleanup complete. LinkPi 2 - 2 (BTN)
2026-03-20 15:02:41.241 - server - 
--------------------------------------------------
Tuner "LinkPi 1 - 0" is currently in use and locked.
Tune ID: 7yZ4eGYatL4YTALp9fADWX

Channel: TBS
Lock Obtained: 2026-03-20 14:59:55 (2.77 minutes ago)
Last Seen: 2026-03-20 15:02:40 (1.24 seconds ago)
Bytes Transferred: 165144840 (157.49MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
--------------------------------------------------
Tuner "LinkPi 2 - 0" is currently in use and locked.
Tune ID: iQJb7Zytnd84grcgGdWVrd

Channel: TNT
Lock Obtained: 2026-03-20 15:00:00 (2.69 minutes ago)
Last Seen: 2026-03-20 15:02:40 (1.24 seconds ago)
Bytes Transferred: 129733912 (123.72MB)
Remote User Agent:
Go-http-client/1.1
--------------------------------------------------
2026-03-20 15:02:50.049 - tuner_management - Releasing tuner 7 as it has been inactive for 3 seconds.
2026-03-20 15:02:50.049 - tuner_management - Releasing tuner: {'lock_obtained': 1774018800, 'tuner_name': 'LinkPi 2 - 0', 'name': 'TNT', 'number': 6035, 'provider_name': 'YTTV', 'tuner_id': 7, 'channel_id': 31, 'tuning_status': 'tuned', 'request_key': 'iQJb7Zytnd84grcgGdWVrd', 'target_package': 'com.google.android.youtube.tvunplugged'}
2026-03-20 15:02:50.427 - tuner_management - [Tune iQJb7Zytnd84grcgGdWVrd] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.
2026-03-20 15:02:50.427 - lib.adb - [Tune iQJb7Zytnd84grcgGdWVrd] ADB: 192.168.130.12 - input keyevent KEYCODE_MEDIA_STOP
2026-03-20 15:02:50.543 - lib.adb - [Tune iQJb7Zytnd84grcgGdWVrd] ADB: 192.168.130.12 - input keyevent KEYCODE_MEDIA_PAUSE
2026-03-20 15:02:50.672 - tuner_management - [Tune iQJb7Zytnd84grcgGdWVrd] Released tuner (7).
2026-03-20 15:02:50.672 - tuner_management - [Tune iQJb7Zytnd84grcgGdWVrd] Cleanup complete. LinkPi 2 - 0 (TNT)
2026-03-20 15:02:51.686 - tuner_management - Releasing tuner 4 as it has been inactive for 3 seconds.
2026-03-20 15:02:51.686 - tuner_management - Releasing tuner: {'lock_obtained': 1774018795, 'tuner_name': 'LinkPi 1 - 0', 'name': 'TBS', 'number': 6033, 'provider_name': 'YTTV', 'tuner_id': 4, 'channel_id': 32, 'tuning_status': 'tuned', 'request_key': '7yZ4eGYatL4YTALp9fADWX', 'target_package': 'com.google.android.youtube.tvunplugged'}
2026-03-20 15:02:51.906 - tuner_management - [Tune 7yZ4eGYatL4YTALp9fADWX] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.
2026-03-20 15:02:51.906 - lib.adb - [Tune 7yZ4eGYatL4YTALp9fADWX] ADB: 192.168.130.11 - input keyevent KEYCODE_MEDIA_STOP
2026-03-20 15:02:52.016 - lib.adb - [Tune 7yZ4eGYatL4YTALp9fADWX] ADB: 192.168.130.11 - input keyevent KEYCODE_MEDIA_PAUSE
2026-03-20 15:02:52.196 - tuner_management - [Tune 7yZ4eGYatL4YTALp9fADWX] Released tuner (4).
2026-03-20 15:02:52.196 - tuner_management - [Tune 7yZ4eGYatL4YTALp9fADWX] Cleanup complete. LinkPi 1 - 0 (TBS)

Snip of ChannelsDVR Logs:

2026/03/20 11:00:00.363216 [TNR] Opened connection to M3U-ADBTunner for ch6033 TBS
2026/03/20 11:00:05.953616 [TNR] Opened connection to M3U-ADBTunner for ch6035 TNT
2026/03/20 11:00:07.290461 [TNR] Opened connection to M3U-ADBTunner for ch6037 TRU
2026/03/20 11:00:19.019222 [TNR] Opened connection to M3U-ADBTunner for ch6142 ESPNUHD
2026/03/20 11:00:38.899660 [TNR] Opened connection to M3U-ADBTunner for ch6140 ESPN
2026/03/20 11:00:53.697471 [TNR] Opened connection to M3U-ADBTunner for ch6141 ESPN2
2026/03/20 11:00:59.391497 [TNR] Opened connection to M3U-ADBTunner for ch6143 ESPNews
2026/03/20 11:01:21.784838 [SNR] Buffer statistics for 192.168.130.162 (Kevins OLED) for ch6143 ESPNews: buf=0% drop=0%
2026/03/20 11:01:21.784897 [TNR] Closed connection to M3U-ADBTunner for ch6143 ESPNews
2026/03/20 11:01:21.789655 [SNR] Buffer statistics for 192.168.130.162 (Kevins OLED) for ch6141 ESPN2: buf=0% drop=0%
2026/03/20 11:01:21.789695 [TNR] Closed connection to M3U-ADBTunner for ch6141 ESPN2
2026/03/20 11:01:21.810156 [SNR] Buffer statistics for 192.168.130.162 (Kevins OLED) for ch6140 ESPN: buf=0% drop=0%
2026/03/20 11:01:21.810189 [TNR] Closed connection to M3U-ADBTunner for ch6140 ESPN
2026/03/20 11:01:37.395378 [TNR] Opened connection to M3U-ADBTunner for ch6144 SEC Network
2026/03/20 11:01:42.480819 [TNR] Opened connection to M3U-ADBTunner for ch6147 ACC Network
2026/03/20 11:01:46.601322 [TNR] Opened connection to M3U-ADBTunner for ch6199 BTN
2026/03/20 11:02:15.806756 [SNR] Buffer statistics for 192.168.130.162 (Kevins OLED) for ch6144 SEC Network: buf=0% drop=0%
2026/03/20 11:02:15.806805 [TNR] Closed connection to M3U-ADBTunner for ch6144 SEC Network
2026/03/20 11:02:15.844774 [SNR] Buffer statistics for 192.168.130.162 (Kevins OLED) for ch6199 BTN: buf=0% drop=0%
2026/03/20 11:02:15.844819 [TNR] Closed connection to M3U-ADBTunner for ch6199 BTN
2026/03/20 11:02:15.906354 [SNR] Buffer statistics for 192.168.130.162 (Kevins OLED) for ch6147 ACC Network: buf=0% drop=0%
2026/03/20 11:02:15.906390 [TNR] Closed connection to M3U-ADBTunner for ch6147 ACC Network
2026/03/20 11:02:48.554841 [SNR] Buffer statistics for 192.168.130.94 (Living Left) for ch6035 TNT: buf=0% drop=0%
2026/03/20 11:02:48.554875 [TNR] Closed connection to M3U-ADBTunner for ch6035 TNT
2026/03/20 11:02:48.587531 [SNR] Buffer statistics for 192.168.130.94 (Living Left) for ch6142 ESPNUHD: buf=0% drop=0%
2026/03/20 11:02:48.587559 [TNR] Closed connection to M3U-ADBTunner for ch6142 ESPNUHD
2026/03/20 11:02:48.638222 [SNR] Buffer statistics for 192.168.130.94 (Living Left) for ch6033 TBS: buf=0% drop=0%
2026/03/20 11:02:48.638256 [TNR] Closed connection to M3U-ADBTunner for ch6033 TBS
2026/03/20 11:02:48.668962 [SNR] Buffer statistics for 192.168.130.94 (Living Left) for ch6037 TRU: buf=0% drop=0%
2026/03/20 11:02:48.669001 [TNR] Closed connection to M3U-ADBTunner for ch6037 TRU

It looks to me like as far as ADBTuner and CDVR are concerned, you still have active streams on all four of your Multiview feeds. Are you signed up for the YTTV 4K plan that allows you to have more than 3 streams?

I am on the YTTV 4k Plan with unlimited streams, I can have 7 streams going (with the correct video playing) for hours using ADBTuner, the issue only occurs when I stop multiview on one of the TVs.

Can you try the same using 7 different devices? It'd be good to know if Multiview actually factors in here somehow...

I sure can try, let me see if I can get 7 going at once... I will report back in a few minutes.

Also, I wonder why these two don't have Tune ID values?

I managed to get 7 individals streams going ( 5x AppleTV, Mac and iPhone); all were playing fine.... Stopping one stream had no effect on the others but when I hit stop on 3 of the ATVs at once all but one stream stoped, as in they went to the YTTV Main screen - the actual LinkPi stream was still going so it seems that multiview is not the cause but stopping multiple streams simultaneously is cauing this behavior.

`2026-03-20 16:27:44.635 - server - 

--------------------------------------------------

Tuner "LinkPi 1 - 0" is currently in use and locked.

Tune ID: 9gm5sz4qzfiquASpvkEgxG

Channel: ESPN

Lock Obtained: 2026-03-20 16:24:01 (3.73 minutes ago)

Last Seen: 2026-03-20 16:27:43 (1.64 seconds ago)

Bytes Transferred: 234294624 (223.44MB)

Remote User Agent:

Go-http-client/1.1

--------------------------------------------------

--------------------------------------------------

Tuner "LinkPi 1 - 1" is currently in use and locked.

Tune ID: 4u5LAQvW4nSDYYXDojG23m

Channel: ESPN2

Lock Obtained: 2026-03-20 16:24:09 (3.59 minutes ago)

Last Seen: 2026-03-20 16:27:44 (0.64 seconds ago)

Bytes Transferred: 232073916 (221.32MB)

Remote User Agent:

Go-http-client/1.1

--------------------------------------------------

--------------------------------------------------

Tuner "LinkPi 2 - 4" is currently in use and locked.

Tune ID: AJhjP53vf9SbsmS5w5uo6V

Channel: ESPNews

Lock Obtained: 2026-03-20 16:25:34 (2.18 minutes ago)

Last Seen: 2026-03-20 16:27:44 (0.64 seconds ago)

Bytes Transferred: 120219420 (114.65MB)

Remote User Agent:

Go-http-client/1.1

--------------------------------------------------

--------------------------------------------------

Tuner "LinkPi 2 - 1" is currently in use and locked.

Tune ID: hjBzbi2C3iubupu69DHWQA


Channel: TBS

Lock Obtained: 2026-03-20 16:26:07 (1.63 minutes ago)

Last Seen: 2026-03-20 16:27:43 (1.64 seconds ago)

Bytes Transferred: 105302748 (100.42MB)

Remote User Agent:

Go-http-client/1.1

--------------------------------------------------

--------------------------------------------------

Tuner "LinkPi 2 - 3" is currently in use and locked.

Tune ID: fLFj2i58TRazANS2uZoUt9


Channel: TNT

Lock Obtained: 2026-03-20 16:26:29 (1.26 minutes ago)

Last Seen: 2026-03-20 16:27:42 (2.64 seconds ago)

Bytes Transferred: 66376032 (63.3MB)

Remote User Agent:

Go-http-client/1.1

--------------------------------------------------

--------------------------------------------------

Tuner "LinkPi 2 - 0" is currently in use and locked.

Tune ID: EunoSQAXfK7Gh9GHPLbJJL

Channel: ESPNUHD

Lock Obtained: 2026-03-20 16:26:39 (1.09 minutes ago)

Last Seen: 2026-03-20 16:27:44 (0.64 seconds ago)

Bytes Transferred: 74547076 (71.09MB)

Remote User Agent:

Go-http-client/1.1

--------------------------------------------------

--------------------------------------------------

Tuner "LinkPi 2 - 2" is currently in use and locked.

Tune ID: 4hZgRPkYUbybtExSxnijy6

Channel: SEC Network

Lock Obtained: 2026-03-20 16:27:24 (0.34 minutes ago)

Last Seen: 2026-03-20 16:27:43 (1.64 seconds ago)

Bytes Transferred: 14370532 (13.7MB)

Remote User Agent:

Go-http-client/1.1

--------------------------------------------------

2026-03-20 16:27:45.054 - tuner_management - Releasing tuner 10 as it has been inactive for 3 seconds.

2026-03-20 16:27:45.054 - tuner_management - Releasing tuner: {'lock_obtained': 1774023989, 'tuner_name': 'LinkPi 2 - 3', 'name': 'TNT', 'number': 6035, 'provider_name': 'YTTV', 'tuner_id': 10, 'channel_id': 31, 'tuning_status': 'tuned', 'request_key': 'fLFj2i58TRazANS2uZoUt9', 'target_package': 'com.google.android.youtube.tvunplugged'}

2026-03-20 16:27:45.364 - tuner_management - [Tune fLFj2i58TRazANS2uZoUt9] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.

2026-03-20 16:27:45.364 - lib.adb - [Tune fLFj2i58TRazANS2uZoUt9] ADB: 192.168.130.16 - input keyevent KEYCODE_MEDIA_STOP

2026-03-20 16:27:45.617 - lib.adb - [Tune fLFj2i58TRazANS2uZoUt9] ADB: 192.168.130.16 - input keyevent KEYCODE_MEDIA_PAUSE

2026-03-20 16:27:45.839 - tuner_management - [Tune fLFj2i58TRazANS2uZoUt9] Released tuner (10).

2026-03-20 16:27:45.839 - tuner_management - [Tune fLFj2i58TRazANS2uZoUt9] Cleanup complete. LinkPi 2 - 3 (TNT)

2026-03-20 16:27:46.853 - tuner_management - Releasing tuner 8 as it has been inactive for 3 seconds.

2026-03-20 16:27:46.853 - tuner_management - Releasing tuner: {'lock_obtained': 1774023967, 'tuner_name': 'LinkPi 2 - 1', 'name': 'TBS', 'number': 6033, 'provider_name': 'YTTV', 'tuner_id': 8, 'channel_id': 32, 'tuning_status': 'tuned', 'request_key': 'hjBzbi2C3iubupu69DHWQA', 'target_package': 'com.amazon.firetv.youtube.tv'}

2026-03-20 16:27:46.984 - tuner_management - [Tune hjBzbi2C3iubupu69DHWQA] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.

2026-03-20 16:27:46.984 - lib.adb - [Tune hjBzbi2C3iubupu69DHWQA] ADB: 192.168.130.14 - input keyevent KEYCODE_MEDIA_STOP

2026-03-20 16:27:48.029 - lib.adb - [Tune hjBzbi2C3iubupu69DHWQA] ADB: 192.168.130.14 - input keyevent KEYCODE_MEDIA_PAUSE

2026-03-20 16:27:48.960 - tuner_management - [Tune hjBzbi2C3iubupu69DHWQA] Released tuner (8).

2026-03-20 16:27:48.960 - tuner_management - [Tune hjBzbi2C3iubupu69DHWQA] Cleanup complete. LinkPi 2 - 1 (TBS)

2026-03-20 16:27:48.960 - tuner_management - Releasing tuner 9 as it has been inactive for 5 seconds.

2026-03-20 16:27:48.960 - tuner_management - Releasing tuner: {'lock_obtained': 1774024044, 'tuner_name': 'LinkPi 2 - 2', 'name': 'SEC Network', 'number': 6144, 'provider_name': 'YTTV', 'tuner_id': 9, 'channel_id': 5, 'tuning_status': 'tuned', 'request_key': '4hZgRPkYUbybtExSxnijy6', 'target_package': 'com.google.android.youtube.tvunplugged'}

2026-03-20 16:27:49.239 - tuner_management - [Tune 4hZgRPkYUbybtExSxnijy6] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.

2026-03-20 16:27:49.239 - lib.adb - [Tune 4hZgRPkYUbybtExSxnijy6] ADB: 192.168.130.15 - input keyevent KEYCODE_MEDIA_STOP

2026-03-20 16:27:49.403 - lib.adb - [Tune 4hZgRPkYUbybtExSxnijy6] ADB: 192.168.130.15 - input keyevent KEYCODE_MEDIA_PAUSE

2026-03-20 16:27:49.614 - tuner_management - [Tune 4hZgRPkYUbybtExSxnijy6] Released tuner (9).

2026-03-20 16:27:49.614 - tuner_management - [Tune 4hZgRPkYUbybtExSxnijy6] Cleanup complete. LinkPi 2 - 2 (SEC Network)

2026-03-20 16:27:49.615 - tuner_management - Releasing tuner 6 as it has been inactive for 3 seconds.

2026-03-20 16:27:49.615 - tuner_management - Releasing tuner: {'lock_obtained': 1774023849, 'tuner_name': 'LinkPi 1 - 1', 'name': 'ESPN2', 'number': 6141, 'provider_name': 'YTTV', 'tuner_id': 6, 'channel_id': 2, 'tuning_status': 'tuned', 'request_key': '4u5LAQvW4nSDYYXDojG23m', 'target_package': 'com.google.android.youtube.tvunplugged'}

2026-03-20 16:27:49.977 - tuner_management - [Tune 4u5LAQvW4nSDYYXDojG23m] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.

2026-03-20 16:27:49.977 - lib.adb - [Tune 4u5LAQvW4nSDYYXDojG23m] ADB: 192.168.130.13 - input keyevent KEYCODE_MEDIA_STOP

2026-03-20 16:27:50.058 - lib.adb - [Tune 4u5LAQvW4nSDYYXDojG23m] ADB: 192.168.130.13 - input keyevent KEYCODE_MEDIA_PAUSE

2026-03-20 16:27:50.176 - tuner_management - [Tune 4u5LAQvW4nSDYYXDojG23m] Released tuner (6).

2026-03-20 16:27:50.176 - tuner_management - [Tune 4u5LAQvW4nSDYYXDojG23m] Cleanup complete. LinkPi 1 - 1 (ESPN2)

2026-03-20 16:27:50.177 - tuner_management - Releasing tuner 11 as it has been inactive for 4 seconds.

2026-03-20 16:27:50.177 - tuner_management - Releasing tuner: {'lock_obtained': 1774023934, 'tuner_name': 'LinkPi 2 - 4', 'name': 'ESPNews', 'number': 6143, 'provider_name': 'YTTV', 'tuner_id': 11, 'channel_id': 4, 'tuning_status': 'tuned', 'request_key': 'AJhjP53vf9SbsmS5w5uo6V', 'target_package': 'com.google.android.youtube.tvunplugged'}

2026-03-20 16:27:50.590 - tuner_management - [Tune AJhjP53vf9SbsmS5w5uo6V] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.

2026-03-20 16:27:50.590 - lib.adb - [Tune AJhjP53vf9SbsmS5w5uo6V] ADB: 192.168.130.17 - input keyevent KEYCODE_MEDIA_STOP

2026-03-20 16:27:50.715 - lib.adb - [Tune AJhjP53vf9SbsmS5w5uo6V] ADB: 192.168.130.17 - input keyevent KEYCODE_MEDIA_PAUSE

2026-03-20 16:27:50.840 - tuner_management - [Tune AJhjP53vf9SbsmS5w5uo6V] Released tuner (11).

2026-03-20 16:27:50.840 - tuner_management - [Tune AJhjP53vf9SbsmS5w5uo6V] Cleanup complete. LinkPi 2 - 4 (ESPNews)

2026-03-20 16:27:50.841 - tuner_management - Releasing tuner 7 as it has been inactive for 4 seconds.

2026-03-20 16:27:50.841 - tuner_management - Releasing tuner: {'lock_obtained': 1774023999, 'tuner_name': 'LinkPi 2 - 0', 'name': 'ESPNUHD', 'number': 6142, 'provider_name': 'YTTV', 'tuner_id': 7, 'channel_id': 3, 'tuning_status': 'tuned', 'request_key': 'EunoSQAXfK7Gh9GHPLbJJL', 'target_package': 'com.google.android.youtube.tvunplugged'}

2026-03-20 16:27:51.028 - tuner_management - [Tune EunoSQAXfK7Gh9GHPLbJJL] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.

2026-03-20 16:27:51.028 - lib.adb - [Tune EunoSQAXfK7Gh9GHPLbJJL] ADB: 192.168.130.12 - input keyevent KEYCODE_MEDIA_STOP

2026-03-20 16:27:51.108 - lib.adb - [Tune EunoSQAXfK7Gh9GHPLbJJL] ADB: 192.168.130.12 - input keyevent KEYCODE_MEDIA_PAUSE

2026-03-20 16:27:51.264 - tuner_management - [Tune EunoSQAXfK7Gh9GHPLbJJL] Released tuner (7).

2026-03-20 16:27:51.264 - tuner_management - [Tune EunoSQAXfK7Gh9GHPLbJJL] Cleanup complete. LinkPi 2 - 0 (ESPNUHD)

2026-03-20 16:28:14.654 - server - 

--------------------------------------------------

Tuner "LinkPi 1 - 0" is currently in use and locked.

Tune ID: 9gm5sz4qzfiquASpvkEgxG

Channel: ESPN

Lock Obtained: 2026-03-20 16:24:01 (4.23 minutes ago)

Last Seen: 2026-03-20 16:28:14 (0.65 seconds ago)

Bytes Transferred: 270415252 (257.89MB)

Remote User Agent:

Go-http-client/1.1

--------------------------------------------------

2026-03-20 16:28:44.668 - server - 

--------------------------------------------------

Tuner "LinkPi 1 - 0" is currently in use and locked.

Tune ID: 9gm5sz4qzfiquASpvkEgxG

Channel: ESPN

Lock Obtained: 2026-03-20 16:24:01 (4.73 minutes ago)

Last Seen: 2026-03-20 16:28:43 (1.67 seconds ago)

Bytes Transferred: 306480988 (292.28MB)

Remote User Agent:

Go-http-client/1.1

--------------------------------------------------

2026-03-20 16:28:46.050 - tuner_management - Releasing tuner 4 as it has been inactive for 3 seconds.

2026-03-20 16:28:46.050 - tuner_management - Releasing tuner: {'lock_obtained': 1774023841, 'tuner_name': 'LinkPi 1 - 0', 'name': 'ESPN', 'number': 6140, 'provider_name': 'YTTV', 'tuner_id': 4, 'channel_id': 1, 'tuning_status': 'tuned', 'request_key': '9gm5sz4qzfiquASpvkEgxG', 'target_package': 'com.google.android.youtube.tvunplugged'}

2026-03-20 16:28:46.277 - tuner_management - [Tune 9gm5sz4qzfiquASpvkEgxG] Using configuration: Deep Links (default, recommended) (8ec77d65-30d6-46a3-8045-282571cff8d8) for channel cleanup.

2026-03-20 16:28:46.277 - lib.adb - [Tune 9gm5sz4qzfiquASpvkEgxG] ADB: 192.168.130.11 - input keyevent KEYCODE_MEDIA_STOP

2026-03-20 16:28:46.448 - lib.adb - [Tune 9gm5sz4qzfiquASpvkEgxG] ADB: 192.168.130.11 - input keyevent KEYCODE_MEDIA_PAUSE

2026-03-20 16:28:46.630 - tuner_management - [Tune 9gm5sz4qzfiquASpvkEgxG] Released tuner (4).

2026-03-20 16:28:46.630 - tuner_management - [Tune 9gm5sz4qzfiquASpvkEgxG] Cleanup complete. LinkPi 1 - 0 (ESPN)


      `

Well tested. This sounds like something the developer @turtletank will have to take a look at.

You might also try going back to Multiview, and removing streams one at a time, as a further confirmation that this is tied to stopping streams simultaneously.

I gave that test a try with 2 multview sessions going on 2 TVs, stopped one channel and a few seconds later 4 of the streams returned to the main YTTV screen (not on the same TV). Thanks for the suggestion @bnhf; I will wait to see if @turtletank has any advice.

I may have just found the issue, I have tested with success but need more do some more after the workday is over. In ADBTuner where you set priority per tuner I was using the same priority number for each type of streaming device, for example all the Onn 4k Plus devices were priority 1. I just changed this so they all have a unique number for priority and in my limited testing I can't re-produce the issue. Is it expected that each tunner needs a unique priority number?

I've never tried anything except using unique numbers or leaving the Priority field blank. This post suggests to me that what you were doing should work though:

But, if you're able to confirm the behavior you're describing, it sounds like a fix is needed...