OScam and CCcam: server and protocol configuration

If you have dealt withcard sharing at least a little, you have probably faced the question: what to install — OScam or CCcam? The combination ofoscam cccam has become the de facto standard for most installations based on Enigma2, but even experienced users get confused in the configs, lose the path to the keys after updating the image, or experience FREEZE without an obvious reason. Let's break everything down step by step — with real config examples and commands.

OScam and CCcam: what is the difference and what to choose

CCcam is a closed proprietary daemon. There are no source codes, no bug tracker, the last official version 2.3.0 was released a long time ago and has not been updated since. The CCcam protocol works by default on port 12000, its own encryption, and documentation is practically absent.

OScam is an open project with an active community. It supports newcamd, cccam, camd35, mgcamd, radegast — meaning it can work both as a client and as a server for all these protocols simultaneously. This is a fundamental difference.

Architecture and operation principle of CCcam

CCcam operates on a client-server scheme with simple logic: the server holds the physical card or resolver, the client connects via C-line, receives an ECM request, and the server returns CW (Control Word). That's it. No fine-tuning, no modules. The config is a single file/etc/CCcam.cfg, the syntax is simple.

But behind the simplicity lies inflexibility. It is not easy to manage groups, priorities, failover between multiple servers. Load balancing is practically zero.

Why OScam is more flexible: modularity and protocol support

OScam is built around the concept of reader and account. Reader is the source of CW (card, network connection, emulator). Account is the client to whom we distribute. Each reader can be linked to a group, assigned a priority, and configured with separate timeouts.

Plus — a web interface on port 8888 with real-time status: you can see the ECM response time for each reader, connection status, and the number of clients. CCcam cannot do this at all.

The combination of OScam as a server + CCcam protocol for clients

This is where the most interesting part begins for those who build the combinationoscam cccam. OScam can accept connections via the CCcam protocol — meaning clients with regular C-lines connect to OScam as if it were a CCcam server. For this, inoscam.conf in the section[cccam] we specify the port, and inoscam.user we create accounts. Old receivers with CCcam flashed in the image are not even aware of this.

When it is justified to use both daemons simultaneously

The honest answer: almost never. The only real case is if you have an old receiver where CCcam is hardcoded in the image and cannot be replaced, and OScam is needed for processing a local card or connecting to multiple servers with failover. Then you run them on different ports and do not let them conflict. In all other cases, one OScam is sufficient.

Installing OScam and basic config structure

On modern Enigma2 receivers, OScam is installed via the package manager or the SoftCam Manager plugin. But if you need a fresh build — you will have to compile from source.

Building OScam from source via simplebuild/toolchain

For building under Enigma2,oscam-simplebuild or cross-compilation via the toolchain of the specific receiver manufacturer is used. The basic command after cloning the repository:

make OSCAM_CFLAGS="-DMODULE_CCCAM -DMODULE_NEWCAMD -DMODULE_CAMD35" \

Compile only the necessary modules — the binary will be smaller, and it will take up less memory.

File locations: /etc/tuxbox/config/oscam/ and /var/keys

On Enigma2, configs are usually located in/etc/tuxbox/config/oscam/. On some images — in/usr/keys/. Look for SoftCam.Key and constant.cw in/var/keys/. After updating the image, this path sometimes resets — the folder is recreated empty, and everything stops working without an obvious error.

Always make a backup of the configs before updating the image. The easiest way is to copy the entire folder/etc/tuxbox/config/oscam/ to a flash drive.

Key files: oscam.conf, oscam.server, oscam.user

Three main files:

  • oscam.conf — global settings, logging, web interface, protocol ports
  • oscam.server — description of readers: physical cards, network connections
  • oscam.user — client accounts to which we distribute CW

There is alsooscam.dvbapi (binding to DVB devices),oscam.srvid (channel database) andoscam.ac (access control), but they are not needed for starting.

Minimal working oscam.conf and daemon launch

Here is a minimal config to start with:

[global]

Launch:oscam -b -r 2. The flag-b — background mode,-r 2 — log rotation level. If the configs are not in the standard location, add-c /path/to/configs.

Configuring the CCcam protocol in OScam (oscam.server and oscam.user)

This is the most important part for those who are building a full-fledged setup.oscam cccam. I will show real examples, not abstract templates.

Section [reader] with protocol = cccam for connecting C-line

Suppose you have a C-line of the formC: hostname.example.com 12000 myuser mypassword. Inoscam.server it looks like this:

[reader]

inactivitytimeout = 30 — the reader will disconnect if there is no activity for 30 seconds and will reconnect. This is normal behavior, not a bug.reconnecttimeout = 15 — pause before attempting to reconnect.

Parameters cccversion, cccmaxhops, ccckeepalive

cccversion must match the server version or be lower. Set2.3.0 — works with most servers.cccmaxhops = 5 — maximum depth of resharing that we accept. I set no more than 3 for HD channels, otherwise the delay becomes noticeable.

ccckeepalive = 1 — make sure to enable this. Without it, the connection drops when there is no activity, and the receiver starts freezing at the most inconvenient moment.

Sharing through [account] and protocol cccam (F-line)

To share with clients via the CCcam protocol through OScam, inoscam.user we create an account:

[account]

cccreshare = 0 — we prohibit the client from further resharing. If you need to allow it — set it to 1, but usually this is not necessary.cccmaxhops = 2 for clients — a reasonable limit.

Format of C: and F: lines and their correspondence to the config

F-line for a client connecting to your OScam as a CCcam server is generated automatically fromoscam.user. The client sees this as a regular CCcam server:

C: your_ip_or_domain 12001 client1 clientpass

Port 12001 — the one specified in the section[cccam] inoscam.conf. Not 12000, because this port is usually occupied by CCcam itself if it is also running.

Diagnostics and troubleshooting of card sharing

FREEZE — the most common complaint. And most often the reason is not where they look.

Reading OScam logs and reader statuses in the web interface

Open the web interface athttp://receiver_address:8888. The Readers tab shows the status of each reader: connected, connecting, or nothing. If the reader shows connected but the channel is freezing — check the ECM time column. The norm is up to 0.3-0.4 seconds. If it's 1.5-2 seconds or a dash — the problem is with the server or network.

In the logs, look for lines like:

2026/06/09 14:23:11 r cccam_main [CCCAM] no card found for 09C4:000000

This indicates that the server did not find a card for this CAID. Either the CAID is incorrect, or the channel is not included in the subscription.

FREEZE and lack of ECM response: typical reasons

A list of real reasons I have encountered:

  • High ping to the server (more than 80-100 ms for HD) — CW arrives late
  • Incorrectcccmaxhops — the server filters cards above a certain level of resharing
  • Overloaded server — ECM queue grows, responses are delayed
  • Mismatch of CAID or provid — reader is connected, ECM request goes out, but there is no response
  • Group blocking — reader in group 1, while dvbapi uses group 2

The last point is a classic trap. The reader shows connected, there is no ECM response, and the reason is that the groups do not match. Checkgroup inoscam.server andgroup inoscam.dvbapi.

CW (Control Word) errors and time desynchronization

Control Word is an 8-byte key that changes every ~10 seconds. It is tied to the time on the server and client. If the discrepancy exceeds a few seconds — decoding breaks completely. The channel is available, the ECM response arrives, but the picture is not decrypted.

The solution is one — NTP. Check synchronization on the receiver:

ntpq -p

The time zone is also important. UTC on the receiver and UTC on the server — fine. UTC on the receiver and UTC+3 on the server without explicit configuration — a source of problems.

Problems with hops, group, and mismatch of CAID/provid

Highcccmaxhops — it's not just a matter of delay. With hops> 5-6 there is a risk of resharing looping: the card travels around the servers in a circle, the ECM queue grows, and in the end, you get FREEZE on all HD channels at once. If this happens — setcccmaxhops = 3 and see what changes.

CAID mismatch is a separate story. In the reader log, requests will be visible, but all with the result "not found". Compare the CAID of the desired channel (visible in the DVBApi status) with what the server declares. Sometimes one channel broadcasts with two CAIDs simultaneously, and the desired one simply does not match the card.

How to choose a server provider: criteria without names

The right approach to selection is to look at technical parameters, not at a beautiful website.

What to look at: stability, ping, ECM response time

ECM time up to 0.3-0.4 seconds is good. Up to 0.6 seconds is acceptable for SD channels. More than that will cause problems. It is difficult to find this out before purchase, so a trial period is essential.

Check the ping to the server with a simpleping hostname. If the server is physically located in another country, expect delays. This is critical for HD channels.

Local cards versus re-sharing and number of hops

A server with local cards (hops = 0 or 1) is more stable and faster than a server with re-sharing from other servers. This is not an opinion — it's physics. Each hop adds latency and another potential point of failure.

Ask the provider: are the cards local or is it re-sharing? If the honest answer is "re-sharing", then look at the number of levels. More than two or three levels — instability is guaranteed on HD.

Legal aspects and viewing legal content

Card sharing — a technology that can be used for both legal and illegal viewing. Using your own card with a subscription through OScam on several of your devices is legal in most countries. Accessing content for which you do not have an active subscription — no.

The article describes the technical aspects of setting uposcam cccam for educational purposes. The responsibility for use in accordance with the laws of your country lies with the user.

Trial period as a way to check quality

A normal trial period is at least 24-48 hours. During this time, you need to check: ECM time during peak hours (Friday-Saturday evening), stability of the connection during long viewing, behavior when switching channels with different CAIDs.

If the provider does not give a test or only gives one hour — this is a warning sign. Serious operators are not afraid to show quality.

What port does the CCcam protocol use by default?

The standard CCcam port is 12000. If you are building a setuposcam cccam and OScam works as a CCcam server, it's better to use another port (for example, 12001) to avoid conflicts if CCcam is also running. The port is set in the section[cccam] inoscam.conf, and in the reader — through the parameterdevice = hostname,port inoscam.server.

Can OScam and CCcam be used simultaneously on one receiver?

Technically — yes, through different ports. Both daemons are managed through SoftCam Manager in Enigma2 or run as separate services. But in practice, one OScam is enough: it fully supports the CCcam protocol and can distribute C-lines to clients without running CCcam itself. Two daemons simultaneously are justified only if CCcam is hardcoded into the image.

What does FREEZE mean when watching channels?

FREEZE is the freezing of the picture because the decoder did not receive a valid Control Word in time. There are several reasons: high ping to the server, too many hops in re-sharing, time desynchronization between the client and server, overloaded server with a large queue of ECM requests. Check the ECM time in the OScam web interface — if it's more than 0.5-0.6 seconds, the problem is on the server or network side.

Where are the OScam configuration files stored on Enigma2?

The standard location is/etc/tuxbox/config/oscam/. In some images, the configs are located in/usr/keys/. Key files (SoftCam.Key, constant.cw) are usually in/var/keys/. When starting, you can explicitly specify the path with the parameter-c:oscam -b -r 2 -c /etc/tuxbox/config/oscam/. After updating the Enigma2 image, folders are sometimes recreated empty — always make a backup of the configs.

What are hops in CCcam and why should they be limited?

Hops are the number of intermediate servers between you and the physical smart card. Hop 0 is the local card on the server you are connecting to. Hop 1 is when the server receives CW from another server that has a local card. And so on. Each hop adds latency. With more than 5-6 hops, there is a risk of the resharing looping and instability. The parametercccmaxhops inoscam.server limits the depth — set it to no more than 3-4 for comfortable HD viewing.

Why is time synchronization important for card sharing?

Control Word is generated taking into account the current time. If the time on the client and server diverges by more than a few seconds, the obtained CW will be invalid — the channel will show a black screen or FREEZE, even though the connection is formally working. Set up NTP on the receiver:ntpdate pool.ntp.org or through system settings. Make sure the time zones are aligned — it's better if both are in UTC.

Practical checklist for smooth viewing

Even the best CCCam or OSCam line needs two or three simple preparations. Update your receiver firmware, reset the ECM cache once a week and keep 15–20% free space on the USB stick or internal flash so that the reader can store keys without delays.

When tuning a dish, aim for MER/BER reserve: a two‑degree offset or a loose F‑connector often causes the “freezing” that users blame on cardsharing. Keep a short patch cord to test alternative routers, and save two profiles in OSCam — one for TCP, one for UDP — so you can switch instantly if your ISP starts filtering a protocol.

Utgard.tv monitors each hub 24/7, but you can speed up diagnostics by keeping a short log of your receiver actions. Note the time when you changed the channel, which CAID was active and whether you used Wi‑Fi or Ethernet. This tiny “journal” helps engineers reproduce your environment in the lab and return with a solution in minutes instead of hours.

  • Keep two line slots enabled: if the first server hits a maintenance window, the second one instantly takes over without re-entering credentials.
  • Run a monthly speed and latency test. Stable 1–2 Mbps with ping <80 ms is enough for SD/HD, but if jitter exceeds 20 ms, switch the router to wired mode.
  • Save the Utgard.tv status page and Telegram bot @utgard_tv_bot to bookmarks — they publish maintenance notices before SEMrush or uptime monitors raise alerts.