Project

General

Profile

Rotor(Motor) Support Latest Information.

Added by Gary Brown over 10 years ago

PLEASE READ ALL OF THIS POST AND THEN BEFORE POSTING HERE AND DON'T EMAIL ME

CURRENT STATUS OF ROTOR SUPPORT: Working since commit from 4th August 2014 version 3.9.1139 and later but stopped for me after an update from git (not sure which update as was doing it remotely for parents)

OPENELEC's version of tvheadend is behind this commit. please let them know you want it updating before attempting this on that OS.

MY SETUP:
OS:Ubuntu Server 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)
Tvheadend: v3.9.1499
dvb-s card: Mystique SaTiX-S2 Sky PCI (http://www.amazon.co.uk/Mystique-SaTiX-S2-Sky-PCI-DiseqC/dp/B005IFWDIY)
rotor: Alsat Superior Dark Motor
dish: Alsat 1m mesh dish

GUIDE (needs an update for recent master:

1.first set some networks and give them names ( I use individual satellites but you could add more and do it by providers if you wanted to)

2.in tv adaptors, in your card select advanced for satconf

3.in advanced enter your amount of satellites you want to receive in orbital positions.

4.for each orbital position you enable usals by selecting it in the rotor drop down box.

5.fill in the data in that new page.

0.8w

18w

13e Hotbird

POINTERS:

positive numbers for east and negative for west.

Don't Rely on GPS or Google for your site latitude or longitude use the values from your receiver or older program. (compare mine to to Sunderland, England SR4 and see the difference in mine.)

Rate:
in the Rate Column it needs a value of ms per each .1 of a degree. the text needs fixing to say that. I have the following rotor http://www.amazon.co.uk/SUPREME-MOTOR-METAL-DiSEqC-USALS/dp/B005THZL30/ref=pd_sxp_grid_i_0_1
it runs at Max. Speed: 1.9 / sec (at 13V) ; 2.5 / sec (at 18V) by the specs and manual.

tvheadend sets to 18v so 2.5 degrees each second.

1 / 25 = 0.4 seconds per degree multiplied by 1000 to change to miliseconds giving me a value of 400 to use in rate and it's perfect. when I wrote the code I made sure it always rounds up the result to seconds to allow extra time for the rotor to settle.

If you leave Rate empty or 0 it will wait 120 seconds between each move.

ANY QUESTIONS PLEASE ASK IN THIS THREAD AND PLEASE ANSWER THESE QUESTIONS TO SPEED UP HELP.

what version/build of tvheadend are you using? (look in the about section and paste the bold top line ie. "HTS Tvheadend 3.9.1499~g97999e4")

on what system is tvheadend running? linux pc 32bit or 64bit or other (nas/openelec etc)

what is your tuner card?
what is the rotor your using?
what is the rate set at?

PEOPLES QUESTIONS

if I use the latest stable Openelec version and tvheadend from it will I have the proper versions?
I've just asked in there IRC chat room and was told they are running version 3.9.1083 you need at least version 3.9.1139 have a look at the following link if your brave enough to update it yourself.
http://openelec.tv/forum/79-tvheadend/67708-update-to-newest-tvheadend

I also have a cline I use from a friend. Can you please help me how to configure tvh and oscam to use the cline I have?
Please ask questions about OSCAM in Descrambling section as This thread is for the rotor only.

I'm also not sure how to scan for all the channels on a sat by following your guide.
once you have configured the information above you do it the same way as normal (Pre-defined Muxes in Networks or by adding the muxes individually making sure to choose the correct network when it asks for it)

What OSCam am I Using
it's irrelavent but OSCam r9792 but please note If people are trying to use an encrypted channel then the problem may not be with the rotor but your oscam setup. please check with unencrypted channels to see if the rotor is the problem.

Screenshot.png (83.6 KB) Screenshot.png
1.png (44.7 KB) 1.png
2.png (6.98 KB) 2.png
4.png (23.8 KB) 4.png
5a.png (12.4 KB) 5a.png
5b.png (12.2 KB) 5b.png
5c.png (11.8 KB) 5c.png

Replies (140)

RE: Rotor(Motor) Support Latest Information. - Added by Trevor Tate almost 10 years ago

latest tvheadend git seems to be working for me now (using my extra bit of code i put in), not sure if proper usals is working though, and still cant get the test piece compiled
am running linuxmint 64bit here

wonder why my rotor just takes direct angles, going to test with lon and lat values in tommorow

(at first it did not work, but changed the rotor delay setting to 5 seconds instead of 120, knowing my dish was at position) for first rotor tune, it then worked on, went nicely to 13 hotbird and back to 28.2

Cheers

RE: Rotor(Motor) Support Latest Information. - Added by Trevor Tate almost 10 years ago

This did the trick, the -lm needs to be at the end (a few google searches sorted this!)
gcc -DROTOR_TEST -o rotor_test ./src/input/mpegts/linuxdvb/linuxdvb_rotor.c -lm

RE: Rotor(Motor) Support Latest Information. - Added by Trevor Tate almost 10 years ago

perhaps regarding the usals, I wonder if its to do with installation.

Motor at hardware zero postion
Install Satellite for strongest signal at satellite closest to Zero (South), which was -1'W Thor satellite, tune for highest signal strengh
What then I think i did is store zero position on dreambox, does this actually issue the command 0x6F re calculate satellite positions to motor? so the motor now takes direct angle of satellite, not calculated maths position with reference to south.

But then again i think i often installed new images on my dreambox and used usals with just longitude and lattitude, it found the signal (I wonder if i did a goto 0 command in dreambox and store satellite zero (recalulate) thus adjusting back to direct angles.

need to do some further testing i think and get my dreambox out

RE: Rotor(Motor) Support Latest Information. - Added by Ron L almost 10 years ago

I don't remember ever seeing altitude in any of the old receivers I had.

On the old code if initial rotor grace time was 120 seconds it would never tune. Even if the dish was parked on the correct sat. I think the maximum I could set it at was around 15 or 20 seconds. Since then some time out options have been added to streams so playing with them might allow a longer initial rotor delay time. Regardless 120 seconds is probably way longer than you want or need for a default setting. The risk of setting it too short is that it may lock something as it passes by other satellites and add some services to a MUX that don't belong there. That happens to me fairly often as I spin my dish with a stand alone positioner. Other than making a bit of a mess of the services list it doesn't break any channels. My DVB card blindscans so it'll lock anything on the same frequency +/- 10Khz and same polarity. If you need to specify SR or SYSTEM to get a lock your chances of locking things on the move is considerably lower.

RE: Rotor(Motor) Support Latest Information. - Added by Trevor Tate almost 10 years ago

me neither, never seen altitude on receiver, on the rotot test code it makes no difference to me, maybe if you are at a very high altitude it makes a difference, im am 12 metres above sea level, dish is about 4 metres above that, 16 metres is same angle as 0

RE: Rotor(Motor) Support Latest Information. - Added by Jaroslav Kysela almost 10 years ago

Note that enigma2 uses always zero altitude. But it seems that it affects little the results for altitudes above 1000m - so I added another configuration option.

RE: Rotor(Motor) Support Latest Information. - Added by Ron L almost 10 years ago

I'm finding there is a bit of lag from the time the command is sent until the dish starts to move. Makes the grace time for short hops a bit too short. If you try to compensate by increasing mills/deg then long hops get too long a grace time. I added 2 seconds to the rounding issue line and I'm now able to dial in the grace time pretty much perfectly. If it tries to tune before the dish lands on it's spot you end up having to wait for it to time out and restart. If you guys notice long channel changes on 2 degree moves maybe check that out.

RE: Rotor(Motor) Support Latest Information. - Added by Jaroslav Kysela almost 10 years ago

Ron L wrote:

I'm finding there is a bit of lag from the time the command is sent until the dish starts to move. Makes the grace time for short hops a bit too short. If you try to compensate by increasing mills/deg then long hops get too long a grace time. I added 2 seconds to the rounding issue line and I'm now able to dial in the grace time pretty much perfectly. If it tries to tune before the dish lands on it's spot you end up having to wait for it to time out and restart. If you guys notice long channel changes on 2 degree moves maybe check that out.

OK, I added "Min Rotor Time (seconds)" parameter for this correction. It's in v3.9-2278-g7a16e29 .

RE: Rotor(Motor) Support Latest Information. - Added by Levente Cseh almost 10 years ago

I just set up a new server, and used the 3.9.2275~g066b273 version. It now works perfectly for me. Channel zaps are very fast between channels on different satellites. I'm using 5 orbital positions, (13E, 16E, 19.2E, 28.2E, 28.5E) on a Cine S2, 2 DVB-T tuners, and 2 types of IPTV streams, both multicast and HTTP.

The only problem I have is, that when a scan is ongoing, the server response is very slow. Although I have an i3-2120 @3.3GHz with 4Gb of RAM. What would be the reason for this?

RE: Rotor(Motor) Support Latest Information. - Added by Ron L almost 10 years ago

Jaroslav Kysela wrote:

Ron L wrote:

I'm finding there is a bit of lag from the time the command is sent until the dish starts to move. Makes the grace time for short hops a bit too short. If you try to compensate by increasing mills/deg then long hops get too long a grace time. I added 2 seconds to the rounding issue line and I'm now able to dial in the grace time pretty much perfectly. If it tries to tune before the dish lands on it's spot you end up having to wait for it to time out and restart. If you guys notice long channel changes on 2 degree moves maybe check that out.

OK, I added "Min Rotor Time (seconds)" parameter for this correction. It's in v3.9-2278-g7a16e29 .

Awesome. I can dial in the grace time perfectly with that.

RE: Rotor(Motor) Support Latest Information. - Added by Adam Laurie almost 10 years ago

I wanted to be able to set up my rotor positions without having to revert to unplugging and re-plugging a standard sat receiver, and just do everything from the command line, so I resurrected an old
project of mine:

http://www.alcrypto.co.uk/satmap/

This has a python command line utility called 'diseqctool.py' which allows you to not only steer your dish, but also to search for specific feeds and center the dish on the strongest signal. I use this
in conjunction with the GOTOX steering mode. Source code lives here:

https://github.com/AdamLaurie/satmap

Running the command with no arguments gives you the help:

$ ./diseqctool.py 

Usage: ./diseqctool.py <COMMAND> [ARG(s)] ... [<COMMAND> [ARG(s)] ... ]

  Commands:

     ADAPTER <#>                                      Set DVB adapter no (Default is 0)
     DEMUX <DEVICE>                                   Set DVB Demux device (default is '/dev/dvb/adapter0/demux0')
     EAST <'STEP'|'TIME'> <#>                         Drive EAST for # steps or seconds (TIME 0 drives to end stop)
     FE <DEVICE>                                      Set DVB Front End device (default is '/dev/dvb/adapter0/frontend0')
     FIND <FREQ> <'H'|'V'> <RATE> <'EAST'|'WEST'>     Find and centre on active signal
     FREQ <FREQ>                                      Set Frequency in Hz (default is 10700000)
     GOTO <#>                                         Goto stored satellite position #
     INFO                                             Show Front End device info
     LIMIT <'EAST'|'WEST'>                            Set EAST or WEST motor drive end stops
     POLARITY <'H'|'V'>                               Set Horizonal or Vertical polarity (default is 'H')
     POWER <#>                                        Power up positioner motor for # seconds
     SCAN <TYPE> <'EAST'|'WEST'> <STEPS> <LOGFILE>    Perform frequency scan and log results
     SIGNAL                                           Show current status of receiver
     STATUS                                           Show current status of positioner motor
     STEER <DEGREES> <'EAST'|'WEST'>                  Steer to angle - e.g. 13.0 EAST for HotBird
     STOP                                             Stop positioner motor
     STORE <#>                                        Store current position as satellite #
     SYMBOL <RATE>                                    Set Symbol Rate (default is 22000000)
     TUNE                                             Tune DVB Receiver (default is 10700000 Hz, Horizontal, Symbolrate 22000000)
     WEST <'STEP'|'TIME'> <#>                         Drive WEST for # steps or seconds (TIME 0 drives to end stop)

  Commands will be executed sequentially and must be combined as appropriate.

  Note that not all cards provide power all the time, so you may need to bracket
  steering commands with POWER to enable motor - e.g.

    ./diseqctool.py power 5 west step 50 power 30

  Timings will vary with equipment, but as there is no way for Diseqc 1.x compliant
  hardware to tell when a positioning command has finished, you must ensure that
  power is made available for the maximum possible duration of any movement. EAST/WEST
  STEP command are self powering (# + 1 seconds).

and here is an example of setting up a satellite (Hotbird at 13.0 East):

First, go to your tvheadend control panel and disable your sat receiver card so that the python script can control it.

Now we can check that we can talk to the card (I have 4 TV tuners and a sat receiver, so my sat card is adapter number 4):

$ ./diseqctool.py adapter 4 info

  Setting adapter to 4 (/dev/dvb/adapter4) OK

                 Device: /dev/dvb/adapter4/frontend0
                   Name: STV090x Multistandard
                   Type: QPSK (DVB-S)
               Min Freq: 950.000 MHz (10700000)
               Max Freq: 2150.000 MHz (12750000)
              Freq Step: 0.0 MHz
         Freq Tolerance: 0.0 MHz
        Min Symbol Rate: 1 MSym/s (1000000)
        Max Symbol Rate: 45 MSym/s (45000000)
  Symbol Rate Tolerance: 0 ppm
         Notifier Delay: 0 ms
           Capabilities: Auto inversion
                         Auto FEC
                         QPSK
                         2G modulation

The first thing I'll do is steer to a known position - this could either be a satellite that's already configured, or as in this case, the specific location the satellite should be - 13.0 degrees east:


$ ./diseqctool.py adapter 4 power 5 steer 13.0 east power 30

  Setting adapter to 4 (/dev/dvb/adapter4) OK

  Powering motor for 5 seconds - OK       

  Steering to 13.00 EAST - OK

  Powering motor for 30 seconds - OK       

Note that I apply power before and after the STEER command to ensure the rotor is active throughout.

Now I can start looking for the new satellite... First I find it on SatBeams:

http://www.satbeams.com/channels

and pick a frequency that is likely to be transmitting. It doesn't need to be FTA as we only want to lock onto the signal, not decrypt it.
In this case, there is a transponder on 11727000 with vertical polarity and a symbol rate of 27500000...

I know that my satellite dish is not correctly zeroed, and that I'm pointing about 28 steps East, so I will search Westward for my new bird:

$ ./diseqctool.py adapter 4 find 11727000 v 27500000 west

  Setting adapter to 4 (/dev/dvb/adapter4) OK

  Finding transponder with frequency 11727000 WESTwards
    Found after 23 steps
    signal strength: 33422
    signal strength: 33422
    signal strength: 33422
    signal strength: 34078
    signal strength: 34078
    signal strength: 34078
    signal strength: 34078
    signal strength: 34078
    signal strength: 34078
    signal strength: 34078
    signal strength: 34078
    signal strength: 34078
    signal strength: 34078
    signal strength: 33422
    signal strength: 33422
    signal strength: 33422
      strongest signal was 34078
      seeking back to that level...
          stepping another 5 steps to centre

I also know from previous tests that I have about 6 steps per degree, so if the number of steps is getting too high for the satellite's actual position, I can abort and try again on a different frequency.

Now we seem to have found the satellite, we can verify it by looking at some data:

$ ./diseqctool.py adapter 4 freq 11727000 polarity v symbol 27500000 tune signal

  Setting adapter to 4 (/dev/dvb/adapter4) OK

  Setting Frequency to 11727000 - OK

  Setting Polarity to Vertical - OK

  Setting Symbol Rate to 27500000 - OK

  Tuning receiver to 11727000 Hz, Vertical, Symbolrate 27500000 - OK

                 Status: Signal detected
                         Carrier detected
                         FEC is stable (VITERBI)
                         Found sync bytes
                         Signal locked
 BER: 0
 SNR: 20359
 STRENGTH: 33422

Frequency: 1127000
Spectral Inversion: Auto Inversion
Symbol Rate: 27500000
FEC: FEC Auto

$ dvbsnoop -adapter 4 0x0010|grep -i orbital
            Orbital_position: 304 (=  13.0)

and we can see that we have a good signal, and in the dvbsnoop data our orbital position is indeed 13.0, so we're definitely looking at the right satellite!

Finally, I store the new sat in position 13:

$ ./diseqctool.py adapter 4 store 13

  Setting adapter to 4 (/dev/dvb/adapter4) OK

  Storing position as satellite no. 13 - OK

and I can go back to my tvheadend config, set up a new network for Hotbird 13 and a GOTOX sat feed for it and we're done!

I hope this is useful, and please feel free to send me any feedback via the github page.

cheers,
Adam

RE: Rotor(Motor) Support Latest Information. - Added by Ron L almost 10 years ago

Having an stv090x device you may be interested in this....

https://bitbucket.org/updatelee/updatedvb

This is what I used to program my V-Box GOTOX positions. You don't need to know any frequency on the satellite, just start scanning in a loop and click the buttons to move the dish until you see the spectrum of the satellite appear in the graph. Click on frequency in the spectrum graph and it will tune then display a PID analysis of the stream, bitrates and other signal info including dBm. You can bump the dish one click at a time to peak dBm then save the GOTOX position to the V-Box. Also supports USALS. From the tuning window you can play, demux to dvr, stream to the network etc.

There are screen shots in it's wiki.

We use this a lot for finding back hauls of sporting events, concerts etc. Things that only pop up temporarily. There is no way to know in advance what satellite they will be on or what frequency. With this you can find these things fairly easily.

RE: Rotor(Motor) Support Latest Information. - Added by Adam Laurie almost 10 years ago

Having an stv090x device you may be interested in this....

https://bitbucket.org/updatelee/updatedvb

Nice. Thanks, i'll give it a try...

RE: Rotor(Motor) Support Latest Information. - Added by Adam Laurie almost 10 years ago

Having an stv090x device you may be interested in this....

https://bitbucket.org/updatelee/updatedvb

Nice. Thanks, i'll give it a try...

Unfortunately this didn't work for me. The drivers included cause a kernel panic as soon as anything tries to use the frontend. However, it's still a very interesting project. Do you know where the blind and spectrum scanning features are documented for the stv090x? I can't find anything on the TBS website...

RE: Rotor(Motor) Support Latest Information. - Added by Ron L almost 10 years ago

The kernel panic is possibly related to videobuf2. This media tree is synced with linux media. Some of the drivers are starting to be moved to videobuf2. Any that have been are creating kernel panic. My Prof 7301 with cx-88 locks the whole machine up tight within minutes. I had to revert back to pre-videobuf2 cx-88.

The frontend has been modified to add in the ability to read the spectrum info from the device. You have to copy frontend.h and dmx.h over to /usr/include/linux/dvb/ then recompile your software before it can access frontend.

There is a support thread for the driver here....

http://rickcaylor.websitetoolbox.com/post/v4lupdatelee-6433163

updateDVB app here...

http://rickcaylor.websitetoolbox.com/post/updatedvb-thread-6428438

updatelee is the guy you want to talk to there.

(126-140/140)