CCcam Server vs OScam: Setup, Config & Migration Guide
If you're working with satellite receivers and card sharing, at some point you'll need to make a decision about your cccam server oscam setup — whether to run one, the other, or both in parallel. This guide covers the actual technical differences, real configuration file syntax, and a step-by-step migration path. No filler, no provider recommendations — just config files and commands.
CCcam vs OScam: Protocol Architecture and Key Differences
These two softcams take fundamentally different approaches to the same problem. Understanding the architecture matters before you touch a single config file.
How CCcam Protocol Works (Client-Server Model)
CCcam operates on a proprietary, closed-source protocol. The binary lives at /usr/bin/CCcam and listens on port 12000 for client connections by default. It's a hub-and-spoke model — the server holds cards, clients connect and request ECM decryption.
CCcam development stopped at version 2.3.0. There are no patches, no security updates, no new features coming. What you have is what you get. For many setups that's fine, but it's a hard ceiling.
The protocol itself is encrypted but the encryption is well-documented by the reverse engineering community. Every connection is CCcam protocol only — there's no native support for Newcamd, Camd35, or anything else.
How OScam Works (Multi-Protocol Support)
OScam is open-source, actively maintained, and built modularly. The binary is typically at /usr/local/bin/oscam or /usr/bin/oscam depending on your receiver image. The web interface runs on port 8888 by default.
The key architectural difference: OScam separates readers (card sources) from users (clients accessing those sources) and links them through numbered groups. This group system is elegant once you understand it, but it's also the number one source of configuration errors for people new to OScam.
OScam also supports cache exchange (CSP — Cache Sharing Protocol), which lets multiple OScam instances share already-decoded ECM responses. This cuts response times when the same ECM arrives from multiple clients simultaneously. CCcam has nothing equivalent.
Protocol Support Comparison: CCcam, Newcamd, Camd3, cs357x
| Protocol | CCcam | OScam |
|---|---|---|
| CCcam | ✓ Native | ✓ Emulated (client + server) |
| Newcamd | ✗ | ✓ |
| Camd35 / cs357x | ✗ | ✓ |
| Gbox | ✗ | ✓ |
| Radegast | ✗ | ✓ |
| DVBAPI | Internal only | ✓ Dedicated module |
OScam's CCcam protocol emulation is mature enough that most CCcam clients can't tell the difference. You can point your existing CCcam client boxes at an OScam server running on port 12000 and they'll work without reconfiguration.
Performance and Resource Usage Differences
CCcam is lighter on memory at idle — on an ARM-based Dreambox it might use 4–6 MB. OScam with a full config and webif enabled typically runs at 8–15 MB. Neither is going to stress any modern receiver.
Under load, OScam performs better because of its ECM request queuing, fallback reader logic, and CSP cache. With CCcam, if your primary server is slow, you wait. With OScam, you can configure fallbacktimeout so a second reader kicks in automatically after, say, 2500ms.
Security: EMM Handling and Authentication Differences
EMM (Entitlement Management Messages) handling is where OScam genuinely wins. You can configure per-reader EMM filtering, control which clients trigger EMM writes, and restrict auto-update (au=) to specific users. CCcam's EMM handling is more of a black box.
OScam's webif should always have httpallowed set to your local subnet only — something like httpallowed=192.168.1.0-192.168.1.255. Leaving it open to 0.0.0.0-255.255.255.255 on a public-facing box is a serious mistake. CCcam's telnet interface (port 16000) has no authentication at all, so firewall rules are non-negotiable there.
CCcam Server Setup: Configuration File Walkthrough
CCcam's entire config lives in one file. That simplicity is both its strength and its limitation.
CCcam.cfg File Structure and Location
The config file is at /etc/CCcam.cfg on most PC Linux setups. On Enigma2 receiver images (OpenATV, OpenPLi, etc.) it's usually /var/etc/CCcam.cfg. Check your image — some Enigma2 softcam managers write their own version of this file on startup, overwriting manual edits. If you're on a read-only rootfs, your changes won't survive a reboot without remounting.
The file is plain text, ASCII. No BOM (Byte Order Mark). Windows line endings (CRLF) will cause parsing issues — use Unix line endings (LF). If you're editing on Windows, use Notepad++ with Unix line ending mode, not regular Notepad.
Configuring C: and F: Lines Explained
The C: line defines an upstream server you're connecting to as a client:
C: hostname.example.com 12000 myusername mypasswordThe F: line defines a user account that can connect to your CCcam server:
F: clientuser clientpassword 1 0The third field (1) is the hop limit. Hop 0 means local card only, hop 1 means cards one hop away are shared, and so on. The fourth field (0) is reshare — how many hops downstream this client can reshare. Keep reshare at 0 for most setups unless you specifically want peers sharing your cards further down the chain.
Setting Server Port, Hop Limits, and Reshare
Global server settings go at the top of CCcam.cfg:
SERVER LISTEN PORT : 12000
TELNETINFO LISTEN PORT : 16000
WEBINFO LISTEN PORT : 16001
HOP LIMIT : 1
SHARE LIMIT : 0
ACCOUNT WAIT TIME : 1Limiting hops to 1 is almost always the right call. Every additional hop adds latency and reduces your ability to know where ECMs are actually coming from.
CCcam.prio and CCcam.providers Files
Drop a CCcam.prio file in the same directory as your cfg to prioritize specific CAIDs:
# Prioritize SkyDE on Astra
P: 09C4 000000:000000 1The CCcam.providers file maps provider IDs to human-readable names for the webinfo display. It doesn't affect functionality, just makes the share list readable.
Starting CCcam and Verifying It's Running
Start it manually with /usr/bin/CCcam & or via your init system. Check it's running:
ps | grep CCcamConnect to the telnet interface for live status:
telnet localhost 16000From there, type entitlements to see what cards/CAIDs are available. Log file is at /tmp/CCcam.log by default, or wherever you set LOGFILE in the cfg.
OScam Server Setup: Complete Configuration Guide
OScam splits its configuration across multiple files. This feels like more work upfront, but it pays off when you need to add a reader or tweak user permissions without touching everything else.
OScam Config Directory Structure (/etc/tuxbox/config/oscam/)
On Enigma2-based receivers, configs typically live at /etc/tuxbox/config/ with files named oscam.conf, oscam.server, oscam.user, oscam.dvbapi, and oscam.srvid. On x86 Linux with a manual install, you'll more likely be at /usr/local/etc/oscam/ or /etc/oscam/.
On ARM receivers like Vu+ or Dreambox, the binary may be in /usr/bin/oscam with init scripts in /etc/init.d/. The Enigma2 softcam manager handles start/stop — if you're editing configs manually, restart via the menu rather than killing the process directly, otherwise the manager may restart with stale configs.
oscam.conf: Global Settings, WebIF, and Logging
[global]
logfile = /tmp/oscam.log
maxlogsize = 500
nice = -1
preferlocalcards = 1
clienttimeout = 5000
fallbacktimeout = 2500
cachedelay = 0
[webif]
httpport = 8888
httpuser = admin
httppwd = changethis
httpallowed = 127.0.0.1,192.168.1.0-192.168.1.255
httpdyndns = 0
[cccam]
port = 12000
version = 2.3.0
reshare = 1
stealth = 1
[dvbapi]
enabled = 1
user = dvbapiThe stealth option under [cccam] makes OScam identify itself as a real CCcam server rather than OScam emulating CCcam. Some clients behave better with this enabled. The version field should match what your clients expect — 2.3.0 is the last real CCcam release and the safest choice.
One thing to watch: some OScam builds compiled for certain receiver images exclude CCcam protocol support due to licensing concerns. If you don't see a [cccam] section available in the webif, you have a build without CCcam support. You'll need a different binary — check the build flags with oscam --build-info.
oscam.server: Reader Configuration for Smartcards and Proxies
Each card source or upstream server gets its own [reader] block:
[reader]
label = myserver1
protocol = cccam
device = hostname.example.com,12000
account = username,password
caid = 09C4,09CD
group = 1
reconnecttimeout = 30
cccreshare = 0
cccmaxhops = 1For a local smartcard reader (physical card in your receiver):
[reader]
label = local_card
protocol = internal
device = /dev/sci0
caid = 09C4
group = 1
detect = cd
mhz = 357
cardmhz = 357The group number is the link between readers and users. A user with group=1 can only route ECMs through readers also in group=1. Get this wrong and you'll get no entitlements even with a perfectly configured server connection. This is genuinely the most common OScam configuration mistake.
oscam.user: Client Account Management
[account]
user = clientuser1
pwd = securepassword
group = 1
caid = 09C4,09CD
au = myserver1
monlevel = 2
cccmaxhops = 1The au field links this user to a specific reader for auto-update (EMM processing). Only set this if you actually need EMM updates for that card — unnecessary EMM traffic causes issues. monlevel controls what this user can see in the webif: 0 = none, 2 = own account info, 4 = full admin.
oscam.dvbapi: Demux and CAID Filtering
[dvbapi]
priority = 09C4:000000@1234:0000
ignore = 1702:000000
pmtmode = 1
boxtype = dreamboxThe priority and ignore lines use the format CAID:provid@SID:VPID. Colons and zeros can be omitted for wildcards. This is where you tell OScam which CAIDs to actively descramble and which to skip, which matters when a channel broadcasts with multiple conditional access systems simultaneously.
Using OScam WebIF for Monitoring and Management
Hit http://receiver-ip:8888 in a browser. The main status page shows reader states in real time — look for CARDOK on your readers. From the webif you can restart individual readers, change log verbosity without editing files, and see live ECM statistics including response times per reader.
Under Information > Live Log you can watch ECMs being processed in real time, which is invaluable when diagnosing issues. Don't leave debug logging enabled at level 64 permanently — it writes aggressively and will fill /tmp on receivers with limited RAM.
Migrating from CCcam to OScam: Step-by-Step
The good news: when you set up cccam server oscam migration correctly, your existing CCcam clients don't need to change a thing. OScam serves CCcam protocol on port 12000 and clients never know the difference.
Converting C: Lines to oscam.server Reader Entries
Every C: line in your CCcam.cfg maps directly to a [reader] block. Here's the translation:
CCcam.cfg:
C: server1.example.com 12000 user1 pass1
C: server2.example.com 12000 user2 pass2oscam.server:
[reader]
label = server1
protocol = cccam
device = server1.example.com,12000
account = user1,pass1
caid = 09C4
group = 1
cccmaxhops = 1
reconnecttimeout = 30
[reader]
label = server2
protocol = cccam
device = server2.example.com,12000
account = user2,pass2
caid = 09C4
group = 1
cccmaxhops = 1
reconnecttimeout = 30If you don't know which CAID your server carries, leave the caid line out initially — OScam will accept whatever the server sends. Then check the webif after connecting and add the proper CAID restriction.
Converting F: Lines to oscam.user Account Entries
CCcam.cfg:
F: peer1 peerpass 1 0oscam.user:
[account]
user = peer1
pwd = peerpass
group = 1
cccmaxhops = 1
cccreshare = 0The third field from the F: line (hop limit) becomes cccmaxhops. The fourth field (reshare) becomes cccreshare. Keep these conservative.
Running OScam as CCcam Protocol Server for Backward Compatibility
In your oscam.conf, the [cccam] section enables OScam to accept incoming CCcam client connections:
[cccam]
port = 12000
version = 2.3.0
reshare = 1
stealth = 1
nodeid = autoWith this in place, any client that was pointing at your old CCcam server's IP and port 12000 just keeps working. Zero changes needed on those boxes.
Testing the Migration Without Downtime
Run OScam on a different port first — say 12001 — while CCcam stays on 12000. Change one test client to point at 12001 and verify it works. Once you're satisfied, switch OScam to 12000, stop CCcam, and point remaining clients back.
If you're behind CGNAT or double-NAT, incoming connections won't work regardless of protocol. This affects server mode — you can still connect outbound as a client. If your ISP provides CGNAT, you'll need a VPS with a public IP to act as a relay, or use a provider that handles this on their end.
Common Migration Pitfalls and How to Avoid Them
- Group mismatch — reader in group 1, user in group 2. ECMs never route. Check both files and make sure group numbers match.
- Missing au= assignment — EMM updates stop working. Assign each user to a reader with
au=readerlabelif they need entitlement updates. - Wrong CAID filter — you set
caid=09C4on a reader but the server sends09CD. Add both or remove the filter initially. - Old CCcam 2.0.x syntax in configs — some older CCcam configs use deprecated directives that OScam's CCcam emulation doesn't understand. Check OScam's log for parse warnings on startup.
- Enigma2 softcam manager overwriting configs — some images regenerate config files from their own database on startup. Store your authoritative configs in a location the manager doesn't touch, or configure the manager with your settings directly.
Troubleshooting CCcam and OScam Server Issues
Diagnosing 'No Entitlements' and Empty Card Lists
This is the most common complaint and almost always has the same root causes. In OScam, check the webif reader list first. If the reader shows CARDOK but you have no entitlements, your user's group doesn't match the reader's group. Fix the group numbers.
If the reader shows OFF or ERROR, the connection to the upstream server isn't working at all. Check credentials and whether the server is actually reachable.
In CCcam, telnet to port 16000 and run entitlements. Empty output means either no C: lines are connected, or the connected server has reshare set to 0 and isn't sharing anything.
Connection Refused and Timeout Errors
First check the obvious — is the software running?
ps aux | grep oscam
ps aux | grep CCcamThen check if the port is open:
netstat -tlnp | grep 12000Check firewall rules:
iptables -L -n | grep 12000If the port isn't listed in netstat, the software isn't binding to it — check your config for typos in the port directive. If it's bound but you're getting connection refused from a remote machine, it's a firewall issue.
IPv6 note: CCcam's protocol doesn't handle IPv6 correctly in all implementations. If you're on an IPv6-only network, OScam handles it better but you may need to explicitly bind to an IPv4 address using the bindaddr directive in oscam.conf.
ECM Timeout and Slow Zapping
Slow channel changes usually mean ECM responses are taking too long. In oscam.conf:
[global]
clienttimeout = 5000
fallbacktimeout = 2500clienttimeout is how long OScam waits before telling the client it failed. fallbacktimeout is when it starts trying fallback readers while still waiting for the primary. Setting fallbacktimeout to around half of clienttimeout gives you fast fallback without abandoning the primary too quickly.
Reading OScam Logs and Debug Levels
In the webif under Configuration > Logging, set Debug level to 64 for ECM details, 256 for full reader communication. Don't leave it at 256 for long.
Log line interpretation:
found (234ms)— ECM decoded successfully in 234ms. Good.timeout after 5000ms— reader didn't respond in time. Server is slow or unreachable.not found (123ms)— server responded but has no valid subscription for that CAID. Wrong server or expired subscription.invalid card— card authentication failed. Wrong credentials or server rejected the login.
Fixing Common oscam.server Reader Errors
Reader stuck in NEEDINIT: usually means OScam connected but the card handshake isn't completing. For CCcam protocol readers, check that the server version matches — set cccversion=2.3.0 in the reader block if needed.
Reader bouncing between CARDOK and ERROR: typically a network stability issue or the upstream server rate-limiting reconnections. Increase reconnecttimeout to 60 seconds and add keepalive=1 to the reader block.
Choosing a Reliable Server: What to Look For
Once you have your cccam server oscam setup dialed in technically, server quality becomes the remaining variable. Here's how to evaluate it without relying on marketing claims.
Key Technical Criteria: ECM Response Time and Stability
ECM response time is the clearest objective measure. Under 500ms is acceptable, under 300ms is good, and under 150ms is excellent. OScam's webif shows per-reader average ECM times in the reader statistics tab — this is your primary benchmark.
Run a server for 24–48 hours before committing. Look for ECM time consistency — a server averaging 200ms with occasional spikes to 3000ms is worse than one consistently at 400ms. Spikes cause channel freezing even when averages look fine.
Protocol Support and Compatibility
Newcamd has lower protocol overhead than CCcam and is worth requesting if a provider supports it. Camd35 is another lightweight option. For a cccam server oscam configuration running multiple protocols, having a provider that supports Newcamd means you can use that for some readers while keeping CCcam for others.
Ask whether the provider offers backup server IPs. A single point of failure is unacceptable for anything you depend on.
Server Location and Latency Considerations
Geographic proximity matters. A server 500km away will consistently outperform one 5,000km away, even if the distant one has faster hardware. Basic physics.
Test raw latency to the server IP before signing up:
ping -c 20 server.example.comIf you're seeing average ping over 80ms, ECM times of under 300ms are unlikely. Factor this in when evaluating specs.
Evaluating Uptime and Redundancy
No provider can honestly guarantee 100% uptime. Anyone promising this is lying. Look for providers offering multiple server endpoints you can configure as fallback readers in OScam — that way a single server going down doesn't cause an outage on your end.
A trial period of at least 24 hours is a minimum reasonable ask. Anyone refusing a trial is hiding performance issues. Test during peak hours (evenings, weekends) not just midday when load is low.
Red Flags to Avoid When Selecting a Provider
- Unlimited reshare promises — physically impossible without degrading everyone's service. It means they're overselling capacity.
- No trial period — self-explanatory. Don't pay upfront without testing.
- Prices significantly below market average — overloaded servers with too many clients per card. You'll see 1000ms+ ECM times during peak hours.
- Requiring root/SSH access to your receiver — this is a serious security risk. A provider should only need you to configure a C: line or oscam.server reader entry. Nothing more.
- Free servers — they're almost universally unreliable, frequently offline, and introduce potential security exposure. Treat them as test environments only, never production.
Frequently Asked Questions
Can OScam connect to a CCcam server?
Yes. OScam supports CCcam protocol natively as both client and server. To connect as a client, add a [reader] block in oscam.server with protocol=cccam, device=hostname,port, and account=user,pass. OScam will handle the CCcam handshake while simultaneously running other protocols on the same instance.
What is the default port for CCcam and OScam?
CCcam listens on port 12000 for card sharing, port 16000 for telnet access, and port 16001 for the webinfo interface. OScam's web interface defaults to port 8888, and its CCcam protocol listener is configured in oscam.conf under the [cccam] section — commonly set to 12000 to maintain compatibility with existing CCcam clients.
Is OScam better than CCcam?
For most use cases, yes. OScam supports multiple protocols (CCcam, Newcamd, Camd35, cs357x, Gbox), is open-source with ongoing development, provides a proper web interface with live statistics, and gives you granular control over reader priorities, fallback behavior, and user permissions. CCcam is simpler to configure initially but is limited to its own protocol and hasn't been updated since version 2.3.0. If you're starting fresh, OScam is the better choice.
How do I check if my CCcam or OScam server is working?
For CCcam: run telnet localhost 16000 and type entitlements to see available cards. Check /tmp/CCcam.log for connection status. For OScam: open the web interface at http://receiver-ip:8888 and check that your readers show CARDOK status. Watch the live log for ECM responses — lines showing found (Xms) confirm decryption is working.
Can I run CCcam and OScam at the same time?
Yes, but they need different ports. A common setup is OScam on port 12000 as the primary softcam, with CCcam configured on port 12001 for specific connections. Some Enigma2 images support dual-cam configurations through their softcam manager. The main thing to avoid is both processes trying to bind the same port — that'll cause one of them to fail to start.
What causes 'ECM timeout' errors in OScam?
ECM timeouts happen when no reader responds within clienttimeout (default 5000ms in oscam.conf). The most common causes are: the upstream server being slow or offline, network latency exceeding the timeout threshold, incorrect group assignment preventing ECMs from being routed to any reader, or a CAID mismatch where no configured reader carries the requested subscription. Check OScam webif reader statistics to see which reader is timing out and what ECM times look like when it does respond.
How do I convert my CCcam.cfg lines to OScam format?
Each C: host port user pass line becomes a [reader] block in oscam.server with protocol=cccam, device=host,port, account=user,pass, and group=1. Each F: user pass hops reshare line becomes an [account] block in oscam.user with user=, pwd=, cccmaxhops= (from the hops field), and group=1. Make sure the group numbers match between readers and user accounts — mismatched groups is the single most common migration error.