Жду с нетерпением новой проги =).
Насщёт rotor-gotoNN я теперь догнал, что сам плагин в Ведре не правильно прописывает/сохраняет позиции в моторе ...... надо одолжить будет у кого ресивер и сохранить нормально позиции.
Жду с нетерпением новой проги =).
Насщёт rotor-gotoNN я теперь догнал, что сам плагин в Ведре не правильно прописывает/сохраняет позиции в моторе ...... надо одолжить будет у кого ресивер и сохранить нормально позиции.
rotor-usals ver 0.0.1 28.01.07
== назначение ==
утилита для управления полар-мотором по командам USALS
Ротор устанавливается в позиции расчитанные по широте спутника,
широте и долготе установки моторизованной антенны.
Ротор должен поддерживать эту фичу.
== HELP ==
# ./rotor-usals -?
Usage: rotor-gotoNN [options]
turn USALS sat polar-rotor to calculated position
Options:
-d N : set diseqc switch at input N (0=A/A, 1=A/B, 2=B/A, 3=B/B) (default 0)
-V 13|18 : set LNB voltage to 13 or 18 Volts (default 18 Volts)
-O 1 : set LNB power supply in overvoltage mode (add about +1 Volt)
-X DD.MM : rotor location Longitude, XX=degrees MM=minutes, minus sign for East (default -30.20)
-Y DD.MM : rotor location Latitude, XX=degrees MM=minutes, minus sign for South (default 59.51)
-s DD.dd : Sat Longitude in degrees, minus sign for East (default -19.20)
-M 0|1 : Method of calculate second data byte, 1=New (more accuracy) 0=OLD (default 1)
-t NN : timeout NN seconds while LNB voltage is up after send Diseqc command (default 30)
-?/h : this help
== опции ==
из хелпа все вроде понятно - но все же
- вначале поднимается напряжение с карты 13 или 18 вольт ( -V 13|18), напряжение увеличивается,
если задано, на 1 вольт (-O 1), переключается 4-х входовый десик свитч (-d N)
- затем на основании параметров засылается в ротор определенная команда
- для удобства, географические координаты установки моторизованной антенны
вводятся в формате ЦЕЛОЕ_ЧИСЛО_ГРАДУСОВ.ЦЕЛОЕ_ЧИСЛО_МИНУТ
- долгота вводится в параметре -X DD.MM - знак минус означает ВОСТОЧНУЮ долготу
- широта вводится в параметре -Y DD.MM - знак минус означает ЮЖНУЮ широту
- долгота спутника вводится в параметре -s DD.dd - причем здесь вводится
градусу и доли градуса - минусовые значения - для "восточных" спутников
- опция установки метода расчета младшего байта данных - -M1 - более точный метод
-M0 - метод в котором угол округляется до десятых долей градуса и используется таблица
пересчета десятых долей в двоичные команды (метод целиком взят из rotor плагина для vdr)
- в параметре -t NN вводится таймаут в течении которого напряжение на роторе
будет удерживаться
== пример ==
ротор установлен в Питере (30 градусов 20минут восточной долготы,
59 градусов 51 минута северной широты) и хотим повернуть его в направлении
на спутник 95Е
# ./rotor-usals -s -95 -X -30.20 -Y 59.51
Set LNB power supply to 18 Volts
Send command to switch: diseqc_sw_no:0 cmd: [e0 10 38 00]. Sending try: 1 2 3
Sat: Longitude = -95.00 deg.
Location: Longitude = -30.33 deg. ( -30.20 deg.min), Latitude = 59.85 deg. ( 59.51 deg.min)
Antenna: Azimuth = 112.26 deg., Elevation = 3.73 deg.
Rotor: Angle = -68.73 deg.
Send USALS command to rotor: method 1 cmd: [e0 31 6e e4 4b]. Sending try: 1 2
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Frontend closed! Goodbye :)
== сборка ==
# make
== благодарности ==
авторам программ szap и rotor плагина для vdr и GPL лицензии по которой исходные этих
программ распространяются
Показать весь код
вот и усе ))))
буду ждать тестов - возможны ошибки ...
кроме ошибок из за драйвера my_hand.sys - возможны ошибки в математике -
и сам буду искать и буду благодарен за рапорты ...
Прога собралась нормально. А вот мотор едет куда то не туда, для сравнения, вот команды плагина при переключении на Астру 19.2:
Jan 29 02:30:47 arvdr vdr: [11498] Rotor-command E1 31 6E E0 A3 sent
Jan 29 02:30:47 arvdr vdr: [11501] Rotor-command 0 0 0 0 0 sent
Jan 29 02:30:47 arvdr vdr: [11498] Rotor-command E1 31 6E E0 A3 sent
Jan 29 02:30:48 arvdr vdr: [11501] Rotor-command 0 0 0 0 0 sent
А вот что выдаёт свеже-испечённая програмулька:
arvdr:/usr/src/rotor-usals.0.0.1# ./rotor-usals -s -19.20 -Y 51.52 -X 9.91
Set LNB power supply to 18 Volts
Send command to switch: diseqc_sw_no:0 cmd: [e0 10 38 00]. Sending try: 1 2 3
Sat: Longitude = -19.20 deg.
Location: Longitude = 10.52 deg. ( 9.91 deg.min), Latitude = 51.87 deg. ( 51.52 deg.min)
Antenna: Azimuth = 144.03 deg., Elevation = 24.52 deg.
Rotor: Angle = -32.60 deg.
Send USALS command to rotor: method 1 cmd: [e0 31 6e e2 09]. Sending try: 1 2
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Frontend closed! Goodbye :)
arvdr:/usr/src/rotor-usals.0.0.1#
Показать весь код
И мотор уехал намного дальше Астры
Если же указываю поворот на Амос, то он не доезжает до него:
arvdr:/usr/src/rotor-usals.0.0.1# ./rotor-usals -s 4.0 -Y 51.52 -X 9.91 -M 0
Set LNB power supply to 18 Volts
Send command to switch: diseqc_sw_no:0 cmd: [e0 10 38 00]. Sending try: 1 2 3
Sat: Longitude = 4.00 deg.
Location: Longitude = 10.52 deg. ( 9.91 deg.min), Latitude = 51.87 deg. ( 51.52 deg.min)
Antenna: Azimuth = 171.74 deg., Elevation = 30.34 deg.
Rotor: Angle = -7.19 deg.
Send USALS command to rotor: method 0 cmd: [e0 31 6e e0 72]. Sending try: 1 2
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Показать весь код
команды плагина при переключении:
Jan 29 02:46:54 arvdr vdr: [12779] Rotor-command E1 31 6E D0 F5 sent
Jan 29 02:46:54 arvdr vdr: [12782] Rotor-command 0 0 0 0 0 sent
Jan 29 02:46:55 arvdr vdr: [12779] Rotor-command E1 31 6E D0 F5 sent
panoramio daten: 51є 31' 44.44" N 9є 55' 5.63" E
пожалуйста читай help!!!
- для восточной долготы надо со знаком минус координаты задавать
и после точки в координатах - угловые минуты а не доли градуса
ЦитатаАмос ... команды плагина при переключении: E1 31 6E D0 F5 sent
# ./rotor-usals -s 4 -Y 51.31 -X -9.54
Set LNB power supply to 18 Volts
Send command to switch: diseqc_sw_no:0 cmd: [e0 10 38 00]. Sending try: 1 2 3
Sat: Longitude = 4.00 deg.
Location: Longitude = -9.90 deg. ( -9.54 deg.min), Latitude = 51.52 deg. ( 51.31 deg.min)
Antenna: Azimuth = 197.54 deg., Elevation = 29.60 deg.
Rotor: Angle = 15.33 deg.
Send USALS command to rotor: method 1 cmd: [e0 31 6e d0 f5]. Sending try: 1 2
Показать весь код
видим cmd: [e0 31 6e d0 f5] - точное совпадение =)
Цитатаоманды плагина при переключении на Астру 19.2: E1 31 6E E0 A3
# ./rotor-usals -s -19.2 -Y 51.31 -X -9.54
Set LNB power supply to 18 Volts
Send command to switch: diseqc_sw_no:0 cmd: [e0 10 38 00]. Sending try: 1 2 3
Sat: Longitude = -19.20 deg.
Location: Longitude = -9.90 deg. ( -9.54 deg.min), Latitude = 51.52 deg. ( 51.31 deg.min)
Antenna: Azimuth = 168.18 deg., Elevation = 30.39 deg.
Rotor: Angle = -10.26 deg.
Send USALS command to rotor: method 1 cmd: [e0 31 6e e0 a4]. Sending try: 1 2
Показать весь код
видим [e0 31 6e e0 a4} отличие примерно на единицу младшего разряда = примерно 0.06 градуса =)
удачи в тестах ))))
осмысливаю и наверно скоро добавлю в интерфейс еще несколько опций и в rotor-gotoNN и в rotor-usals
TODO:
- опции установки номеров adapter (-a N) и frontend (-f N)
- установку напряжения в 0 (-V -1) - для прогонов утилитки без поднятия напряжения
- возможность коррекции после поворота в расчитаную или запомненную позицию на некоторое
количество шаговна восток ( -e NN) или запад ( -w NN)
- возможность сохранения положения ротора в память ротора в указанную ячейку (-S NN)
rotor-gotoNN.0.0.3 29.01.08
HELP
# ./rotor-gotoNN -?
Usage: rotor-gotoNN [options]
turn sat polar-rotor to position stored in it or drive some steps to East or West
Options:
-a N : set adapter N (default 0)
-f N : set frontend N (default 0)
-d N : set diseqc switch at input N (0=A/A, 1=A/B, 2=B/A, 3=B/B) (default 0)
-V 0|13|18 : set LNB voltage to OFF, 13 or 18 Volts (default 18 Volts)
-O 1 : set LNB power supply in overvoltage mode (add about +1 Volt)
-n NN : drive to stored in rotor position NN (default 5)
-t NN : timeout NN seconds while LNB voltage is up (default 30)
-e NN : drive rotor NN steps to east (NN = 1...127 steps) (default 0)
-w NN : drive rotor NN steps to west (NN = 1...127 steps) (default 0)
-L NN : rotor speed parameter for calculate timeout after send steps command
- for rotor SG2100 NN=15 - you can set it by '-L 15'
- default for slow rotor NN=2
-?/h : this help
комментарии к изменениям
- добавлены опции на установку номера адаптера -a N и фронтенда -f N -
по умолчанию и тот и другой = 0 и используется /dev/dvb/adapter0/frontend0
- добавлен выбор в опцию установки напряжения источника питания -V 0 -
отключения напряжения - может быть полезна для тестов самой программы
изменена логика выработки команд на поворот
- команда на поворот ротора в запомненную позицию не засылается если -n 0
- команды на перемещение на некоторое количество шагов не вырабатываются
если не используются опции -e NN -w NN или NN = 0 (по умолчанию эти команды
не вырабатываются)
- основная задержка перед снятием напряжения вырабатывается всегда - если
явно не задано -t 0
- после выработки команд на перемещение на NN шагов введена дополнительная задержка
удержания напряжения на выходе карты.
для ее расчета - по формуле timeout = steps/speed_step + 2 (секунд) - введена
опция -L NN где NN некий скоростной множитель - для моторов SG2100 он
порядка 15 ( -L 15) - при этом на 100 шагов задержка будет 8 секунд
по умолчанию NN установлен в 2 - при этом задержка будет 52 секунды
исправлена ошибка с командой на переключение свитча - по моей ошибке вместо
e0 10 38 fх засылалась e0 10 38 0х
примеры использования
перемещение в запомненную позицию 10
# ./rotor-gotoNN -n 10
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send command to switch: disecq_sw_no:0 cmd: [e0 10 38 f0]. Sending try: 1 2 3
Send command to rotor: rotor_no:10 cmd: [e0 31 6b 0a]. Sending try: 1 2 3
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Frontend closed! Goodbye :)
только проверка переключения DISEQC свитча в положение A/B
# ./rotor-gotoNN -n 0 -d 1
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send command to switch: disecq_sw_no:1 cmd: [e0 10 38 f4]. Sending try: 1 2 3
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Frontend closed! Goodbye :)
сдвиг от текущего положения на 12 шагов на запад
# ./rotor-gotoNN -n 0 -t 0 -w12
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send command to switch: disecq_sw_no:0 cmd: [e0 10 38 f0]. Sending try: 1 2 3
Send command to rotor: Drive 12 steps to West. cmd: [e0 31 69 f4]. Sending try: 1 2 3
Timeout 8 seconds: . . . .
Frontend closed! Goodbye :)
комбинация сдвига в запомненную позицию 7 и сдвига на 6 шагов на восток и установкой
скорости мотора 15
# ./rotor-gotoNN -n 7 -e 6 -L15
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send command to switch: disecq_sw_no:0 cmd: [e0 10 38 f0]. Sending try: 1 2 3
Send command to rotor: rotor_no:7 cmd: [e0 31 6b 07]. Sending try: 1 2 3
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Send command to rotor: Drive 6 steps to East. cmd: [e0 31 68 fa]. Sending try: 1 2 3
Timeout 2 seconds: . .
Frontend closed! Goodbye :)
Показать весь код
TODO
- осталось добавить опцию на запоминание позиции в определенный номер
rotor-usals.0.0.2 29.01.08
# ./rotor-usals -?
./rotor-usals: invalid option -- ?
Usage: rotor-gotoNN [options]
turn USALS sat polar-rotor to calculated position
Options:
-a N : set adapter N (default 0)
-f N : set frontend N (default 0)
-d N : set diseqc switch at input N (0=A/A, 1=A/B, 2=B/A, 3=B/B) (default 0)
-V 0|13|18 : set LNB voltage to OFF, 13 or 18 Volts (default 18 Volts)
-O 1 : set LNB power supply in overvoltage mode (add about +1 Volt)
-X DD.MM : rotor location Longitude, XX=degrees MM=minutes, minus sign for East (default -30.20)
-Y DD.MM : rotor location Latitude, XX=degrees MM=minutes, minus sign for South (default 59.51)
-s DD.dd : Sat Longitude in degrees, minus sign for East (default -19.20)
-M 0|1 : Method of calculate second data byte, 1=New (more accuracy) 0=OLD (default 1)
-t NN : timeout NN seconds while LNB voltage is up after send Diseqc command (default 30)
-e NN : drive rotor NN steps to east (NN = 1...127 steps) (default 0)
-w NN : drive rotor NN steps to west (NN = 1...127 steps) (default 0)
-L NN : rotor speed parameter for calculate timeout after send steps command
- for rotor SG2100 NN=15 - you can set it by '-L 15'
- default for slow rotor NN=2
-?/h : this help
комментарии к добавкам
- добавлены опции на установку номера адаптера -a N и фронтенда -f N -
по умолчанию и тот и другой = 0 и используется /dev/dvb/adapter0/frontend0
- добавлен выбор в опцию установки напряжения источника питания -V 0 -
отключения напряжения - может быть полезна для тестов самой программы
- команда на поворот ротора в расчитаную позицию не засылается и задержка
не производится если -s 0
- добавлены опции на корректирущие шаги на восток -e NN или запад -w NN
(NN должны быть в диапазоне 0-127 - при 0 доворота не производится) после
засылки УСАЛС команд - то есть можно после установки в рассчитанную позицию
несколько сместить положение ротора
если NN=0 или эти опции не заданы - то доворота и не производится
- после засыла команд на перемещение на NN шагов производится дополнительная
задержка удержания напряжения на выходе карты.
для ее расчета - по формуле timeout = steps/speed_step + 2 (секунд) - введена
опция -L NN где NN некий скоростной множитель - для моторов SG2100 он
порядка 15 ( -L 15) - при этом на 100 шагов задержка будет 8 секунд
по умолчанию NN установлен в 2 - при этом задержка будет 52 секунды
исправлена ошибка с командой на переключение свитча - по моей ошибке вместо
e0 10 38 fх засылалась e0 10 38 0х
после тестирования мотора совместно с десик свитчем количество засылок УСАЛС
команд установлена как и всех прочих команд - 3 попытки - с 2-мя попытками
мотор за свитчем не принимал команд
примеры
установить на птичку 13Е и довернуть еще на 2 шага на восток
# ./rotor-usals -s 13 -e2
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send command to switch: diseqc_sw_no:0 cmd: [e0 10 38 f0]. Sending try: 1 2 3
Sat: Longitude = 13.00 deg.
Location: Longitude = -30.33 deg. ( -30.20 deg.min), Latitude = 59.85 deg. ( 59.51 deg.min)
Antenna: Azimuth = 227.49 deg., Elevation = 12.95 deg.
Rotor: Angle = 46.49 deg.
Send USALS command to rotor: method 1 cmd: [e0 31 6e d2 e7]. Sending try: 1 2
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Send command to rotor: Drive 2 steps to East. cmd: [e0 31 68 fe]. Sending try: 1 2 3
Timeout 3 seconds: . . .
Frontend closed! Goodbye :)
ничего не делать ))) напряжение не поднимать - УСАЛС команды не засылать
# ./rotor-usals -s 0 -V0
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply OFF
Send command to switch: diseqc_sw_no:0 cmd: [e0 10 38 f0]. Sending try: 1 2 3
Sat: Longitude = 0.00 deg.
Location: Longitude = -30.33 deg. ( -30.20 deg.min), Latitude = 59.85 deg. ( 59.51 deg.min)
Antenna: Azimuth = 214.09 deg., Elevation = 17.39 deg.
Rotor: Angle = 32.69 deg.
Frontend closed! Goodbye :)
Показать весь код
TODO
- осталось добавить опцию на запоминание позиции в определенный номер
- окончательно разобраться с математикой расчета параметров установки антенны и угла
поворота ротора
- добавить в расчитываемые параметры установки тарели и расчет поворота конвертера (skew) -
просто для того чтоб было
rotor-usals.0.0.2а
после окончательного тестирования мотора совместно с десик свитчем количество
засылок УСАЛС команд установлена - 5 попыток - с 2-мя и 3-мя попытками
мотор за свитчем не всегда отрабатывал USALS команды - хотя без свитча достаточно было и 2х
командам на перемещение в запомненную позицию или на NN шагов
достаточно и 3х посылок даже за свитчем
добавил себе в TODO
- введение опции установки количества засылок мастер команд
Кураж, программулька просто класс, пашет пока без запинки =)
rotor-usals.0.0.3 30.01.2008
HELP
# ./rotor-usals -?
./rotor-usals: invalid option -- ?
Usage: rotor-usals [options]
turn USALS sat polar-rotor to calculated position
Options:
-a N : set adapter N (default 0)
-f N : set frontend N (default 0)
-d N : set diseqc switch at input N (0=A/A, 1=A/B, 2=B/A, 3=B/B) (default 0)
-V 0|13|18 : set LNB voltage to OFF, 13 or 18 Volts (default 18 Volts)
-O 1 : set LNB power supply in overvoltage mode (add about +1 Volt)
-X DD.MM : rotor location Longitude, XX=degrees MM=minutes, minus sign for East (default -30.20)
-Y DD.MM : rotor location Latitude, XX=degrees MM=minutes, minus sign for South (default 59.51)
-s DD.dd : Sat Longitude in degrees, minus sign for East (default -19.20)
-M 0|1 : Method of calculate second data byte, 1=New (more accuracy) 0=OLD (default 1)
-t NN : timeout NN seconds while LNB voltage is up after send Diseqc command (default 30)
-e NN : drive rotor NN steps to east (NN = 1...127 steps) (default 0)
-w NN : drive rotor NN steps to west (NN = 1...127 steps) (default 0)
-L NN : rotor speed parameter for calculate timeout after send steps command
- for rotor SG2100 NN=15 - you can set it by '-L 15'
- default for slow rotor NN=2
-R N : repeat all DISEQC master command N times (default 1)
-D NN : delay NN msec before send any rotor DISEQC master command (default 1000 e.g. 1 second)
It need to rotor init after power up. must be > 800 msec for SG-2100
-?/h : this help
комментарии к изменениям
- введена задержка между переключением десик входа и засылкой команд на ротор
Как показали разбирательства - ротору нужно время на инициализацию после установления
напряжения на нем - для ротора SG-2100 это порядка 0.8 секунды
для изменения этой задержки введена опция -D NN где NN задержка в миллисекундах
по умолчанию -D 1000 = 1 секунде ... устанавливать это значение меньше 800 не рекомендую
- так как ротор теперь устойчиво понимает и одну команду после задержки - количество попыток
засылки команд по умолчанию = 1
- если очень хочется повторить засылки мастер команд - введена опция -R N - где N
равно количеству повторов с фиксированной задержкой между ними 0.2 секунды
=== пример ====
установить напряжение 13 вольт, включить 3-ий вход десика, дать задержку после
переключения на 800 мсек, повернуть на спутник 10Е потом довернуть 12 шагов на запад
# ./rotor-usals -s -10 -w12 -d2 -D800 -V13
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 13 Volts
Send command to switch: diseqc_sw_no:2 cmd: [e0 10 38 f8]. Sending try: 1
Now delay 800 msec before sending command to rotor...
Sat: Longitude = -10.00 deg.
Location: Longitude = -30.33 deg. ( -30.20 deg.min), Latitude = 59.85 deg. ( 59.51 deg.min)
Antenna: Azimuth = 203.20 deg., Elevation = 19.92 deg.
Rotor: Angle = 21.96 deg.
Send USALS command to rotor: method 1 cmd: [e0 31 6e d1 5f]. Sending try: 1
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Send command to rotor: Drive 12 steps to West. cmd: [e0 31 69 f4]. Sending try: 1
Timeout 8 seconds: . . . . . . . .
Frontend closed! Goodbye :)
Показать весь код
в-общем то со значениями по умолчанию -D 1000 -R 1 все нормально срабатывает
посему обращаться к этим опциям скорее всего не понадобится
равно как и большинство других опций
а если чуть чуть поправить код под свои нужды - скажем нужно использовать
- другой номер adapter (скажем =1 а не 0)
- ротор подключен на вход десик свитча не A/A (0) а B/A (2)
- долгота составляет 20 градусов 37 минут восточной
- широта составляет 30 градусов 01 минута северной
- используется ротор SG-2100 для которого скоростной параметр = 15
то можно все это прописать в код в значения по умолчанию - найдите в конце кода
строки с этими переменными и исправьте их для этого примера
unsigned int adapter = 1;
int diseqc_sw_no = 2;
double Long_degrees_minutes = -20.37;
double Lat_degrees_minutes = 30.01;
unsigned int speed_step = 15;
и пересоберите утилитку - и после этого будет достаточно для вашей системы просто
давать команду например
для поворота в позицию 13Е
rotor-gotoNN.0.0.4 30.01.2008
HELP
# ./rotor-gotoNN -h
./rotor-gotoNN: option requires an argument -- h
Usage: rotor-gotoNN [options]
turn sat polar-rotor to position stored in it or drive some steps to East or West
Options:
-a N : set adapter N (default 0)
-f N : set frontend N (default 0)
-d N : set diseqc switch at input N (0=A/A, 1=A/B, 2=B/A, 3=B/B) (default 0)
-V 0|13|18 : set LNB voltage to OFF, 13 or 18 Volts (default 18 Volts)
-O 1 : set LNB power supply in overvoltage mode (add about +1 Volt)
-n NN : drive to stored in rotor position NN (default 5)
-t NN : timeout NN seconds while LNB voltage is up (default 30)
-e NN : drive rotor NN steps to east (NN = 1...127 steps) (default 0)
-w NN : drive rotor NN steps to west (NN = 1...127 steps) (default 0)
-L NN : rotor speed parameter for calculate timeout after send steps command
- for rotor SG2100 NN=15 - you can set it by '-L 15'
- default for slow rotor NN=2
-R N : repeat all DISEQC master command N times (default 1)
-D NN : delay NN msec before send any rotor DISEQC master command (default 1000 e.g. 1 second)
It need to rotor init after power up. must be > 800 msec
-?/h : this help
== комментарии к изменениям ==
- введена задержка между переключением десик входа и засылкой команд на ротор
Как показали разбирательства - ротору нужно время на инициализацию после установления
напряжения на нем - для ротора SG-2100 это порядка 0.8 секунды
для изменения этой задержки введена опция -D NN где NN задержка в миллисекундах
по умолчанию -D 1000 = 1 секунде ... устанавливать это значение меньше 800 не рекомендую
- так как ротор теперь устойчиво понимает и одну команду после задержки - количество попыток
засылки команд по умолчанию = 1
- если очень хочется повторить засылки мастер команд - введена опция -R N - где N
равно количеству повторов с фиксированной задержкой между ними 0.2 секунды
== пример ==
включить вход B/A, повернуть в запомненную позицию 5 и довернуть на 20 шагов на восток
# ./rotor-gotoNN -d2 -n 5 -e20
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send command to switch: disecq_sw_no:2 cmd: [e0 10 38 f8]. Sending try: 1
Now delay 1000 msec before sending command to rotor...
Send command to rotor: rotor_no:5 cmd: [e0 31 6b 05]. Sending try: 1
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Send command to rotor: Drive 20 steps to East. cmd: [e0 31 68 ec]. Sending try: 1
Timeout 12 seconds: . . . . . . . . . . . .
Frontend closed! Goodbye :)
Показать весь код
rotor-usals.0.0.4 31/01/2008
== HELP ==
# ./rotor-usals -?
Usage: rotor-usals [options]
turn USALS sat polar-rotor to calculated position
Options:
-a N : set adapter N (default -a0)
-f N : set frontend N (default -f0)
-V 0|13|18 : set LNB voltage to OFF, 13 or 18 Volts (default -V18)
-O 0|1 : set LNB power supply in 0=normal/1=overvoltage mode (add about +1 Volt) (default -O0)
-d N : set diseqc switch at input N (0=no_switch 1=A/A, 2=A/B, 3=B/A, 4=B/B) (default -d0)
-D NN : delay NN msec before send any rotor DISEQC master command (default -D1000 e.g. 1 second)
It need to rotor init after power up. must be > 800 msec for SG-2100
-X DD.MM : rotor location Longitude, XX=degrees MM=minutes, minus sign for East (default -X -30.20)
-Y DD.MM : rotor location Latitude, XX=degrees MM=minutes, minus sign for South (default -Y 59.51)
-s DD.dd : Sat Longitude in degrees, minus sign for East (default -s -19.20) (-s0 = no send USALS command)
-M 0|1 : Method of calculate second data byte, 1=New (more accuracy) 0=OLD (default -M1)
-t NN : timeout NN seconds while LNB voltage is up after send USALS command (default -t30)
-e NN : drive rotor NN steps to east (NN = 0...127 steps) (default -e0 = no send steps command)
-w NN : drive rotor NN steps to west (NN = 0...127 steps) (default -w0 = no send steps command)
-L NN : rotor speed parameter for calculate timeout after send steps command
- for rotor SG2100 NN=15 - you can set it by '-L 15'
- default for slow rotor -L2
-R N : repeat all DISEQC master command N times (default -R1)
-S NN : store current rotor position in rotor memory cell NN (default -S0 = no store)
-?/h : this help
== комментарии к изменениям ==
- для возможности отключения засылки команд десик на переключение свитча
(скажем в варианте когда голый ротор без переключателей) изменены значения
опции -d N - теперь
-d 0 означает что команды на свитч не засылаются!!!
-d 1 означает вход A/A, -d2 = A/B, -d3=B/A, -d4=B/B
по умолчанию -d0 - без свитча
- добавлена опция -S NN для запоминания итогового положения ротора (в котором
он оказался в результате выполнения USALS команды и команды корректирующих шагов
в ячейку с номером NN.
Максимальный номер ячейки памяти зависит от мотора - для SG2100 это 26.
Нулевую ячейку не используйте - она имеет спец назначение.
- некоторая косметика в коде, хелпе и выводе инфо - колокольчики и свисточки одним словом )))
на расчеты не влияют )))
== пример ======
рассчитать и повернуть на спутник в позиции 23.5Е потом довернуть 2 шага восток и
запомнить это положение в ячейку номер 26, ротор подключен к B/A входу
# ./rotor-usals -s -23.5 -e2 -d3 -S26
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send command to switch: diseqc_sw_no:3 cmd: [e0 10 38 f8]. Sending try: 1
Now delay 1000 msec before sending command to rotor...
Sat: Longitude = -23.50°
Location: Longitude = -30.33° (-30°20'), Latitude = 59.85° (59°51')
Antenna: Azimuth = 187.89°, Elevation = 21.84°
Rotor: Angle = 7.39°
Send USALS command to rotor: method 1 cmd: [e0 31 6e d0 76]. Sending try: 1
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Send command to rotor: Drive 2 steps to East. cmd: [e0 31 68 fe]. Sending try: 1
Timeout 3 seconds: . . .
Send STORE command to rotor: rotor_store_cell:26 cmd: [e0 31 6a 1a]. Sending try: 1
Frontend closed! Goodbye :)
переместить в рассчитанную для спутника 16Е позицию - ротор подключен напрямую -
команды на свитч не засылаются
# ./rotor-usals -s -16
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Now delay 1000 msec before sending command to rotor...
Sat: Longitude = -16.00 deg.
Location: Longitude = -30.33 deg. ( -30.20 deg.min), Latitude = 59.85 deg. ( 59.51 deg.min)
Antenna: Azimuth = 196.46 deg., Elevation = 21.00 deg.
Rotor: Angle = 15.50 deg.
Send USALS command to rotor: method 1 cmd: [e0 31 6e d0 f7]. Sending try: 1
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Frontend closed! Goodbye :)
Показать весь код
продолжаю разыскивать формулу для расчета угла наклона головки это единственное что у
меня осталось в TODO для этой утилиты
утилитка теперь почти уже во всем меня удовлетворяет =)
так что после внесения в утилиту расчета значения LNB tilt - ей будет присвоен номер 0.1.0
и забудется она навсегда )))
rotor-gotoNN.0.0.5 31.01.2008
== HELP ==
# ./rotor-gotoNN -?
./rotor-gotoNN: invalid option -- ?
Usage: rotor-gotoNN [options]
turn sat polar-rotor to position stored in it or drive some steps to East or West
Options:
-a N : set adapter N (default -a0)
-f N : set frontend N (default -f0)
-V 0|13|18 : set LNB voltage to OFF, 13 or 18 Volts (default -V18)
-O 0|1 : set LNB power supply in 0=normal/1=overvoltage mode (add about +1 Volt) (default -O0)
-d N : set diseqc switch at input N (0=no_switch, 1=A/A, 2=A/B, 3=B/A, 4=B/B) (default -d0)
-D NN : delay NN msec before send any rotor DISEQC master command (default -D1000 e.g. 1 second)
It need to rotor init after power up. must be > 800 msec
-n NN : drive to stored in rotor position memory cell NN (default -n5) (-n0 = no send gotoNN command)
-t NN : timeout NN seconds while LNB voltage is up after send gotoNN command (default -t30)
-e NN : drive rotor NN steps to east (NN = 0...127 steps) (default -e0 = no send steps command)
-w NN : drive rotor NN steps to west (NN = 0...127 steps) (default -w0 = no send steps command)
-L NN : rotor speed parameter for calculate timeout after send steps command
- for rotor SG2100 NN=15 - you can set it by '-L 15'
- default for slow rotor -L2
-R N : repeat all DISEQC master command N times (default -R1)
-S NN : store current rotor position in rotor memory cell NN (default -S0 = no store)
-?/h : this help
== комментарии к изменениям ==========
- для возможности отключения засылки команд десик на переключение свитча
(скажем в варианте когда голый ротор без переключателей) изменены значения
опции -d N - теперь
-d 0 означает что команды на свитч не засылаются!!!
-d 1 означает вход A/A, -d2 = A/B, -d3=B/A, -d4=B/B
по умолчанию -d0 - без свитча
- добавлена опция -S NN для запоминания итогового положения ротора (в котором
он оказался в результате выполнения gotoNN команды и команды корректирующих шагов
в ячейку с номером NN.
Максимальный номер ячейки памяти зависит от мотора - для SG2100 это 26.
Нулевую ячейку не используйте - она имеет спец назначение.
== пример ==
повернуть ротор подключенный к входу B/A в запомненную в роторе позицию 5
затем довернуть 5 шагов на восток и запомнить получившееся положение в ячейку номер 26
# ./rotor-gotoNN -d3 -n5 -e5 -S26
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send command to switch: disecq_sw_no:3 cmd: [e0 10 38 f8]. Sending try: 1
Now delay 1000 msec before sending command to rotor...
Send command to rotor: rotor_no:5 cmd: [e0 31 6b 05]. Sending try: 1
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Send command to rotor: Drive 5 steps to East. cmd: [e0 31 68 fb]. Sending try: 1
Timeout 4 seconds: . . . .
Send STORE command to rotor: rotor_store_cell:26 cmd: [e0 31 6a 1a]. Sending try: 1
Frontend closed! Goodbye :)
Показать весь код
надоело синхронизировать изменения в утилитках rotor-usals и rotor-gotoNN
и вот появилась утилитка rotor-control - и швец и жнец и на дуде игрец )))
утилитки rotor-usals и rotor-gotoNN продолжаться не будут ...
rotor-control.0.0.1 04.02.2008
программа для управления полар-ротором
# ./rotor-control -?
./rotor-control: invalid option -- ?
Usage: rotor-control [options]
turn USALS sat polar-rotor to calculated position or in stored in it position
Options:
-m n : set modus (default -m1)
-m0 - just calculate and print antenn alignment angles
-m1 - USALS: turn rotor to calculated angle
-m2 - GotoNN: turn rotor to stored position
-m3 - MANUAL: turn rotor to set by -A NN option angle
-a N : set adapter N (default -a0)
-f N : set frontend N (default -f0)
-V 0|13|18 : set LNB voltage to OFF, 13 or 18 Volts (default -V18)
-O 0|1 : set LNB power supply in 0=normal/1=overvoltage mode (add about +1 Volt) (default -O0)
-d N : set DiSEqC switch at input N (0=no_switch 1=A/A, 2=A/B, 3=B/A, 4=B/B) (default -d0)
-D NN : set delay NN msec before send any rotor DiSEqC master command (default -D1000 e.g. 1 second)
Polar-rotor need to have time initialised after power up. Must be > 800 msec for SG-2100
-X DD.MM : USALS: rotor location Longitude, XX=degrees MM=minutes, minus sign for East (default -X -30.20)
-Y DD.MM : USALS: rotor location Latitude, XX=degrees MM=minutes, minus sign for South (default -Y 59.51)
-s DD.dd : USALS: Sat Longitude in degrees, minus sign for East (default -s -19.20) (-s0 = no send USALS command)
-n NN : GotoNN: drive to stored in rotor position memory cell NN (default -n5) (-n0 = no send gotoNN command)
-A NN : MANUAL: set rotor angle NN degrees, minus sign for East (default -A00 = drive to zero rotor direction
-t NN : set delay NN seconds while LNB voltage is up after send USALS or GotoNN command (default -t30)
-e NN : STEPS: drive rotor NN steps to east (NN = 0...127 steps) (default -e0 = no send steps command)
-w NN : STEPS: drive rotor NN steps to west (NN = 0...127 steps) (default -w0 = no send steps command)
-L NN : STEPS: rotor speed parameter for calculate delay while LNB voltage is up after send STEPS command
- for rotor SG2100 NN=15 - you can set it by '-L 15'
- default for slow rotor -L2
-R N : repeat all DISEQC master command N times (default -R1)
-S NN : store current rotor position in rotor memory cell NN (default -S0 = no store)
-?/h : this help
программа работает в 4-х режимах
-m0 - расчет параметров установки антенны и угла поворота антенны на заданный
спутник (задается -s NN) для определенной географической позиции (долгота задается
-X NN.nn, широта -Y NN.nn - где NN = целое число градусов, а nn целое число
угловых минут. скажем 10 градусов 3 минуты восточной долготы задается -X -10.03
Знак минус в долготе означает восток. Северная широта с плюсом - южная - с минусом.
Но для южной широты угол пока рассчитывается неправильно!!!
Например:
рассчитать углы установки для 10 град. 3 минуты западной, 20 град 59 минут северной
на спутник 19.2 восточной
# ./rotor-control -m0 -X-10.03 -Y 20.59 -s-19.2
Sat: Longitude = 19.20°E
Location: Longitude = 10.05°E (-10°02')
Latitude = 20.98°W ( 20°59')
Antenna: Azimuth = 155.78° (CW from North)
Elevation = 63.29°
Rotor: Angle = 10.65° to East from South directions
-m1 - расчет параметров и установка ротора в расчитаную позицию Rotor: Angle =
Например:
рассчитать углы с параметрами как в примере для -m0 и установить ротор на этот
угол
# ./rotor-control -m1 -X-10.03 -Y 20.59 -s-19.2
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Now delay 1000 msec before sending command to rotor...
Sat: Longitude = 19.20°E
Location: Longitude = 10.05°E (-10°02')
Latitude = 20.98°W ( 20°59')
Antenna: Azimuth = 155.78° (CW from North)
Elevation = 63.29°
Rotor: Angle = 10.65° to East from South directions
Send USALS command to rotor: drive to -10.65° cmd: [e0 31 6e e0 aa]. Sending try: 1
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Frontend closed! Goodbye :)
-m2 - установка ротора в запомненную позицию. Номер запомненной ячейки задается параметром -n NN
Например:
установить ротор в запомненную в роторе в 10 ячейке позицию
# ./rotor-control -m2 -n10
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Now delay 1000 msec before sending command to rotor...
Send GotoNN command to rotor: rotor cell:10 cmd: [e0 31 6b 0a]. Sending try: 1
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Frontend closed! Goodbye :)
-m3 - установить ротор в определенный угол. Угол задается в параметре -A NN (NN = угол поворота в
градусах. Для поворота "налево" от среднего положения - угол задавать с знаком минус)
Например:
повернуть угол влево от направления на юг на 45.3 градуса
# ./rotor-control -m3 -A-45.3
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Now delay 1000 msec before sending command to rotor...
Send USALS command to rotor: drive to -45.30° cmd: [e0 31 6e e2 d5]. Sending try: 1
Timeout 30 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Frontend closed! Goodbye :)
Опции:
-a N -f N - установка adapter frontend платы к которому подключен ротор
-V 0|13|18 -O 0|1 - установка напряжения источника питания
-d N - установка выхода к которому подключен ротор
-D NN - установка задержки на инициализацию ротора после подъема напряжения
-t NN - установка задержки до снятия напряжения после засылки команд на поворот ротора
-e NN -w NN -L NN - параметры на перемещение ротора на NN количество шагов после отработки
основных (USALS или GotoNN команд)
-R N - повторить ротор десик команды N раз
-S NN - сохранить текущее положение ротора в ячейке ротора NN
например:
установить ротор на спутник -13 (13East) для географической координаты 30 градусов 09 минут
восточной и 59 градусов 50 минут северной. при этом
ротор подключен к плате с adapter=0 frontend=0, установить напряжение 18 вольт с овервольтажем,
ротор подключен к входу 3 (B/A) десик свитча, дать задержку на инициализацию ротора 1.5 секунды,
Выделить 45 секунд на поворот ротора. Довернуть ротор на 3 шага на восток.
Сохранить полученное положение ротора в 25 ячейке
# ./rotor-control -m1 -s-13 -X-30.09 -Y59.50 -a0 -f0 -V18 -O1 -d3 -D1500 -t45 -e3 -S25
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts and overvoltage mode (+1 Volt)
Send SWITCH command: switch input:3 cmd: [e0 10 38 f8]. Sending try: 1 2
Now delay 1500 msec before sending command to rotor...
Sat: Longitude = 13.00°E
Location: Longitude = 30.15°E (-30°09')
Latitude = 59.83°W ( 59°50')
Antenna: Azimuth = 199.64° (CW from North)
Elevation = 20.55°
Rotor: Angle = 18.53° to West from South directions
Send USALS command to rotor: drive to 18.53° cmd: [e0 31 6e d1 28]. Sending try: 1
Timeout 45 seconds: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Send STEPS command to rotor: 3 steps to East. cmd: [e0 31 68 fd]. Sending try: 1
Timeout 3 seconds: . . .
Send STORE command to rotor: rotor_store_cell:25 cmd: [e0 31 6a 19]. Sending try: 1
Frontend closed! Goodbye :)
Сборка
# make
сборка производится с включенным в исходные в директорию linux/dvb файлом frontend.h
если в системе установлено кернел-дерево - можно папку linux удалить
Показать весь код
rotor-control.0.0.2mp 05.02.2007
утилита для управлением ротора - версия для Мультипрото драйвера
=== HELP ===
полностью повторять весь хелп не буду - только изменения по сравнению с версией rotor-control.0.0.1
Usage: rotor-control-mp [options] "
turn USALS sat polar-rotor to calculated position or in stored in it position"
Multiproto version"
......
-T FFFFF,P,SSSSS : check transponder for LOCK (ONLY DVB-S transponders)
(FFFFF = frequences MHz, P = polarization H|V, SSSSS = Symbol rate kHz)
so for check 11642 H 27500 = -T 11642,H,27500
.......
=== комментарии ===
- добавлена возможность проверки LOCK заданного опцией -Т транспондера
частота задается в мегагерцах - ТОЛЬКО DVB-S транспондеры,
поляризация может быть только заглавные буквы H или V,
символьная скорость - в килогерцах.
ВНИМАНИЕ: данная версия работает ТОЛЬКО с драйвером Мультипрото о чем говорит
буковки mp в названии и использование linux/dvb/multiproto_frontend.h
Версия утилиты для стандартного драйвера - coming soon ;-)
Возможно в дальнейшем версии объединятся
=== примеры ===
установить ротор в позицию 8, ротор подключен к входу A/A десик свитча
дать на перемещение 15 секунд и проверить LOCK на транспондер 11823,H,27500
# ./rotor-control-mp -m2 -d1 -n8 -t15 -T 11823,H,27500
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send SWITCH command: switch input:1 cmd: [e0 10 38 f0]. Sending try: 1 2
Now delay 1000 msec before sending command to rotor...
Send GotoNN command to rotor: rotor cell:8 cmd: [e0 31 6b 08]. Sending try: 1
Timeout 15 seconds: . . . . . . . . . . . . . . .
Check transponder 11823,H,27500 (IF=1223MHz) for LOCK: HAS_LOCK
Frontend closed! Goodbye :)
ротор уже установлен - двигать не надо - проверим 11662 V 27500
# ./rotor-control-mp -d1 -s0 -t0 -T 11662,V,27500
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send SWITCH command: switch input:1 cmd: [e0 10 38 f0]. Sending try: 1 2
Check transponder 11662,V,27500 (IF=1912MHz) for LOCK: HAS_LOCK
Frontend closed! Goodbye :)
Показать весь код
Дикая бэта rotor-control.0.0.3 07.02.2008
первая попытка совмещения обратно работы и с драйвером Мультипрото и с стандартным драйвером
== сборка ==
вариант для которого будет собираться утилитка задается самим пользователем
перед сборкой путем правки в коде rotor-control.с в 48-ой строке
для стандартного драйвера это будет выглядеть так
//#define MULTIPROTO
а при использовании мультипрото драйвера - надо раскомментировать
#define MULTIPROTO
== изменения ==
несколько изменена работа утилитки при задании параметра проверки транспондера -T
- при таймауте после засылки команды на поворот ротора которая производится
при использовании -m1 -s NN или -m2 -n NN или -m3 -A NN каждую секунду
проверяется есть LOCK на заданный транспондер - и если LOCK устойчив (больше
4-х захватов подряд) таймоут сбрасывается (так как приехали )))
- в конце работы утилитки снова определяется LOCK на заданный транспондер и
выводится инфо о уровне сигнала и SNR этого транспондера
== пример ==
повернуть ротор в запомненную позицию 8 и контролировать транспондер 11785,H,27500
# ./rotor-control -d1 -m2 -n8 -T 11785,H,27500
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send SWITCH command: switch input:1 cmd: [e0 10 38 f0]. Sending try: 1 2
Now delay 1000 msec before sending command to rotor...
Send GotoNN command to rotor: rotor cell:8 cmd: [e0 31 6b 08]. Sending try: 1
Timeout 30 seconds and check for LOCK: . . . . . . . . . . . . . . . . . . L L L L
Check transponder 11785,H,27500 for LOCK: HAS_LOCK, SS = 16.4dB, SNR = 13.2dB
Frontend closed! Goodbye :)
обратите внимание на строку - точечки = нет захвата а буковки L = есть захват
. . . . . . . . . . . . . . . . . . L L L L
и далее
HAS_LOCK, SS = 16.4dB, SNR = 13.2dB
инфо об уровнях драйвер Мультипрото выдает в децибеллах*10 - обсуждение реальности этих
цифр не входит в эту тему )))
== BUG ==
баг с первым запуском утилитки после включения компа и при использовании Мультипрото
- при запуске может появится сообщение
DVBFE_SET_PARAMS failed
пока не знаю как решить - что то делаю не так ... для нормальной работы надо
запустить один раз szap2 - например так
./szap2 -c channels.conf -m2 -t0 -n1
при этом видимо корректно нечто инициализируется в фронтэнд - но что и как -
разбираться буду позже
== ОЧЕНЬ НУЖНЫ ТЕСТЫ ==
с стандартными драйверами - я проверял только на ТТ3200 с Мультипрото
на другой платформе проверить не могу - проверил только сборку и запуск с
//#define MULTIPROTO
при этом у меня утилитка собирается и запускается но без определения LOCK
# ./rotor-control -d1 -m2 -n8 -T 11785,H,27500
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send SWITCH command: switch input:1 cmd: [e0 10 38 f0]. Sending try: 1 2
Now delay 1000 msec before sending command to rotor...
Send GotoNN command to rotor: rotor cell:8 cmd: [e0 31 6b 08]. Sending try: 1
Timeout 30 seconds and check for LOCK: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Check transponder 11785,H,27500 for LOCK: . . .
Frontend closed! Goodbye :)
интересует определится ли LOCK SS SNR в стандартном варианте ...
Показать весь код
rotor-control.0.0.3а 07.02.2008
сам сделал тест с платой Скайстар1 и стандартным драйвером
== изменения ==
маленькое изменение в коде так как эта плата не понимает команды
overvoltage FE_ENABLE_HIGH_LNB_VOLTAGE на увеличение выходного напряжения что
выливается в ошибку
FE_ENABLE_HIGH_LNB_VOLTAGE failed
== пример ==
с стандартным драйвером и платой скайстар - переместить в позицию 5 и проверять
транспондер 11785,V,27500
# ./rotor-control -m2 -d1 -n5 -T 11785,V,27500
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send SWITCH command: switch input:1 cmd: [e0 10 38 f0]. Sending try: 1 2
Now delay 1000 msec before sending command to rotor...
Send GotoNN command to rotor: rotor cell:5 cmd: [e0 31 6b 05]. Sending try: 1
Timeout 30 seconds and check for LOCK: . . . . . . L L L L
Check transponder 11785,V,27500 for LOCK: HAS_LOCK, SS = 43560, SNR = 48333
Frontend closed! Goodbye :)
все отработало нормально - что радует )))
уровни показываются в попугаях (сырые значения) которые выдает фронтенд скайстара
== BUG ==
надо сказать что бага с DVBFE_SET_PARAMS failed после включения компа на скайстаре
и стандартном драйвере НЕ БЫЛО - так что надо мне подлечить именно вариант с
драйвером Мультипрото - круг ошибки сузился - что уже хорошо ...
Показать весь код
Щас только дошли руки до теста, вот первый результат:
arvdr:/usr/src/rotor-control.0.0.3a# ./rotor-control -s -13.0 -X -9.55 -Y 51.31 -T 11240,V,27500
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Now delay 1000 msec before sending command to rotor...
Sat: Longitude = 13.00°E
Location: Longitude = 9.92°E ( -9°55')
Latitude = 51.52°W ( 51°31')
Antenna: Azimuth = 176.06° (CW from North)
Elevation = 30.96°
Rotor: Angle = 3.40° to East from South directions
Send USALS command to rotor: drive to -3.40° cmd: [e0 31 6e e0 36]. Sending try: 1
Timeout 30 seconds and check for LOCK: L L L L
Check transponder 11240,V,27500 for LOCK: HAS_LOCK, SS = 44800, SNR = 56016
Frontend closed! Goodbye :)
arvdr:/usr/src/rotor-control.0.0.3a#
Показать весь код
arvdr:/usr/src/rotor-control.0.0.3a# ./rotor-control -s 4.0 -X -9.55 -Y 51.31 -T 10722,H,27500
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Now delay 1000 msec before sending command to rotor...
Sat: Longitude = 4.00°W
Location: Longitude = 9.92°E ( -9°55')
Latitude = 51.52°W ( 51°31')
Antenna: Azimuth = 197.56° (CW from North)
Elevation = 29.60°
Rotor: Angle = 15.34° to West from South directions
Send USALS command to rotor: drive to 15.34° cmd: [e0 31 6e d0 f5]. Sending try: 1
Timeout 30 seconds and check for LOCK: . . . . . . . . L L L L
Check transponder 10722,H,27500 for LOCK: HAS_LOCK, SS = 44150, SNR = 44745
Frontend closed! Goodbye :)
arvdr:/usr/src/rotor-control.0.0.3a#
Показать весь код
Пора бы на linuxtv опубликовать =)
ЦитатаПора бы на linuxtv опубликовать
рано еще ))) спасибо за тесты - вот еще версия на тест - проверял только с Мультипрото -
если сделаешь тест - кинь сюда результат плиз
еще не все фичи реализованы и не все баги устранены )))
rotor-control.0.0.4 08.02.2007
== HELP ==
только изменения в хэлпе
-W 0|1 : rotor angle s[W]eeper (default 0=no) only for modus 1 and 3 and if set transponder -T
== изменения ==
- введен режим углового свипа -W1
при этом происходит сдвиг положения ротора относительного среднего
на +-2 градуса с шагом 0.2 градуса и в каждом положении определяется
LOCK, SS, SNR для контрольного транспондера заданного в -T
работает только для режима -m1 (USALS) -m3 (MANUAL) и при установленом
контрольном транспондере в опции -T
свип производится 2 раза - первый с востока на запад и второй с запада
на восток - свип производится довольно долго - суммарно около 2х с
половиной минут на оба прохода
== примеры ==
утилитка утилитка! покажи ка мне как у меня настроен ротор )))
например для 19.2E
# ./rotor-control -m1 -d1 -s-19.2 -T 11739,V,27500 -W1
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send SWITCH command: switch input:1 cmd: [e0 10 38 f0]. Sending try: 1 2
Now delay 1000 msec before sending command to rotor...
Sat: Longitude = 19.20°E
Location: Longitude = 30.33°E (-30°20')
Latitude = 59.85°W ( 59°51')
Antenna: Azimuth = 192.82° (CW from North)
Elevation = 21.43°
Rotor: Angle = 12.04° to West from South directions
Send USALS command to rotor: drive to 12.04° cmd: [e0 31 6e d0 c0]. Sending try: 1
Timeout 30 seconds and check for LOCK: . L L L L
Check transponder 11739,V,27500 for LOCK: HAS_LOCK, SS = 11.0dB, SNR = 7.6dB
Rotor angle sweep from EAST to WEST
_____________________________________________________________
| Step | Delta | Angle | LOCK | SS | SNR |
-------------------------------------------------------------
| 1 | -2.00 | 10.04 | + | 12.5 | 9.4 |
| 2 | -1.80 | 10.24 | + | 12.5 | 9.2 |
| 3 | -1.60 | 10.44 | + | 12.5 | 9.3 |
| 4 | -1.40 | 10.64 | + | 13.2 | 10.0 |
| 5 | -1.20 | 10.84 | + | 13.2 | 10.0 |
| 6 | -1.00 | 11.04 | + | 13.2 | 10.0 |
| 7 | -0.80 | 11.24 | + | 13.2 | 10.2 |
| 8 | -0.60 | 11.44 | + | 13.2 | 10.2 |
| 9 | -0.40 | 11.64 | + | 13.2 | 10.0 |
| 10 | -0.20 | 11.84 | + | 12.8 | 9.9 |
| *11 | 0.00 | 12.04 | + | 11.3 | 7.5 |
| 12 | 0.20 | 12.24 | + | 11.3 | 7.6 |
| 13 | 0.40 | 12.44 | + | 11.3 | 7.6 |
| 14 | 0.60 | 12.64 | - | 0.0 | 0.0 |
| 15 | 0.80 | 12.84 | - | 0.0 | 0.0 |
| 16 | 1.00 | 13.04 | - | 0.0 | 0.0 |
| 17 | 1.20 | 13.24 | - | 0.0 | 0.0 |
| 18 | 1.40 | 13.44 | - | 0.0 | 0.0 |
| 19 | 1.60 | 13.64 | - | 0.0 | 0.0 |
| 20 | 1.80 | 13.84 | - | 0.0 | 0.0 |
| 21 | 2.00 | 14.04 | - | 0.0 | 0.0 |
-------------------------------------------------------------
Rotor angle sweep from WEST 2 EAST
_____________________________________________________________
| Step | Delta | Angle | LOCK | SS | SNR |
-------------------------------------------------------------
| 1 | 2.00 | 14.04 | - | 0.0 | 0.0 |
| 2 | 1.80 | 13.84 | - | 0.0 | 0.0 |
| 3 | 1.60 | 13.64 | - | 0.0 | 0.0 |
| 4 | 1.40 | 13.44 | - | 0.0 | 0.0 |
| 5 | 1.20 | 13.24 | - | 0.0 | 0.0 |
| 6 | 1.00 | 13.04 | - | 0.0 | 0.0 |
| 7 | 0.80 | 12.84 | - | 0.0 | 0.0 |
| 8 | 0.60 | 12.64 | - | 0.0 | 0.0 |
| 9 | 0.40 | 12.44 | - | 0.0 | 0.0 |
| 10 | 0.20 | 12.24 | - | 0.0 | 0.0 |
| *11 | -0.00 | 12.04 | - | 0.0 | 0.0 |
| 12 | -0.20 | 11.84 | + | 12.1 | 8.7 |
| 13 | -0.40 | 11.64 | + | 12.1 | 8.9 |
| 14 | -0.60 | 11.44 | + | 12.8 | 9.9 |
| 15 | -0.80 | 11.24 | + | 12.8 | 9.8 |
| 16 | -1.00 | 11.04 | + | 12.8 | 9.7 |
| 17 | -1.20 | 10.84 | + | 13.2 | 10.1 |
| 18 | -1.40 | 10.64 | + | 13.2 | 10.2 |
| 19 | -1.60 | 10.44 | + | 12.5 | 9.3 |
| 20 | -1.80 | 10.24 | + | 12.5 | 9.1 |
| 21 | -2.00 | 10.04 | + | 12.5 | 9.4 |
-------------------------------------------------------------
Frontend closed! Goodbye :)
что можно сказать по результатам
- ротор имеет приличный люфт - при проходе слева направо делта на максимум = -0.7
а справа налево = -1.3 - т.е. около 0.6 градуса
- и сам ротор настроен не точно - если взять среднее от поправок и поделить на 2 -
получится -1.0 градус - это дофига )))
Правда все это я знал - ротор старый с пластмассовыми шестернями и мачта и сама тарель
настроены криво. Но теперь я с цыфрами в руках это знаю ))))
быстро прочитать наличие LOCK и уровни транспондера - ротор не вращать
головка подключена к входу A/A свитча
# ./rotor-control -d1 -s0 -T 11785,H,27500
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Send SWITCH command: switch input:1 cmd: [e0 10 38 f0]. Sending try: 1 2
Timeout 30 seconds and check for LOCK: L L L L
Check transponder 11785,H,27500 for LOCK: HAS_LOCK, SS = 16.4dB, SNR = 12.7dB
Frontend closed! Goodbye :)
Показать весь код
arvdr:/usr/src/rotor-control.0.0.4# ./rotor-control -m1 -s 4.0 -X -9.55 -Y 51.31 -T 10722,H,27500 -W1
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Now delay 1000 msec before sending command to rotor...
Sat: Longitude = 4.00°W
Location: Longitude = 9.92°E ( -9°55')
Latitude = 51.52°W ( 51°31')
Antenna: Azimuth = 197.56° (CW from North)
Elevation = 29.60°
Rotor: Angle = 15.34° to West from South directions
Send USALS command to rotor: drive to 15.34° cmd: [e0 31 6e d0 f5]. Sending try: 1
Timeout 30 seconds and check for LOCK: . . . . . . . . . . L L L L
Check transponder 10722,H,27500 for LOCK: HAS_LOCK, SS = 44806, SNR = 46488
Rotor angle sweep from EAST to WEST
_____________________________________________________________
| Step | Delta | Angle | LOCK | SS | SNR |
-------------------------------------------------------------
| 1 | -2.00 | 13.34 | - | 0 | 0 |
| 2 | -1.80 | 13.54 | - | 0 | 0 |
| 3 | -1.60 | 13.74 | - | 0 | 0 |
| 4 | -1.40 | 13.94 | + | 41670 | 37941 |
| 5 | -1.20 | 14.14 | + | 43531 | 42057 |
| 6 | -1.00 | 14.34 | + | 44177 | 43956 |
| 7 | -0.80 | 14.54 | + | 44790 | 45090 |
| 8 | -0.60 | 14.74 | + | 44810 | 45981 |
| 9 | -0.40 | 14.94 | + | 45752 | 47325 |
| 10 | -0.20 | 15.14 | + | 44497 | 47151 |
| *11 | 0.00 | 15.34 | + | 45413 | 47157 |
| 12 | 0.20 | 15.54 | + | 44800 | 46338 |
| 13 | 0.40 | 15.74 | + | 44471 | 43944 |
| 14 | 0.60 | 15.94 | + | 44137 | 43716 |
| 15 | 0.80 | 16.14 | + | 42217 | 38475 |
| 16 | 1.00 | 16.34 | + | 40966 | 36318 |
| 17 | 1.20 | 16.54 | - | 0 | 0 |
| 18 | 1.40 | 16.74 | - | 0 | 0 |
| 19 | 1.60 | 16.94 | - | 0 | 0 |
| 20 | 1.80 | 17.14 | - | 0 | 0 |
| 21 | 2.00 | 17.34 | - | 0 | 0 |
-------------------------------------------------------------
Rotor angle sweep from WEST 2 EAST
_____________________________________________________________
| Step | Delta | Angle | LOCK | SS | SNR |
-------------------------------------------------------------
| 1 | 2.00 | 17.34 | - | 0 | 0 |
| 2 | 1.80 | 17.14 | - | 0 | 0 |
| 3 | 1.60 | 16.94 | - | 0 | 0 |
| 4 | 1.40 | 16.74 | - | 0 | 0 |
| 5 | 1.20 | 16.54 | - | 0 | 0 |
| 6 | 1.00 | 16.34 | - | 0 | 0 |
| 7 | 0.80 | 16.14 | + | 41021 | 36900 |
| 8 | 0.60 | 15.94 | + | 43830 | 41217 |
| 9 | 0.40 | 15.74 | + | 44098 | 43464 |
| 10 | 0.20 | 15.54 | + | 44785 | 45129 |
| *11 | -0.00 | 15.34 | + | 44840 | 46407 |
| 12 | -0.20 | 15.14 | + | 44825 | 46953 |
| 13 | -0.40 | 14.94 | + | 44877 | 47070 |
| 14 | -0.60 | 14.74 | + | 44820 | 46641 |
| 15 | -0.80 | 14.54 | + | 44491 | 45738 |
| 16 | -1.00 | 14.34 | + | 44306 | 44277 |
| 17 | -1.20 | 14.14 | + | 44078 | 42444 |
| 18 | -1.40 | 13.94 | + | 41645 | 38082 |
| 19 | -1.60 | 13.74 | - | 0 | 0 |
| 20 | -1.80 | 13.54 | - | 0 | 0 |
| 21 | -2.00 | 13.34 | - | 0 | 0 |
-------------------------------------------------------------
Frontend closed! Goodbye :)
arvdr:/usr/src/rotor-control.0.0.4#
Показать весь код
arvdr:/usr/src/rotor-control.0.0.4# ./rotor-control -m1 -s -4.8 -X -9.55 -Y 51.31 -T 11766,H,27500 -W1
Opening frontend /dev/dvb/adapter0/frontend0 OK
Set LNB power supply to 18 Volts
Now delay 1000 msec before sending command to rotor...
Sat: Longitude = 4.80°E
Location: Longitude = 9.92°E ( -9°55')
Latitude = 51.52°W ( 51°31')
Antenna: Azimuth = 186.53° (CW from North)
Elevation = 30.84°
Rotor: Angle = 5.65° to West from South directions
Send USALS command to rotor: drive to 5.65° cmd: [e0 31 6e d0 5a]. Sending try: 1
Timeout 30 seconds and check for LOCK: . . . L L L L
Check transponder 11766,H,27500 for LOCK: HAS_LOCK, SS = 41277, SNR = 48042
Rotor angle sweep from EAST to WEST
_____________________________________________________________
| Step | Delta | Angle | LOCK | SS | SNR |
-------------------------------------------------------------
| 1 | -2.00 | 3.65 | - | 0 | 0 |
| 2 | -1.80 | 3.85 | - | 0 | 0 |
| 3 | -1.60 | 4.05 | - | 0 | 0 |
| 4 | -1.40 | 4.25 | + | 37100 | 38232 |
| 5 | -1.20 | 4.45 | + | 38081 | 41088 |
| 6 | -1.00 | 4.65 | + | 39723 | 45105 |
| 7 | -0.80 | 4.85 | + | 40643 | 46482 |
| 8 | -0.60 | 5.05 | + | 40947 | 47616 |
| 9 | -0.40 | 5.25 | + | 40972 | 48087 |
| 10 | -0.20 | 5.45 | + | 40982 | 48456 |
| *11 | 0.00 | 5.65 | + | 41273 | 48498 |
| 12 | 0.20 | 5.85 | + | 40953 | 48108 |
| 13 | 0.40 | 6.05 | + | 40955 | 47352 |
| 14 | 0.60 | 6.25 | + | 40957 | 46371 |
| 15 | 0.80 | 6.45 | + | 39360 | 45066 |
| 16 | 1.00 | 6.65 | + | 38713 | 41676 |
| 17 | 1.20 | 6.85 | + | 37422 | 38532 |
| 18 | 1.40 | 7.05 | - | 0 | 0 |
| 19 | 1.60 | 7.25 | - | 0 | 0 |
| 20 | 1.80 | 7.45 | - | 0 | 0 |
| 21 | 2.00 | 7.65 | - | 0 | 0 |
-------------------------------------------------------------
Rotor angle sweep from WEST 2 EAST
_____________________________________________________________
| Step | Delta | Angle | LOCK | SS | SNR |
-------------------------------------------------------------
| 1 | 2.00 | 7.65 | - | 0 | 0 |
| 2 | 1.80 | 7.45 | - | 0 | 0 |
| 3 | 1.60 | 7.25 | - | 0 | 0 |
| 4 | 1.40 | 7.05 | - | 0 | 0 |
| 5 | 1.20 | 6.85 | - | 0 | 0 |
| 6 | 1.00 | 6.65 | + | 37113 | 37398 |
| 7 | 0.80 | 6.45 | + | 38407 | 42234 |
| 8 | 0.60 | 6.25 | + | 39707 | 44589 |
| 9 | 0.40 | 6.05 | + | 40953 | 46209 |
| 10 | 0.20 | 5.85 | + | 40957 | 47226 |
| *11 | -0.00 | 5.65 | + | 40973 | 47973 |
| 12 | -0.20 | 5.45 | + | 40958 | 48606 |
| 13 | -0.40 | 5.25 | + | 40645 | 48606 |
| 14 | -0.60 | 5.05 | + | 41271 | 48303 |
| 15 | -0.80 | 4.85 | + | 40646 | 47739 |
| 16 | -1.00 | 4.65 | + | 40928 | 46845 |
| 17 | -1.20 | 4.45 | + | 39685 | 44289 |
| 18 | -1.40 | 4.25 | + | 38108 | 41949 |
| 19 | -1.60 | 4.05 | + | 37067 | 38040 |
| 20 | -1.80 | 3.85 | - | 0 | 0 |
| 21 | -2.00 | 3.65 | - | 0 | 0 |
-------------------------------------------------------------
Frontend closed! Goodbye :)
arvdr:/usr/src/rotor-control.0.0.4#
Показать весь код
Букофку W замените на N в Latitude
У меня с картой DVB-S2 Twinhan AD-SP400 (1041) и мотором Strong DM-2100 и кабелем 50 метров такая красивая картина, что +- десякок шагов, а приём нормальный не получается.
Хотя под виндой - из под родного DigitalTV точно десяток шагов и всё ещё принимает.
С вашей прогой у меня странная картина, например, сигнал есть на Delta -0,6 и на +1,2 и +1,8 а больше ни где нет, а при перемещении в обратном направлении вообще нет сигнала. Хотя перезагружаюсь в винду - всё ок, левел 56% куалити 98% неск шагов туда-сюда, вижу что уровень уменьшается потом пропадает.
Видимо в дрова надо смотреть? Может надо как-то порог чувстивельности понизить?
(про проблему срабатывания защиты знаю не по наслышке - в дровах ядра выключил бит защиты PCL микрухи LNBP21 - больше она в защиту точно не уходит - SatFinderом хорошо видно. Надо бы как по доке сделать - отключать бит защиты только на время пуска мотора - это таймер как-то надо городить в ядро ).
Ещё, как бы добавить fine tune режим, типа как в ProgDVB - т.е. доезжает до спутника, а потом по сигналу подстаивается неск шагов туда-сюда.
И ещё подскажите - не могу понять пока - как в лине чтобы параллельно неск прог обращались к DVB карте, т.е. например идет показ канала в mplayer и параллельно вашей утилитой вправо-влево покрутить чуток - ни как, грит не могу подключиться типа устройство занято.