OScam Setup Guide for Zgemma H9S - Config & Tuning
Setting up oscam zgemma h9s correctly is one of those tasks where precision matters. Get the config wrong and you'll spend hours chasing timeouts and SID errors. Get it right, and you have a stable, responsive cardsharing setup that actually works. I've walked through enough failed deployments to know what breaks—and what doesn't.
The Zgemma H9S is a capable receiver, but it's not a powerhouse. It's got limited RAM, a mid-range ARM processor, and storage constraints that bite you if you're not careful. That means the way you configure oscam zgemma h9s matters more here than on beefier hardware. This guide covers the exact steps, the pitfalls, and the tuning you need to make it work properly.
Zgemma H9S Hardware Overview & OScam Compatibility
Processor and RAM Specifications
The H9S typically runs on an ARM-based processor—usually a dual-core variant clocked around 1.5GHz. RAM is the real constraint: you're looking at 512MB in most configurations, sometimes expandable to 1GB depending on the board revision. That 512MB sounds fine until you start loading large SID lists and running multiple network readers simultaneously.
When OScam boots, it parses your SID database into memory. A list with 5,000+ SIDs can consume 100-150MB depending on how densely you configure them. Add three network readers with timeout handling, active client connections, and logging—you're consuming half your RAM just for OScam. On H9S hardware specifically, this matters because you still need headroom for the receiver's main OS and any other services.
Supported Image Types and Firmware Versions
The H9S can run multiple image types, but Enigma2-based images are where OScam sits most naturally. OpenPLi, Openpli-based variants, and community builds typically include OScam in their package repositories. Older images—particularly those built before 2020—may lack the necessary dependencies (libc versions, SSL libraries) for modern OScam binaries.
Before you install anything, check what firmware version you're running. SSH into the box and check /etc/issue or look at the image name in the settings menu. If your image is more than three years old, you'll likely hit architecture mismatch errors when trying to install OScam. The hardware is the same, but the libc and runtime libraries have moved forward.
Why H9S Works Well with OScam
Despite the RAM constraints, the H9S is actually solid for OScam. The ARM processor handles ECM requests fast enough for real-time TV watching. Network performance is decent for reader connections—gigabit Ethernet means low latency to your cardsharing sources. The storage, while limited (usually 4-8GB), is enough for OScam's binaries, config, and logs if you manage them properly.
The sweet spot is running oscam zgemma h9s with two to three network readers, 3,000-5,000 SIDs, and active caching. Push beyond that and you'll hit memory walls. The hardware isn't broken at those limits—it's just that H9S forces you to be selective about what you load.
Hardware Limitations to Be Aware Of
The internal CAM slot is worth mentioning. If your H9S has a physical smartcard reader built-in, you need to decide: use it with OScam, or disable it entirely. Leaving it enabled but unused just burns CPU and can cause reader conflicts if you're not careful with the config. Most users in environments where you'd run oscam zgemma h9s are using network-only setups anyway.
Storage fill-up is real. The /var partition where logs live is sometimes tiny (100-200MB). OScam logging, if set to DEBUG level, can fill that in hours. You'll need log rotation or size limits in your oscam.conf. Otherwise, you'll see OScam crash with no clear reason—filesystem full, can't write logs, process dies.
CPU throttling on H9S happens under sustained load. It's not a deal-breaker, but if you're running many simultaneous ECM requests (dozens of users hammering the box), you'll see response time creep upward. Caching helps here—more cache hits mean fewer ECM request roundtrips to your readers.
Installing OScam on Zgemma H9S Step-by-Step
Prerequisites and Required Tools
You need SSH access to your H9S. That's non-negotiable. If SSH isn't enabled in settings, enable it now—Network settings → SSH Server. Default credentials are usually root with password dreambox, but check your image documentation because some builds change this.
You also need to know which package manager your image uses. OpenPLi-based images use opkg. Some other Enigma2 builds use apt. Check by SSHing in and running opkg --version or apt-get --version. If neither works, your image is too old—you'll need to flash a newer one.
Finally, verify you have disk space. Run df -h / and check that /root or /home has at least 20MB free. If you're running low, clean up old logs or temporary files first.
SSH Access and File System Preparation
SSH in with your credentials. Once logged in, create the OScam directories if they don't exist. For most Enigma2 images running oscam zgemma h9s, the standard paths are:
mkdir -p /etc/oscam
mkdir -p /var/oscam
mkdir -p /var/logSet ownership and permissions so OScam can write to these directories:
chown -R root:root /etc/oscam
chmod -R 755 /etc/oscam
chown -R root:root /var/oscam
chmod -R 755 /var/oscamVerify the directories exist by running ls -la /etc/oscam/. You should see an empty directory ready for config files.
Downloading and Installing OScam Binaries
The easiest method is through your image's package manager. Try installing from the repository first:
opkg update
opkg install oscamIf that succeeds, OScam is installed to the system binary path (usually /usr/bin/oscam or /usr/local/bin/oscam). Verify with which oscam.
If the package isn't available in your repo, you'll need to download the binary manually. Visit the official OScam project repository and download the ARM binary matching your H9S architecture. Extract it and place it in /usr/local/bin/oscam. Make it executable:
chmod +x /usr/local/bin/oscamTest the binary by running /usr/local/bin/oscam -h. If you see the help text, the binary is compatible. If you get "command not found" or "cannot execute," you have an architecture mismatch—the binary was compiled for a different ARM variant. Reflash with a newer image and try again.
Verifying Installation and Checking System Logs
Before running OScam, check if any previous instances are still running. Multiple lingering processes cause port conflicts that are maddening to debug:
ps aux | grep oscamIf you see OScam processes listed, kill them:
killall -9 oscamNow start OScam manually to catch any immediate errors:
/usr/local/bin/oscam -c /etc/oscamCheck the system logs for startup messages:
tail -f /var/log/messagesYou should see OScam initializing, binding to ports, and loading config files. If it exits immediately, check /var/log/oscam.log for error details. Common startup failures: missing config files (oscam.server not found), port already in use (another service running on 988), or permission errors (can't write to /var/oscam).
Setting Correct File Permissions
OScam needs to read configs and write logs. After config files are in place, verify permissions:
chmod 644 /etc/oscam/oscam.conf
chmod 644 /etc/oscam/oscam.server
chmod 644 /etc/oscam/oscam.user
chmod 755 /var/oscamIf OScam runs as root (which it typically does on H9S), file permissions are less critical, but getting them right prevents future headaches if you ever change the service user. Log files should be readable:
chmod 644 /var/log/oscam.logTest by running oscam -c /etc/oscam again. If it starts cleanly and stays running for 30 seconds without exiting, permissions are likely correct.
OScam Configuration Files for H9S—Essential Setup
oscam.conf—Server Port and Protocol Settings
The main configuration file is /etc/oscam/oscam.conf. Here's a working baseline for H9S:
[global]
logfile = /var/log/oscam.log
logfile = syslog
cachedir = /var/oscam
nice = -1
maxlogsize = 1024
[listener]
port = 988
key = 0102030405060708091011121314151617181920212223242526272829303132
listen_ip = 0.0.0.0
[webif]
httpport = 8888
http_user = admin
http_pass = changeme
documentroot = /usr/share/oscam/wwwThe port 988 is the default for CCcam protocol listening. This is where remote readers and clients connect to your H9S. If something else is using port 988, change it—but make sure your readers know the new port.
The key is your cluster key—a 32-byte hex string. The one above is an example and insecure. Generate a real one or leave it blank if you're using newcamd protocol exclusively. The cache directory stores ECM cache—crucial for H9S performance. Set it to /var/oscam which you created earlier.
Maxlogsize limits the log file size in megabytes. On H9S with its small /var partition, setting this to 1024MB is reasonable. OScam will rotate logs when they exceed this size, preventing filesystem fills.
oscam.server—Reader Configuration and SID Filtering
This file defines your readers—the sources that supply ECM keys. Here's a template with two network readers:
[reader]
label = reader_primary
protocol = cccam
device = remote_ip,remote_port
username = youruser
password = yourpass
group = 1
caid = 0100,0500,1700,1801
priority = 1
timeout = 5
[reader]
label = reader_backup
protocol = cccam
device = backup_ip,backup_port
username = youruser
password = yourpass
group = 2
caid = 0100,0500,1700,1801
priority = 2
timeout = 8Replace remote_ip and remote_port with actual reader addresses. The priority field is critical: lower numbers are tried first. If reader_primary is slow or down, OScam falls back to reader_backup (priority 2).
Group numbers keep readers organized. Same group means they're peers for load balancing. Different groups mean hierarchy. For H9S with limited connections, using two groups (primary and backup) is clean and simple.
CAID (Conditional Access ID) filters which encryption standards the reader handles. Common CAIDs: 0100 (Seca), 0500 (Viaccess), 1700 (NDS), 1801 (Nagravision). List the ones your readers actually provide. If you list CAIDs the reader doesn't have, you'll see timeout errors when OScam requests keys for those CAIDs.
Timeout is in seconds. On H9S, slow readers over a congested network might need 8-10 second timeouts. Faster, local readers can use 4-5 seconds. If timeouts are too short, you'll see "CW not found" errors. Too long and your TV experience feels laggy.
For SID filtering, add this to oscam.server:
[reader]
label = reader_primary
protocol = cccam
device = remote_ip,remote_port
username = youruser
password = yourpass
caid = 0100,0500
group = 1
priority = 1
timeout = 5
sids = 0000,0001,0002,0003The sids field restricts which SIDs this reader provides. Without it, the reader is asked for all SIDs it knows. On H9S, narrowing this per-reader is smart—it reduces ECM traffic and speeds up response times. If reader_primary only handles HBO channels (specific SIDs), list just those.
oscam.user—Client Access Control
Define which clients can connect to your oscam zgemma h9s box. Create /etc/oscam/oscam.user:
[account]
user = client1
pwd = clientpass1
group = 1,2
uniq = 0
[account]
user = client2
pwd = clientpass2
group = 1
uniq = 1The group field grants access to readers in those groups. Client1 can use readers from groups 1 and 2. Client2 only accesses group 1 readers. Uniq = 0 means the same client can log in from multiple IPs. Uniq = 1 enforces one connection per client—useful if you want to prevent sharing credentials.
Change the passwords. Don't use placeholders in production. If this is a personal H9S setup, even basic protection is fine. If you're sharing access, strong unique passwords per user prevent accidents.
oscam.srvid—Service ID Mappings
This file maps SIDs to human-readable channel names and CAID info. It's optional but helpful for debugging. Create /etc/oscam/oscam.srvid:
0100:0001:HBO East
0100:0002:HBO West
0500:0003:Canal+
1700:0004:SkyFormat is CAID:SID:name. When you check logs or the web interface, you'll see "HBO East" instead of "0100:0001". On H9S, this is mostly cosmetic, but it saves time troubleshooting. You can generate this file from your image's channel list if available.
Port Numbers and Security Configuration
Port 988 (CCcam) is the standard. Newcamd protocol uses ports in the 1024-1030 range. If your H9S image already uses these ports for something else, you'll get "Address already in use" errors.
Check for conflicts:
netstat -tlnp | grep LISTENIf port 988 is listed, change OScam's listen port in oscam.conf to something else (e.g., 989). Make sure remote readers and clients know the new port.
Security: Don't expose OScam directly to the internet without a firewall. Use iptables to limit connections or run OScam only on your LAN. If you must expose it, use strong passwords and consider IP whitelisting in your firewall or router.
Protocol Selection (CCcam vs. Newcamd vs. Radegast)
CCcam protocol is the most common for connecting to remote readers. It's efficient and widely supported. Use it unless you have a specific reason not to.
Newcamd is older but still reliable. Some legacy readers only support it. If your reader says "newcamd only," configure a newcamd protocol reader and specify a port in the 1024-1030 range in oscam.server.
Radegast is less common. Some specialized providers use it, but if you're starting with oscam zgemma h9s, stick with CCcam or newcamd. Radegast configuration is more finicky and slower on H9S hardware.
Troubleshooting & Performance Tuning for Zgemma H9S
OScam Not Starting—Common Error Codes and Fixes
Start OScam in the foreground to see errors immediately:
/usr/local/bin/oscam -c /etc/oscamListen for output. Common failures:
"Address already in use": Another process owns port 988. Check with netstat -tlnp | grep 988 and kill the conflicting process. Sometimes old OScam instances don't cleanly exit. Kill all with killall -9 oscam, then restart.
"Config file not found": oscam.conf or oscam.server missing. Verify files exist: ls -la /etc/oscam/. If empty, copy or recreate them from examples.
"Cannot bind to socket": Permission error or port below 1024 without root. Ensure you're running as root: whoami should print "root". If running as a service user, add that user to sudoers or run OScam as root.
"libc not found": Binary architecture mismatch. Download the correct ARM binary for your H9S variant. Check your image details: cat /etc/issue should tell you if it's ARMv6, ARMv7, or ARMv8.
High CPU/Memory Usage on Limited H9S Hardware
Monitor resource usage with:
top -n1 | head -20Or for continuous monitoring:
htopIf OScam is consuming 70%+ CPU consistently, you're overloaded. Causes: too many active clients, SID list too large, or a reader hanging (not responding to requests).
Reduce load by:
- Cut the SID list. Keep only SIDs you actually watch. Remove old or unused channels. A list of 3,000 SIDs uses roughly 150MB. Scale down accordingly.
- Increase timeout values. If OScam is repeatedly retrying slow readers, raise timeout in oscam.server. A 5-second timeout means OScam tries 12 times per minute per request. Set it to 8-10 seconds to reduce retry storms.
- Limit max ECM requests. Add to oscam.conf:
max_pending_ecm = 100. This caps simultaneous requests, preventing runaway ECM floods. - Enable ECM caching. OScam caches ECM responses in /var/oscam. Ensure this directory has space. A cache hit avoids a network request—critical on H9S.
- Disable unused features. If you're not using the web interface, comment out [webif] in oscam.conf. Every feature disabled saves RAM.
If memory is maxed (free command shows little available), OScam may crash with out-of-memory. Check syslog for OOM killer messages: tail /var/log/messages | grep OOM. If found, you need to reduce SID list size or reader count.
Slow ECM Response Times and Caching Optimization
ECM response time is how fast you get keys when tuning a channel. On H9S, a healthy ECM response is under 300ms. Above 500ms feels laggy.
Check oscam.log for ECM timings:
grep "ECM" /var/log/oscam.log | tail -20Look for entries like "ECM from reader_primary in 125ms". If most are slow (500ms+), your readers are overloaded or far away (high latency).
Cache hit ratio is your best friend. Run:
grep "cache hit" /var/log/oscam.log | wc -lCompare to total ECM requests. A high hit ratio (70%+) means you're getting keys from local cache, not network roundtrips. This is where H9S performance shines.
To improve cache hits:
- Tune ECM cache timeout. In oscam.conf, add
ecmcache = 30(30 seconds). Keys are cached for this duration. Shorter means fresh keys but more misses. Longer means stale keys but better cache hits. 20-30 seconds is a good balance. - Watch popular channels. Channels you tune often should cache well. Rarely-watched channels will have low cache hit rates—that's normal.
- Monitor cache size. Check
ls -lah /var/oscam/. If cache files grow large, ECM traffic is high. This is a sign your readers or SID list is well-tuned.
Network Connectivity Issues—Reader Unreachable
If a reader stops responding, OScam retries until timeout. During that window (default 5-10 seconds), channels on that reader bounce or freeze. Logs show "reader not responding".
Diagnose:
ping remote_ipIf ping fails, network connectivity is broken. Check router, firewall, DNS. If ping works but OScam can't reach the reader port:
telnet remote_ip remote_portIf telnet hangs or refuses, the port is closed or firewalled. Check the reader's firewall rules—it may require your H9S IP in a whitelist.
If connectivity is intermittent, add keepalive. In oscam.server, add to the reader block:
keepalive = 1This sends periodic pings to keep the connection alive. Helpful for readers that drop idle connections.
If a reader is temporarily down, set a high timeout and add a backup reader with lower priority. OScam will skip the dead reader quickly and use the backup.
SID Not Working or Bouncing Channels
A "bouncing" channel is one that constantly switches between encrypted and decrypted, or freezes intermittently. Usually means OScam can't get a valid CW (control word/key) consistently.
Check oscam.log for the SID:
grep "0100:0001" /var/log/oscam.log | tail -50Look for "CW not found", "no reader", or "timeout" messages. If the SID is listed in multiple readers, there may be a conflict. OScam tries readers in priority order. If the high-priority reader doesn't have the SID, it should fall back to the backup reader—but sometimes this fails if the reader didn't advertise the SID properly.
Fix:
- Verify the SID exists. Check if channels using that SID are actually broadcast. Removed channels have dead SIDs.
- Check reader group assignments. Ensure both readers with the SID are accessible to the client trying to watch.
- Add sids filtering. If reader_primary handles the SID, add
sids = 0100:0001to that reader block in oscam.server. This tells OScam not to ask other readers for it. - Review logs for "CW error" or "bad CW". If keys are invalid, the reader has a problem—not OScam.
Log Analysis—Where to Look for Problems
OScam logs everything to /var/log/oscam.log. With verbose logging, it's massive—rotation is mandatory or your disk fills.
Key search patterns:
tail -f /var/log/oscam.log | grep -i "error"Watch for errors in real-time. Startup errors, reader connection failures, and CW errors appear here.
grep "reader" /var/log/oscam.log | grep -i "timeout"This shows readers that are timing out. If consistent, the reader is slow or unreachable.
grep "ECM" /var/log/oscam.log | grep -i "timeout"ECM timeouts mean OScam waited the full timeout window without getting a key. Causes: reader overloaded, network latency, or reader doesn't have the SID.
grep "accepted\|connection" /var/log/oscam.log | wc -lCount active connections. If this number grows without bound, you have a client connection leak—clients not disconnecting cleanly.
For sustained troubleshooting, set log level to INFO in oscam.conf:
[global]
logfile = /var/log/oscam.log
loglevel = 1This reduces noise compared to DEBUG level. You still see important events without log spam.
Restart and Cleanup Procedures
To restart OScam gracefully, first kill the process:
killall oscamWait a few seconds, then restart:
/usr/local/bin/oscam -c /etc/oscam -dThe -d flag daemonizes (runs in background). Check it started:
ps aux | grep oscamIf you see an oscam process, it's running. Check logs:
tail /var/log/oscam.logShould see "OScam started" or similar.
For automated restarts, create a cron job. If OScam tends to hang after hours, restart it nightly:
0 2 * * * killall oscam 2>/dev/null; sleep 2; /usr/local/bin/oscam -c /etc/oscam -dAdd this to root's crontab: crontab -e, paste the line, save. This restarts OScam at 2 AM every night.
To clean up old logs, use logrotate. Create /etc/logrotate.d/oscam:
/var/log/oscam.log { daily rotate 7 compress delaycompress notifempty missingok
}This rotates logs daily, keeps 7 days of backups, and compresses old logs. OScam won't fill your disk.
Advanced: Multiple Readers & Load Balancing
Configuring Multiple Network Readers
Running three or more readers on H9S is possible but requires careful setup. Each reader consumes connection slots and memory. On limited hardware, more readers doesn't always mean better performance—diminishing returns kick in fast.
Here's a three-reader setup:
[reader]
label = primary
protocol = cccam
device = ip1,port1
username = user1
password = pass1
group = 1
priority = 1
timeout = 5
caid = 0100,0500
[reader]
label = secondary
protocol = cccam
device = ip2,port2
username = user2
password = pass2
group = 2
priority = 2
timeout = 8
caid = 0100,1700
[reader]
label = fallback
protocol = cccam
device = ip3,port3
username = user3
password = pass3
group = 3
priority = 3
timeout = 10
caid = 0500,1700Each reader handles different CAIDs and has escalating timeouts. Primary (priority 1) is tried first. If it fails, secondary (priority 2) takes over. Fallback (priority 3) is a last resort—useful but slow.
Assign SIDs to specific readers to distribute load. If primary has HBO SIDs and secondary has Sky SIDs, OScam doesn't ask primary for Sky keys. This reduces cross-reader traffic and speeds up responses.
Priority and Fallback Settings
Priority controls which reader OScam asks first. Lower numbers = higher priority. For a given SID, OScam tries priority 1 first. If that times out, it tries priority 2, then 3.
Timeout is crucial here. If your primary reader consistently responds in 100ms, set timeout to 1-2 seconds. OScam will quickly determine it's not responding and try the next reader. Too long (10 seconds) and users experience lag while OScam waits.
For oscam zgemma h9s specifically, the priority mechanism is stable and works well. The challenge is matching timeout values to real network conditions. Start conservative: primary timeout = 3 seconds, secondary = 6 seconds, fallback = 10 seconds. Then monitor logs and adjust based on actual response times.
Add this to primary reader if it tends to be slow:
ignore_bad_cw = 1This tells OScam to ignore occasionally bad keys from that reader. Helps when a reader has intermittent quality issues—OScam accepts most keys but filters obvious corruption.
SID Load Balancing Strategies
Two approaches: exclusive and shared SIDs.
Exclusive: Each SID is owned by one reader. In oscam.server, assign sids per reader. Primary handles SIDs 0001-0100, secondary handles 0101-0200. OScam never asks primary for a SID owned by secondary. This is the most efficient on H9S because it eliminates cross-reader queries.
Shared: Multiple readers can provide the same SID. OScam tries them in priority order. If primary fails, it asks secondary. This is more resilient if readers are flaky, but it costs more traffic and CPU. Avoid this on H9S unless readers are frequently unavailable.
For a balanced H9S setup with two readers, go exclusive:
[reader]
label = primary
sids = 0001,0002,0003,...,1000
[reader]
label = secondary
sids = 1001,1002,...,2000Every SID is covered. OScam asks exactly one reader per request. Fast and lean.
Handling Reader Timeouts and Failover
When a reader times out repeatedly, OScam eventually marks it offline. During that window, failover to the next reader. The transition isn't instant—there's a timeout delay—but it works.
To test failover, simulate a reader outage:
iptables -A OUTPUT -d remote_ip -j DROPThis blocks traffic to the reader. OScam detects timeout, tries the backup reader, and channels should continue playing (with brief lag). Once you see failover working, undo the rule:
iptables -D OUTPUT -d remote_ip -j DROPIf failover doesn't work, check logs for fallback reader errors. Maybe it's not configured with the same SID. Add missing SIDs to the fallback reader block and restart OScam.
For production stability on H9S, keep timeouts reasonable (5-10 seconds) so failover happens before users notice. Overly short timeouts cause false positives—good readers get skipped due to network jitter.
Monitoring Reader Health
Check which readers are active via the web interface (port 8888 if enabled) or by scanning logs:
grep "reader" /var/log/oscam.log | grep -i "online\|offline" | tail -20For continuous health monitoring, track response times:
grep "ECM from" /var/log/oscam.log | tail -100 | awk '{print $NF}' | sort -nThis shows ECM response times for the last 100 requests. If most are under 300ms, readers are healthy. If many exceed 1000ms, readers are overloaded or distant.
On H9S, automate this check with a cron job that restarts OScam if a reader hasn't updated in 10 minutes. Over-automation can cause instability, so use sparingly. A nightly restart is safer than minute-by-minute health checks.
FAQ Section
What OScam version works best on Zgemma H9S?
The stable 11.x branch is your best bet. These versions are well-maintained, have good ARM support, and run reliably on H9S hardware. Avoid bleeding-edge development builds unless you need a specific bugfix—they can introduce instability on limited hardware. Check your image's package repository for the latest stable version available. Older images (pre-2019) may only support OScam 10.x, which still works but lacks modern optimizations. If your image is outdated, consider flashing a newer Enigma2 build that includes current OScam packages. The version matters less than compatibility with your libc version—an incompatible binary won't run regardless of version number, so focus on finding the correct ARM architecture build for your H9S.
How do I access OScam web interface on H9S?
The web interface runs on port 8888 by default. In your oscam.conf, make sure the [webif] section is present: httpport = 8888, http_user = admin, http_pass = changeme. Restart OScam and access it from another device on the same network: open a browser and go to http://h9s_ip:8888. Log in with your credentials. If the page doesn't load, check that port 8888 isn't blocked by a firewall rule. Verify OScam is listening on 8888: netstat -tlnp | grep 8888. If nothing shows, OScam isn't starting the webif—check logs for httpd binding errors. On some H9S images, the web server path (documentroot) is different—common paths are /usr/share/oscam/www or /var/www. If the web interface shows "no styles", update the documentroot path in oscam.conf to match your image. Change the default password immediately—http_pass = changeme is a placeholder.
Why is my H9S getting slow with OScam running?
OScam is resource-intensive on limited H9S hardware. Common causes: too many network readers (each adds overhead), SID list exceeding 5,000 entries (memory pressure), or high ECM traffic (CPU spikes). Check memory: free command. If available memory drops below 100MB, you're in danger of OOM crashes. Check CPU: top command should show OScam using 10-30% CPU at rest. If it's 70%+, you're overloaded. Solutions: cut the SID list to essential channels only, reduce reader count from three to two, increase ECM timeouts to reduce retry storms, and enable ECM caching to minimize network requests. Disable unused features (webif, unused protocol handlers). Monitor with htop to see what's consuming resources. H9S typically has 512MB RAM, so every megabyte counts. A lean SID list (2,000-3,000 entries) with two stable readers is the sweet spot for H9S stability.
Can I run both CCcam and OScam on Zgemma H9S simultaneously?
Technically yes, but not recommended on H9S due to RAM and CPU constraints. If you absolutely must, ensure port separation: run CCcam on 10001, OScam on 988. Use separate config directories (/etc/cccam and /etc/oscam). Both services will compete for memory and CPU—you're splitting the already-limited hardware. Users will likely experience slower response times or service interruptions under load. If you're migrating from CCcam to OScam, the clean approach is: disable/stop CCcam, fully configure OScam, test it, then remove CCcam. Dual-running both is a stopgap that usually causes more headaches than it solves. Conflicts arise: both listening on the same port (if misconfigured), both trying to write logs to /var and filling the disk, or both caching SIDs and duplicating memory use. On H9S with 512MB RAM, you don't have the luxury of running both. Choose one and commit to it.
OScam crashes after a few hours—what's wrong?
Likely a memory leak or OOM (out-of-memory) killer terminating the process. Check syslog for OOM messages: tail /var/log/messages | grep OOM. If found, your H9S is exhausting RAM. Causes: SID list too large, reader connection leaks (clients not disconnecting cleanly), or log file growing unbounded. Solutions: reduce SID list size, limit max ECM requests with max_pending_ecm = 100 in oscam.conf, and ensure log rotation is enabled (maxlogsize = 1024 in oscam.conf). Check if file descriptors are exhausted: netstat | wc -l. If this number is over 900, you have a connection leak. Restart OScam to reset. For a temporary workaround, add a cron job to restart OScam every 6 hours: 0 0 */6 * * killall oscam 2>/dev/null; sleep 2; /usr/local/bin/oscam -c /etc/oscam -d. This masks the underlying problem but buys you stability while you investigate. The root cause is usually a reader or client connection that never fully closes, gradually exhausting resources. Monitor with lsof -p $(pidof oscam) | wc -l to see open file descriptors—if it climbs over time, you've identified the leak.
How do I evaluate if a reader source is reliable?
Watch these metrics over a week or two: response time consistency (check logs for ECM response variance—ideally under 300ms, no spikes to 5+ seconds), uptime (should be 99%+ available, minimal disconnections), SID coverage for your channels (test channels you actually watch), and protocol support (ensure it supports CCcam if that's your protocol). Log into oscam and monitor: grep "ECM from reader_label" /var/log/oscam.log | tail -1000 | awk '{print $NF}' | sort -n to see response time distribution. If 90% of responses are under 200ms with rare outliers, it's solid. If half exceed 500ms, it's unreliable. Check CW hits: grep "CW found\|CW not found" /var/log/oscam.log | tail -1000 | sort | uniq -c. A high "not found" ratio means the reader lacks keys for your SIDs. Test failover: if this reader times out, does the backup reader kick in smoothly? No stuttering = good fallback. Red flags: reader frequently goes offline, response times degrade over hours, or CW hit rate drops mid-week. Avoid sources with these issues—they'll frustrate you. Ask in communities if anyone else uses this source, but rely on your own testing data to make the final decision.