If you want to know how to set up CCcam on Zgemma H9S via Putty — this guide is written exactly for your situation. No filler about "what is cardsharing" — it's assumed you already have a receiver, an active CCcam line from a provider, and you just want to get it all working. We'll go through it step by step: from the first SSH connection to a watchdog script that restarts CCcam when it crashes.

Zgemma H9S is an Enigma2 receiver based on the HiSilicon Hi3798MV200 chip with ARMv7 architecture. This matters — most guides online are written for Dreambox 800 or x86 images, and the commands there partially don't match. Here — only what works on H9S.

What you need before starting: preparing Zgemma H9S

Before going into SSH, make sure the basics are in place. The receiver is connected to the router via cable (Wi-Fi works too, but for initial setup a cable is better — fewer variables). The firmware is installed and the receiver boots normally.

Firmware: OpenATV, OpenPLi or OpenVIX — which to choose

Zgemma H9S supports several Enigma2 firmware options. The most stable today are OpenATV 7.x and OpenPLi 9.x. OpenVIX works too, but gets updated less frequently. For CCcam there's no fundamental difference — config paths are the same, the init system is the same. Differences only appear in the location of some plugins.

Important note: Zgemma H9S and Zgemma H9S 4K are different devices with different firmware versions. On the 4K version, paths to init scripts may differ slightly (/

etc/init.d/ is present in both cases, but the script structure is different). This guide covers the standard H9S.Enabling SSH on the receiver

On most OpenATV and OpenPLi builds SSH is enabled by default. If not — go to the receiver menu: Settings → System → Network → SSH. Switch to "enabled". Without this Putty won't connect at all.

Installing Putty and entering connection details

Putty is the standard SSH client for Windows. Download it from the official site putty.org. After launching: Host Name field — IP address of your receiver, Port — 22, Connection type — SSH. Save the session so you don't have to re-enter it every time.

One nuance on Windows 11: when saving files via nano make sure Putty is set to UTF-8 encoding. Go to Window → Translation → Remote character set → UTF-8. If left at default, CCcam.cfg may display garbled characters if server names contain non-standard symbols (rare, but it happens).

Default credentials and changing the root password

Depends on the firmware:

OpenATV — login

  • root, passwordzgemma or empty passwordOpenPLi — login
  • root, passwordopenpli or emptyOpenVIX — login
  • root, passworddreamboxTry them in order. After logging in, immediately change the password with the command

passwd — the receiver is on a local network, but it's a good habit.Installing CCcam on Zgemma H9S via Putty

First check whether CCcam is already installed — some builds come with it out of the box.

Checking for CCcam in the system: search command

Run in Putty:

find / -name CCcam* 2>/dev/null

If you see

/usr/bin/CCcam or/usr/local/bin/CCcam — the binary is already there. If empty — you need to install it.Installing via the opkg package manager

On many OpenATV/OpenPLi builds CCcam is available in the repository:

opkg update

Or just try:

opkg install CCcam

If the package was found and installed — great. If "package not found" — proceed to manual installation.

Manual installation of the CCcam binary

Zgemma H9S — ARMv7 architecture (arm-linux-gnueabihf). The CCcam binary must be compiled for ARM. Not x86, not MIPS — specifically ARM. You can check with the command

uname -m — it will returnarmv7l. This is the most common mistake: people download the first CCcam binary they find, it's for x86, the receiver won't run it and it's unclear why.Upload the ARM binary to the receiver via SCP or wget, place it in

/usr/bin/CCcam and set permissions:chmod 755 /usr/bin/CCcam

Verify the binary is correct:

file /usr/bin/CCcam

It should say something like

ELF 32-bit LSB executable, ARM. If you seex86-64 — wrong file.Verifying the CCcam daemon is registered in init.d

After installation via opkg the init script is created automatically. For manual installation — check:

ls /etc/init.d/CCcam

If the file doesn't exist — either the opkg installation didn't complete properly, or you need to create the init script manually. On most Enigma2 firmware the script is named

/etc/init.d/softcam-CCcam or simply/etc/init.d/CCcam.Configuring the CCcam.cfg file: syntax and parameters

This is the main part — this is where your line credentials go. All CCcam configuration comes down to this file.

Config location: /etc/CCcam.cfg

The standard path on all Enigma2 firmware is

/etc/CCcam.cfg. But some non-standard builds place the config in/var/etc/CCcam.cfg. If CCcam starts but doesn't pick up the settings — check both paths. You can find it like this:find /etc /var/etc -name CCcam.cfg 2>/dev/null

If the file doesn't exist at all — create it:

touch /etc/CCcam.cfg

C: line syntax — server, port, login, password

The main connection line to the server looks like this:

C: hostname port username password reshare_level

Example with real values:

C: server.example.com 12000 mylogin mypassword 0

Where:

server.example.com

  • — your CCcam provider's host12000
  • — port (check with your provider, standard is 12000)mylogin
  • /mypassword — credentials from the provider's email0
  • — reshare level, 0 = don't reshare furtherNote: if your ISP blocks outgoing port 12000 — the channel won't open, even if everything else is correct. In that case a non-standard port is needed — this can only be resolved through your line provider.

SHARE LIMIT and MINIMIZE RESSOURCE parameters

A few useful directives at the top of the file:

SERVERPORT = 12000

SERVERPORT

is only needed if your receiver itself will be sharing cards — in most home setups this isn't needed.MINIMIZE RESSOURCE = yes reduces CPU load — on H9S this isn't critical, but it's worth enabling.Difference between CCcam 2.x and CCcam 2.3.x: in older versions the directive was called

MINIMIZE RESOURCE (one S), in newer —MINIMIZE RESSOURCE (two S). If the config isn't being applied — check the spelling for your version.Editing the config directly via Putty with nano

Open the file:

nano /etc/CCcam.cfg

Enter the config lines. Save:

Ctrl+O, confirm with Enter. Exit:Ctrl+X. Set permissions:chmod 644 /etc/CCcam.cfg

Starting CCcam and verifying the connection

The config is filled in — now start it and see what happens.

Commands to start, stop, and restart CCcam

# Start

If the init script has a different name —

softcam-CCcam — replace accordingly. You can check:ls /etc/init.d/ | grep -i ccam.Reading the log file in real time

The most informative diagnostic tool:

tail -f /tmp/CCcam.log

This outputs the log in real time. Start CCcam, open an encrypted channel on the receiver, and watch what appears in the log. Stop the output:

Ctrl+C.Signs of a successful connection in the log

A normal working log looks something like this:

connected to server server.example.com:12000

The lines

connected to server andgot card — that's good. It means the line is alive, the card has been received, descrambling should work.Error signs: CARD NOT FOUND, CONNECTION REFUSED, TIMEOUT

What common errors mean:

connection refused

  • — wrong port, or the provider's server isn't responding to your IP. Check whether the provider has blocked your subscription.login failed
  • — wrong login or password. Copy again from the email, without extra spaces.no card
  • orCARD NOT FOUND — the line is active, but the required package/CA is not included. Or the line has expired.timeout
  • — the server is unreachable over the network, or the router is blocking outgoing port 12000.Common problems and solutions

CCcam won't start: dependency and architecture errors

If CCcam silently fails to start — check dependencies:

ldd /usr/bin/CCcam

Lines showing

not found indicate missing libraries. Also verify the architecture:file /usr/bin/CCcam

Both should indicate ARM. If

file returns x86 — the binary is wrong, you need a different one.Receiver doesn't descramble: line problems vs config problems

These are different problems and easy to confuse. If the log shows

got card but channels won't open — the problem is most likely with the CA system. Zgemma H9S supports Conax, Irdeto, Nagravision, Viaccess, Cryptoworks. Make sure your line contains the required CAID for the package you want to watch. Check active CCcam connections:netstat -tnp | grep CCcam

Putty disconnects: keepalive settings

A common problem on routers with aggressive NAT timeout. In Putty: Connection → Seconds between keepalives → set to 30. This sends an empty packet every 30 seconds and keeps the connection alive.

Receiver IP address changes: static DHCP on the router

If the receiver gets a new IP from DHCP every time — Putty won't connect using the old address. Solution: log into your router's interface, find the receiver's MAC address in the DHCP table, and create a static binding for it. The receiver's MAC can be found in the receiver menu or via

ip link show in Putty.Note: after a firmware update the receiver's MAC address sometimes changes. If after an update the IP is no longer static — re-bind it in the router.

CCcam is running but channels won't open: checking the CA system

Diagnostic sequence:

Log

  1. /tmp/CCcam.log — is there agot card line?Does the CAID in the log match the CA system of the required channel?
  2. Are the tuner settings correct — transponder, frequency, symbol rate?
  3. Has the line expired?
  4. Is outgoing port 12000 blocked on the router? (check:
  5. telnet server.example.com 12000 from the receiver)A separate issue with the H9S dual tuner: when simultaneously descrambling two encrypted channels with a single CCcam line, conflicts can occur. Most providers give one line = one descrambling stream. If this is the problem — you need a second line.

Automation: CCcam on every receiver boot

If CCcam doesn't start automatically after a reboot — there are several ways to fix this.

Adding CCcam to autostart via /etc/rc.local

Open the file:

nano /etc/rc.local

Before the line

exit 0 add:/etc/init.d/CCcam start

&The ampersand

& is important — it starts CCcam in the background, not blocking rc.local from completing. Save the file.On some OpenATV/OpenPLi builds rc.local may be absent or not executed. In this case use the standard Enigma2 mechanism: settings → system → software management → CCcam (if installed via opkg).

Watchdog script for monitoring the CCcam process

This is genuinely useful. CCcam sometimes crashes, and without a watchdog you'll only find out when you try to watch TV. Add a cron job:

crontab -e

Add the line:

*/5 * * * * pgrep CCcam || /etc/init.d/CCcam start

Every 5 minutes it checks — if the CCcam process is not found, it starts it. Simple and reliable.

Updating the config without rebooting the receiver

If you need to change line credentials or add a new one — don't reboot the entire receiver. Edit

/etc/CCcam.cfg via nano, then simply restart the daemon:/etc/init.d/CCcam restart

Takes 5-10 seconds. If restart doesn't work or CCcam is frozen:

killall CCcam

&& sleep 2&& /etc/init.d/CCcam startThis will definitively kill the old process and start a new one.

That's essentially the entire process — how to set up CCcam on Zgemma H9S via Putty from start to working state. Most problems fall into three categories: wrong binary (wrong architecture), incorrect data in CCcam.cfg, or network blocks on the router. The log


/tmp/CCcam.log and the commandtail -f — these are your main diagnostic tools.Where is the CCcam.cfg file located on Zgemma H9S?

The standard path is

/etc/CCcam.cfg on all Enigma2 firmware including OpenATV and OpenPLi. Some non-standard builds place the config in/var/etc/CCcam.cfg. If the file doesn't exist at all — create it with the commandtouch /etc/CCcam.cfg via Putty, then edit it with nano.What port does CCcam use by default?

The standard port for connecting to a CCcam server is 12000. This is what providers typically specify. The port is set in the

C: line in the CCcam.cfg file. If your provider gave you a different port — use that one, not 12000.How do I find the IP address of Zgemma H9S to connect with Putty?

Three ways: via the receiver menu (Settings → System → Network → Adapter settings), via the DHCP client list in the router interface, or if the receiver has a display — the IP is often shown at boot. The receiver's hostname on the network is usually

dreambox orzgemma — you can try connecting by hostname instead of IP.CCcam is running but channels still won't open — what to check?

Sequence: 1) check

/tmp/CCcam.log — is there agot card line; 2) verify the channel's CA system matches the card in the line; 3) check the transponder settings in the receiver; 4) confirm with the provider that the line hasn't expired; 5) check that the router isn't blocking outgoing port 12000. All five steps — in order, without skipping.Can multiple CCcam lines be configured on a single Zgemma H9S?

Yes. In CCcam.cfg add multiple

C: lines — each line is a separate connection. CCcam will automatically switch to the next one if the first is unavailable. Order of lines = priority. It's recommended to have no more than 2-3 lines: more doesn't speed things up, only complicates diagnostics.How to restart CCcam without rebooting the entire receiver?

Via Putty run

/etc/init.d/CCcam restart — this will apply config changes in a few seconds. If restart hangs or doesn't help:killall CCcam&& sleep 2&& /etc/init.d/CCcam start. This is a hard process termination followed by a clean start.Zgemma H9S — what processor architecture is it and which CCcam binary is needed?

Zgemma H9S is built on the HiSilicon Hi3798MV200 chip, ARMv7 architecture (arm-linux-gnueabihf). You need a CCcam binary compiled for ARM — not x86, not x86_64. You can verify with the command

uname -m in Putty — it will returnarmv7l. This is the most common reason CCcam doesn't start after manual installation.Related Resources

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.