Loading...

Analiza logów CCcam: Czytaj& debuguj logi CCcam jak profesjonalista

Jeśli twój serwer CCcam zrywa połączenia, zamraża kanały lub wypisuje enigmatyczne linie, których nigdy nie próbowałeś zrozumieć, nie jesteś sam. Większość osób prowadzących konfigurację udostępniania nigdy tak naprawdę nie czyta swoich logów, dopóki coś się nie zepsuje — a wtedy patrzą na ścianę tekstu, nie mając pojęcia, co jest normalne, a co jest czerwonym flagą. Ten przewodnik dotyczy najlepszych praktyk analizy logów cccam, które zdobyłem przez lata prowadzenia i naprawiania tych urządzeń, pole po polu, abyś mógł rzeczywiście diagnozować problemy zamiast zgadywać.

Gdzie znajdują się logi CCcam i jak włączyć szczegółowe logowanie

W większości konfiguracji opartych na Linuksie, CCcam zapisuje do/var/log/CCcam.log domyślnie, zakładając, że konfiguracja ma ustawioną dyrektywę LOGFILE. Na urządzeniach Enigma2 — Vu+, Dreambox, Zgemma, niezależnie od obrazu, który używasz — ta ścieżka może w ogóle nie istnieć lub może być przekierowywana do/tmp/CCcam.log. Niektóre obrazy umieszczają to w/media/hdd/ jeśli masz podłączony dysk twardy, co szczerze mówiąc, jest miejscem, w którym powinno się to znajdować, jeśli masz taką opcję.

Domyślne ścieżki logów i jak je przekierować

Otwórz swój/etc/CCcam.cfg i poszukaj klucza LOGFILE. Jeśli go brakuje, dodaj go:

LOGFILE : /media/usb/CCcam.log

To jest ważna część — skieruj to na pamięć USB lub udział sieciowy, a nie na wewnętrzną pamięć flash. Nauczyłem się tego w trudny sposób lata temu na Dreamboxie 800 HD z może 200 MB użytecznej pamięci flash. Pozostawiłem DEBUG włączony na noc podczas sesji rozwiązywania problemów, plik logu urósł ponad to, co pamięć flash mogła obsłużyć, a urządzenie nie uruchomiło się następnego ranka. Musiałem je ponownie flashować. Całkowita strata wieczoru, którą można było uniknąć, montując zewnętrzny dysk najpierw.

Ustawienie DEBUG i poziomu logowania w CCcam.cfg

Klucz, który kontroluje szczegółowość, jest prosty:

DEBUG : 1

Ustawienie tego na 1 daje ci zdarzenia połączenia, ruch ECM/EMM i aktywność udostępniania. Niektóre wersje wspierają wyższe wartości (2 lub 3) dla jeszcze większej szczegółowości, ale szczerze mówiąc DEBUG : 1 wystarcza w 95% przypadków rozwiązywania problemów. Wyższe poziomy głównie dodają szum EMM, co utrudnia znalezienie linii ECM, które naprawdę cię interesują. Zrestartuj demon po zmianie tego —killall -9 CCcam&& /usr/bin/CCcam lub użyj skryptu restartu usługi swojego obrazu, w zależności od tego, jak jest zainstalowany.

Rotacja logów, aby nie zapełnić pamięci flash

Szczegółowe logowanie na zajętym serwerze wielo-peerowym może generować megabajty na godzinę. Jeśli logujesz do pamięci flash z jakiegokolwiek powodu, skonfiguruj prostą pracę przycinania. Wpis cron, taki jak ten, utrzymuje wszystko w porządku:

0 * * * * [ $(stat -c%s /media/usb/CCcam.log) -gt 5242880 ]&& > /media/usb/CCcam.log

To sprawdza rozmiar pliku co godzinę i czyści go, jeśli przekracza 5 MB. Proste, ale działa w środowiskach BusyBox, gdzie pełna rotacja logów nie jest dostępna. Jeśli jesteś na odpowiednim urządzeniu z Linuksem (serwer Ubuntu, Debian, cokolwiek), po prostu użyj prawdziwej rotacji logów z konfiguracją w/etc/logrotate.d/cccam wskazującą na twoją ścieżkę logu z tygodniową rotacją i kompresją.

Aby na żywo oglądać bez czekania na wzrost pliku, telnetuj lub SSH do urządzenia i uruchomtail -f /media/usb/CCcam.log. Istnieje również interfejs webowy — domyślnie na porcie 16001 — który ma zakładkę logów pokazującą ostatnią aktywność, jeśli wolisz nie zajmować się terminalem.

Dekodowanie anatomii linii logu CCcam

To jest miejsce, w którym większość poradników zawodzi. Pokażą zrzut ekranu logu i powiedzą "zobacz, jest połączone", nie wyjaśniając, co właściwie oznacza każde pole. Naprawmy to. Oto reprezentatywna (anonomizowana) linia, którą zobaczysz w logu CCcam:

2026/07/17 21:14:03 (SHARE01) [FTA] ECM (0100:001234:2A3F) hop 1 - OK (312 ms)

Rozbijając to na pola: znacznik czasu jest pierwszy, następnie nazwa lub identyfikator peer w nawiasach (SHARE01 w tym przypadku — dowolny przydomek ustawiony dla tego połączenia). Następnie jest tag wskazujący typ karty lub grupowanie dostawcy. Potem masz CAID:ident:SID — CAID identyfikuje system szyfrowania (0100 to Seca, 0500 to Viaccess itd.), ident zawęża zestaw kluczy dostawcy, a SID to identyfikator usługi dla konkretnego kanału, który jest żądany.

Linie połączenia: stany połączenia, rozłączenia i logowania

Oddzielnie od ruchu ECM, zobaczysz linie takie jak:

2026/07/17 21:00:11 klient SHARE01 połączony

2026/07/17 21:45:02 klient SHARE01 rozłączony (połączenie zamknięte przez peer)

Te linie informują o stanie rzeczywistej sesji TCP, niezależnie od tego, czy dekodowanie działa. Peer, który łączy się i pozostaje połączony przez godziny, jest zdrowy. Peer, który łączy się, rozłącza w ciągu kilku sekund i wielokrotnie się łączy, mówi ci, że coś jest nie tak, zanim nawet spojrzysz na dane ECM.

Linie karty/udziału: czytnik, identyfikator dostawcy i liczba hopów

Liczba hopów jest jednym z najbardziej niedocenianych pól w całym logu. Hop 1 oznacza, że karta lub czytnik odpowiadający na żądanie jest lokalny dla tego peera — bezpośrednia fizyczna karta lub czytnik OSCam bez reshare pomiędzy. Hop 2 oznacza, że ten peer otrzymał to od kogoś innego, kto ma rzeczywistą kartę. Hop 3, hop 4 i dalej oznaczają, że jesteś kilka reshare głęboko w łańcuchu, a każdy z tych hopów dodaje opóźnienie i kolejny punkt awarii.

Linie żądań ECM: OD peer, DO czytnika i wynik dekodowania

Kierunek ma znaczenie. Linia OD oznacza, że ktoś żąda kanału od ciebie — działasz jako dostawca. Linia DO oznacza, że to ty żądasz, a twoje urządzenie prosi czytnik (lokalna karta lub upstream peer) o dekodowanie. Jeśli widzisz tylko linie OD i żadnych linii DO dla danego CAID, nie masz działającego źródła dla tego systemu szyfrowania, ani udziału, ani innego.

Pola czasowe: co naprawdę oznacza wartość w milisekundach

Ta liczba w nawiasach — 312 ms w moim przykładzie — to opóźnienie dekodowania ECM, czas między wysłaniem żądania a otrzymaniem odpowiedzi. Dla lokalnej karty siedzącej w twoim czytniku, wszystko poniżej około 400 ms jest zdrowe. Dla peera WAN, szczególnie takiego, który jest kilka hopów dalej lub przez wolniejsze połączenie, wyższe liczby są normalne i nie są automatycznie problemem. Ważna jest spójność. Peer utrzymujący stabilne 250 ms jest w porządku. Peer skaczący między 200 ms a 3000 ms to ten, który powoduje twoje zacięcia.

Diagnozowanie najczęstszych problemów z logu

Gdy zrozumiesz pola, prawdziwa wartość analizy logów cccam w najlepszych praktykach polega na dopasowywaniu wzorców w czasie — a nie wpatrywaniu się w pojedynczą linię. Pojedynczy timeout nic nie znaczy. Wzór timeoutów na tym samym CAID od tego samego peera każdego wieczoru oznacza wszystko.

Zamrażanie kanałów i sporadyczne timeouty ECM

Jeśli kanał zamraża się, ale audio/wideo w przeciwnym razie działa dobrze przed i po, przeszukaj log wokół tego znacznika czasu dla CAID i SID tego kanału. Szukaj serii rosnących wartości ms ECM, po których następuje linia timeoutu, a następnie świeżego udanego dekodowania, gdy nowy ECM się cykluje. Ten wzór — narastające opóźnienie, potem luka, potem odzyskanie — wskazuje wyraźnie na przeciążonego lub zakorkowanego peera, a nie na twój własny sprzęt.

Peery, które łączą się, a następnie rozłączają (pętle logowania)

Powtarzające się cykle łączenia/rozłączania od tego samego peera, szczególnie w odstępach kilku sekund, prawie zawsze prowadzą do jednej z trzech rzeczy: niezgodności nazwy użytkownika/hasła (sprawdź linie F: w swoim CCcam.cfg w porównaniu do tego, czego oczekuje peer), błędnego portu na jednym końcu lub niezgodności MAXHOP/wersji, gdzie klient peera odrzuca twoje połączenie, ponieważ twoje ustawienie MAXHOP nie pasuje do tego, czego oczekują. Sprawdź dokładny powód rozłączenia w logu — "błędne hasło" i "połączenie zamknięte przez peer" wskazują na bardzo różne rozwiązania.

Wysokie liczby hopów i łańcuchy reshare, które spowalniają dekodowanie

Jeśli konsekwentnie widzisz hop 3 lub hop 4 dla kanałów, które wcześniej dekodowały szybko, coś upstream przekształciło swój łańcuch reshare, a teraz jesteś dalej od rzeczywistej karty. Sprawdź swoje wartości RESHARE i MAXHOP w CCcam.cfg — zbyt agresywne obniżenie MAXHOP może całkowicie odciąć cię od działających udziałów, podczas gdy pozostawienie go zbyt wysokim pozwala na przejście wolnym, niepewnym długim łańcuchom. Nie ma tutaj uniwersalnej poprawnej liczby; to zależy od tego, co twoi peery faktycznie oferują.

Martwe lub odrzucone karty vs. rzeczywiście brakujące uprawnienia

Linia "karta odrzucona" lub "uprawnienia wygasły" różni się od timeoutu — oznacza, że karta odpowiedziała i powiedziała nie, zazwyczaj dlatego, że subskrypcja za nią wygasła lub konkretny pakiet kanałowy nie jest wliczony. To nie jest problem sieciowy ani problem konfiguracyjny z twojej strony. Żadne ilości ponownych prób ani dostosowywania ustawień hopów nie naprawią wygasłych uprawnień upstream.

Narzędzia i metody do analizy logów CCcam na dużą skalę

Czytanie linia po linii tylko do pewnego momentu, gdy masz tuzin peerów i setki żądań ECM na godzinę. To jest miejsce, w którym kilka grep i awk one-linerów oszczędza ci prawdziwy czas, a szczerze mówiąc, to część, którą większość poradników całkowicie pomija na rzecz jednego adnotowanego zrzutu ekranu.

grep, awk i sort one-linery do triage

Aby wyciągnąć każde zdarzenie timeoutu:

grep -i "timeout" /media/usb/CCcam.log

Aby znaleźć każde zdarzenie "nie dekodowane", które jest zupełnie innym trybem awarii (więcej na ten temat poniżej):

grep -i "not decoded" /media/usb/CCcam.log

Liczenie proporcji ECM OK vs. timeoutów na peer

To jest bardziej użyteczne. Aby ocenić, które peery generują najwięcej timeoutów:

grep "timeout" CCcam.log | awk '{print $4}' | sort | uniq -c | sort -rn

Dostosuj numer pola ($4) w zależności od tego, gdzie znajduje się nazwa peera w twoim rzeczywistym formacie logu — nieco się różni między wersjami CCcam. Aby uzyskać średni czas ECM na CAID:

grep "OK" CCcam.log | awk -F'[()]' '{print $2, $4}' | awk '{sum[$1]+=$3; count[$1]++} END {for (c in sum) print c, sum[c]/count[c]"ms"}'

Uruchom to przez kilka godzin logów, a natychmiast zobaczysz, który CAID ma średnio 250 ms, a który 1800 ms. To jest twój problem CAID, a teraz wiesz, na czym się skupić, zamiast zgadywać.

Obserwowanie ruchu na żywo vs. analiza po fakcie

Aby uchwycić przerywane zamrożenie w momencie, gdy się zdarza, uruchomtail -f CCcam.log | grep -i "yourCAID" podczas oglądania kanału, który się zamraża. Zobaczysz dokładny moment, w którym występuje timeout w czasie rzeczywistym, co jest znacznie bardziej przydatne niż rekonstrukcja tego z statycznego pliku później. Aby dostrzec wolniejsze trendy — peer, który jest w porządku przez większość dnia, ale ma problemy w godzinach szczytu — potrzebujesz zgrupowanego podejścia po fakcie z użyciem średnich awk w obracanym logu obejmującym kilka godzin lub cały dzień.

Zaleta OSCam: readerinfo, strona statusu i czystsze logi

Warto wspomnieć: wiele konfiguracji uruchamia OSCam jako rzeczywistego czytnika/obsługiwacza kart za warstwą peerowania protokołu CCcam, ponieważ strona statusu OSCam i wyjście readerinfo są bardziej uporządkowane niż surowe logi tekstowe CCcam. Jeśli twoja skrzynka jest w mieszanym środowisku, czasami zobaczysz zarówno linie w formacie CCcam, jak i OSCam przeplatające się w tym samym pliku logu, a kolejność pól nie będzie się zgadzać. Nie zakładaj, że każda linia podąża za formatem, który opisałem powyżej — sprawdź, który demon faktycznie ją napisał, zanim przefiltrujesz według pozycji kolumny.

Na co zwrócić uwagę przy wyborze lub ocenie peera na podstawie logów

Nic z tego nie dotyczy wskazywania, gdzie zdobyć share — to nie jest to, o co chodzi. Chodzi o czytanie logów na połączeniu, które już masz, i obiektywne decydowanie, czy jest ono naprawdę dobre, czy tylko znajome.

Czas pracy i częstotliwość ponownego połączenia jako sygnały jakości

Przeszukaj log połączeń dla danego peera przez tydzień. Peer, który łączy się raz i pozostaje połączony, z wyjątkiem planowanych restartów, to stabilna infrastruktura. Peer, który ponownie łączy się co kilka godzin, działa na niestabilnym sprzęcie, ma niestabilne połączenie lub restartuje swoją usługę według harmonogramu, którego nie kontrolujesz. Żaden z tych czynników nie dyskwalifikuje sam w sobie, ale częste nieplanowane przerwy w godzinach szczytu to wzór, na który należy zwrócić uwagę.

Spójne niskie czasy ECM vs. skokowa latencja

Średni czas ECM ma mniejsze znaczenie niż wariancja. Peer, który utrzymuje stałe 600 ms, jest bardziej użyteczny w praktyce niż ten, który waha się między 150 ms a 4000 ms, mimo że najlepszy wynik drugiego wygląda lepiej. Zamrożenie pochodzi ze skoków, a nie z podstawy. To właśnie dlatego podejście z uśrednianiem awk ma większe znaczenie niż przeglądanie kilku linii — wariancja ujawnia się tylko w rzeczywistej wielkości próbki.

Liczba hopów i to, czy share to prawdziwa karta, czy reshare

Jeśli możesz określić liczbę hopów dla danego CAID z twoich logów, hop 1 oznacza, że pochodzi z rzeczywistej fizycznej karty lub bezpośredniego płatnego źródła. Cokolwiek hop 3 lub głębiej oznacza, że polegasz na czyimś reshare reshare, a każdy link w tym łańcuchu to potencjalny punkt awarii poza bezpośrednią kontrolą kogokolwiek. Żaden z nich nie jest z natury zły do użycia, ale wiedz, na którym naprawdę polegasz, zanim spędzisz godziny na debugowaniu tego, co może być po prostu wrodzoną ograniczeniem długiego łańcucha.

Kilka przypadków brzegowych, które warto mieć na uwadze podczas robienia tego wszystkiego: sprawdź zegar swojej skrzynki. Dryf strefy czasowej lub zegar, który zresetował się po przerwie w zasilaniu, wpłynie na twoją zdolność do korelowania znaczników czasowych logów z momentem, w którym faktycznie widziałeś zamrożenie — zweryfikuj za pomocądate na skrzynce, zanim uwierzysz w korelację znaczników czasowych. Ponadto, dekodowanie pokazujące "OK" w logu nie gwarantuje czystego obrazu — jeśli linie ECM wyglądają na całkowicie zdrowe, ale kanał nadal się zamraża lub przerywa, to bardzo prawdopodobnie problem z tunerem/sygnałem lub problem z dekoderem sprzętowym, a nie problem z udostępnianiem. A jeśli masz wiele SID-ów korzystających z jednego CAID, nie ufaj statystykom agregowanym — niektóre kanały pod tym CAID mogą zawodzić, podczas gdy inne przechodzą bez problemu, a uśrednione liczby całkowicie to ukryją. Filtruj według SID, gdy coś jest szczególnie nie tak z jednym kanałem.

Złóż to wszystko razem, a otrzymasz to, co nazwałbym najlepszą praktyką analizy logów cccam: szczegółowe logowanie przekierowane z pamięci flash, prawdziwe zrozumienie, co oznacza każde pole w linii, mapowanie objawów na sygnatury logów dla typowych awarii oraz garść poleceń w linii, aby przekształcić surowy hałas w rzeczywistą uporządkowaną listę problemów. To różnica między zgadywaniem a faktycznym naprawieniem czegoś.

Jak włączyć szczegółowe logowanie w CCcam?

Edytuj /etc/CCcam.cfg i ustaw DEBUG : 1 wraz ze ścieżką LOGFILE wskazującą na zewnętrzną pamięć — coś w stylu LOGFILE : /media/usb/CCcam.log — zamiast wewnętrznej pamięci flash. Uruchom ponownie demona CCcam, aby zmiany zaczęły obowiązywać. Możesz obserwować to na żywo za pomocą tail -f z sesji telnet lub SSH, lub sprawdzić zakładkę logów w interfejsie webowym, który zazwyczaj działa na porcie 16001.

Jaki jest dobry czas ECM w logu CCcam?

Czas ECM to latencja dekodowania w milisekundach między żądaniem a odpowiedzią. Dla lokalnie podłączonej karty, poniżej około 400 ms jest zdrowe. Peery przez połączenie WAN będą naturalnie działać wyżej, i to nie jest automatycznie problem. Ważniejsza jest spójność — rosnące lub skokowe wartości w połączeniu z timeoutami to prawdziwy znak ostrzegawczy, a akceptowalne liczby różnią się nieco w zależności od CAID.

Co oznacza 'nie dekodowane' lub 'timeout' w logu?

To różne awarie z różnymi rozwiązaniami. "Nie dekodowane" oznacza, że karta lub czytnik odpowiedziały, ale nie mogły dekodować — zazwyczaj wygasła lub brakująca uprawnienie, którego żadna zmiana konfiguracji nie naprawi. "Timeout" oznacza, że żadna odpowiedź nie dotarła na czas, co wskazuje na przeciążenie sieci lub przeciążonego peera. "Brak karty" oznacza, że po prostu nie ma dostępnego share dla tego CAID w pierwszej kolejności.

Jak mogę ustalić, który peer powoduje zamrożenie kanału?

Filtruj swój log dla CAID i SID dotkniętego kanału w dokładnym czasie, w którym się zamroził, a następnie spójrz na linie FROM/TO i wartości ECM ms wokół tego znacznika czasowego. Uruchomienie kombinacji grep/awk/sort w celu uszeregowania liczby timeoutów na peera przez kilka godzin zazwyczaj szybko izoluje winowajcę, zamiast zgadywać na podstawie pojedynczego incydentu.

Co oznacza liczba hopów i dlaczego jest to ważne?

Hop 1 oznacza, że odpowiedź pochodzi z karty lub czytnika bezpośrednio lokalnego dla tego peera. Każdy dodatkowy hop oznacza kolejne reshare w łańcuchu, zwiększając latencję i kolejny możliwy punkt awarii. Wyższe liczby hopów zazwyczaj korelują z wolniejszym i mniej niezawodnym dekodowaniem. Klucze MAXHOP i RESHARE w twoim CCcam.cfg kontrolują, jak głęboko w te łańcuchy twoja skrzynka będzie wchodzić.

Czy powinienem analizować logi CCcam na żywo, czy po fakcie?

Obie, w różnych celach. Użyj tail -f z przekierowaniem przez grep, aby uchwycić przerywane zamrożenie w momencie, gdy się zdarza. Użyj zgrupowanej analizy po fakcie — średnich opartych na awk i zliczania uniq -c w obracanych logach obejmujących godziny lub dni — aby dostrzec wolniejsze trendy, takie jak peer, który ma problemy tylko w godzinach szczytu. Przechowywanie obracanych logów daje ci wielkość próbki, której analiza wzorców naprawdę potrzebuje.