Konfiguracja OScam Trial&Przewodnik konfiguracji 2026
Skonfigurowanie środowiska próbnegooscar trialto jedno z najbardziej praktycznych zadań, które wykonasz, jeśli testujesz infrastrukturę cardsharing'u przed wdrożeniem. Niezależnie od tego, czy walidujesz stabilność serwera, testujesz połączenia klientów, czy rotacje poświadczeń poprzez konta o ograniczonym dostępie, zrozumienie działania kart próbnych na poziomie protokołu ma znaczenie. Ten przewodnik przeprowadza przez faktyczną składnię konfiguracji, ścieżki plików i metody debugowania, które większość dokumentacji pomija.
Co to jest OScam Trial i jak to działa
oscar trialto mechanizm testowania wbudowany w OScam, który umożliwia tymczasowy dostęp do karty z określoną datą wygaśnięcia. Pomyśl o tym jako o poświadczeniu ograniczonym czasowo, które pozwala na walidację całego stosu—od konfiguracji serwera do logiki połączenia klienta—bez zaangażowania się w trwały dostęp do karty. Karty próbne podlegają tym samym zasadom protokołu co poświadczenia trwałe, ale zawierają znacznik czasu wygaśnięcia, który serwer wymusza automatycznie.System
oscar trialdziała na poziomie protokołu. Gdy klient z kartą próbną się łączy, serwer sprawdza znacznik czasu wygaśnięcia względem bieżącego czasu UNIX. Jeśli karta wygasła, serwer odrzuca uwierzytelnianie przed przetworzeniem jakichkolwiek żądań ECM. Dzieje się to podczas początkowego uścisku dłoni, a nie podczas przesyłania—więc nie marnujesz przepustowości na martwe poświadczenia.Karty próbne a dostęp na stałe
Karty próbne i dostęp na stałe różnią się wymuszaniem, ale nie metodą połączenia. Obaj używają tego samego portu, wersji protokołu (zwykle CAS, Newcamd lub mgcamd w zależności od ustawienia) i przepływu uwierzytelniania. Różnica jest czysto czasowa: karta próbna ma pole expiration_time ustawione w metadanych karty, podczas gdy karty trwałe albo nie mają wygaśnięcia, albo mają je ustawione dekady w przyszłość.
Niektóre konfiguracje implementują ograniczenie szybkości specjalnie dla kart próbnych. Nie jest to obowiązkowe w protokole—to wybór osoby, która obsługuje serwer. Karty próbne mogą trafić na limity żądań ECM przed kartami trwałymi lub mogą być depriorytetyzowane podczas dużego obciążenia. Warto to przetestować w piaskownicy przed założeniem, że karty próbne i trwałe zachowują się identycznie.
Mechanika okresu próbnego i wygaśnięcie
Okresy próbne są definiowane znacznikami czasu UNIX, a nie datami czytelnym dla człowieka. Próba 30-dniowa od 1 stycznia 2026 00:00:00 UTC wygasłaby o znaczniku czasu 1767225600 (31 stycznia 2026 00:00:00 UTC). Serwer przechowuje to jako liczbę całkowitą, porównuje ją z bieżącym czasem epoki przy każdej próbie połączenia i odrzuca każdą kartę, gdzie current_time > expiration_timestamp.
Sprawdzanie wygaśnięcia odbywa się w sposób ciągły, a nie tylko podczas początkowego logowania. Jeśli masz próbę 30-dniową, która wygasa w niedzielę, a klient pozostaje podłączony w niedzielę o północy UTC, serwer zrezygnuje z tego połączenia w środku żądania ECM po przekroczeniu progu znacznika czasu. Protokół nie wysyła powiadomienia „karta wygasła"—po prostu odrzuca następną ramkę uwierzytelniającą.
Różnice protokołów między kartą próbną a dostępem pełnym
Na warstwie protokołu karty próbne i trwałe są identyczne, dopóki nie trafisz na sprawdzenie wygaśnięcia. Obaj wysyłają ten sam uścisk dłoni uwierzytelniający, obaj parsują ECM/EMM identycznie, obaj obsługują te same zestawy szyfrów. Obsługa serwera różni się tylko logiką warunkową: jeśli sprawdzenie wygaśnięcia nie powiedzie się, zrezygnuj z połączenia.
Niektóre protokoły (określone implementacje Newcamd) zawierają informacje o wygaśnięciu w samej odpowiedzi uwierzytelniającej. To pozwala klientom wyświetlać „Twoja próba wygasa za X dni" bez konieczności obliczania znaczników czasu. Inne protokoły nie zapewniają świadomości wygaśnięcia po stronie klienta—klient wie tylko, że karta nie działa, gdy uwierzytelnianie się nie powiedzie.
Konfiguracja OScam do obsługi kart próbnych
Aby skonfigurować funkcjonalność
oscar trial, musisz zmodyfikować dwa pliki: oscam.conf (ustawienia globalne) i oscam.user (ustawienia dla każdej karty). Ścieżki różnią się w zależności od obrazu. Na OpenPli i większości kompilacji Enigma2 znajdują się w /etc/oscam/. W niektórych minimalnych instalacjach znajdują się w /config/oscam/. Sprawdź plik systemd service lub skrypt uruchamiający, aby potwierdzić.Uzyskaj rzeczywiste ścieżki, uruchamiając:
systemctl status oscamlubservice oscam status. Poszukaj linii ExecStart—pokaże katalog konfiguracji. Jeśli to nie zadziała, grep do procesu oscam:ps aux | grep oscami poszukaj flagi -c określającej ścieżkę konfiguracji.Parametry próbne oscam.conf
Plik oscam.conf musi jawnie włączać obsługę karty próbnej. Znajdź sekcję [general] lub [oscam] i dodaj te linie:
[general]
Krytyczna część dla prób: upewnij się, że sekcja newcamd (lub jakikolwiek używany protokół) jest obecna i port nasłuchuje. Wymuszanie próby następuje na poziomie użytkownika, a nie w samym oscam.conf. Nie ma ustawienia „trial_mode = on"—funkcjonalność próbna jest zawsze dostępna.Jeśli testujesz lokalnie przed wdrożeniem, utrzymuj debug = 127, aby widzieć każdą próbę uwierzytelniania w dziennikach. Jest to bezcenne do weryfikacji, że wygaśnięcie próby jest faktycznie sprawdzane. Zmień go na debug = 0 przed produkcją.
Ustawienia próbne pliku oscam.user
Tu następuje konfiguracja
oscar trial. Otwórz /etc/oscam/oscam.user i dodaj wpis karty próbnej:[testuser_trial]
Kluczowe pole toexpirydatetime. To jest znacznik czasu UNIX, kiedy karta przestaje działać. Zauważ, że nie ma parametru „trial_days=30"—musisz sam obliczyć znacznik czasu lub użyć skryptu.Reszta konfiguracji (pwd, group, au, caid, ident) działa identycznie dla kart próbnych i trwałych. Nie ograniczasz tutaj kanałów ani przepustowości. Jedyną różnicą jest znacznik czasu wygaśnięcia.
Ustawianie dat wygaśnięcia próby
Konwersja daty ludzkiej na znacznik czasu UNIX dla kart
oscar trial:Na Linuksie użyj polecenia date:
date -d "2026-02-28 00:00:00 UTC" +%s
Wyjście: 1747881600Lub jeśli chcesz obliczyć to programowo (30 dni od teraz):
python3 -c "import time; print(int(time.time()) + (30 * 86400))"
Formuła jest prosta: current_unix_time + (days * 86400) = expiration_timestamp. W dzień przypada 86400 sekund. To wszystko.Po dodaniu expirydatetime do oscam.user przeładuj OScam bez restartu:
systemctl reload oscam
Przeładowanie ponownie czyta plik użytkownika bez usuwania aktywnych połączeń. Restart wszystko zabija. Użyj przeładowania do aktualizacji użytkownika próbnego.Konfiguracja portów dla serwerów próbnych
Połączenia próbne domyślnie używają tych samych portów co trwałe. Jeśli uruchamiasz newcamd na porcie 12000, zarówno karty próbne, jak i trwałe łączą się tam. Nie ma oddzielnego portu próbnego, chyba że wyraźnie go utworzysz.
Jednak jeśli chcesz izolacji do testowania, uruchom dwie instancje oscam: jedną dla testów próbnych, jedną dla produkcji. Każda otrzymuje własny zakres portów i katalog konfiguracji. Przykład usługi systemd dla instancji próbnej:
[Unit]
Utwórz katalog konfiguracji /etc/oscam-trial/ z oddzielnymi plikami oscam.conf i oscam.user. Instancja próbna nasłuchuje na innym porcie newcamd (np. 12001), podczas gdy Twoja instancja produkcyjna pozostaje na 12000. To utrzymuje ruch testowy całkowicie odizolowany.Konfiguracja serwerów testowych próbnych
Przed wdrożeniem kart
oscar trialdo produkcji, zwaliduj całe ustawienie w środowisku testowym. Oznacza to utworzenie oddzielnej instancji OScam, która naśladuje konfigurację produkcyjną, ale działa na innych portach z izolowanym rejestrem.Tworzenie izolowanego środowiska próbnego
Zacznij od skopiowania produkcyjnego oscam.conf do katalogu próbnego:
sudo cp -r /etc/oscam /etc/oscam-trial
Edytuj /etc/oscam-trial/oscam.conf i zmień porty:[newcamd]
Utwórz plik użytkownika specyficzny dla próby tylko z testowymi kartami:sudo nano /etc/oscam-trial/oscam.user
Dodaj wpisy próbne z różnymi datami wygaśnięcia, aby móc testować różne scenariusze:[trial_expired]
Teraz uruchom instancję próbną:sudo /usr/bin/oscam -c /etc/oscam-trial/
Sprawdź, czy działa na prawidłowym porcie:netstat -an | grep 12001
Powinieneś zobaczyć:tcp 0 0 0.0.0.0:12001 0.0.0.0:* LISTENTestowanie wielu kart próbnych
Utwórz co najmniej trzy karty testowe dla
oscar trialwalidacji:Już wygasła
- — Znacznik czasu w przeszłości (np. 2025-12-31). To testuje, czy blokowanie wygaśnięcia działa.Wygasa wkrótce
- — 7 dni od teraz. To testuje przypadek brzegowy, gdzie karta wygasa podczas aktywnego testowania.Długi czas trwania
- — 90 dni od teraz. To Twoja główna karta testowa do pełnej walidacji.Połącz się z każdą z nich do instancji próbnej i zapisz wyniki. Wygasła karta powinna się nie powieść natychmiast podczas uwierzytelniania. Karta wygasająca wkrótce powinna działać, ale pozwala ci testować zachowanie ponownego połączenia w miarę zbliżania się wygaśnięcia. Długotrwała karta to Twoja pracowita karta do testowania ECM.
Monitorowanie aktywności karty próbnej
Obserwuj dzienniki instancji próbnej w czasie rzeczywistym:
tail -f /var/log/oscam-trial.log
Gdy Twój klient testowy łączy się z kartą próbną, zobaczysz ramki uwierzytelniające. Poszukaj linii takich jak:01/15 12:34:56 d34d8f91 [newcamd] login ok (trial_30days)
Gdy karta próbna wygasła, zobaczysz:01/15 12:35:00 d34d8f92 [newcamd] card expired (trial_expired)
Analizuj dzienniki w poszukiwaniu aktywności specyficznej dla próby:grep -i "trial\|expir" /var/log/oscam-trial.log | tail -20
To filtruje, aby pokazać tylko linie wspominające próby lub wygaśnięcie, ułatwiając dostrzeganie problemów w pełnych dziennikach.Analiza dziennika próby i debugowanie
Dzienniki OScam są gęste. Skoncentruj się na tych wzorcach dla
oscar trialwalidacji:Udane logowanie próbne:
login ok (username) - następnie żądania ECM
Wygasła karta próbna:card expired LUB authentication failed - żaden ECM nie następuje
Niezgodność protokołu:protocol version mismatch LUB unsupported protocol
Ograniczenie szybkości na próbie:ECM requests too frequent LUB quota exceeded
Tymczasowo włącz wyższe poziomy debugowania, aby zobaczyć więcej szczegółów. W oscam.conf ustaw debug = 255 (maksymalna gadatliwość), ponownie się połącz, a następnie natychmiast ją przywróć do debug = 0 lub 127. Debug = 255 bardzo szybko wypełnia dzienniki.Wyeksportuj dzienniki próby po każdej sesji testowej:
cp /var/log/oscam-trial.log ~/logs/trial-test-$(date +%Y%m%d-%H%M%S).log
To archiwum pozwala porównać zachowanie między wieloma próbami i zidentyfikować wzorce.Rozwiązywanie typowych problemów OScam Trial
Problemy z kartą próbną dzielą się na kilka wzorów. Przejdź przez nich systematycznie.
Karty próbne łączą się, ale nie dekodują
Karta się uwierzytelnia, ale żądania ECM się nie powiodą lub nie zwracają CW. Najpierw sprawdź, czy karta nie wygasła:
python3
<<'EOF'Jeśli karta jest ważna, sprawdź trzy rzeczy:1. CAIDs i idents pasują do tego, o co prosi klient.
Jeśli oscam.user mówicaid = 0100,0500ale próbujesz odszyfrować kanał 0604, to się nie powiedzie. Sprawdź, czy lista CAID karty obejmuje kanały, które testujesz.2. Serwer faktycznie ma CW do zwrócenia.
Karta próbna może się uwierzytelnić dobrze, ale jeśli nie skonfigurowano żadnego źródła CW (inny serwer, lokalny czytnik kart itp.), żądania ECM się timeout'ują. Sprawdź oscam.servers, aby upewnić się, że masz co najmniej jednego dostawcę CW.3. Wersja protokołu klienta pasuje do serwera.
Jeśli używasz starego klienta (np. Newcamd 5.0), ale serwer wymaga protokołu 5.1, uwierzytelnianie może się powiść ze starszym uściskiem dłoni, ale parsowanie ECM nie powiedzie się. Linie dziennika powinny pokazać wynegocjowaną wersję protokołu.Jeśli wszystkie trzy się sprawdzają, zwiększ debug i uruchom jedno żądanie ECM:
tail -f /var/log/oscam-trial.log
&Data wygaśnięcia nie jest wymuszanaTwoja karta próbna powinna wygasnąć w określonej dacie, ale ciągle działa. Przyczyną jest prawie zawsze problem z formatem znacznika czasu.Sprawdź wpis oscam.user:
grep -A 5 "testuser_trial" /etc/oscam/oscam.user
Zweryfikuj, że expirydatetime jest ustawiony (nie brakujący i nie skomentowany). Następnie zweryfikuj sam znacznik czasu:
date -d @1747881600# Wyjście powinno pokazać oczekiwaną datę i godzinę
Jeśli data jest zła, użyłeś złego znacznika czasu. Przelicz:date -d "2026-02-28 23:59:59 UTC" +%sJeśli znacznik czasu jest prawidłowy, ale karta nadal się nie wygasa, przeładowanie może nie weszło w życie. Wymuś pełny restart:
systemctl stop oscamSprawdź, że nowa konfiguracja została załadowana:
grep "expirydatetime" /etc/oscam/oscam.userJeszcze jeden przypadek brzegowy: strefa czasowa. Jeśli ustawiłeś expirydatetime na 1747881600 myśląc, że to Twój czas lokalny, ale serwer działa w UTC, wygaśnięcie jest poza godzinami. Zawsze używaj wyraźnie znaczników czasu UTC:
date -d "2026-02-28 00:00:00 UTC" +%sDostęp próbny rozłącza się w środku sesji
Karta działa przez 10 minut, a następnie nagle się rozłącza. Zwykle oznacza to, że okres próbny zakończył się, podczas gdy klient był podłączony.Sprawdź dokładny moment rozłączenia w dziennikach:
grep "trial_30days\|connection closed\|client disconnect" /var/log/oscam.log | tail -20
Zanotuj znacznik czasu. Jeśli pasuje do daty wygaśnięcia próby, to Twoja odpowiedź. Serwer sprawdzał wygaśnięcie i rezygnował z połączenia po przekroczeniu znacznika czasu.
Jeśli rozłączenie następuje w losowym momencie (nie wygaśnięcie), to inny problem:Timeout sieci:
Sprawdź oscam.conf dla
- socket_timeout. Domyślnie 5 sekund. Jeśli żądania ECM są powolne, zwiększ do 15 lub 30.
Ograniczenie szybkości:Karty próbne mogą trafić na limity żądań. Poszukaj "quota exceeded" w dziennikach. - Awaria serwera:Sprawdź, czy oscam się nie zawiesiła i nie uruchomiła ponownie. Poszukaj linii uruchamiania w dzienniku.
- Timeout portu na połączeniach próbnychKlient w ogóle nie może dotrzeć do serwera próbnego. Najpierw przetestuj łączność portów:
nc -zv 192.168.1.100 12000
Jeśli odrzucone, sprawdź, czy oscam nasłuchuje:
netstat -an | grep 12000Jeśli nic się nie pokazuje, oscam nie działa lub nie nasłuchuje na tym porcie. Sprawdź numer portu w oscam.conf i uruchom ponownie:
systemctl restart oscamJeśli port jest otwarty, ale połączenie timeout'uje (nie odrzucane), to problem z firewallem. Sprawdź iptables:
sudo iptables -L -n | grep 12000Dodaj regułę, jeśli to konieczne:
sudo iptables -A INPUT -p tcp --dport 12000 -j ACCEPTJeśli testujesz zdalnie i nadal otrzymujesz timeout'y, sprawdź listę dozwolonych adresów w oscam.conf:
[newcamd]IP twojego klienta musi mieścić się w jednym z dozwolonych zakresów. Jeśli jest to połączenie WAN, dodaj je wyraźnie lub użyj VPN.
Mieszanie kart próbnych i trwałych na tym samym serwerzeUruchamianie zarówno kart próbnych, jak i trwałych na jednej instancji OScam jest w porządku, ale obserwuj dwa problemy:
Problem 1: Różnice wersji protokołu.
Jeśli wszystkie karty trwałe to protokół 5.1, ale dodasz kartę próbną ze starego źródła (protokół 5.0), klient może potrzebować przełączenia wersji w środku sesji. To powoduje krótkie rozłączenia. Przetestuj kompatybilność protokołu kart próbnych przed wdrożeniem.
Problem 2: Konflikty priorytetu CW.Jeśli masz wiele serwerów skonfigurowanych w oscam.servers, a niektóre obsługują karty próbne, a inne karty trwałe, żądania mogą być kierowane do złego źródła. Karta próbna żądająca CW z serwera, który obsługuje tylko karty trwałe, timeout'uje.
Rozwiązanie: Użyj oddzielnych definicji grup w oscam.user:[trial_card]
Następnie w oscam.servers zdefiniuj, które źródła obsługują które grupy. To zapewnia, że karty próbne nie zatkają źródeł tylko dla kart trwałych.
Czas trwania karty próbnej i zarządzanie odnawianiemZarządzanie
oscar trial
czasem życia karty w dużej skali wymaga automatyzacji. Ręczne aktualizacje działają dla 2-3 kart, ale się psują szybko.Obliczanie wygaśnięcia próbyFormuła to zawsze: current_unix_timestamp + (days * 86400) = expiration_timestamp
Szybka linijka Python dla dowolnego czasu trwania próby:
python3 -c "import time; days=30; print(int(time.time()) + (days * 86400))"
Lub jako funkcja dla skryptu:
#!/bin/bashUżycie:
./calc_expiry.sh 30Użyj tego w aktualizacjach oscam.user:
expirydatetime = $(./calc_expiry.sh 30)Przedłużanie okresów próbnych programowo
Skrypt do odnowienia daty wygaśnięcia karty próbnej przez dodanie dni do bieżącego znacznika czasu:#!/bin/bash
Uruchom to:
./renew_trial.sh trial_30days 30Run it:
./renew_trial.sh trial_30days 30
# Output:
# Renewed trial_30days: expires at Sun Feb 23 10:20:00 UTC 2026
# Config reloadedMonitoring Expiring Cards
Create a monitoring script that alerts you before trial cards expire:
#!/bin/bash
# check_expiring_trials.sh - Alert on cards expiring in 7 days
oscam_user="/etc/oscam/oscam.user"
alert_days=7
alert_seconds=$((alert_days * 86400))
current_time=$(date +%s)
echo "Checking for trials expiring in next $alert_days days..."
grep "^\[" "$oscam_user" | sed 's/\[//;s/\]//' | while read username; do expiry=$(grep -A 10 "^\[$username\]" "$oscam_user" | grep "expirydatetime" | awk '{print $3}') if [ -z "$expiry" ]; then continue fi time_until=$((expiry - current_time)) if [ $time_until -lt $alert_seconds ] && [ $time_until -gt 0 ]; then days_left=$((time_until / 86400)) echo "WARNING: $username expires in $days_left days ($(date -d @$expiry))" elif [ $time_until -le 0 ]; then echo "ERROR: $username is EXPIRED" fi
doneRun it as a cron job daily:
0 9 * * * /root/check_expiring_trials.sh >> /var/log/trial_check.log 2>&1This runs every morning at 9 AM and logs any expiring or expired trial cards.
Automated Trial Rotation Scripts
For production environments with many trial cards, automate the rotation. This script cycles through a list of trial users and extends their expiration dates:
#!/bin/bash
# auto_rotate_trials.sh - Extend all trial users by 30 days
oscam_user="/etc/oscam/oscam.user"
extend_days=30
new_expiry=$(($(date +%s) + ($extend_days * 86400)))
# Get all trial users (assuming they're named trial_*)
grep "^\[trial_" "$oscam_user" | sed 's/\[//;s/\]//' | while read username; do sed -i "/\[$username\]/,/^$/{s/expirydatetime = .*/expirydatetime = $new_expiry/}" "$oscam_user" echo "Extended: $username (new expiry: $(date -d @$new_expiry '+%Y-%m-%d'))"
done
systemctl reload oscam
echo "All trial cards rotated and oscam reloaded at $(date)"Schedule it monthly:
0 0 1 * * /root/auto_rotate_trials.sh >> /var/log/trial_rotation.log 2>&1First of every month, all trial cards get a fresh 30-day window. This keeps your testing sandbox evergreen.
For per-card rotation (different expiry dates for different cards), use a CSV input:
cat > /root/trial_schedule.csv << 'EOF'
username,days_until_expiry
trial_qa_1,30
trial_qa_2,14
trial_staging,90
EOF
while IFS=',' read username days; do new_expiry=$(($(date +%s) + ($days * 86400))) sed -i "/\[$username\]/,/^$/{s/expirydatetime = .*/expirydatetime = $new_expiry/}" "$oscam_user"
done < /root/trial_schedule.csv
systemctl reload oscamThis lets you stagger expirations so you're not managing all trials at once.
FAQ
Can I run a trial server on the same machine as my permanent OScam instance?
Yes, but you need to isolate them properly. Run two separate oscam processes, each with its own config directory (/etc/oscam/ and /etc/oscam-trial/), listening on different ports (12000 and 12001). Create separate systemd services so they restart independently. If trial testing crashes, it won't take down production. Isolation also prevents port conflicts and keeps logs separate. The trade-off is slightly higher CPU and memory usage—negligible on modern hardware. Ensure file permissions are set correctly: chown -R oscam:oscam /etc/oscam-trial/ so the trial process can read its config without privilege issues.
What's the difference between oscam.conf trial settings and oscam.user trial parameters?
oscam.conf contains global protocol settings and port configuration. oscam.user contains per-card credentials and expiration dates. There's no "trial mode" flag in oscam.conf—trial functionality is always enabled. All the trial-specific behavior lives in oscam.user's expirydatetime field. If a card has an expirydatetime set, it's a trial card. If it's missing or set to a far-future date, it's permanent access. The precedence rule is simple: oscam.conf defines how connections work (ports, protocols, debug levels), oscam.user defines who can connect and for how long. You can't enable or disable trials globally in oscam.conf—you control trials purely by setting expiration timestamps per user.
How do I enforce trial expiration without manually kicking users?
OScam checks expiration automatically on every authentication attempt. When a client connects, the server compares the card's expirydatetime against the current UNIX timestamp. If current_time > expirydatetime, the server rejects authentication before any ECM is processed. This happens without manual intervention. The check runs continuously, not just at initial login. If a card expires while a client is actively decoding, the next ECM request after the expiration timestamp triggers the rejection and the connection drops. You don't need to do anything—the protocol enforces it. To verify expiration checking is working, watch the logs: grep -i "expir" /var/log/oscam.log and trigger authentication after the expiration date passes. You should see "card expired" or "authentication failed" messages.
Why do trial cards sometimes skip ECM requests or decode intermittently?
Three common causes: (1) Rate limiting—servers often restrict ECM request frequency for trial cards more aggressively than permanent ones. If you're sending requests faster than the server allows, some get dropped. Check oscam.conf for request rate limits and increase them for testing. (2) Load balancing—if you have multiple CW sources, some might be configured to prioritize permanent cards. ECM requests from trial cards might queue longer or timeout. (3) Protocol prioritization—certain protocol implementations deprioritize trial frames. This isn't a bug; it's intentional. Trial cards might not have the same bandwidth guarantees as permanent ones. The fix is usually to reduce load during testing, use a dedicated trial-only CW source, or adjust rate limiting in oscam.conf: increase socket_timeout from 5 to 15+ seconds to give requests more time to complete.
What's the proper way to migrate trial users to permanent access without disconnecting them?
Edit oscam.user to change the trial user's expirydatetime to a far-future value (e.g., 2050). Then reload (not restart) the config: systemctl reload oscam. The reload re-reads oscam.user while keeping active connections alive. The upgraded user won't see any disconnection. You can also create a new permanent user and have the client switch credentials at the next scheduled reconnect, but reload-based upgrade is cleaner. Test this on a dummy trial card first to ensure you're not disconnecting real users. If something goes wrong, reload again with the old settings and the trial card reverts. Do NOT use systemctl restart oscam during this—that kills all active connections and forces clients to reconnect from scratch, defeating the purpose of seamless migration. After reload, wait a few seconds and check logs to confirm the user's status updated: grep "username" /var/log/oscam.log | tail -5.
Can I monitor which trial cards are actually being used vs abandoned?
Yes. Parse oscam.log for the last authentication timestamp of each trial user. A card that hasn't logged in for 30 days is abandoned. Example grep:
grep "trial_" /var/log/oscam.log | grep "login ok" | tail -1
# Output: 01/20 14:32:10 d34d8f91 [newcamd] login ok (trial_30days)That timestamp shows the most recent successful login for trial_30days. If it's old, the card is unused. Build a script to extract and compare:
#!/bin/bash
for card in $(grep "^\[trial_" /etc/oscam/oscam.user | sed 's/\[//;s/\]//' ); do last_login=$(grep "$card" /var/log/oscam.log | grep "login ok" | tail -1 | awk '{print $1, $2}') if [ -z "$last_login" ]; then echo "$card: NEVER USED" else echo "$card: Last login at $last_login" fi
doneIf you're using oscam's built-in stats database, query it directly (oscam saves stats to /var/log/ or a database depending on config). Check activity in the monitor interface (port 988 by default, accessible via telnet) for real-time connection counts. Cards with zero connection history are abandoned.