1.MPCS

2. OSCam
OSCam is an Open Source Conditional Access Module software, based on the very good MpCS version 0.9d created by dukat.

NAME
       OSCam - SC server

DESCRIPTIONS
       The OSCam software is an open source multi-protocol/multi-plattform SC server.

      OSCam supports the following protocols:
       ·  camd 3.3x
       ·  camd 3.5x UDP and TCP
       ·  newcamd with cascading/remote server ECM support
       ·  radegast
       ·  serial (HSIC, SSSP, BOMBA, DSR 9500)
       ·  camd 3.57x with cascading/remote server ECM support, ECM and EMM support with size > 256 bytes
       ·  camd 3.78x with cascading/remote server ECM support, ECM and EMM support with size > 256 bytes
       ·  gbox with cascading/remote server ECM support
       ·  CCcam with cascading/remote server ECM support, ECM and EMM support with size > 256 bytes
       ·  DVB API with multi tuner and PIP support

       OSCam works on the following plattforms:
      ·  Linux (tuxbox, arm, mips, mipsel, sh4, powerpc, …)
      ·  Windows (based on cygwin1.dll)
      ·  Mac OS X

Власний досвід:

Що до мене використовую зараз “Прошивки для TP-LINK с mpcs (DANtes)”, mpcs має менший розмір, та поки що влаштовує.
Якщо хто використовує прошивки  DANtes з mpcs, то може буде цікаво знати, що цей пакунок насправді відсутній у самій прошивці, існує тільки модуль завантаження з мережі, а сам модуль mpcs завантажується при включенні роутера. Та існує Luci інтерфейс для можливості налаштувань mpcs.
Але прийшлося написати  маленький скрипт pl2303-watchdog.sh котрий перезавантажує mpcs коли іноді інтерфейс rs232 перезавантажується із-за помилки.

pl2303-watchdog.sh:

#!/bin/sh
/sbin/logread -f  | while read LINE; do
 if  echo $LINE|grep 'pl2303 converter now attached to tty'>/dev/null; then
    echo watch dog repairing... |logger -t 'mpcs'; /etc/init.d/mpcs_init restart;
 fi;
 done

Версія з контролем повтору, була створена так як потрібно було перевантажити модуль ядра  pl2303 разом з перевантаженням mpcs і з’являвся циклічний повтор:
pl2303-watchdog.sh: #!/bin/sh
count=0
/sbin/logread -f  | while read LINE; do
 if  echo $LINE|grep ‘pl2303 converter now attached to tty’>/dev/null; then
    count=expr $count + 1
    if [ $count = 1 ]; then
    echo watch dog repairing… |logger -t ‘mpcs’; /etc/init.d/mpcs_init restart;
;
    count=-1
    fi;
 fi;
 done

Для перевантаження модуля був модифікований /etc/init.d/mpcs_init
#!/bin/sh /etc/rc.common

Copyright (C) 2006 OpenWrt.org

START=99

start() {
echo starting…|logger -t ‘mpcs’
      mpcs_ext &
      insmod pl2303 >/dev/null 2>/dev/null
}

stop() {
echo stoping…|logger -t ‘mpcs’
  killall -9 mpcs >/dev/null 2>/dev/null
  rm /tmp/mcps.mem >/dev/null 2>/dev/null
  rm /tmp/*.fifo >/dev/null 2>/dev/null
  rmmod pl2303
}

Для автоматичного завантаження mpcs_watchdogдо виконання  створимо файл /etc/init.d/mpcs_watchdog:
#!/bin/sh /etc/rc.common

Copyright (C) 2008-2010 OpenWrt.org

START=97
start() {
/root/pl2303-watchdog.sh&
}

stop() { 
kill $(ps |grep “/sbin/logread -f”|cut -d “ “ -f 2|head -n 1)
}

Зробимо цей файл виноуємим: 
сhmod +x /etc/init.d/mpcs_watchdog

ВДОСКОНАЛЕННЯ:
В результаті роботи булу встановлено що скрипт mpcs_watchdog працює не надійно. Виявлені проблеми з завантаженням процесора процесом ‘mpcs’ до високого рівня. Тому встановлено наступний скрипт що робить моніторинг завантаженості процесора і у випадку високого значення виконує перезавантаження процесу ‘mpcs’ .
cpucalc-m.sh:

#!/bin/bash

by Paul Colby (http://colby.id.au), no rights reserved ;)

PREV_TOTAL=0
PREV_IDLE=0

while true; do
  CPU=(cat /proc/stat | grep '^cpu ') # Get the total CPU statistics.
  unset CPU[0]                          # Discard the “cpu” prefix.
  IDLE=${CPU[4]}                        # Get the idle CPU time.

  # Calculate the total CPU time.
  TOTAL=0
  for VALUE in “${CPU[@]}”; do
    let “TOTAL=$TOTAL+$VALUE”
  done

  # Calculate the CPU usage since we last checked.
  let “DIFF_IDLE=$IDLE-$PREV_IDLE”
  let “DIFF_TOTAL=$TOTAL-$PREV_TOTAL”
  let “DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10”

#MONITORING VALUE OF CPU LOAD

if [ $DIFF_USAGE -ge 90 ];
then
echo Repairing by cpu $DIFF_USAGE% overload…  |logger -t ‘mpcs’
/etc/init.d/mpcs_init restart
fi

  # Remember the total and idle CPU times for the next check.
  PREV_TOTAL=”$TOTAL”
  PREV_IDLE=”$IDLE”

  # Wait before checking again.
  sleep 10
done

Для роботи цього скрипту потртібен bash. Встановлюємо opkg update; opkg install bash.
І замінемо файл  /root/pl2303-watchdog.sh файлом cpucalc-m.sh.

розмір файлу mpcs 258340 байт, завантажується у архіві.

Пробував oscam_XXXXX_ar71xx.ipk  - працює
oscam 1.00-r5542 має розмір понад 600 кбайт.

Тестування:
Для тестування роботи програми можливо використовувати програми монітори для віддалеенго перегляду файлів протоколів,  наприклад ось таку: microMon