Рубрика «Спутниковый прием»

Mgcamd: автоматическая генерация priority.list и ignore.list

При использовании mgcamd всегда возникает проблема с задержкой переключения каналов из-за порядка и неиспользуемых CAID. Делать это вручную сложно. Был написан парсер на perl для логов mgcamd. На выходе два списка. Основной это ignore.list и дополнительно priority.list(тут может понадобиться ручная корректировка порядка следования строк).

Также потребуется где-то запущенный syslogd.

В mg_fg выставляем:

D: { 7 }

L : { 03 } syslog-IP 514

Запускаем mgcamd и начинаем переключать каналы подряд.

Затем запускаем программу:

get_priolist.pl < mgcamd-syslog-file >list.txt

Редактором разделяем list.txt на priority.list и ignore.list. Правим при желании порядок строк в priority.list.

Скачать:   get_priolist.pl

Теги: , , ,

Разборка-сборка образов для azbox

Решил разобраться с azbox-ом. В топике на приставке было расписано как разобрать имидж patch.bin.

Для облегчения своей жизни и тренировки сваял свою утилиту под perl.

В качестве параметра подставляется имя файла. Утилита сама определяет, что надо делать — упаковать или распаковать.

Внимание! Затирает старые файлы без задания вопросов.

Утилита пока только в стадии тестирования.

Скачать azboximgtool

Теги: , , , , ,

Синхронизация времени в спутниковых ресиверах

В спутниковых ресиверах предусматривается синхронизация времени только со спутника и очень часто в «ручном» режиме. Аппаратные часы могут напрочь отсутствовать. Для ресиверов на базе Linux с сетевыми картами этот вопрос можно решить сравнительно легко. Обычно всегда присутствует утилитка rdate. Одно но! Должен присутствовать сервер с протоколом time.
Команду rdate -s <ip> нужно вставить в стартовый скрипт (это зависит от версии ресивера).
Проверено, что команда присутствует в ipbox и dreambox.

Теги: , , ,

Увеличение числа групп в mpcs

В mpcs для объединения аккаунтов и ридеров используется понятие группы. Число групп — это битовое поле и ограничено 32 битным значением. Эту величину можно достаточно безболезненно увеличить до 64.

Для этого накладывается следующий патч.

Теги: , ,

Продолжение: НТВ+, mpcs и Кинорейс

После модификации исходников mpcs осталась проблема с каналами Кинорейс для протокола newcamd.

Проанализировав исходники и отрассировав в режиме отладки mpcs оказалось, что длины буферов под ecm все равно не хвататает. Вот два изменения:

--- module-newcamd.c.orig       2008-12-12 20:17:14.000000000 +0200
+++ module-newcamd.c    2009-02-03 14:30:31.000000000 +0200
@@ -1,6 +1,6 @@
 #include "globals.h"
 
-#define CWS_NETMSGSIZE 256
+#define CWS_NETMSGSIZE 256+3
 
 typedef unsigned char uint8;
 typedef unsigned short uint16;
 
--- des.c.orig  2008-11-26 21:09:50.000000000 +0200
+++ des.c       2009-02-03 14:29:09.000000000 +0200
@@ -516,7 +516,7 @@
   }
 }
 
-#define CWS_NETMSGSIZE 256
+#define CWS_NETMSGSIZE 256+3
 
 int des_encrypt(byte *buffer, int len, byte *deskey)
 {

На будущее для любителей трассировки в режиме отладки еще один патч (есть вероятность, что длину еще могут изменить):

--- module-newcamd.c.orig       2008-12-12 20:17:14.000000000 +0200
+++ module-newcamd.c    2009-02-03 14:30:31.000000000 +0200
@@ -96,7 +98,9 @@
   if (!buffer || handle &lt; 0)
     return -1;
   len = recv(handle, netbuf, 2, 0);
-  cs_debug("nmr(): len=%d, errno=%d", len, (len==-1)?errno:0);
+  cs_debug("nmr(): len=%d, errno=%d, netbuf=(%X|%X)-&gt;(%X), %d &gt; %d",
+    len, (len==-1)?errno:0,netbuf[0],netbuf[1],(netbuf[0] &lt;&lt; 8 ),
+    ((netbuf[0] &lt;&lt; 8 ) | netbuf[1]),(CWS_NETMSGSIZE - 2));
   if (!len) {
     cs_debug("nmr: 1 return 0");
     network_tcp_connection_close(handle);
@@ -107,8 +111,9 @@
     network_tcp_connection_close(handle);
     return -1;
   }
-  if (((netbuf[0] &lt;&lt; 8 ) | netbuf[1]) &gt; CWS_NETMSGSIZE - 2) {
-    cs_debug("nmr: 1 return -1");
+  if (((netbuf[0] &lt;&lt; 8 ) | netbuf[1]) &gt; CWS_NETMSGSIZE - 2
+       /*&amp;&amp; (netbuf[0] &lt;&lt; 8 )&lt;=256*/ ) {
+    cs_debug("nmr: 1 return -1, (%X | %X)",(netbuf[0] &lt;&lt; 8 ) ,netbuf[1]);
     return -1;
   }
 
@@ -117,8 +122,9 @@
     cs_debug("nmr: 2 return 0");
     return 0;
   }
+  cs_debug("nmr(): 2 len=%d", len);
   if (len != ((netbuf[0] &lt;&lt; 8 ) | netbuf[1])) {
-    cs_debug("nmr: 2 return -1");
+    cs_debug("nmr: 2 return -1, (%X | %X)",(netbuf[0] &lt;&lt; 8 ) ,netbuf[1]);
     return -1;
   }
   len += 2;

Локальная копия mpcs, патчи module-newcamd.c и des.c

Теги: , , , , , ,