OliveTin for Channels: An Interface for Misc Channels DVR Scripts & Tricks

Here is what I am getting?


Checking your OliveTin-for-Channels installation...
(extended_check=true)

OliveTin Container Version 2026.09.22
OliveTin Docker Compose Version 2025.08.25

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

Checking that your selected Channels DVR server (192.168.1.111:8089) is reachable by URL:
HTTP Status: 200 indicates success...

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1276  100  1276    0     0   562k      0 --:--:-- --:--:-- --:--:--  623k
HTTP Status: 200
Effective URL: http://192.168.1.111:8089/

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

Checking that your selected Channels DVR server's data files (/mnt/192.168.1.111-8089) are accessible:
Folders with the names Database, Images, Imports, Logs, Movies, Streaming and TV should be visible...

total 5
drwxr-xr-x 2 root root 1024 Sep 25 17:05 .
drwxr-xr-x 1 root root 4096 Sep 25 17:05 ..

Docker reports your current DVR_SHARE setting as...
/mnt/e/channels dvr

If the listed folders are NOT visible, AND you have your Channels DVR and Docker on the same system:

Channels reports this path as...
E:\Channels DVR

When using WSL with a Linux distro and Docker Desktop, it's recommended to use...
/mnt/e/Channels DVR

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

Checking that your selected Channels DVR server's log files (/mnt/192.168.1.111-8089_logs) are accessible:
Folders with the names data and latest should be visible...

total 5
drwxr-xr-x 2 root root 1024 Sep 25 17:05 .
drwxr-xr-x 1 root root 4096 Sep 25 17:05 ..

Docker reports your current LOGS_SHARE setting as...
/mnt/c/programdata/channelsdvr

If the listed folders are NOT visible, AND you have your Channels DVR and Docker on the same system:

Channels reports this path as...
C:\ProgramData\ChannelsDVR

When using WSL with a Linux distro and Docker Desktop, it's recommended to use...
/mnt/c/ProgramData/ChannelsDVR

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

Checking if your Portainer token is working on ports 9000 and/or 9443:

Portainer http response on port 9000 reports version 2.45.1
Portainer Environment ID for local is 1
Portainer https response on port 9443 reports version 2.45.1
Portainer Environment ID for local is 1

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

Here's a list of your current OliveTin-related settings:

HOSTNAME=olivetin
CHANNELS_DVR=192.168.1.111:8089
CHANNELS_DVR_ALTERNATES=
CHANNELS_CLIENTS=
ALERT_SMTP_SERVER=
ALERT_EMAIL_FROM=[Redacted]@
ALERT_EMAIL_PASS=[Redacted]
ALERT_EMAIL_TO=[Redacted]@
UPDATE_YAMLS=true
UPDATE_SCRIPTS=true
PORTAINER_TOKEN=[Redacted]
PORTAINER_HOST=192.168.1.111
PORTAINER_PORT=9443
PORTAINER_ENV=1

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

Here's the contents of /etc/resolv.conf from inside the container:

# Generated by Docker Engine.
# This file can be edited; Docker Engine will not make further changes once it
# has been modified.

nameserver 127.0.0.11
search 
options ndots:0

# Based on host file: '/etc/resolv.conf' (internal resolver)
# ExtServers: [host(192.168.65.7)]
# Overrides: [search]
# Option ndots from: internal

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

Here's the contents of /etc/hosts from inside the container:

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::  ip6-localnet
ff00::  ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.18.0.3      olivetin

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

I am not sure what happened. I ran the WatchTower again and it installed. I didn't change anything.

Thanks for letting me know. I'll see if I can find anything that might cause what you saw.

Thank You

@bnhf So I've finally had a chance to test this with F1 happening this weekend and it's not working as it should...but I'm struggling to work out where the issue is so figured I'd start with asking you to help debug since you are the expert in so much of this stuff!

What I'm seeing is it seems to open the YTTV app and not the Apple TV app on my Fire Stick and then never properly records anything. I'm not sure if this is a problem on the ADBTuner or FruitDeepLinks side or how I'm connecting the two. This looks like the relevant line from the ADBTuner log:

ADB: firetv1.chrispederick.internal - am start -W -a android.intent.action.VIEW -d 'http://fruitdeeplinks.chrispederick.internal:6655/api/adb/lanes/apple_f1/4/deeplink?format=json&dynamic_url_json_key=deeplink' 'com.apple.atve.amazon.appletv' 

Debugging this is not helped by the rarity of Apple F1 events, but any pointers you can give is helpful. Also, let me know if this is better asked in either the ADBTuner or FruitDeepLinks threads as again it's hard for me to tell which particular project seems to be the issue.

fwiw - i just tested a F1 event from ADB on a firestick and it went right to the Apple TV app on firestick. i blame ADBTuner :slight_smile:

To be fair, it could also be a misconfiguration on my end, but everything works with Peacock with the same setup for example.

How did you test an F1 event? Part of the debugging challenge for me is they happen pretty irregularly and I won't be awake when the race starts tomorrow at 4am for example.

I forced the ADB command (that FDL would send) to my FireStick. It opened AppleTV and went to the event page.

so, i'd have to Assume it'll work tomorrow

1 Like

I tested too, using a slightly different method, and it took me to the splash page for the event.

If you look in the FDL Event Inspector, you can grab a link for an upcoming event:

So I grabbed this link:

https://tv.apple.com/us/sporting-event/azerbaijan-race/umc.cse.454f6ug3pg2vxpx8zjlxn5uis

And plugged it in here, in place of the current "URL or Identifier" (make sure to copy and save the existing one to replace it after the test):

Save it, and then click "Preview". If every thing is setup right you should see something like this:

If that doesn't work, check the obvious stuff first, like making sure you have the Apple TV app loaded on your sticks, and that you're signed in. Also, make sure your apple_f1 channels look like my screenshot.

Ah, that's super helpful and that does also work for me. However, looking at the ADBTuner logs from qualifying this morning I do now see this:

Resolving dynamic URL (http://fruitdeeplinks.chrispederick.internal:6655/api/adb/lanes/apple_f1/4/deeplink?format=json) for channel. 
Retrieved dynamic URL data: {'deeplink': None, 'lane_number': 4, 'message': 'No event scheduled at this time', 'provider_code': 'apple_f1', 'status': 'success', 'title': None} 

Does this mean that FDL was not returning a deep link (seemingly since it thought that there was no event scheduled)? The only thing I'm wondering if that's the case is that I default to having all my passes in Channels start 1 minute early to account for tuning time - could this be why FDL didn't return a deep link in this case?

So there was an event in the guide in that lane at a time 1 minute from when you wanted to start recording? If so, that's interesting and may be a question for @KineticMan -- but generally with these event-based links you're probably best off not adding any padding to the front of the recording.

Yeah, this totally makes sense that this would cause problems now that I think about it. I haven't seen this before with Peacock and Paramount+ which I also used to start 1 minute early, but I've removed all the padding for these passes and we'll see if things work as expected tomorrow :crossed_fingers:

1 Like

Okay, so removing the padding fixed the tuning issue...however, it got stuck on this screen and didn't actually start playing the event:

Is that something that can be fixed in ADBTuner? (Happy to take this to a different thread if this is now more ADBTuner specific, but you know I'd still just bug you over there @bhnf :smile:)

You are using the "Apple TV" configuration like in my screenshot above correct? Because looking at that config "Watch" should have been selected for you:

{
  "name": "FruitDeepLinks - AppleTV v1.0 (FireTV and AndroidTV)",
  "author": "bnhf",
  "version": "1.0",
  "description": "AppleTV for FruitDeepLinks. Compatible with FireTV and AndroidTV devices.",
  "uuid": "8cf23241-09e3-4b79-90fe-576086707462",
  "global_options": {
    "wait_for_video_playback_detection": false,
    "use_fixed_delay": true,
    "fixed_delay_seconds": 5,
    "wait_after_post_playback_start_commands_seconds": 0
  },
  "pre_tune_commands": [
    "input keyevent KEYCODE_MEDIA_STOP"
  ],
  "tune_commands": [
    "am start -W -a android.intent.action.VIEW -d '||TARGET_URL_OR_IDENTIFIER||' '||TARGET_PACKAGE_NAME||'"
  ],
  "tune_match_text_commands": [
    {
      "match_text": [
        "watch",
        "live",
        "mls",
        "mlb",
        "don't allow"
      ],
      "commands": [
        "input keyevent KEYCODE_DPAD_CENTER"
      ],
      "start_checking_after_seconds": 5
    }
  ],
  "post_tune_commands": [
    "input keyevent KEYCODE_HOME"
  ]
}

Yup:

Using channel configuration: FruitDeepLinks - AppleTV v1.0 (FireTV and AndroidTV) (bnhf) (8cf23241-09e3-4b79-90fe-576086707462) 

Further down in the ADBTuner logs:

Starting tune match text monitoring. Match commands: [{'match_text': ['watch', 'live', 'mls', 'mlb', "don't allow"], 'commands': [{'type': 'ADB', 'command': 'input keyevent KEYCODE_DPAD_CENTER'}], 'start_checking_after_seconds': 5}] 
Tuning completed after 12.4 seconds. Display was None, application (com.apple.atve.amazon.appletv) was running. 
On screen text: '“tv formula 1 - baku city circuit baku  =d -  a et ee  ee af ey ee ete wt soy' 
Text match result: Text to match: ['watch', 'live', 'mls', 'mlb', "don't allow"]. Matches found: None. 
On screen text: '“tv formula 1 - baku city circuit baku  c= -  sn er a sw (aes ee' 
Text match result: Text to match: ['watch', 'live', 'mls', 'mlb', "don't allow"]. Matches found: None. 
On screen text: 'sa ae == a ae we os awe =' 
Text match result: Text to match: ['watch', 'live', 'mls', 'mlb', "don't allow"]. Matches found: None. 
On screen text: '“tv formula 1 - baku city circuit baku  =d -  a et ee  ee af ey ee ete wt soy' 

And that just continues to repeat.

This might be something to bring up with @turtletank then in the ADBTuner thread. It should be matching either "Live" or "Watch" and then sending a DPAD_CENTER. Maybe there are some tweaks that could be made to Tesseract OCR to more accurately read the text in those buttons.