OScam Trial Setup&Konfigurationsleitfaden 2026
Das Einrichten eineroscar trialUmgebung ist eine der praktischsten Aufgaben, die Sie bewältigen werden, wenn Sie die Cardsharing-Infrastruktur vor dem Live-Betrieb testen. Egal ob Sie die Serverstabilität validieren, Client-Verbindungen testen oder Anmeldedaten durch Konten mit begrenztem Zugriff rotieren – das Verständnis der Funktionsweise von Trial-Karten auf Protokollebene ist wichtig. Dieser Leitfaden führt Sie durch die tatsächliche Konfigurationssyntax, Dateipfade und Debugging-Methoden, die in der meisten Dokumentation übersprungen werden.
Was ist OScam Trial und wie funktioniert es
Einoscar trialist ein in OScam integrierter Testmechanismus, der temporären Kartenzugriff mit einem definierten Ablaufdatum ermöglicht. Stellen Sie sich das als zeitlich begrenzte Berechtigung vor, mit der Sie Ihren gesamten Stack – vom Server-Config bis zur Client-Verbindungslogik – validieren können, ohne sich auf permanenten Kartenzugriff festzulegen. Trial-Karten folgen den gleichen Protokollregeln wie permanente Anmeldedaten, enthalten jedoch einen Ablaufzeitstempel, den der Server automatisch erzwingt.
Dasoscar trialSystem funktioniert auf Protokollebene. Wenn sich ein Client mit einer Trial-Karte verbindet, überprüft der Server den Ablaufzeitstempel gegen die aktuelle UNIX-Zeit. Wenn die Karte abgelaufen ist, lehnt der Server die Authentifizierung ab, bevor ECM-Anfragen verarbeitet werden. Dies geschieht während des initialen Handshakes, nicht während des Streamings – Sie verschwenden also keine Bandbreite mit ungültigen Anmeldedaten.
Trial vs. Permanenter Kartenzugriff
Trial-Karten und Permanentberechtigung unterscheiden sich in der Durchsetzung, nicht in der Verbindungsmethode. Beide nutzen denselben Port, die gleiche Protokollversion (normalerweise CAS, Newcamd oder mgcamd je nach Setup) und den gleichen Authentifizierungsablauf. Der Unterschied ist rein zeitstempelbasiert: Eine Trial-Karte hat ein in den Kartenvorgaben eingestelltes Feld expiration_time, während Permanentkarten entweder keine Ablaufzeit haben oder diese auf ein Jahrzehnt in der Zukunft eingestellt ist.
Einige Setups implementieren Rate-Limiting speziell für Trial-Karten. Das ist nicht zwingend im Protokoll – es ist eine Wahl des Server-Betreibers. Trial-Karten könnten ECM-Request-Limits vor permanenten erreichen oder bei hoher Last priorisiert werden. Das ist es wert, vor der Annahme in Ihrer Sandbox zu testen, dass Trial- und Permanentkarten identisch funktionieren.
Trial-Gültigkeitsdauer und Ablaufdatum
Trial-Zeiträume werden in UNIX-Zeitstempeln definiert, nicht in lesbaren Daten. Ein 30-Tage-Trial ab 1. Januar 2026 00:00:00 UTC würde bei Zeitstempel 1767225600 ablaufen (31. Januar 2026 00:00:00 UTC). Der Server speichert das als Ganzzahl, vergleicht es bei jedem Verbindungsversuch mit der aktuellen Epochenzeit und lehnt jede Karte ab, bei der current_time > expiration_timestamp.
Die Ablaufüberprüfung erfolgt kontinuierlich, nicht nur beim initialen Login. Wenn Sie einen 30-Tage-Trial haben, der am Sonntag abläuft, und ein Client bleibt über die Sonntagnacht UTC verbunden, verwirft der Server diese Verbindung mitten in einer ECM-Anfrage, sobald die Zeitschwelle überschritten wird. Das Protokoll sendet keine Benachrichtigung „Karte abgelaufen" – es lehnt einfach den nächsten Authentifizierungsrahmen ab.
Protokollunterschiede zwischen Trial und Vollzugriff
Auf der Protokollebene sind Trial-Karten und permanente bis zur Ablaufüberprüfung identisch. Beide senden den gleichen Authentifizierungs-Handshake, beide analysieren ECM/EMM identisch, beide unterstützen die gleichen Cipher-Suites. Die Serverbehandlung unterscheidet sich nur in der bedingten Logik: Wenn die Ablaufüberprüfung fehlschlägt, wird die Verbindung getrennt.
Einige Protokolle (bestimmte Newcamd-Implementierungen) enthalten Ablaufinformationen in der Authentifizierungsantwort selbst. Dies ermöglicht es Clients, „Ihr Trial läuft in X Tagen ab" anzuzeigen, ohne Zeitstempel berechnen zu müssen. Andere Protokolle bieten keine clientseitige Ablaufkenntnis – der Client weiß nur, dass die Karte tot ist, wenn die Authentifizierung fehlschlägt.
OScam für Trial-Card-Unterstützung konfigurieren
Zum Einrichten deroscar trialFunktionalität müssen Sie zwei Dateien ändern: oscam.conf (globale Einstellungen) und oscam.user (Pro-Karten-Einstellungen). Die Pfade variieren je nach Image. In OpenPli und den meisten Enigma2-Builds befinden sich diese in /etc/oscam/. Bei einigen Minimal-Installationen befinden sich diese in /config/oscam/. Überprüfen Sie Ihre systemd-Service-Datei oder Start-Skript, um sicherzustellen.
Rufen Sie die tatsächlichen Pfade ab, indem Sie Folgendes ausführen:systemctl status oscamoderservice oscam status. Suchen Sie nach der Zeile ExecStart – sie zeigt das Config-Verzeichnis. Wenn das nicht funktioniert, grep für den oscam-Prozess:ps aux | grep oscamund suchen Sie nach einem -c-Flag, das den Config-Pfad angibt.
oscam.conf Trial-Parameter
Ihre oscam.conf-Datei muss die Trial-Card-Unterstützung explizit aktivieren. Suchen Sie den Abschnitt [general] oder [oscam] und fügen Sie diese Zeilen hinzu:
[general]Der kritische Teil für Trials: Stellen Sie sicher, dass der newcamd-Abschnitt (oder welches Protokoll Sie auch verwenden) vorhanden ist und der Port abhört. Trial-Erzwingung erfolgt auf Benutzerebene, nicht in oscam.conf selbst. Es gibt keine „trial_mode = on"-Einstellung – Trial-Funktionalität ist immer verfügbar.
Wenn Sie lokal testen, bevor Sie bereitstellen, behalten Sie debug = 127, damit Sie jeden Authentifizierungsversuch in den Logs sehen. Dies ist wertvoll für die Überprüfung, dass die Trial-Ablaufüberprüfung tatsächlich durchgeführt wird. Ändern Sie es vor der Produktion auf debug = 0.
oscam.user Trial-Einstellungen
Hier erfolgt dieoscar trialKonfiguration. Öffnen Sie /etc/oscam/oscam.user und fügen Sie einen Trial-Card-Eintrag hinzu:
[testuser_trial]Das Schlüsselfeld istexpirydatetime. Dies ist der UNIX-Zeitstempel, wenn die Karte aufhört zu funktionieren. Beachten Sie, dass es keinen Parameter „trial_days=30" gibt – Sie müssen den Zeitstempel selbst berechnen oder ein Skript verwenden.
Der Rest der Konfiguration (pwd, group, au, caid, ident) funktioniert identisch für Trial- und Permanentkarten. Sie beschränken hier nicht Kanäle oder Bandbreite. Der einzige Unterschied ist der Ablaufzeitstempel.
Trial-Ablauffälle festlegen
Umwandlung eines Menschendatums in UNIX-Zeitstempel für Ihreoscar trialKarten:
Unter Linux verwenden Sie den date-Befehl:
date -d "2026-02-28 00:00:00 UTC" +%sAusgabe: 1747881600
Oder wenn Sie es programmgesteuert berechnen müssen (30 Tage ab jetzt):
python3 -c "import time; print(int(time.time()) + (30 * 86400))"Die Formel ist einfach: current_unix_time + (days * 86400) = expiration_timestamp. Es gibt 86400 Sekunden in einem Tag. Das war's.
Wenn Sie das expirydatetime zu oscam.user hinzufügen, laden Sie OScam neu, ohne neu zu starten:
systemctl reload oscamEin Reload liest die Benutzerdatei neu, ohne aktive Verbindungen zu unterbrechen. Ein Neustart bricht alles ab. Verwenden Sie Reload für Trial-Benutzeraktualisierungen.
Port-Konfiguration für Trial-Server
Trial-Verbindungen verwenden standardmäßig die gleichen Ports wie permanente. Wenn Sie newcamd auf Port 12000 ausführen, verbinden sich sowohl Trial- als auch Permanentkarten dort. Es gibt keinen separaten Trial-Port, es sei denn, Sie erstellen einen explizit.
Wenn Sie jedoch Isolation zum Testen wünschen, führen Sie zwei oscam-Instanzen aus: eine zum Trial-Testen, eine für die Produktion. Jede hat ihren eigenen Port-Bereich und ein eigenes Config-Verzeichnis. Beispiel systemd-Service für eine Trial-Instanz:
[Unit]Erstellen Sie das Config-Verzeichnis /etc/oscam-trial/ mit separaten oscam.conf- und oscam.user-Dateien. Die Trial-Instanz abhört auf einem anderen newcamd-Port (z.B. 12001), während Ihre Produktionsinstanz auf 12000 bleibt. Dies hält Test-Traffic völlig isoliert.
Einrichten von Trial-Test-Servern
Bevor Sieoscar trialKarten in der Produktion bereitstellen, validieren Sie Ihr gesamtes Setup in einer Test-Umgebung. Das bedeutet, eine separate OScam-Instanz zu erstellen, die Ihre Produktions-Config nachahmt, aber auf verschiedenen Ports mit isoliertem Logging läuft.
Isolierte Trial-Umgebung erstellen
Beginnen Sie, indem Sie Ihre Produktions-oscam.conf in ein Trial-Verzeichnis kopieren:
sudo cp -r /etc/oscam /etc/oscam-trialBearbeiten Sie /etc/oscam-trial/oscam.conf und ändern Sie die Ports:
[newcamd]Erstellen Sie eine Trial-spezifische Benutzerdatei mit nur Test-Karten:
sudo nano /etc/oscam-trial/oscam.userFügen Sie Trial-Einträge mit unterschiedlichen Ablauffächern hinzu, damit Sie verschiedene Szenarien testen können:
[trial_expired]Jetzt starten Sie die Trial-Instanz:
sudo /usr/bin/oscam -c /etc/oscam-trial/Stellen Sie sicher, dass es auf dem richtigen Port läuft:
netstat -an | grep 12001Sie sollten sehen:tcp 0 0 0.0.0.0:12001 0.0.0.0:* LISTEN
Multiple Trial-Card-Tests
Erstellen Sie mindestens drei Test-Karten für Ihreoscar trialValidierung:
- Bereits abgelaufen— Zeitstempel in der Vergangenheit (z.B. 2025-12-31). Dies testet, dass die Ablaufblockierung funktioniert.
- Läuft bald ab— 7 Tage ab jetzt. Dies testet den Edge-Case, bei dem eine Karte während des aktiven Testens abläuft.
- Lange Dauer— 90 Tage ab jetzt. Das ist Ihre primäre Test-Karte für vollständige Validierung.
Verbinden Sie jede mit Ihrer Trial-Instanz und zeichnen Sie die Ergebnisse auf. Die abgelaufene Karte sollte sofort während der Authentifizierung fehlschlagen. Die bald ablaufende Karte sollte funktionieren, aber Sie können Wiederverbindungsverhalten testen, wenn sich die Ablaufzeit nähert. Die langzeitige Karte ist Ihr Arbeitstier für ECM-Tests.
Überwachung der Trial-Card-Aktivität
Beobachten Sie die Trial-Instanz-Logs in Echtzeit:
tail -f /var/log/oscam-trial.logWenn sich Ihr Test-Client mit einer Trial-Karte verbindet, sehen Sie Authentifizierungsrahmen. Suchen Sie nach Zeilen wie:
01/15 12:34:56 d34d8f91 [newcamd] login ok (trial_30days)Wenn die Trial-Karte abgelaufen ist, sehen Sie:
01/15 12:35:00 d34d8f92 [newcamd] card expired (trial_expired)Parsen Sie Logs für Trial-spezifische Aktivität:
grep -i "trial\|expir" /var/log/oscam-trial.log | tail -20Dies filtert, um nur Zeilen anzuzeigen, die Trials oder Ablauftermine erwähnen, was es einfacher macht, Probleme in ausführlichen Logs zu erkennen.
Trial-Log-Analyse und Debugging
OScam-Logs sind dicht. Konzentrieren Sie sich auf diese Muster füroscar trialValidierung:
Erfolgreicher Trial-Login:
login ok (username) - gefolgt von ECM-AnfragenAbgelaufene Trial-Karte:
card expired ODER authentication failed - kein ECM folgtProtokoll-Nichtübereinstimmung:
protocol version mismatch ODER unsupported protocolRate-Limiting bei Trial:
ECM requests too frequent ODER quota exceededAktivieren Sie vorübergehend höhere Debug-Level, um mehr Details zu sehen. In oscam.conf, set debug = 255 (maximale Ausführlichkeit), neu verbinden, dann sofort auf debug = 0 oder 127 zurücksetzen. Debug = 255 füllt Logs sehr schnell.
Exportieren Sie Ihre Trial-Logs nach jeder Test-Sitzung:
cp /var/log/oscam-trial.log ~/logs/trial-test-$(date +%Y%m%d-%H%M%S).logDieses Archiv ermöglicht Ihnen, das Verhalten über mehrere Trials hinweg zu vergleichen und Muster zu identifizieren.
Fehlerbehebung bei häufigen OScam Trial-Problemen
Trial-Card-Probleme fallen in ein paar Muster. Arbeiten Sie sich systematisch durch sie hindurch.
Trial-Karten verbinden sich, dekodieren aber nicht
Die Karte authentifiziert sich, aber ECM-Anfragen schlagen fehl oder geben keine CW zurück. Überprüfen Sie zunächst, ob die Karte nicht tatsächlich abgelaufen ist:
python3<<'EOF'Wenn die Karte gültig ist, überprüfen Sie drei Dinge:
1. CAIDs und Idents stimmen mit dem überein, was der Client anfordert.Wenn Ihre oscam.user sagtcaid = 0100,0500aber Sie versuchen, einen 0604-Kanal zu dekodieren, schlägt es fehl. Überprüfen Sie, ob die CAID-Liste Ihrer Karte die Kanäle abdeckt, die Sie testen.
2. Der Server hat tatsächlich CWs zum Zurückgeben.Eine Trial-Karte könnte sich gut authentifizieren, aber wenn keine CW-Quelle (ein anderer Server, lokaler Card-Reader, etc.) konfiguriert ist, Zeitüberschreitung bei ECM-Anfragen. Überprüfen Sie oscam.servers, um sicherzustellen, dass Sie mindestens einen CW-Anbieter haben.
3. Die Protokollversion des Clients passt zu der des Servers.Wenn Sie einen alten Client verwenden (z.B. Newcamd 5.0), aber der Server Protokoll 5.1 benötigt, könnte die Authentifizierung mit einem Legacy-Handshake erfolgreich sein, aber ECM-Parsing schlägt fehl. Log-Zeilen sollten die ausgehandelte Protokollversion anzeigen.
Wenn alle drei passen, erhöhen Sie das Debug und führen Sie eine einzelne ECM-Anfrage aus:
tail -f /var/log/oscam-trial.log&(Leere Zeile)Ablaufdatum wird nicht erzwungen
Ihre Trial-Karte sollte an einem bestimmten Datum ablaufen, aber sie funktioniert weiterhin. Die Ursache ist fast immer ein Zeitstempelformat-Problem.
Überprüfen Sie Ihren oscam.user-Eintrag:
grep -A 5 "testuser_trial" /etc/oscam/oscam.userÜberprüfen Sie, ob expirydatetime gesetzt ist (nicht fehlend oder kommentiert). Überprüfen Sie dann den Zeitstempel selbst:
date -d @1747881600# Output sollte das erwartete Datum und die Uhrzeit anzeigenWenn das Datum falsch ist, haben Sie den falschen Zeitstempel verwendet. Neu berechnen:
date -d "2026-02-28 23:59:59 UTC" +%sWenn der Zeitstempel korrekt ist, aber die Karte immer noch nicht abläuft, könnte das Reload nicht in Kraft getreten sein. Erzwingen Sie einen vollständigen Neustart:
systemctl stop oscamÜberprüfen Sie, dass die neue Config geladen wurde:
grep "expirydatetime" /etc/oscam/oscam.userEin weiterer Edge-Case: Zeitzone. Wenn Sie expirydatetime auf 1747881600 setzen und denken, dass es Ihre lokale Zeit ist, aber der Server in UTC läuft, ist das Ablaufdatum um Stunden versetzt. Verwenden Sie immer UTC-Zeitstempel explizit:
date -d "2026-02-28 00:00:00 UTC" +%sTrial-Zugriff bricht während einer Sitzung ab
Die Karte funktioniert 10 Minuten lang, dann wird sie plötzlich getrennt. Das bedeutet normalerweise, dass der Trial-Zeitraum endet, während der Client verbunden war.
Überprüfen Sie den genauen Moment der Trennung in den Logs:
grep "trial_30days\|connection closed\|client disconnect" /var/log/oscam.log | tail -20Beachten Sie die Zeit. Wenn sie mit Ihrem Trial-Ablaufdatum übereinstimmt, haben Sie Ihre Antwort. Der Server überprüfte das Ablaufdatum und trennte die Verbindung, sobald der Zeitstempel überschritten wurde.
Wenn die Trennung zu einer zufälligen Zeit erfolgt (nicht Ablauf), ist es ein anderes Problem:
- Netzwerk-Timeout:Überprüfen Sie oscam.conf auf
socket_timeout. Standard ist 5 Sekunden. Wenn ECM-Anfragen langsam sind, erhöhen Sie ihn auf 15 oder 30. - Rate-Limiting:Trial-Karten könnten Request-Limits treffen. Suchen Sie nach „quota exceeded" in den Logs.
- Server-Crash:Überprüfen Sie, ob oscam abgestürzt ist und neu gestartet wurde. Suchen Sie nach Start-Zeilen im Log.
Port-Timeout bei Trial-Verbindungen
Client kann den Trial-Server überhaupt nicht erreichen. Testen Sie zuerst die Port-Konnektivität:
nc -zv 192.168.1.100 12000Wenn abgelehnt, überprüfen Sie, ob oscam abhört:
netstat -an | grep 12000Wenn nichts angezeigt wird, läuft oscam nicht oder hört nicht auf diesem Port ab. Überprüfen Sie oscam.conf auf die richtige Portnummer und starten Sie neu:
systemctl restart oscamWenn der Port offen ist, aber die Verbindung zeitlich abläuft (nicht abgelehnt), ist es ein Firewall-Problem. Überprüfen Sie iptables:
sudo iptables -L -n | grep 12000Fügen Sie bei Bedarf eine Regel hinzu:
sudo iptables -A INPUT -p tcp --dport 12000 -j ACCEPTWenn Sie aus der Ferne testen und immer noch Timeouts bekommen, überprüfen Sie Ihre oscam.conf allowed-Liste:
[newcamd]Die IP-Adresse Ihres Clients muss in einen der erlaubten Bereiche fallen. Wenn es sich um eine WAN-Verbindung handelt, fügen Sie sie explizit hinzu oder verwenden Sie ein VPN.
Mischung von Trial- und Permanentkarten auf demselben Server
Das Ausführen von Trial- und Permanentkarten auf einer einzelnen OScam-Instanz ist in Ordnung, aber achten Sie auf zwei Probleme:
Problem 1: Protokollversion-Unterschiede.Wenn Ihre Permanentkarten alle Protokoll 5.1 sind, aber Sie eine Trial-Karte aus einer Legacy-Quelle (Protokoll 5.0) hinzufügen, könnte der Client während einer Sitzung die Versionen wechseln müssen. Dies verursacht kurze Unterbrechungen. Testen Sie die Protokollkompatibilität Ihrer Trial-Karten, bevor Sie sie bereitstellen.
Problem 2: CW-Prioritätskonflikte.Wenn Sie mehrere Server in oscam.servers konfiguriert haben und einige Trial-Karten servieren, während andere Permanentkarten servieren, könnten Anfragen zur falschen Quelle weitergeleitet werden. Eine Trial-Karte, die eine CW von einem Server anfordert, der nur Permanentkarten behandelt, läuft zeitlich ab.
Lösung: Verwenden Sie separate Group-Definitionen in oscam.user:
[trial_card]Dann definieren Sie in oscam.servers, welche Quellen welche Gruppen servieren. Dies stellt sicher, dass Trial-Karten nicht rein-permanente Quellen verstopfen.
Trial-Card-Dauer und Erneuerungsverwaltung
Verwaltung vonoscar trialCard-Lebensdauern im großen Maßstab erfordert Automatisierung. Manuelle Updates funktionieren für 2-3 Karten, scheitern aber schnell.
Berechnung der Trial-Ablauf
Die Formel ist immer: current_unix_timestamp + (days * 86400) = expiration_timestamp
Eine schnelle Python One-Liner für jede Trial-Dauer:
python3 -c "import time; days=30; print(int(time.time()) + (days * 86400))"Oder als Funktion für ein Skript:
#!/bin/bashNutzung:
./calc_expiry.sh 30Verwenden Sie dies in Ihren oscam.user-Updates:
expirydatetime = $(./calc_expiry.sh 30)Erweiterung der Trial-Zeiträume programmgesteuert
Skript, um den Ablauf einer Trial-Karte durch Hinzufügen von Tagen zum aktuellen Zeitstempel zu erneuern:
#!/bin/bashFühren Sie es aus:
./renew_trial.sh trial_30days 30Überwachung ablaufender Karten
Erstellen Sie ein Überwachungsskript, das Sie vor dem Ablauf von Trial-Karten warnt:
#!/bin/bash&& [ $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.