Bug #4030
USALS (rotor) not working properly
0%
Description
USALS support is not functioning properly. Opened a thread in the forum section: https://tvheadend.org/boards/5/topics/23082?r=23088
I have a motorized dish, and I'm using USALS. With VDR, DVBViewer and my Dreambox everything is working perfectly fine. However, I'm having real difficulties with TVH. The situation is the following:
- Ubuntu Server 16.04 LTS, default kernel
- DVBSky T9580 PCIe card, DVB-S2, DVB-T2, DVB-C tuner
- using tvh unstable repository, current version is 4.1-2281~g39108ce~xenial
I configured TVH according to the post by @Gary Brown here https://tvheadend.org/boards/5/topics/12194?r=14860#message-14860
I have a similar motor, that drives the dish at 2.5 / sec at 18V, so I have set the rate to 400, like suggested.
I have the proper long and lat configured.
I configure two orbital positions, 0.8W and 16E, it scans the muxes fine, TVH moves the dish. I map the channels, everything is working fine. I select a channel at 0.8W, TVH drives the dish and channel plays perfectly. I then select a channel on 16E, dish is moving, and channel starts perfectly. Everything is working very nice.
But! I restart my backend, and DVB-S stops working. I can't tune to any of the DVB-S channels, not on 0.8W or 16E, just no signal message. It happens also if I only restart tvheadend service from cli. I need to start VDR, tune to a channel on 0.8W, it moves the dish perfectly, channel starts playing, then I disable VDR, start tvheadend, and everything is working again perfectly. Of course, until the next service or system restart. It looks that somehow tvheadend loses the position where the dish is and it can't find the satellites anymore. It is very strange. I might try to set GOTOX positions with DVBViewer and try GOTOX for these two positions instead of USALS, but still strange. I haven't tested GOTOX yet, as I always used USALS.
Anyhow, something is definitely broken with Tvheadend and motor (USALS?) code. It must be tvheadend since the same setup work perfectly fine with VDR and DVBViewer.
Similar problems reported: https://tvheadend.org/issues/4023
I tried to create logs, but not sure I have have succeeded to create proper logs. Anyway, I attach two full trace logs:
log.tar.gz -> here is usals is working fine
log2.tar.gz -> not working at all, after a restart
Files
History
Updated by Mark Clarkstone about 8 years ago
Gurabli Gurabli wrote:
.. snip ..
I've took a quick look (and I could be completely wrong here, I'm taking a stab in the dark, someone will hopefully correct me)..
In the "good" log, the last tune was to 16.0E..
2016-10-20 10:28:37.542 [ TRACE]:diseqc: initial tone off 2016-10-20 10:28:38.918 [ TRACE]:diseqc: initial sleep 100ms 2016-10-20 10:28:39.003 [ TRACE]:diseqc: site: lat 41.2000, lon 21.0000, alt 0.0000; sat lon 16.0000 2016-10-20 10:28:39.003 [ TRACE]:diseqc: rotor angle azimuth 187.5716 elevation 42.1579 2016-10-20 10:28:39.003 [ DEBUG]:diseqc: rotor USALS goto 16.0E (motor 5.6 counter-clockwise) 2016-10-20 10:28:39.003 [ TRACE]:diseqc: sending diseqc (len 5) E0 31 6E D0 5A 2016-10-20 10:28:39.123 [ TRACE]:diseqc: waiting 8 seconds to finish setup for USALS
the last diseqc before tvheadend exits..
2016-10-20 10:28:47.111 [ TRACE]:diseqc: initial tone off
In the bad log there are no other diseqc lines but these:
2016-10-20 10:33:29.766 [ TRACE]:diseqc: initial tone off 2016-10-20 10:33:29.771 [ TRACE]:diseqc: set diseqc tone on 2016-10-20 10:33:29.799 [ DEBUG]:linuxdvb: Montage DS3103/TS2022 : DVB-S #0 - starting 11747H in S0.8W
Shouldn't there be more log lines after this telling the rotor where to go otherwise wouldn't the dish still be at 16E?
Updated by Gurabli Gurabli about 8 years ago
Well, I absolutely don't understand how it should work, but to me it makes sense. For some reason after a restart (or after some time, couldn't figure out all the cases when), DVB-S just stops working, and it is probably due to the missing diseqc lines you mention from the second log.
According to this, when it was working, the dish was positioned to 16E, channel locked, everything working perfectly. Then Tvheadend restarts and DVB-S stops working, as there are no correct diseqc commands sent. The adapter doesn't work for S16 either (where it was left and turned off), so nothing can be tuned, it is not just that the dish is not moving to different position.
Updated by Gurabli Gurabli about 8 years ago
Gurabli Gurabli wrote:
Then Tvheadend restarts and DVB-S stops working,
Sorry, just to make it clear, I refer here to manually restarting Tvheadend or the system.
Updated by Jaroslav Kysela about 8 years ago
Post the complete trace for '--trace diseqc,linuxdvb' for working / non-working setup. Don't set trace to all. Also, try to check the 'Rotor initialization time (seconds)' field.
Updated by Gurabli Gurabli about 8 years ago
Jaroslav Kysela wrote:
Post the complete trace for '--trace diseqc,linuxdvb' for working / non-working setup. Don't set trace to all. Also, try to check the 'Rotor initialization time (seconds)' field.
OK, I will. It is a little hard as I need to wait until nobody is using TV, then I can reconfigure for USALS and get the logs. Just to be sure to get the proper logs the proper way, is this the command I should use:
sudo -u hts /usr/bin/tvheadend -c /home/hts/.hts/tvheadend --debug all --trace diseqc,linuxdvb --logfile /tmp/alltvh.txt
What do you mean by the 'Rotor initialization time (seconds)' field? What should I try to set and based on what?
Updated by Jaroslav Kysela about 8 years ago
Gurabli Gurabli wrote:
What do you mean by the 'Rotor initialization time (seconds)' field? What should I try to set and based on what?
See help:
.name = N_("Rotor initialization time (seconds)"),
.desc = N_("Upon start, Tvheadend doesn't know the last rotor "
"position. This value defines the initial rotor "
"movement. TVHeadend waits the specified time when "
"the first movement is requested."),
Updated by Jaroslav Kysela about 8 years ago
Gurabli Gurabli wrote:
OK, I will. It is a little hard as I need to wait until nobody is using TV, then I can reconfigure for USALS and get the logs. Just to be sure to get the proper logs the proper way, is this the command I should use:
It looks good.
Updated by Gurabli Gurabli about 8 years ago
Jaroslav Kysela wrote:
Gurabli Gurabli wrote:
What do you mean by the 'Rotor initialization time (seconds)' field? What should I try to set and based on what?
See help:
.name = N_("Rotor initialization time (seconds)"),
.desc = N_("Upon start, Tvheadend doesn't know the last rotor "
"position. This value defines the initial rotor "
"movement. TVHeadend waits the specified time when "
"the first movement is requested."),
Yes, I have read the description, but sorry, I can't understand the function of this value. It is set to 120 sec by default. That means that when Tvheadend starts the diseqc command will be sent after 120 seconds, so basically there will be no dvb-s available for 120 seconds. Then the first diseqc command is sent? I don't understand why is it required, and how will this help Tvheadend to know where the last rotor position was (is) by waiting 120 seconds? What happens after 120 seconds of waiting that help Tvheadend to know the rotor position?
And what does it help to put lets say 20 seconds here?
Regarding the logs, I will be back with them this weekend the latest. My only concern is the post made by @Hector Kicklag (#4023) that Tvheadend bent his dish. I don't have visual on my dish, and it is located on the top of the building, but until now everything works fine.
Updated by Jaroslav Kysela about 8 years ago
TVH sends the first position to the rotor through diseqc and then it waits this initial time, because when tvh starts, the last position is unknown. TVH does not know if other program was using the rotor or if something else changes the actual position. So this value should be the time required to move between the edge positions (full move range). When the first position is set, other wait times are calculated for next moves to minimize the tuning delay (precise time calculation).
And yes, the default value is 2 minutes. So first tuning will take a lot of time by default. The user is responsible to set the lower value by the real usage.
Anyway, I need to see full logs to see what tvh tries to do and what fails (if there's really an issue).
Updated by Jaroslav Kysela over 7 years ago
- Status changed from New to Rejected
No response from the reporter.