|
SageTV for unRAID/Docker Discussion related to SageTV for unRAID/Docker. Questions, issues, problems, suggestions, etc. relating to SageTV for unRAID/Docker should be posted here. |
|
Thread Tools | Search this Thread | Display Modes |
#1
|
|||
|
|||
Linux Help Needed - Unraid FireWire Tuning
Hi, folks
I'm really hoping that one of our local Linux experts might be able to assist with a minor ongoing issue that is really vexing me (and a few others, here). Apologies in advance for the long, detailed post, but I want to provide as much background as possible out of respect for the folks who will be trying to understand the issue, and how we got here: I've been a SageTV user for about 12 years, but always in a Windows environment. The time has come to build a new Sage server, and following the recommendations of many people here, I have decided to go the Unraid route. So, the first step was to get Unraid up and working as a file server, and this is now complete (love the functionality!). Next, I followed Stuckless' excellent thread to get the SageTV docker installed: https://forums.sagetv.com/forums/showthread.php?t=63165 With that working, I followed Wayner's great how-to to get FireWire tuning enabled: https://forums.sagetv.com/forums/showthread.php?t=64108 Once that was done, I was able to set up a video source, and found the correct tuning device to address the desired STB (Motorola DCX-3200). The good news is that FW tuning then worked *almost* perfectly. The bad news is that *almost* isn't quite good enough. What happens is that the channel is changed just as you would expect, but then some further parameter appears to be sent that causes the guide to pop up, always at channel 401. Naturally, the guide is then obscuring the video portion of the recording, rendering it useless. It's worth noting that I experienced this exact issue when transitioning to the Motorola boxes (from SA) on my Windows setup, and had to make a change to the options in SageChanger to make it work properly. Just for reference, here are the available options for SageChanger (I had to specify -f 7): Usage SageChanger [-n <ID>] [-c <channel#>] [-f <changer#>] [-psvhtq] Options (case sensitive): -n <uniqueID> of target STB -c <channel number> -f <changer> force channel changer: 1 = SA3250HD 2 = SA4200HD (and some 3250s) 3 = SA4250HD 4 = SA4250HDc (and some 8300HDs) 5 = SA8300HD 6 = Motorola Fast (DCH and DCT series) 7 = Motorola Single-digit (default) -p Ensure STB is ON before issuing channel change. -q Query STB power status. Returns 2=ON, 1=OFF, -1=Error. -s Search for installed STBs and display informations. -t Test only. Do not send commands to STB. -v Verbose output. -h Display this help. Now, if I could just figure out how to make the same sort of adjustments in Linux, life would be grand! Researching the issue here, I have not been able to find a solution. Stuckless has indicated that he doesn't use FW, and has no direct insight into how it works. Wayner, who I believe was the first person to get FW tuning to work in Unraid, has also indicated that he has no understanding of how to set parameters. Fortunately for him, his STBs (SA3250/4250) simply worked fine out of the box. I haven't been able to find any further clarification within our own forum, so decided to follow the trail of breadcrumbs a little further to see what else I could dig up. Doing some searching, I found that Wayner had originally asked CHBMB, the user on the Unraid forum who administers the Unraid DVB plug-in, to enable FireWire functionality on that plug-in. CHBMB did that for release 6.3.1, which is what Wayner used to get FW working in Unraid, and what he based his how-to thread on. So, I decided to ask CHBMB what he knew about how FW and STB settings were set up. Unfortunately, he also didn't know how it was configured, but he did indicate something that I think is probably very important. He wrote: "It's really not dependent on LibreELEC or any other DVB build, they're just bog standard Linux kernel modules that I included at his request, so that narrows it down to a basic way that the Linux kernel FireWire implementation interacts with the STB you're using." While not a solution to our problem, this comment clearly points to standard Linux functionality, rather than something specifically built for LibreELEC or DVB. Therefore, I'm hopeful that someone with Linux capability can help us understand where to look to make the required (likely minor) adjustments to the string that is sent to the STBs. In further researching this online, I can see that MythTV definitely deals with different STBs, and there is a Standalone program called 6200ch that also accommodates it: https://www.mythtv.org/wiki/6200c So, it's clear that some in the Linux world have dealt with this issue. Looking at the code for 6200ch, it looks like the following parameters are available: fprintf(stderr, "Usage: 6200ch [-v] [-s] [-w] [-m] [-e] [-4] [-q] " "[-n NODE] [-g GUID] [-p PORT] [-d DELAY] <channel_num|key_name>\n"); fprintf(stderr, "-v print additional verbose output\n"); fprintf(stderr, "-s use single packet method. Cannot be used with -4.\n"); fprintf(stderr, "-w toggle power state\n"); fprintf(stderr, "-m Sends \"Menu\" command. Needed for some Motorola QIP series STB's.\n"); fprintf(stderr, "-e Sends \"Exit\" command. Needed for some Motorola QIP series STB's.\n"); fprintf(stderr, "-4 Enable 4 digit channel number support. Cannot be used with -s.\n"); fprintf(stderr, "-d inter-digit delay in ms (default 500) Cannot be used with -s.\n"); fprintf(stderr, "-n NODE node to start device scanning on (default:%i)\n", STARTING_NODE); fprintf(stderr, "-p PORT port/adapter to use (default:%i)\n", STARTING_PORT); fprintf(stderr, "-g GUID GUID to use, -n switch, if present, will be ignored.\n"); fprintf(stderr, "-q query current state\n"); I can also see that the DCX3200 has definitely been accommodated there. Not sure if this code is what is being used in the FireWire implementation that we are using, but I suspect that something similar must be in place. Once again, sorry for the long intro, but I wanted to provide as much information as possible to those looking at this. Are any of you Linux folks able to lend a hand? I'm really enjoying the learning experience, but still have a very long way to go! Sincere thanks! Shaun |
#2
|
|||
|
|||
Just thinking about this a bit more. In the Windows implementation, it is necessary to edit the EXEMultiTunerPlugin registry key to point at the application doing the changing (SageChanger or channel), and define the format of the commands that will be sent to the STB. Is there an equivalent in the Sage Linux environment? Maybe some sort of a configuration file?
Thanks, Shaun |
#3
|
||||
|
||||
Hi Shaun,
I myself do not know much about Linux and Unraid but having fun trying to figure stuff out. I looked at my Unraid SageTV as I use the DVB edition and Firewire channel changing with my SA STB's. It appears the the firewire routines might be called by a script called GENTUNER. There is a readme about the file and a sample firewire control file sample on the server. Looks like there might be a clue as to what you need if you look in the appdata folder for Sage: /user/appdata/sagetv/server/irtunerplugins/gentuner/samples/ I will attach the files here to make it easier to look at - maybe someone can pitch in and help with the details you need?
__________________
SERVER: Intel Core i7-3770 CPU @ 3.40GHz - UnRaid Server 6.8.0/DVB LibreELEC with Docker stuckless-sagetv-server-java9 MOTHERBOARD: ASRock-Z77 Extreme4 / 32GB RAM CACHE DRIVE: SSD 1TB ARRAY: 24TB/7 DRIVES PARITY: 8TB EXTERNAL DEVICES: 4x HD-PVR's Firewire Channel Changing TUNERS:NO LONGER RECORDING LIVETV CLIENTS: 2xHD300 2xHD200 SONY ANDROIDTV MINI-CLIENT Last edited by dstanley; 02-27-2019 at 07:45 PM. Reason: Wrong file attached |
#4
|
|||
|
|||
Quote:
I just went through the process of setting up a video source again, and both Generic Tuner (gentuner, I assume) and FireWire Tuner are listed as options. When I try to use Generic Tuner, I get no channel changing at all, but the HD-PVR does start to record. When I use FireWire Tuner, the channel does change, but then the guide pops up at channel 401. No joy either way (yet), but so close! I read Stuckless' gentuner readme earlier, and if I followed it correctly, it seems that it points to a user-defined script, and that script is used to send parameters to a tuning application (like 6200ch). If I can figure out how all that works, perhaps I can simply edit that script and ensure that the correct program and command set is called from the relevant program. I'll dig into the samples to see what I can figure out. Thanks again for your help. This is a very steep learning curve for me, and I appreciate all the help I can get. Cheers, Shaun |
#5
|
|||
|
|||
The docs for gentuner are here:
https://github.com/jwittkoski/GenericTunerPlugin You have the right idea - basically once the gentuner plugin is installed (if you are using the docker install it should be there if you selected it during install), you just need to copy or create a "gentuner" script to call what you use to send the commands over FireWire. There is an example there of using panelctl to tune using FireWire. I don't know if panelctl will work in your environment. I no longer have anything using FireWire and the script was contributed by a gentuner user (but it was working for him!). If you need to use a different command to send over FireWire (like 6200c), just use that script as a starting point for whatever command you are using to tune. You probably only need to change device_map and tuneCmd. device_map maps the names of the "remote" (you can name this whatever you want, it should appear in the source setup in Sage when you add a new source and select GenericTunerPlugin as the tuner) and maps it to the FireWire GUID of the device. And the tuneCmd is just what to run to send the actual command. I suggest tweaking the script and get it working by directly running it from the command line (outside of Sage) to make sure it's behaving the way you expect. Then test from the Sage itself. --John |
#6
|
|||
|
|||
Quote:
I'll have some more time to look at this over the weekend. I'm slowly starting to get a handle on it, but hampered by my complete lack of Linux exposure and expertise. Most of the documents I have seen so far seem to assume a certain level of familiarity (what exactly is a "remote"), but with helpful input such as yours and Dwight's, I'm getting there. Most importantly, I'm enjoying the learning experience. I'll be sure to update this thread once I get this sorted. Cheers, Shaun |
#7
|
|||
|
|||
Hi, folks.
I feel a bit like a small child learning his letters for the first time, but I shall persevere. After spending a bit of time getting used to the command line, I have apparently determined that neither panelctl or 6200ch are present on my system. At this point, I'd prefer to try panelctl, but don't seem to be able to find it anywhere. I'll also need to learn how to properly install software in Linux, but first things first. Does anyone know where to find it? I realize that I'm probably missing some really simple things, so apologies in advance for my ineptitude! Thanks, Shaun |
#8
|
|||
|
|||
Quote:
Actually, this may not be so simple! I believe the docker images are based on Ubuntu. In Ubuntu, panelctl is part of the "libavc1394-tools" package. Normally you would install this by running (as root) `apt-get install libavc1394-tools`. But in this case you need to install the package within the docker container. If you can get a shell in the docker container you can try installing it. However, I don't believe that change will persist if the docker container restarts. And IIRC, the unRaid template will update (and overwrite) the container contents if there is a newer version. I'm not sure what the best approach is in this case. I'm not familiar with how unRaid manages containers. Adding another package within the docker container requires updating the Dockerfile and rebuilding the docker image. There is an open issue on github about adding this package to the docker image (https://github.com/stuckless/sagetv-dockers/issues/10) --John |
#9
|
|||
|
|||
Quote:
Actually, Unraid is apparently based on Slackware. I was able to get to a shell in the docker container, and tried 'apt-get install libavc1394-tools'. The process ran, but the response was "unable to locate package libavc1394-tools". Regardless, I can see the problem that you describe about the docker reverting when restarted, and I'm not sure how to work around that. At this point, I'm wondering if there is any possibility of looking into the Firewire Tuner that is working well for those with the SA STBs, and *almost* working for those of us with Motorola STBs. If there was a way to adjust settings there, it would likely be a very minor change, but I can't seem to find much info on that tuner. The only thing I can see on my system that seems related is "FirewireTuner.so" in the irtunerplugins directory. From what I understand, this is a Shared Object, or the Linux equivalent of a driver. Not sure if there is anything that can be done with that, though. More research to come, I suppose, but brain is hurting... Again, thanks for your help in looking at this. Shaun |
#10
|
|||
|
|||
Shaun,
unRAID is based on Slackware, but the Docker for SageTV is based on Ubuntu. My suggestion would be to find the .deb file for the right version and manually extract it to a location which is accessible inside the docker. You may need to modify the ld path to make sure the libraries are where they need to be. hih b
__________________
Running SageTV on unRAID via Docker Tuning handled by HDHR3-6CC-3X2 using OpenDCT |
#11
|
|||
|
|||
Quote:
As bcjenkins mentioned, the OS in the docker can be different than the "host" OS. I'm not sure why the install wouldn't find that package. How did you get a shell in the docker container? When you shell into the docker container, what does this command show: "cat /etc/lsb-release" Unfortunately, I don't have any experience using the Firewire Tuner that is in the irtunerplugins directory. --John |
#12
|
|||
|
|||
Quote:
Okay, I've checked the version of the Docker: Ubuntu 16.04 I then found a source for the .deb file here: https://pkgs.org/download/libavc1394-tools I've also found a guide that tells me how to install .deb files, so hopefully will be good there. Does it matter where I place the file inside the Docker when I install it? Lastly, I've done some reading on the LD path, and understand what it is, but don't yet quite have a clear picture of what I'll need to do with it. I'm assuming that the Docker will have a different structure, and that I will just need to alter the LD path to reflect the actual location where the libraries ended up? Again, many thanks. Shaun Last edited by smdl; 03-02-2019 at 07:14 PM. |
#13
|
|||
|
|||
Quote:
I got a shell in the Docker container through the Unraid Main screen. Clicking on the SageTV Docker, I selected ">_ Console". I'm not sure why the install didn't find the package. Here is what I get in response to "cat /etc/lsb-release": DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS" I just tried running the install again, and here is the result: # apt-get install libavc1394-tools Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package libavc1394-tools I'm assuming that this might indicate a path problem due to the Docker environment? Thanks! Shaun |
#14
|
|||
|
|||
Quote:
Quote:
--John |
#15
|
|||
|
|||
Quote:
Try doing this first: apt-get update Then try the install again. But remember, these local changes are just for testing, as they will be reset when the container restarts. --John |
#16
|
|||
|
|||
Quote:
Just did the full server reboot, and it's still there in the container (./var/lib/docker.../usr/bin), but not under Unraid anymore (/usr/bin). Weird. I'm really, really sure that it was not there before, as I tried searching many different times. That said, I am completely new to this, so it's possible that I screwed up before. Sorry if that is the case. Okay, now I need to try to figure out how to test panelctl and edit a script in Linux, so that's my next stop. I really appreciate all your help! Cheers, Shaun |
#17
|
|||
|
|||
Just thought I would update that testing of panelctl from the command line has been completely successful. I'm actually really surprised at how quick the changes are. Nice that it just does a wholesale change, rather than sending the individual numbers.
One thing that I think I will miss is that panelctl doesn't seem to have an option to check to see that the STB is powered on. When I used to run channel in Windows, we occasionally had blank recordings as our cable provider frequently updated and rebooted our STBs, after which they would remain shut off. When I changed over to SageChanger, this became a thing of the past, as that application ensures that the STB is powered on before changing channels. Unfortunately, panelctl doesn't do this, so I might see the problem occasionally again. I checked 6200ch, as well, but it only has a power toggle capability, not power on. Anyway, not a huge issue -- I'll be happy to have FireWire tuning working again. On to looking at the gentuner script. I hope that the changes I make there won't be lost with docker restart. Cheers, Shaun Last edited by smdl; 03-03-2019 at 03:22 AM. |
#18
|
|||
|
|||
One more update for the night.
I was able to get gentuner.PANELCTL copied and then edited in Vi (that was interesting), but can't seem to get it to run any tests. If I understood the instructions for the Generic Tuner Plugin properly, I should just be able to enter something like this in order to test it: gentuner TUNE FW_dcx3200_3 005 Unfortunately, no matter what command I give it, I get: gentuner: not found This even though I am in the same directory as that file. I thought that it might be an issue with the file I had edited, so I tried with the sample file gentuner.PANELCTL, and the same thing happens. Will take a look again tomorrow. Cheers, Shaun |
#19
|
|||
|
|||
Quote:
|
#20
|
|||
|
|||
Quote:
drwxrwxr-x 1 sagetv users 41 Apr 23 2016 doc -rwxr-xr-x 1 root root 3378 Mar 3 07:22 gentuner -rwxrwxr-x 1 sagetv users 3374 Mar 2 03:58 gentuner.PANELCTL drwxrwxr-x 1 sagetv users 113 Mar 3 05:52 samples I thought that maybe the issue was that the file was owned and available to root, but as I am logged in as root, I wouldn't think that should be a problem (I also tried it with sudo). However, that doesn't seem to be the case as the same thing happens when I try it with gentuner.PANELCTL. Will keep thinking on this. Shaun Last edited by smdl; 03-03-2019 at 11:30 AM. |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
FireWire in unRAID How-to | wayner | SageTV for unRAID/Docker | 66 | 01-04-2021 11:46 PM |
What's the solution to tuning multiple boxes in unRAID? | wayner | SageTV for unRAID/Docker | 0 | 02-04-2017 11:36 AM |
unRAID with HD-PVR, Firewire and/or USB-UIRT | wayner | SageTV for unRAID/Docker | 15 | 02-01-2017 05:44 PM |
Firewire tuning and 64 bit OS | UgaData | Hardware Support | 3 | 11-13-2009 12:51 PM |
SA4250 and Firewire tuning? | pat_smith1969 | Hardware Support | 1 | 07-12-2008 11:12 AM |