Objaśnienia wybranych opcji konfiguracyjnych.
sun3.png

Ważna informacja ! Ta strona nie będzie dalej rozwijana gdyż seria MPCS nie jest już rozwijana.
Zawarta tu baza informacji ma służyć ludziom, którzy wiedzą do czego służy MPCS i mają pojęcie jak go uruchomić na wybranej przez siebie platformie sprzętowej !
Nie nie ma tu kompletnego opisu opcji konfiguracyjnych MPCS, ani instrukcji jak uruchomić ten program krok po kroku.
Ta strona zawiera wyłącznie praktyczne wskazówki odnośnie wybranych problemów z konfiguracją oraz przykłady użycia niektórych opcji.
W przypadku gdy żaden opis poniżej nie rozwiązuje problemu, można prosić o pomoc tutaj http://mpcs.cba.pl w dziale "Forum wsparcia technicznego"
Dostępne są tam również kody źródłowe programu CWS (do pobierania CW ze stron WWW) oraz protokołu Pandora, którym ten program się posługuje.


Dostępne wersje programu

OSCam

Link do repozytorium SVN ze źródłami:
svn co http://streamboard.gmc.to/svn/oscam/

MPCSMon

plugin do Enigmy oraz program na PC pozwalający monitorować pracę MPCS

MPCS monitor

konsolowy program pod PC pozwalający monitorować pracę MPCS (dostępny z kodem źródłowym)

MPCS

- 0.9x/1.0x - To ostatnia wersja z kodem źródłowym.


Przykładowe pliki konfiguracyjne do pobrania

Można traktować je jako bazę dla własnych konfiguracji.

Pobierz plik z przykładami

Pliki te zawierają przykłady najczęściej używanych konfiguracji i maksymalnie dużo opcji konfiguracyjnych z niezbędnymi komentarzami.
Pozostałe objaśnienia można znaleźć powyżej.
Wystarczy zmienić dane konfiguracyjne na własne a pozostałe części zablokować (ustawiając jako komentarz znakiem # na początku linii)
lub po prostu usunąć.

Przykładowy plik konfiguracyjny mpcs.conf

WAŻNE: najnowsze wersje MPCS-FTV umożliwiają przeniesienie zawartości plików mpcs.reader i mpcs.user do mpcs.conf.
W ten sposób, w prostych przypadkach mamy tylko jeden plik konfiguracyjny zamiast trzech.

Są to podstawowe ustawienia - nie zawierają wpisów odnośnie uruchamianych serwerów.

[global]
Nice = -1
CacheDelay = 0
BindWait = 10
ResolveDelay = 20
DyndnsInterval = 120

#Logowanie do pliku
#LogFile = stdout
LogFile = /var/log/mpcs.log

#EMMLogs = /var/log/emm
PidFile = /var/run/mpcs.pid

showecmdw = 0
showemmdw = 0

disablecache1 = 0
disablecache2 = 0
disablecache = 0

AllowRepeatedReq = 1
#Tą opcję można włączyć gdy nie mamy lokalnych kart a jedynie readery proxy
#SerialReaderTimeout = 100
ClientTimeout = 15
ClientMaxIdle = 120
FallbackTimeout = 1100
Filter = 1300


Podstawy, czyli rzeczy z którymi ludzie maja najczęściej problemy.

Proszę pamiętać, że bardzo dużo zależy od wersji programu.
W momencie tworzenia tego opisu było ich 4 teraz jest ok. 12. :) i trochę różnią się dostępnymi opcjami konfiguracyjnymi.

Prosta instrukcja uzycia Services:
W pliku mpcs.services robimy sekcje np:

[cyfra]
caid=0100
srvid=10D8,10D7

Oznacza to, ze te 2 kanaly beda udostepnione.

W pliku mpcs.user dopisujemy w sekcji account danego usera:

Services = cyfra

Jezeli którys servis chcemy zablokowac dajemy przed nim ! (wykrzyknik), np.:

Services = cyfra,!filmy

Wtedy serwis filmy staje się lista kanałów zabronionych nawet jeżeli te kanały należą do listy cyfra.
Czyli prosto mówiąc można "wyciąć" w ten sposób wybrane kanały z listy cyfra.

Po restarcie mpcs-a ten użytkownik może korzystać tylko z tych SID-ów, które są wpisane w cyfra

Oczywiście, ze można wpisywać więcej CAID-ów po przecinkach np:

caid=0100,1803

oraz więcej wpisow w services np.:

Services = cyfra,polsat,premiere

Zablokowany wpis w logach wyglada tak:

2009/01/02 10:20:45 9645 c03 jurek (0100&000068/10D7/64:A154): invalid (120 ms)

Jeżeli interesuje was jedynie wycięcie kilku kanałów bez "dotykania" reszty, Wystarczy użytkownikowi dopisać samą listę blokowanych kanałów np:

Lista blokowanych kanałów to HBO,HBO2,AXN SciFi
Pamietajmy o wpisaniu wszystkich CAID do jakich daliśmy userowi dostęp !

[filmy]
caid=0100,1803,0B00
srvid=114F,114D,1C87

Wpis blokujący wybrane filmy ale nie blokujący pozostałych pozycji.

Services = !filmy

Wpis Services można dodać też w mpcs.reader (kiedyś mpcs.server) wtedy blokujemy lub zezwalamy na przepuszczanie SID-ów z listy, na dany czytnik/serwer bez względu na użytkownika.
W ten sposób można "sterować" jakie kanały pobieramy z jakiego serwera lub karty.

Odpowiednik <RATE> z newcs.

W wielkim skrocie w pliku mpcs.ac wpisujemy np.

0100:000065=7

Oznacza, ze na CAID-a 0100 provider 65,
ECM może przychodzić co 7 sek.
Jak przyjdzie częściej nie zostanie przetworzony.

wpis *=8 oznacza, ze wszystkie nie wpisane CAID-yY będą obsługiwać ECM-a nie częściej niż co 8 sekund.

Limity są liczone osobno na każdego zalogowanego użytkownika.

UWAGA:
MPCS musi mieć wkompilowaną obsługę AC (anticascade) - są wersje bez niej.

Konfiguracja wielu portów z przypisanymi CAID:PROVID

Jak wiadomo, MPCS może być klientem wielu protokołów, ale też serwować kilka z nich.
Najpopularniejszy obecnie newcamd przenosi jednak tylko 1 CAID, wiec jeżeli mamy klika kart o różnych CAID,
musimy użyć kilku portów:

W pliku mpcs.conf dodajemy lub modyfikujemy sekcje: [newcamd]

Key = 0102030405060708091011121314
Port = 10000@0604:000000;

Wpis klucz Port mowi nam, ze na porcie 10000/tcp bedzie nasluchiwal serwer newcam i prezentowal sie CAID-em 0604 i providerem 0.
Modyfikujac to na potrzeby naszych krajowych kart może to wygladac nastepujaco:

Port = 10000@0100:68;10001@1801:0;10002@1803:0;10003@0B00:0;

Oznacza to ze na kolejnych portach sa obslugiwane nastepujace CAIDy:

10000 jest CAID 0100 - C+
10001 jest CAID 1801 - Polsat (np dla mgcamd)
10002 jest CAID 1803 - Polsat (np. dla CCcam)
10003 jest CAID 0B00 - TNK

UWAGA:
By skorzystac z dostepu do tych kart musimy miec je w pliku **mpcs.reader
(mpcs v 1.0) lub mpcs.server (mpcs v.0.9 lub starsza).**

Przykładowy wpis we wspomnianym pliku:

[reader]
Label = Cyfra
Protocol = newcamd
Key = 0102030405060708091011121314
Device = cyfra99.ath.cx,10000
Account = Lost,Lost
Fallback = 0
Group = 1

[reader]
Label = Polsat
Protocol = newcamd
Key = 0102030405060708091011121314
Device = polsat99.ath.cx,10000
Account = Lost,Lost
Fallback = 0
CAID = 1803:1801
Group = 2

[reader]
Label = Tnk
Protocol = newcamd
Key = 0102030405060708091011121314
Device = tnk99.ath.cx,10000
Account = Lost,Lost
Fallback = 0
Group = 3

Wpis dla podłączających się do tak skonfigurowanych kart może wyglądać następująco:
W pliku mpcs.user robimy wpisy:

[account]
User = dream
Pwd = angel
Uniq = 0
Group = 1,2,3

[account]
User = dream2
Pwd = angel2
Uniq = 3
Group = 3

Co to oznacza ?
Użytkownik dream będzie miał dostęp do wszystkich 3 kart i będzie się mógł wielokrotnie logować na swój login, by się do nich dostać (uniq = 0)
Użytkownik dream2 ma dostęp tylko do 3 karty (TNK) wiec nie musi sie wielokrotnie logować co z a tym idzie uniq ustawiamy dla pewności na 1 chyba ze chcemy pozwolić na wielokrotne logowanie świadomie :)

!!! Zobacz uwagi odnośnie nowych wersji !!!

Wpisy do CCcamd dla usera dream mogly by wygladac nastepujaco (mpcs serwerze z IP 192.168.0.2):

#Cyfra
N: 192.168.0.2 10000 dream angel 01 02 03 04 05 06 07 08 09 10 11 12 13 14
#Polsat na CAID 1803
N: 192.168.0.2 10002 dream angel 01 02 03 04 05 06 07 08 09 10 11 12 13 14
#TNK
N: 192.168.0.2 10003 dream angel 01 02 03 04 05 06 07 08 09 10 11 12 13 14


Ważne do wersji 1.0

Dla tych, co mają problem z AU czyli przesyłaniem EMM-ów przez MPCS pragnę zakomunikować, że działa to jedynie gdy ma się kartę podłączoną lokalnie do MPCS-a portem szeregowym / przejściówką USB.
W wersji programu poniżej 1.0 użytkownik, któremu włączymy AU na kartę podłączoną siecią a taki użytkownik jest odrzucany (nie może się zalogować).
W wersji 1.0 (którą posiadam) już nie jest odrzucany ale numer karty jest niewłaściwy przez co EMM-y nie działają poprawnie.

Autorzy zapowiadają, że testują przesyłanie EMM-ów do kart wirtualnych w roboczej wersji 1.0pre tak więc działające AU dla kart wirtualnych powinno pojawić się w wersji 1.01 (bez pre).

Dodam, że MPCS w wersjach do 1.0 nie obsługuje parowanych kart Nagra 3 (z kodu wynika, że w ogóle nie obsługuje Nagry).


Konfiguracja protokołu Camd3 dla CCcamd

Przykłady nawiązują do poprzednich postów.

Dla ludzi lubiących prostotę i korzystających z MPCS na własny użytek proponuję konfigurację protokołu Camd3.57. Zapewnia on oczywiście szyfrowanie i jest wspierany przez np. CCcam.

UWAGA:
Z powodu niedoskonałości w implementacji Camd3, ma on czasami problemy z poprawna obsługą klientów. W logach dekodowanie wygląda w tedy na prawidłowe…
Jedynym lekarstwem jest zmiana protokołu na newcamd.

W pliku mpcs.conf dodajemy sekcję:

[cs357x]
Port = 15000

W CCcam.cfg dopisujemy linijki:

#Polsat
L: 192.168.0.2 15000 dream angel 1803 000000 2
#C+
L: 192.168.0.2 15000 dream angel 0100 000068 1
#TNK
L: 192.168.0.2 15000 dream angel 0B00 000000 3

Oznacza to, że łączymy się do serwera MPCS, który jest pod adresem 192.168.0.2 i mamy tam dostęp do 3 pakietów.

Dodatkowo na końcu dodane są cyfry oznaczające jak "daleko" jest od nas serwer co realnie oznacza kolejność wybierania CAID-ów.

Zkaładając, że kanał jest kodowany 3-ema CAID-ami (0100, 1803, 0B00) to karta z CAID 0100 pierwsza będzie wybierany do jego rozkodowania.
Jeżeli MPCS lub karta odmówi obsługi, następny w kolejności jest CAID 1803 , a na końcu 0B00.

Można też ustawić wszystkie karty lub np 2 tak samo:

L: 192.168.0.2 15000 dream angel 1803 000000 1
L: 192.168.0.2 15000 dream angel 0100 000068 1
L: 192.168.0.2 15000 dream angel 0B00 000000 2

Oczywiście dodatkowo można zrobić wpisy w CCcam.prio i tam ustalić kolejność czy ingnorowane kanały np:

P: 1803:000000:1c87 # AXN SciFi - Polsat N3
P: 0100:000068:3d57 # Discovery World
P: 0100:000068:3dbf # Filmbox Extra
P: 0100, 1803

Te ustawienia maja wyższy priorytet niż poprzednie.

UWAGA:
Od wersji CCcam 2.0.11 tzw. hops (dystans do serwera czyli liczba na końcu linijek N: R: L ma WYŻSZY priorytet niż CCcam.prio.

Dodatkowo gdy wybrany kanał możemy rozkodować dwoma kartami (np. HBO) i jedna z nich zawiedzie, CCcam przełączy się automatycznie na drugą w drugim systemie kodowania.


Przykład konfiguracji czytników wewnętrznych w Dreambox 7020

[reader]
Label = gorny
Protocol = internal
Device = /dev/sci0
EMMCache = 0,3,1
Group = 1
Fallback = 0

[reader]
Label = dolny
Protocol = internal
Device = /dev/sci1
EMMCache = 0,3,1
Group = 1
Fallback = 0

Konfiguracja MPCS-FTV (OSCam?) dla karty N3 w czytniku DM800

[reader]
Enable = 1
Label = SCI0
Protocol = internal
Device = /dev/sci0
Detect = CD
EMMCache = 0,3,1
Group = 1
#CAID = 1801&FFFD:1803
#Ident = 1803:000000
MHz = 357
CardMHz = 357
n3_boxkey = 5XX00XXXX0XXXXXX
n3_rsakey = XXXXXXXXXXXXXXXXX……XXXXXXXXXXXXXXXXXXXX


Przykładowy wpis do obsługi prostego czytnika kart podłączonego do komputera.

Będę się starał by był pełny.

[reader]
Label = Karta_TNK
Protocol = mouse
blockua = 0
blockga = 0
blocksa = 0
#COM1 na windows - COM2 to /dev/ttyS1 itd
Device = /dev/ttyS0
#Czytnik w tunerze np Dremabox
#Device = /dev/tts/1

#pincode = 7291
#BaudRate = 16000
#bits = 7/8
#stopbits = 1/2
#parity = odd/even/none
#flowcontrol= hard/soft/none
AU = 1
Enable = 1
EMMCache = 1,1,10
Detect = CD
#Np na WRT54
#Detect = GPIO5
Group = 1
Fallback = 0
CAID = 0B00
#CAID = 1702&FFDF
#ChID = 0666:02,03,04,05,06,07,0E
#BlockNano =

Informacje pomocnicze na temat podłączania niektórych tunerów -> sharing (wzięte ze streamborad):

Plik mpcs.conf - bo nasz MPCS jest serwerem dla tunera.

#pozostałe opcje......
#-- serial client ------------------------------------------------------------
#mpcs supports serial connects with one of the following protocols:
#- hsic (humax5400 sharing interface client - ToH3.x HoT2.x)
#- sssp (simple serial sharing protocol)
#- bomba (Arion, Ferguson, OpenBox 6**, PowerSky etc. with firmware BOMBA)
#- dsr9500 sharing protocol
#
# Device          : user@device[:baud][?delay=x&timeout=x]
#                   This line may be given multiple for multiple serial clients
#                   User and device must be given, baud, delay an timeout are optional
#                   user   = Account to use in mpcs.user
#                   device = your serial device, of course
#                   baud   = baudrate to use, valid are:
#                            9600, 19200, 38400, 57600, 115200 (default=115200)
#                   delay  = additional delay in ms while sending (default=0)
#                   timeout= max. time in ms to get a complete request (default=50)
# -----------------------------------------------------------------------------

[global]
[serial]
#this sample will use user hero on device /dev/ttyS0
#with 115200 baud, no delay and the default of 50ms timeout
#Device =/dev/ttyS0

#this sample will use user hero on device /dev/tts/1
#with 38400 baud, 1 ms delay and the default of 50ms timeout

#Device = hero@/dev/tts/1:38400?delay=1

Device = /dev/tts/1?delay=100
Detect =None

Objaśnienia:

hero - nazwa użytkownika w pliku mpcs.user, używana do określenia uprawnień
/dev/tts/1 - port com (zależna od systemu) np.: /dev/tts/0 (dreambox), /dev/ttyUSB0 (przejściówka USB), /dev/ttyS0 (wbudowany port szeregowy w PC)
38400 - opcjonalna prędkość portu (np. 115200)
delay=1 - opcjonalne opóźnienie przy wysyłaniu podane w ms
timeout=x - maksymalny czas odpowiedzi podany w ms (dobierany eksperymentalnie)

Nazwy pinów w MPCS dla WRT54G(S) (chodzi o detekcję karty w czytniku).

Pin Direction Name
GPIO 0 (Output) WLAN LED
GPIO 1 Output POWER LED
GPIO 2 Output ADM_EECS
GPIO 3 Output ADM_EESK
GPIO 4 Input ADM_EEDO
GPIO 5 Output ADM_EEDI
GPIO 6 Input Reset button
GPIO 7 Output DMZ LED

Link do projektu portu szeregowego w WRT54 http://www.rwhitby.net/projects/wrt54gs (lub http://sat4all.info.pl/upload/?download=Serial_port_WTRGS.zip)

Przykłady użycia podłączenia szeregowego do sharingu z tunerami Philips czy Ferguson.
Tryb pracy tunera ustawić na gboxsssp. Ewentualnie można użyć softu Bomba.

Ferguson 7018 podłączony po porcie szeregowym PC:

[serial]
Device = ferguson@/dev/ttyS0?delay=1&timeout=5000

Ferguson 3018 podłączony po porcie szeregowym Dreambox-a

[serial]
Device = ferguson@/dev/ttys/0?delay=1&timeout=5000

Wpisy w mpcs.user

[account]
User = ferguson #Użytkownik ten sam co w sekcji serial powyżej
Pwd = ferguson #nieistotne - może być takie jak użytkownik
Uniq = 1
Group = 1
IDENT = 0B00:000000;0100:000068;1801:000000 #TNK, Cyfra, P*lsat
#IDENT = 0B00:000000 #TNK
#IDENT = 0100:000068 # Cyfra
#IDENT = 1801:000000 # P*lsat

Można też użyć CAID do okreslenia jakie CAID-y będzie obsługiwał dany czytnik.

[account]
User = ferguson #Użytkownik ten sam co w sekcji serial powyżej
Pwd = ferguson #nieistotne - może być takie jak użytkownik
Uniq = 1
Group = 1
CAID = 1801,1803,0100

Jeżeli tuner nie wysyła poprawnie identyfikacji karty (CAID/ProoviderID) to poprawne przypisanie ECM-ów do CAID
można uzyskać przez poprwane wypełnienie pliku mpcs.guess. Format to długość ECM-a i CAID.

Gotowy plik mpcs.guess dla 3 najczęściej sharowanych kart:

64:0100 #Długośc ECM dla Cyfra+
92:1801 #Długośc ECM dla Polsat
47:0B00 #Długośc ECM dla TNK
4E:0B00 #Długośc ECM dla TNK on DisneyChannel !!!!

Dla polsatu najlepiej użyć wartości 1801 bo tak identyfikują się karty. Jeżeli jednak serwer sharingu identyfikuje się
CAID=1803 mozna użyć tej wartości żeby nie trzeba było robić translacji.

Oryginalny plik konfiguracyjny:

#mpcs caid guessing table (by len)
#caid 0500 and 1801 not needed
#format: <len>:<caid>
#where <len> is length of ecm in hex

29:1762
34:0604
36:0D05
3C:4A70
6E:0919
47:0D05
48:0D05
4C:0B00
50:0D05
51:0D05
54:1702
5A:0B00
67:0B00
71:0D0C
72:4AD0
73:090F
7C:090F
81:090F
85:0D02
91:4AD1
99:0D00
9C:0D02


Konfigurowanie sposobu logowania użytkownika

Od wersji 1.0n istnieje możliwość podania różnych wartości parametry Uniq:

Uniq = 0 #(ustawienie domyślne) uzytkownik może się zalogować dowolną ilość razy bez względu na porty i IP
Uniq = 1 #(użytkownik może się zalogować tylko raz z 1 IP, ale wiele razy na różne porty)
Uniq = 2 #(użytkownik może się zalogować tylko raz na dany port, ale wiele razy z różnych IP)
Uniq = 3 #(użytkownik może się zalogować zezwolić tylko 1 raz na 1 port z 1 IP)
Uniq = 10,20,30 #Opcja SPIDER - podobnie jak 1,2,3 lecz bez filtrowania - na każde zapytanie zostaje wysłana odpowiedź, a nie - jak normalnie - jedna ale najszybsza.

Spider ma zastosowanie głównie przy protokole Camd3 gdzie można wysłać wiele zapytań z różnymi CAID, dostyczących tego samego SID-a.


Dodatkowe, ciekawe parametry

Data gdy konto przestaje być ważne:

EndDate = 2009/04/30

lub

EndDate = 2009-04-30

Pokazywanie ECM/EMM w logach:

showecmdw = 1
showemmdw = 1

Blokowanie cache ECM (różne poziomy):

disablecache1 = 1
disablecache2 = 1
disablecache = 1

Parametry dla monitora MPCS-a:

[monitor]
Port = 988
NoCrypt = 192.168.0.1-192.168.0.255
AULow = 30
MonLevel = 4

Plik mpcs.reader sekcja [reader]. Podane wartości są przykładowe, więc należy ustalić swoje własne drogą eksperymentu.

inactivitytimeout = 2
#Czas podawany w minutach.

Jeżeli w tym czasie nie ma żadnej komunikacji na danym readerze (brak wymiany ECM/DW), połączenie z serwerem jest zakańczane.

forcereconnecttimeout = 360
#(kiedyś reconnecttimeout) - czas podawany w sekundach.

Po tym czasie połączenie z serwerem jest zakańczane i ponownie wznawiane. Pomaga to w przypadku problematycznego łącza. Co więcej dodatkowo jest ustawiany parametr KeepAlive na danym połączeniu TCP co zapobiega wystąpieniu TIMEOUT na routerze w przypadku braku ruchu.

disableserverfilter = 1
#Dotyczy wyłącznie protokołu newcamd.

Protokół newcamd konfiguruje własny filtr CAID/PROVID.
Ustawiając tą opcję na 1 wyłączamy ten filtr co umożliwia wysłanie do serwera innego CAID niż zgłoszony przez serwer.
Opcja ta może powodować problemy, jeżeli więc nie jestśmy świadomi tego co robimy nie aktywujmy jej (domyślnie jest nieaktywna)

Dotyczy tylko najnowszych wersji (FTV)

AllowRepeatedReq = 0

Ustawieni na 1 zezwala na wysyłanie wielokrotnych zapytań do serwera. Czasami użyteczne, jeżeli mamy dostęp jedynie do konta typu DW.

Plik mpcs.user:

ShowUserPID = 0

Przełącza pomiędzy wyświetlaniem IP klienta, a PID procesu, który obsługuje klienta.

Plik mpcs.reader:

Konfiguruje pamięć podręczną dla pakietów EMM wybranego czytnika (readera).

emmcache = usecache,rewrite,logging
usecache - 1 = włącz cache dla EMM, 0 = wyłącz. Domyślnie ustawione 0
rewrite - określa jak często ten sam EMM jest zapisywany
logging - 0 = loguj tylko błędy, 1 = loguj wszystkie EEMy z wyjątkiem tych co się powtarzają, 2 = loguj wszystkie EMMy

Przykład:

emmcache = 1,3,1


Konfiguracja i instalacja MpcsMon

MpcsMon to plugin do Enigmy pozwalający śledzić stan serwerów MPCS.

W katalogu /var/tuxbox/plugins umieszczamy pliki: mpcsmon.so oraz mpcsmon.cfg
W katalogu /var/tuxbox/config mpcsmon.conf

Przykładowa zawartość mpcsmon.conf:

smallfont=1
startwithip=0
hidemonitor=1
#font=/var/share/fonts/pakenham.ttf
#pin=1234
server=mpcsmon://monitor:01.1.1.01|olsah#01.1.1.01|olsah:999?label=Backup_serwer

Niezbędna jest też dodatkowa konfiguracja w pliku mpcs.conf:

[monitor]
Port = 999
NoCrypt = 127.0.0.1
NoCrypt = 10.1.1.0-10.1.1.255
AULow = 30
MonLevel = 4

oraz w mpcs.user:

[account]
User = monitor
Pwd = haslo
Group = 1,2,3,4
MonLevel = 4


Konfiguracja klienta i serwera Pandora

Dotyczy tylko wersji ze wsparciem dla tego protokołu - obecnie 1.0x-3, 1.0x-4, 1.0.6 !

Protokół ten w zamyśle służy wyłącznie do współdzielenia DCW z cache-a MPCS-a.
Nie są przesyłane żadne ECM-y, a jedynie parametry kanału i MD5 ECM-a.
Okazało się jednak, że protokół ten przeżywa jakąś reaktywację i powstaje coraz więcej programów (serwerów)
umiejących z niego skorzystać.
Przykładem może być cws-pandora.
Serwer (pandory) służący do pobierania kluczy DW w różnych serwerów www.

Ostatnia wersja pozwala również na zwykły sharing.

By skonfigurować klienta do współpracy z tym serwerem należy dodać sekcję reader w mpcs.reader:

[reader]
Label = test
Protocol = pandora
Device = 192.168.1.2,666
Account = dumb,test
CAID=0100,0B00,1803,1801

Port 666 jest domyślnym portem cws-pandora.
W Account ważne jest tylko hasło, użytkownik może być wpisany dowolny, gdyż nie jest używany w tym protokole.
Opcjami CAID i DisableServerFilter możemy "regulować" co będzie wypuszczane do serwera.

Konfiguracja serwera jest znacznie prostsza.
Konfigurujemy go gdy chcemy udostępnić komuś zawartość swojego cache-a. Wtedy klient Pandory może oglądać te same kanały co nasi użytkownicy i my.

Do pliku mpcs.conf dopisujemy:

[pandora]
Port = 777
Pass = test

Port 777 będzie służył naszym klientom do pobierania danych z cache (kodowany protokół UDP).
Dane kodowane są hasłem, dlatego do uzyskania dostępu klient wymaga wpisania takiego samego.


Konfiguracja MPCS-a na potrzeby cws-pandora

Najpierw dodajemy wpisy dla klientów newcamd:

Do pliku mpcs.conf dopisujemy w sekcji [newcamd] :

Key = 0102030405060708091011121314
Port = 20000@0500:20810;20001@0604:00

O ile nasz serwer cwx jest na tej samej maszynie to w mpcs.reader należy dodać:

[reader]
Label = test
Protocol = pandora
Device = 127.0.0.1,666
Account = dumb,test
Fallback = 0

Zakładamy, że serwer jest uruchomiony na porcie domyślnym 666.
Po uzupełnieniu wpisów w naszym CAM-ie tak by mógł się łączyć do MPCS-a możemy rozpocząć oglądanie
udostępnionych kanałów. Na dzień dzisiejszy: Dorcel TV i Private Spice.


Pandora - opis dla deweloperów

Dla piszących własne programy oraz spragnionych opisu "technicznego" Pandory - zapraszam tutaj: http://mpcs.wikidot.com/protocols


Konfiguracja DVB client

Od wersji 1.0.6 MPCS samodzielnie może słuzyć jako CAM (jak MGcam lib CCcam) i odbierać ECMy prosto z tunera.
By aktywować tą funkcję należy w pliku mpcs.conf dopisać następującą sekcję:

[dvb]
#1 - CAM DVB aktywny, 0 - CAM DVB zablokowany
Enable = 1
Au = 1
#Au: tryb autoupdate(0 - zablokowane emm; 1 lub all - włącz EMM dla wszystkich czytników;
#reader1,reader2, … - zdefiniuj listę czytników do których będą wysyłane EMM-y )

[global]
Filter = 0

Jeżeli wartość parametru Filter będzie równa zero wtedy klient DVB stara się wysyłać ECMy na wszystkie CAID
znalezione na danym kanale i jednocześnie dostępne w sekcjach reader.
Jeżeli wartość filtra będzie powyżej zera nastąpi włączenie filtrowanie.
Pierwsze wysłanie ECM-ów nastąpi na wszystkie dostępne CAID-y, a następnie wybierany jest naszybszy reader/serwer.
Jeżeli w pewnym momencie czas odpowiedzi z wybranego readera/serwera jest większy niż zdefiniowany w parametrze Filter DVB ponownie wyśle ECMy na dostępne CAIDy i od nowa wybierze naszybszy serwer.


Konfiguracja OSD

Do włączenia / wyłączenia / ustalenia typu OSD używamy opcji EnigmaOSD.

[dvb]
Enable = 1
Au = 1
EnigmaOSD = 1 #Typy komunikatów (0 - brak komunikatów; 1 - komunikaty dla enigma 1; 2 - komunikaty dla enigma 2)
#Wybór API (opcjonalne) - normalnie powinno zostać odnalezione automatycznie
#api = 3
#Wybór trybu PMT (opcjonalne) - normalnie powinno zostać wybrane automatycznie
#pmtmode = 4
#Bezpośrednie podanie lokalizacji urządzenia demux (opcjonalne) - normalnie powinno zostać wybrane automatycznie
#demuxdevice=/dev/dvb/adapter0/ca0

Domyślne wartości EnigmaOSD to 1 dla PPC (np. Dreambox 7020) i 2 dla MIPS (np. Dreambox 800) i oczywiście są już zaszyte w odpowiedniej wersji programu (MIPS ma 2, PPC ma 1),


Konfiguracja FreeTV - podstawy

[reader]
Label = freetv
Protocol = freetv

#Poprawny klucz D
DKey = 7F850066C095D884D4606744DBA485EC9517F513C3EBE50DF02441B517E1E136B4F6

#Nazwa DNS i port (standard to 53)
Device = ns.test.org,53

#Dane autoryzacyjne SEID i klucz lub haslo
Account = AABBCCDD,test

#Ustawic na 1, jezeli ta sekcja reader nie jest jedyna
Fallback = 1

#Najnowsze wersje programu nie używają tej opcji
#Włącza dodatkowo wysyłanie md5 ECM-ów - bardzo pomocne jeżeli twój tuner nie wysyła poprawnie CAID/SID - jeżeli jesteś niepewny zostaw włączone
Sendecm = 1

#Włącza pełną obsługę freetv czyli możliwość pobierania i dzielenia się DCW. Wartosc 0 umożliwia tylko dzielenie się swoimi DCW
Fullsupport = 1

Group = 1


Wlaczenie logowania EMM do pliku - dotyczy TYLKO wersji premium i ftv oraz protokołu newcamd

W pliku mpcs.conf włączamy pokazywanie EMM opcją:

showemmdw = 1

W pliku mpcs.reader włączamy przesayłanie EMM dla wybranej sekcji [reader]:

AU = 1

przykład:

[reader]
Enable = 1
Label = cyferka
Protocol = newcamd
Key = 0102030405060708091011121314
Device = dobry.kolega.pl,10000
Account = kumpel,daj_piwo
AU = 1
Group = 1

Trzeba pamiętać, że serwer musi zezwalać nam na przesyłanie EMM !
Zwykle zezwolenie to jest przypisane do użytkownika na którego się logujemy.
Jeżeli to fizyczna karta to nie ma takiego problemu.

W pliku mpcs.user zezwalamy klientowi wysyłać EMM na wybrany reader

AU = nazwa_readera_z_AU

przykład:

[account]
User = jakis
Pwd = jakies
Uniq = 0
Group = 1,2,3,4,5,6,7,8,9,10
MonLevel = 4
AU = cyferka

Logi są zapisywane do pliku /var/log/mpcs.emm, więc musi się tam dać zapisywać.

WAŻNE:
Zalogowany EMM nadaje się do bezpośredniego użycia w NewCS, czyli można go wysłać na kartę przez interfejs WWW.
Wystarczy skopiować i wkleić w okienku wysyłania ECM/EMM. Należy pamiętać, że bloker w konfiguracji danej karty w NewCS musi być wyłączony, oraz by wybrać właściwy czytnik i typ pakietu (EMM) nad okienkiem do wprowadzania danych.

EMM-y wysyłane na serial karty maja type=82, a te wysyłane na PPUA type=84

W wersjach obsługujących DVB-clienta mozna go użyć do pobierania EMM i wtedy należy dodatkowo ustawić:

[dvb]
Au = 1

lub:

[dvb]
Au = cyferka

UWAGA:
W wersjach premuim i ftv EMM sa jedynie logowane - nie są dalej przesyłane !
Ta sama konfiguracja w wersji 1.0.6 / 1.0.7 spowoduje przepuszczenie EMM do serwera zamiast ich zalogowania !


Konfiguracja klienta CCcam (OSCam / MPCS-FTV)

Przykładowa konfiguracja:

[reader]
label = syferka
protocol = cccam
device = 192.168.0.5,12000
account = login,password
caid = 0100
cccversion = 2.0.11
cccbuild = 2892
cccmaxhop = 3
group = 4

Definicja wersji CCcam (domyślnie brak):

version = <main version>.<version>.<sub version>

lub

cccversion = <main version>.<version>.<sub version>

Przykład: version = 2.1.2

Definicja buildu CCcam (domyślnie brak):

build = <4-digit number>

lub

cccbuild = <4-digit number>

Przykład: build = 5678

Można tez ustalić/ograniczyć liczbę przeskoków (hop) - domyślnie ustawioną na 10.

Przykład: cccmaxhop = 3

Przykłady poprawnych par wersja build:

cccversion = 2.0.11
cccbuild = 2892

cccversion = 2.1.1
cccbuild = 2971

cccversion = 2.1.2
cccbuild = 3094

cccversion = 2.1.3
cccbuild = 3165

cccversion = 2.1.4
cccbuild = 3191


Współpraca MPCS-FTV z tunerami Ariva - dotyczy tylko najnowszych wersji tego programu

Jeżeli używasz troszkę starszej wersji MPCS-FTV do udostępniania karty odbiornikowi Ariva (200) powinieneś włączyć opcję:

ArivaWorkaround = 1

Ten tuner ma błąd, który powoduje, że po upłynięciu czasu podanego w ClientTimeout przestaje dekodować obraz.
Opcja ta rozwiązuje ten problem do czasu jego usunięcia przez developerów Arivy.

W najnowszych wersjach opcja ta została zamieniona na keepalive i domyślnie wyłączona, co od razu umożliwia poprawną współpracę z tymi tunerami.

Domyślnie więc program nie wysyła pakietów keepalive jako serwer i utrzymuje połączenie z klientem dopóki ten się nie rozłączy.
Funkcja keepalive jest wtedy realizowana na warstwie TCP (połączenia sieciowego).

Jeżeli z jakiegoś powodu wysyłanie keepalive przez serwer jest potrzebne należy tą opcję ustawić na 1
Np:

[newcamd]
Key = 0202030405060708091011121314
Port = 10000@1803:00;10001@0100:00;10002@0B00:00;
KeepAlive = 1


Zmiany w opcjach i plikach programu MPCS-FTV

*W najnowszych wersjach zbędne są pliki mpcs.reader i mpcs.user.*
Opcje kiedyś umieszczane w tych plikach można wpisać do mpcs.conf.
Jeżeli jednak program znajdzie te pliki to reader-y i użytkowników pobiera z nich ignorując wpisy o reader-ach i kontach z mpcs.conf.

Konta użytkowników są przeładowywane automatycznie po zmianie pliku w którym się znajdują.
To samo dotyczy mpcs.services. Jeżeli plik z services zostanie zmieniony, to zostanie automatycznie załadowany ponownie.
Użytkownicy zostaną wtedy rozłączeni i połączeni ponownie.

Serwer protokołu Newcamd sygnalizuje teraz w logu otrzymanie Keepalive.
Nowością jest wysyłanie caid i provider id z każdym ECM i DW.
Dodana jest identyfikacja klienta (CCcamd, MGcamd, itd. ) łączącego się do serwera. Sam też się identyfikuje jako MPCS (kiedyś generic).

Klient tego protokołu (reader proxy) wysyła Keepalive do serwera co ok. 120 sek. i wyświetla w logu czas otrzymania odpowiedzi.
EMM-y są teraz przesyłane do serwera (po poprawnym skonfigurowaniu).

Działa poprawnie automatyczne przypisywanie kart do funkcji AU (au=1).
[account]
User = test
Pwd = test
Group = 1,2,3,4,5,6,7,8,9,10
MonLevel = 4
AU = 1
#ShowUserPID = 1

Opcja ShowUserPID = 1 powoduje, że na końcu loga wyświetlany jest pid procesu zamiast IP. Jest to potrzebne
by zapewnić zgodność z niektórymi programami monitorującymi MPCS.

Domyślne rozłączenie nieużywanego reader-a następuje po czasie 6 minutach zamiast 30 sekundach.

W sekcji reader można dodać opcję HideRejected = 1
Powoduje ona ukrycie komunikatów o wszystkich odrzuconych ECM-ach.

[reader]
Enable = 1
Label = sky
Protocol = camd35
Device = 127.0.0.1,15000
Account = camd3user,camd3pass
Group = 1
HideRejected = 1
#AllowRepeatedReq = 1

Opcja Filter może być dodawana do konta użytkownika modyfikując globalne ustawienie. W ten sposób możne zmienić sposób filtrowania dla wybranych użytkowników.
Ustawienie Filter=0 wyłącza filtrowanie.

Przykład:

Globalna opcja jest ustawiona:

[global]
Nice = -1
BindWait = 10
ResolveDelay = 20
DyndnsInterval = 120
LogFile = stdout
PidFile = /var/run/mpcs.pid
ClientTimeout = 5
ClientMaxIdle = 120
FallbackTimeout = 900
Filter = 1300

a my wyłączamy filtrowanie dla wybranego użytkownika:

[account]
User = dm800
Pwd = dm800
Filter = 0
Group = 9

Logowanie EMM może odbywać się do wybranego katalogu. Ustala to globalna opcja EMMLogs.

[global]
Nice = -1
BindWait = 10
ResolveDelay = 20
DyndnsInterval = 120
LogFile = stdout
PidFile = /var/run/mpcs.pid
EMMLogs = /var/log/mpcs
ClientTimeout = 5
ClientMaxIdle = 120
FallbackTimeout = 900
Filter = 1300

Emmy będą logowane do katalogu /var/log/mpcs w postaci osobnych plików dla każdego reade-ra.
Przykładowe nazwy plików:
Logowanie dla redar-a o nazwie abcyf będzie do pliku mpcs.abcyf.emm
Logowanie dla redar-a o nazwie pppol będzie do pliku mpcs.pppol.emm

Logowanie EMM do pliku można włączyć na 2 sposoby:
- ustawiając globalną opcję: showemmdw = 1
- ustawiając trzeci parametr w opcji readera EMMCache = 0,3,1

[reader]
Enable = 1
Label = SCI0
Protocol = internal
Device = /dev/sci0
Detect = CD
EMMCache = 0,3,1
Group = 1
MHz = 358
CardMHz = 358
n3_boxkey = XXXXXXXXXXXXXXXX
n3_rsakey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


Nowe opcje w MPCS-FTV

Sekcja [global]:

Włączenie analizy pliku mpcs.srvid i wyświetlenie nazw kanałów w logach

ShowChannelName = 1

Włączenie przypisywania readera do klienta - wymaga aktywnej opcji Filter. Służy do oszczędniejszego gospodarowania kartami.
Po wybraniu CAID przez filtr, do klienta przypisywany jest dodatkowo najlepszy reader, przez co gdy posiadamy ich kilka ECMy
nie są wysyłane do wszystkich (pasujących) a do jednego.

AutoReaderAssign = 1

Opcja rozszerzająca działanie filtra o eliminację wielokrotnych odpowiedzi (może tak być gdy mam kilka readerów i wyłączoną opcję AutoReaderAssign).
Niektóre tunery reagują zawieszeniem na wielokrotną odpowiedz DCW na kilku połączeniach newcamd.

DCWfilter = 1

Dodatkowy poziom Fallback. Jeżeli brak odpowiedzie po czasie FallbackTimeout, to po FallbackTimeout2 są odpytywane readery oznakowane jako Fallback = 1 i Fallback = 2 (podstawowe już nie, gdyż były odpytane w normalnym czasie i po FallbackTimeout).

FallbackTimeout2 = 2000

Sekcja [reader]:

Ustawienie identyfikacji klienta dla protokołu NEWCAMD. Np. Jeżeli chcemy by nasz reader w MPCS przedstawiał się inaczej niż domyślnie wpisujemy jedną z wartości poniżej.
Domyślna wartość 17 -> MPCS

SetClientID = 6

  0 - Generic
  1 - VDRSC/Ariva
  2 - LCE
  3 - Camd3
  4 - Radegast
  5 - Gbox2CS
  6 - Mgcamd
  7 - WinCSC
  8 - NewCS
  9 - cx
  10 - Kaffeine
  11 - Evocamd
  12 - CCcam
  13 - Tecview
  14 - AlexCS
  15 - Rqcamd
  16 - Acamd
  17 - MPCS
  18 - kpcs
  19 - Cardlink
  20 - Octagon
  21 - NextYE2k
  22 - NextYE2k
  23 - Sbcl
  24 - LinkSat
  25 - SamLink
  26 - SamLink
  27 - Scam

Jeżeli używamy opcji AutoReaderAssign, a nie chcemy by dany reader był komus przypisywany (czyli żeby ECMy były wysyłane do niego zawsze) możeby to zrealizować przy pomocy tej opcji.

StayDetached = 1

Ta opcja zarządza sprawdzaniem i reakcja na sumy kontrolne DCW. Działanie opcji według tabeli:

0 - korekcja bez komunikatu (domyslnie)
    1 - korekcja z komunikatem
    2 - komunikat bez korekcji
    3 - komunikat i odrzucenie
    4 - odzrucenie bez komunikatu
    5 - odrzucenie i wyswietlenie blednego DCW

BadDCWchecksum = 3

Opcja ta zarządza wyświetalniem ECM i DCW z danego readera. Działanie według tabeli:

  0 - wylaczone wyswiatlanie
  1 - wyswietlanie DCW
  2 - wyswietlanie ECM
  3 - wyswietlanie ECM i DCW

ShowEcmDw = 0


Count.cgi?df=cnt0666.dat&ft=0&dd=D&trgb=000000
Data założenia: 18.05.2009
Więcej na stronie projektu CSPD

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License