CCcam Server Maker: Convert Lines to .cfg Config
If you've landed here, you probably have a C: line sitting in your clipboard and no idea why your receiver keeps rejecting it. The process of using a server maker cccam to cfg workflow — whether that's a web tool or manual editing — isn't complicated, but there are about six different ways it can silently fail. This guide covers all of them. We'll go from raw C: line to a working /etc/CCcam.cfg file, with real syntax, real paths, and real troubleshooting.
What Is a CCcam Server Maker and What Does It Do
A CCcam server maker is a tool — web-based, desktop, or script — that takes raw C: lines as input and produces a properly structured CCcam.cfg file as output. That's the core of it. But the reason these tools exist is that a valid CCcam.cfg isn't just a text file with a C: line dropped in. It has a specific structure, required global directives, strict encoding rules, and line ending requirements that most people don't know about until their receiver throws a silent error.
The server maker cccam to cfg conversion process is straightforward when you understand what's actually happening under the hood. The tool isn't doing magic — it's wrapping your server credentials in the correct config skeleton and making sure the output file won't trip up the CCcam parser.
The Difference Between a Raw C: Line and a .cfg File
A C: line is just a credential string. Something like C: myserver.example.com 12000 user1 pass123 no. It tells CCcam which server to connect to and how to authenticate. But that line on its own, saved to a file named CCcam.cfg, is not a valid config. CCcam expects global directives above the client lines — things like VERSION, SERVERPORT, and LOGFILE at minimum.
Drop a naked C: line into a file without those directives and CCcam will either refuse to start, start but log nothing, or appear to run while connecting to nothing. All three outcomes look identical from the front panel of your receiver.
Why Receivers Won't Accept Plain Text Server Lines
Enigma2 images — OpenPLi, OpenATV, DreamElite, and others — run CCcam as a softcam plugin. The plugin hands off to the CCcam binary, which reads /etc/CCcam.cfg and parses it strictly. If the parser hits an unexpected token, missing directive, or wrong line ending, it fails without a useful error message on screen. You just get "no signal" or "not authorized" on channel.
Some builds are more lenient than others, but you shouldn't rely on that. Write a correct config and the parser version stops mattering.
Online Tools vs. Manual Editing: When Each Makes Sense
Online server maker tools are useful when you're not comfortable with SSH or text editors on Linux. They give you a form, you paste your C: lines, configure a few options, and download a ready-to-upload file. The catch is that some of these tools output Windows CRLF line endings, which will break your config. More on that in the troubleshooting section.
Manual editing with nano or vi over SSH is faster once you know what you're doing, and you have full control over the output. If you're running multiple boxes or automating deployments with scripts, manual is the only sensible approach.
Understanding the CCcam C: Line Syntax Before Converting
Before running anything through a server maker, you need to know what a correct C: line looks like and what each field does. This is where most beginner mistakes happen — a malformed input produces a malformed output, tool or no tool.
Full Anatomy of a C: Line — Host, Port, Username, Password, Optional Flags
The format is: C: <hostname> <port> <username> <password> <reconnect>
Breaking it down:
- C: — The line type identifier. Must be uppercase C followed by a colon and a space.
- hostname — FQDN like
myserver.example.comor an IPv4 address like192.168.1.100. IPv6 has limited support — see the edge cases section below. - port — Usually in the 12000–12100 range but technically valid from 1 to 65535. Common defaults are 12000 and 12001.
- username — Case-sensitive. Spaces are not allowed.
- password — Also case-sensitive, no spaces.
- reconnect —
yesorno. Some older builds use1or0. Controls whether CCcam auto-reconnects on disconnect.
A complete valid example: C: myserver.example.com 12000 user1 pass123 no
Common C: Line Variations: With and Without Reconnect Flag
Some providers give you C: lines without the reconnect flag. CCcam handles this gracefully in most versions — it defaults to auto-reconnect behavior. But for clarity and consistency, always include the flag explicitly. When you know what every field does, you can spot a malformed line from a provider before it wastes your troubleshooting time.
What Happens if Any Field Is Malformed or Missing
Missing the port? CCcam will skip the line. Wrong delimiter (tab instead of space)? Same result. Username with a space in it? The parser will split it and treat the second word as the password. None of these errors produce a clear log message — CCcam just won't connect to that server. Check your C: lines character by character if you're having issues.
Difference Between C: Lines and F: Lines in CCcam.cfg
F: lines define forward connections — they're used when your CCcam instance is acting as a server and forwarding specific PIDs or providers to connected clients. They are not server connection lines. If a peer sends you an F: line expecting you to add it to your client config, they've confused client and server roles. F: lines go in the server's config to control what it shares, not the client's config to define what it connects to. This is one of the most common mix-ups in peer setups.
How to Convert CCcam Server Lines to a Valid .cfg File
There are three practical methods for running a server maker cccam to cfg conversion. Pick the one that matches your setup and comfort level. All three produce the same result if done correctly.
Method 1: Manual Creation Using a Text Editor (nano, vi, Notepad++)
SSH into your receiver and run:
nano /etc/CCcam.cfgThen type out your full config. Don't paste from a Windows clipboard without checking line endings first. A minimal working file looks like this:
VERSION = 2.3.0
SERVERPORT = 0
LOGFILE = /tmp/CCcam.log
NODEID = A1B2C3D4E5F6A7B8
C: myserver.example.com 12000 user1 pass123 yesSave with Ctrl+O, exit with Ctrl+X. If you're editing on Windows and uploading via FTP, use Notepad++ and set line endings to Unix (LF) under Edit → EOL Conversion before saving.
Method 2: Using an Online Server Maker Tool — What to Look For
A decent server maker cccam to cfg tool should do the following: accept multi-line C: line input, let you configure global directives like SERVERPORT and LOGFILE, and output a downloadable file with Unix LF line endings. If the tool doesn't mention line endings anywhere, assume it outputs CRLF and run dos2unix on the result before uploading.
Avoid any tool that asks for more than your C: lines and basic config options. You shouldn't need to create an account or hand over anything sensitive to generate a text file.
Method 3: Scripting the Conversion With a Simple Bash One-Liner
If you already have a partial config and just need to add a C: line:
echo "C: myserver.example.com 12000 user1 pass123 yes" >> /etc/CCcam.cfgFor building a full config from scratch in one shot:
cat > /etc/CCcam.cfg << 'EOF'
VERSION = 2.3.0
SERVERPORT = 0
LOGFILE = /tmp/CCcam.log
NODEID = A1B2C3D4E5F6A7B8
C: myserver.example.com 12000 user1 pass123 yes
EOFThis method guarantees Unix line endings since the shell generates the file natively on the receiver.
Correct File Path and Filename on Enigma2 Receivers
On standard Enigma2 images (OpenPLi, OpenATV, DreamElite, VTi), the path is /etc/CCcam.cfg. Filename is case-sensitive — ccam.cfg or CCCAM.CFG will not be found. Some images, particularly older ones, look in /usr/keys/CCcam.cfg. Check which softcam plugin version is running on your box if the default path doesn't work.
Correct File Path on a Linux PC Running CCcam Binary
On a standalone Linux machine, CCcam looks for its config in the directory where the binary lives, or in /usr/local/etc/CCcam.cfg, or /etc/CCcam.cfg, depending on how it was compiled. Run strings /path/to/CCcam | grep cfg to find the hardcoded path in your specific binary.
Setting File Permissions: chmod and chown Requirements
CCcam.cfg can contain credentials, so lock it down:
chmod 600 /etc/CCcam.cfg
chown root:root /etc/CCcam.cfgIf CCcam runs under a different user (check with ps aux | grep CCcam), adjust the owner accordingly. A file with 777 permissions will work but is a bad idea on any networked box.
Full CCcam.cfg Template With All Key Directives
Here's a complete template you can use as a starting point. Comments explain each line.
Minimum Viable Config for a Client-Only Setup
# CCcam Configuration File
# Version must match your actual CCcam binary version
VERSION = 2.3.0
# Set to 0 to disable local CCcam server (client-only)
SERVERPORT = 0
# Log file path — /tmp/ is writable on Enigma2
LOGFILE = /tmp/CCcam.log
# Unique node ID — change this, never share the same ID across two clients
NODEID = A1B2C3D4E5F6A7B8
# Your server connection line
C: myserver.example.com 12000 user1 pass123 yesAdding Multiple C: Lines for Redundancy
CCcam processes C: lines in order and will use the first server that responds. Add backup servers below your primary:
C: primary.example.com 12000 user1 pass123 yes
C: backup.example.com 12001 user1 pass456 yesCCcam pools all connected servers, so if primary is up, it uses primary. Backup kicks in automatically. Having more than three or four backup lines is usually overkill and can cause connection flooding on the server side.
Global Directives: VERSION, LOGFILE, SERVERPORT, NODEID
VERSION — Must match your binary. Running CCcam 2.0.x with VERSION = 2.3.0 in the config can cause parsing errors for directives that didn't exist in 2.0.x. Check your binary version with /path/to/CCcam --version or by checking the log header at startup.
NODEID — This is a 16-character hex string that uniquely identifies your CCcam client to the server. If two clients connect with the same NODEID, the server may reject both or keep dropping one of them. Generate a unique one — any random hex string will do. Never copy-paste a NODEID from a tutorial or another config.
LOGFILE — /tmp/CCcam.log is the standard on Enigma2. That path is always writable. Don't log to /etc/ or other potentially read-only locations.
Newcamd and Radegast Client Sections — When You Need Them
If your provider gives you a line starting with N:, that's a Newcamd connection, not CCcam. The N: line format is: N: <hostname> <port> <username> <password> <DES key>. The DES key is a 14-byte hex string specific to Newcamd — you can't leave it out or substitute a random value.
These lines can coexist in CCcam.cfg. CCcam supports Newcamd client connections natively. But a C: line will not work as an N: line and vice versa. The protocols are entirely different at the packet level.
Disabling Server Mode When Running Client-Only
SERVERPORT = 0 is non-negotiable for client-only setups. Without it, CCcam defaults to listening on port 12000 (or whatever SERVERPORT defaults to in your build). That's an open port on your receiver or PC that accepts incoming CCcam connections from anyone who can reach it. You don't want that unless you're intentionally running a server.
Troubleshooting: Config Loads But Card Sharing Doesn't Work
Your softcam shows as running, channels show encrypted, and you've triple-checked the C: line. Here's how to actually find out what's wrong.
How to Read CCcam.log to Identify Connection Errors
SSH in and run:
tail -f /tmp/CCcam.logThen restart the softcam from the receiver menu. Watch what appears. A successful connection sequence looks like: config read → C: line parsed → CONNECT to host → AUTH OK → cards received. Any break in that chain tells you exactly where to look.
Authentication Failed: Wrong Credentials vs. Wrong Line Format
If you see CONNECT followed immediately by disconnect, it's almost always an auth failure. Check username and password for trailing spaces (common when copy-pasting). Check that the C: line fields are space-delimited, not tab-delimited — open the file in a hex editor if you're not sure. Also verify the NODEID in your config is unique — a duplicated NODEID on the server side causes auth rejection that looks identical to a wrong password error.
Connection Refused: Firewall, Wrong Port, or Server Down
"Connection refused" means the TCP connection itself failed. Either the port is wrong, the server is down, or a firewall is blocking the connection. Test with:
telnet myserver.example.com 12000If that hangs or returns "connection refused", the issue is network-level, not config-level. Your CCcam.cfg is probably fine.
Config File Not Read on Boot: Startup Script Issues on Enigma2
If CCcam connects fine when you start it manually but fails after a reboot, the softcam plugin is starting before the network is fully up, or it's looking in the wrong path. Check your Enigma2 softcam startup scripts in /etc/init.d/. Some images have a race condition between the network interface coming up and CCcam trying to resolve the hostname. Adding a sleep 5 before the CCcam start command in the init script often fixes this.
Windows Line Endings (CRLF) Breaking the Config File
This is the single most common "it works on my PC but not on the receiver" issue. Windows text editors save files with CRLF (\r\n) line endings. CCcam on Linux expects LF (\n) only. The \r character gets treated as part of the last field on each line, silently corrupting every directive and C: line in the file.
Fix it on the receiver:
dos2unix /etc/CCcam.cfgOr verify first:
file /etc/CCcam.cfgIf it says "CRLF line terminators", run dos2unix. If dos2unix isn't available on your image, install it or use sed: sed -i 's/\r//' /etc/CCcam.cfg.
Encoding Issues: BOM Characters Causing Silent Parse Failures
Windows Notepad (pre-2019 versions) saves UTF-8 files with a BOM (byte order mark) — three invisible bytes (0xEF 0xBB 0xBF) at the very start of the file. CCcam's parser hits these bytes before any directive and quietly fails. The log will either show nothing or show the startup header with no config directives following.
Detect it:
hexdump -C /etc/CCcam.cfg | head -1If the first three bytes are ef bb bf, you have a BOM. Remove it:
sed -i '1s/^\xef\xbb\xbf//' /etc/CCcam.cfgOr just recreate the file using nano on the receiver directly, which won't add a BOM.
Edge Cases Worth Knowing About
IPv6 Addresses in C: Lines
CCcam has very limited IPv6 support. If your provider gives you a C: line with an IPv6 address like 2001:db8::1, most CCcam binaries will fail to parse it correctly or won't connect at all. The workaround is to use a hostname instead of a raw IPv6 address, or run a local IPv4-to-IPv6 proxy wrapper. Don't assume your build handles IPv6 — test it and be ready to ask your provider for an IPv4 alternative.
Running CCcam Inside Docker
If you're running CCcam in a Docker container, /etc/ inside the container is not persistent across restarts. Mount your config as a volume:
docker run -v /host/path/CCcam.cfg:/etc/CCcam.cfg ...Without this, every container restart wipes your config and you're back to square one.
C: Lines With Ports Below 1024
As a client connecting to a server on port 80 or 443 (some providers use these to bypass firewalls), you don't need root privileges. The restriction on ports below 1024 applies only to processes that need to listen on those ports. Connecting to them as a client is fine from any user. No special configuration needed — just put the correct port number in the C: line.
Read-Only Filesystem on Some OEM Images
Certain receiver firmware images mount /etc/ as read-only. Writing to /etc/CCcam.cfg will fail silently or with a permission error. The fix is to put the config in a writable partition — typically /var/etc/CCcam.cfg — and create a symlink:
ln -s /var/etc/CCcam.cfg /etc/CCcam.cfgThis survives reboots as long as /var/ is persistent on your image.
Multiple Tuners and Per-Satellite C: Lines
CCcam doesn't support per-tuner server assignment. All C: lines go into a single connection pool and CCcam routes decryption requests to whichever server has the relevant card, regardless of which tuner made the request. If you want to segment servers by satellite position, you'd need to look at OScam, which has more granular routing via reader configuration in /etc/oscam/oscam.server.
CCcam Version Mismatches
Running CCcam 2.0.x with a config written for 2.3.x will cause issues. The VERSION directive in the config tells CCcam which syntax rules to apply. If the directive version is higher than the actual binary, some directives may be ignored or cause parse errors. Always match the VERSION in the config to the actual binary. If you don't know the binary version, start CCcam and check the first line of the log — it always prints the version on startup.
Frequently Asked Questions
What is the default path for CCcam.cfg on Enigma2 boxes?
The standard path is /etc/CCcam.cfg on most Enigma2 images including OpenPLi, OpenATV, and DreamElite. Some images place it in /usr/keys/CCcam.cfg — check which softcam plugin version is installed on your specific box to confirm.
Can I have multiple C: lines in one CCcam.cfg file?
Yes. Add as many C: lines as needed, one per line. CCcam will connect to each server and pool available cards. That said, more isn't always better — excessive connections can trigger rate limiting or IP bans on the server side. Two or three backup lines is usually the practical maximum.
What does the 'reconnect' flag (yes/no) in a C: line actually do?
When set to yes, CCcam will automatically attempt to reconnect to that server if the connection drops. no means it won't try again until you restart CCcam manually. For reliability, yes is almost always the right choice unless you're dealing with a server that penalizes rapid reconnect attempts.
Why does my CCcam.cfg work in a Windows text editor test but fail on the receiver?
Almost certainly Windows CRLF line endings. The \r character gets appended to every field value and corrupts the config silently. Run dos2unix /etc/CCcam.cfg on the receiver via SSH, or convert in Notepad++ under Edit → EOL Conversion → Unix (LF) before transferring the file.
What is the difference between a C: line and an N: line in CCcam config?
C: lines use the CCcam protocol to connect to CCcam servers. N: lines use the Newcamd protocol and require a 14-byte DES key as an additional field. They are not interchangeable at all — the authentication handshake and packet format are completely different between the two protocols.
Do I need to set SERVERPORT if I am only using CCcam as a client?
Yes — set it to 0. SERVERPORT = 0 disables the local CCcam server entirely. Without this, CCcam defaults to listening on a port for incoming connections, which you don't want on a client-only box. It's both a security issue and a potential conflict with other services.
How do I verify my CCcam.cfg was loaded correctly after a restart?
Run tail -f /tmp/CCcam.log right after restarting the softcam. Look for lines showing config being read and each C: line being acknowledged. If you see the startup header but no C: line entries, either the file path is wrong, the file has a BOM, or there's a parse error caused by CRLF or malformed syntax.