Project

General

Profile

Bug #4030

USALS (rotor) not working properly

Added by Gurabli Gurabli about 8 years ago. Updated over 7 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Category:
DVB
Target version:
-
Start date:
2016-10-20
Due date:
% Done:

0%

Estimated time:
Found in version:
4.1-2281~g39108ce~xenial
Affected Versions:

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

log.tar.gz (10.6 MB) log.tar.gz usals working fine Gurabli Gurabli, 2016-10-20 12:57
log2.tar.gz (1010 KB) log2.tar.gz not working at all Gurabli Gurabli, 2016-10-20 12:57

History

#1

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?

#2

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.

#3

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.

#4

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.

#5

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?

#6

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."),
#7

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.

#8

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.

#9

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).

#10

Updated by Jaroslav Kysela over 7 years ago

  • Status changed from New to Rejected

No response from the reporter.

Also available in: Atom PDF