OScam: высокий ECM time и фризы каналов (oscam ecm time too high causing channel freezing fix) — решение 2026
If you ended up here, you have probably already gone through the installation and startup stage — channels open, but every 8-10 seconds the picture freezes or breaks into blocks. In the logs, the ECM time jumps to 800-3000 ms instead of the normal 150-400. This is exactly what oscam ecm time too high causing channel freezing fix deals with — not with general advice like "set lb_mode=1," but with a specific methodology: where milliseconds are lost and what to change in the configs to bring the delay to acceptable values in one evening.
I will deliberately not provide a general overview of card sharing — you already know what CCcam and newcamd are. Let's go straight to the logs, telnet, and webif.
What is ECM time and what values are considered normal
The keys (control words) on most channels change every 8-10 seconds — this is the cryptoperiod. OScam must obtain a new dw before the current period expires; otherwise, the receiver does not have time to decrypt the next block of the stream, and the picture freezes. ECM time is the time from sending the ECM request to receiving the control word. If it plus the transmission time to the receiver exceeds the remaining cryptoperiod — a freeze is guaranteed.
In the log, the line looks something like this:ecm hash 3A7F1C2B found (620 ms) by reader Sat1_Card (caid 0500 prov 000000 pid 0000). Three fields are important here: time in milliseconds, reader name, and response type. The response can be cache1 (from local cache), cache2/cache3 (from another client's cache via cache-ex), or a direct request to the reader. The difference is fundamental: a cache response is a matter of milliseconds, while a real request to the reader is the time that depends on the network and source.
How ECM time is calculated: from request to dw in OScam
OScam measures the time from when the decoder sends the ECM until the moment a response is received from the card or network reader. This time includes: the packet's path to the source, processing on the card/server side, the return path, and internal processing by OScam itself. None of these stages are free, which is why diagnostics require separation by layers — more on this in the next section.
Delay benchmarks: up to 400 ms, 400-800 ms, over 1000 ms
Up to 400 ms — a comfortable zone, there should be no freezes. 400-800 ms — already risky: with the slightest jitter, individual requests will exceed the cryptoperiod. Over 1000 ms — freezes are almost guaranteed because the buffer for network instability is practically consumed. A local card in a normal reader usually gives 150-350 ms, a quality network source — 250-500 ms.
Why freeze occurs specifically when exceeding the key change interval
Here lies the essence of the problem: it is not the high ECM time itself that breaks the picture, but the fact that it does not fit within the remaining time of the cryptoperiod. If the key changes every 10 seconds, and the ECM request was sent at the second second and the response was received after 900 ms — everything is fine, there is a huge buffer. But if the same request was sent at the ninth second due to a queue delay — a freeze is inevitable, even if the ECM time is not formally record-breaking.
Where to look for ECM time: webif Status/Readers, oscam.log, ecm.log
The main source is the log file. Depending on the build, it is located in /var/log/oscam/oscam.log or /tmp/.oscam/oscam.log. The path and parameters are set in oscam.conf in the [global] section: logfile=/var/log/oscam/oscam.log and cwlogdir=/tmp/.oscam/cw for a separate log of control words by channels. For real-time viewing, the command is convenient:
tail -f /var/log/oscam/oscam.log | grep -E 'ms\)'
In the web interface (default port 8888), check the Status tab — it shows current requests, and Readers — average statistics for each source. Important: do not draw conclusions based on one channel and one reader. Compare at least 3-4 channels and all active readers — this way you will immediately see if the problem is systemic or local.
Diagnostics: where exactly milliseconds are lost
Before changing anything in the config, you need to understand at which specific stage time is lost. Without this, you will just be tweaking parameters randomly — and half of the forum advice appeared this way.
Delay separation: network, source, OScam, receiver
Step one — compare ECM time for the local card (if it is present in the system) and for the network reader. If the local card also responds slowly — the issue is not with the network, but with the hardware or reader settings (mhz/cardmhz). If the local card is fast, but the network reader is slow — look for the problem in the network or on the source side.
Network check: ping, mtr, traceroute to the reader server
Next, measure RTT: ping -c 50<host> and mtr -r -c 100<host>. A simple rule: ECM time physically cannot be less than 2×RTT plus processing time at the source. If you have a ping of 150 ms — do not expect an ECM time of 200 ms, that is already a good result. Pay attention not only to the average value but also to the spread. A stable ping of 60 ms is better than one that jumps from 20 to 300 ms — it is the jitter, not the average delay, that is most often the cause of point freezes.
Load check: top, htop, iostat on weak hardware
On Raspberry Pi and old receivers with a single core, OScam with a dozen simultaneous users and enabled cache-ex can hit the CPU limit. Run top or htop and check if the oscam process is constantly around 90-100%. Additionally, check free -m — if swap is active, it almost always explains floating, unpredictable ECM time because the process is periodically unloaded from memory and loaded back.
Webif analysis: Readers, Users, Cache tabs, statistics by SID
The Readers tab in webif shows the average response time and percentage of "not found" for each source. The Users tab — the same for clients if you are sharing the card with someone. The Cache tab is useful to understand how many responses actually come from the cache, not from the reader — this is important because a low average ECM time can mask a problematic reader if a large portion of requests are cached.
Enabling extended logging: debug levels 4 and 64
If the picture is still unclear, temporarily raise the logging level through webif or directly in oscam.conf. Mask 4 is for reader events, mask 64 is for cache. They can be combined (debug=4+64=68). Do not enable debug=255 on a permanent basis — on weak hardware, the log itself starts to slow down the system, adding the same delay you are trying to eliminate. Turn it on, collect 10-15 minutes of statistics, then turn it off.
The main rule of all diagnostics: change one parameter — record the result — and only then move on. Otherwise, in an hour you will have five changed settings and no understanding of which one worked.
Configuring OScam: parameters that actually reduce ECM time
Here is the specifics on the configs. Do not copy a block entirely from someone else's forum — see what each part is responsible for and adjust it to your situation.
oscam.conf: sections [global] and [cache] — cacheexwaittime, lb_mode
In [global], useful options include: nice=-1 (increases the priority of the OScam process in the system), maxlogsize for rotation, preferlocalcards=1 — so that under equal conditions OScam first queries the local card instead of the network reader. In new builds, the value preferlocalcards=2 with a more aggressive priority is sometimes available.
Separately — cacheexwaittime. This parameter makes OScam wait for a response from cache-ex sources before contacting the real reader, and it is directly added to each ECM request. A reasonable range is 50-150 ms, and only if you actually have several cache-ex sources. If there is only one source, this parameter only harms, adding pure delay without any benefit.
Load balancing: lb_mode=1, lb_nbest_readers, lb_retrylimit, lb_max_readers
If there are multiple readers, enable lb_mode=1 (the "fastest reader" mode). Next in importance is lb_retrylimit=800 — the time in milliseconds after which OScam abandons waiting for the current reader and tries the next one. A key point that is usually not explained anywhere: lb_retrylimit must be significantly lower than the acceptable delay, otherwise OScam simply won't have time to switch within the cryptoperiod and a freeze will still occur, just a little later.
Other parameters of the block: lb_save=100 (frequency of saving statistics), lb_nbest_readers=2 (keep the two best sources on CAID in reserve), lb_reopen_seconds=30, lb_max_readers=3, lb_min_ecmcount=5, lb_max_ecmcount=500 — these are the boundaries within which OScam accumulates statistics on the reader before considering it reliable.
Reader timings: ecmnotfoundtimeout, ctimeout, rtimeout, retrylimit
In the reader block in oscam.server, ctimeout=3000 is often set — this is frankly too much. Reduce it to 1500-2000 ms: if the reader hasn't responded in that time, it shouldn't participate in the race for the control word. Set rtimeout and reconnecttimeout similarly, based on the actual RTT from mtr that you recorded during the diagnostics stage.
oscam.server: group, caid, ident, cccversion, cccmaxhops
Limit each reader to specific CAID and ident through the parameters caid= and ident=, rather than leaving it "for everything." This way, OScam won't send ECM requests to all sources indiscriminately, but will go directly to the one that actually holds the required CAID. The parameter cccmaxhops=2 should be kept minimal: each extra hop in the CCcam chain adds 100-300 ms and an extra link that can drop out at any moment. Set cccwantemu=0 if emulation is not needed — it also adds overhead. For problematic CAIDs, sometimes disablecrccws helps, but this is more of a workaround for a specific source rather than a systemic solution.
oscam.user: keepalive, cccmaxhops for clients
If you are providing access to clients yourself, enable keepalive=1 in oscam.user — this reduces the number of reconnects, and each reconnect means lost seconds for renegotiating the session exactly when the client needs a fresh ECM. cccmaxhops here should also be limited — for the same reasons as on the reader side.
Cache and cache-ex: when it helps and when it only harms
Cache-ex makes sense only if you actually have several independent sources of the same CAID and you want to receive the control word from whoever responds first to someone else. With a single cache-ex source, it is pure overhead without any gain. After any configuration changes, don't forget to restart OScam: either with the Restart button in webif or with the command kill -HUP<pid>to apply the settings without completely stopping the process.
Network and hardware reasons: from Wi-Fi to MTU
This layer is almost always ignored in typical guides, which is a pity — often the real reason hides here.
Wi-Fi vs cable: why jitter kills card sharing
Wi-Fi under interference gives spikes in delay of 200-500 ms, even if the average ping looks decent. For regular web surfing, this is unnoticeable, but for card sharing with its strict window of 8-10 seconds — it is fatal. If there is no possibility to lay a cable, at least switch to 5 GHz with a fixed (not auto) channel — this noticeably reduces jitter.
MTU, fragmentation, and VPN tunnels over sharing
When working through VPN or PPPoE, the effective MTU often drops to 1420-1492 bytes instead of the standard 1500. Packets are fragmented, and this adds delay to each ECM request — even if the regular ping looks perfect. You can check with the command ping -M do -s 1472<host>— if the packet does not pass without fragmentation, gradually reduce the size until you find a working value, and set the MTU in the interface settings accordingly.
Ports and NAT: keepalive, session drops, reconnect every N minutes
Standard ports: CCcam usually listens on 12000 (set arbitrarily in the [cccam] section via port), newcamd — from 15000 and above, webif — 8888. The port must be consistently forwarded on the router. If the log regularly shows lines like connection reset or disconnected — this is a network problem, not a bug in OScam, and it is fixed at the level of NAT timeouts and keepalive, not by editing the sharing config.
Overloaded router and SQM/QoS: prioritizing reader traffic
If someone in the network is downloading torrents or watching a 4K stream while sharing, buffering in the router (that same bufferbloat) adds hundreds of milliseconds of delay to all traffic, including ECM requests. Enabling SQM with fq_codel on the router (available, for example, in OpenWrt) sharply reduces these spikes because it prevents the queue on the uplink from growing uncontrollably.
Weak hardware: Raspberry Pi, old Enigma receivers, swap
A Raspberry Pi Zero or an old receiver with 128 MB of RAM under load from several clients and active cache-ex starts to go into swap — and this guarantees jumps in ECM time. Regularly check free -m. If swap is constantly active, not episodically — move OScam to a separate, more powerful device, or reduce the number of active clients and cache parameters.
Step-by-step plan for fixing: from quick tweaks to deep tuning
Let's gather everything into a sequence of actions. Do not skip steps and do not change everything at once.
Step 1: take basic metrics and establish a baseline
Enable cwlogdir, collect statistics for an hour of active viewing of problematic channels. Record the average and peak ECM time for each of them. Without this baseline, you won't understand if further tweaks helped.
Step 2: exclude network and hardware
Run mtr, free -m, top. Success criteria: packet loss 0%, jitter less than 30 ms, CPU idle above 40%. If there are already problems here — fix them first, any config tweaks in OScam over a bad network or an overheated processor will give at best a temporary effect.
Step 3: configure load balancing and reader timings
Apply the block lb_mode=1, lb_nbest_readers=2, lb_retrylimit slightly below your acceptable delay, reduce ctimeout to 1500-2000 ms. Restart and measure again using the same methodology as in step 1.
Step 4: disable unnecessary readers, CAID, and hop
Look at the webif statistics for each reader: those that consistently return "not found" or have the longest response time, disable or lower their priority. Bind readers to specific caid= and ident= so that OScam doesn't waste time on meaningless broadcasts. Limit cccmaxhops to a value of 1-2.
Step 5: control measurement and observation for 24 hours
Leave the system in this state for at least a day — freezes in the evening from 19:00 to 23:00, when the source is maximally loaded, will show a completely different picture than the average statistics for the day. If after a day the freezes remain only on one or two channels, the issue is likely with a specific CAID or a specific provider on the other end, rather than in your configuration.
What DOES NOT work: popular advice that does not help
It is worth separately addressing what has been circulated on forums for years — because some of this advice is not just useless, but actually harmful.
Increasing ctimeout to 5000 ms — masks rather than cures
Increasing ctimeout does not speed up the response of a slow reader; it simply makes OScam wait longer for it. As a result, the key change window is missed, and the freeze only gets longer. This is a classic example of "treating" the symptom instead of the cause.
Blindly copying someone else's oscam.conf from forums
Someone else's config contains someone else's CAID, someone else's reader groups, and someone else's lb parameters, tailored for a completely different network topology. After copying, what was already working fine for you usually breaks.
Disabling load balancing "so it doesn't interfere"
If you have several readers for one CAID, disabling lb_mode deprives OScam of the ability to switch from a hanging source to a working one in time. Without lb_retrylimit, the system will wait for the problematic reader until the full timeout — and will miss the cryptoperiod time and again.
Restarting the receiver as a constant "solution"
Restarting helps for 15-20 minutes because it resets the cache and active sessions. But the cause — usually in the network, overheating, or swap — does not go away and returns the same evening.
Reinstalling OScam instead of diagnosing
Reinstalling the binary does not touch your configs or the network — and the problem is almost always there. Let's also debunk another myth: "more hops = more redundancy" does not work, because each additional hop in the chain adds delay and reduces reliability, not the other way around.
What ECM time is considered normal in OScam?
Local card — 150-350 ms. Quality network reader — 250-500 ms. Above 700-800 ms — risk of freezes, above 1000 ms — freezes are practically guaranteed, because the cryptoperiod lasts about 10 seconds, and the delay accumulates with each key change. Values in milliseconds indicate a response from the cache, not a real request to the reader.
Why is the ECM time low, but the channel still freezes?
Possible reasons: unstable jitter, when the average ECM time is good, but individual requests exceed the cryptoperiod; responses come from the cache, while the real reader is silent; the problem is not in sharing at all, but in receiving the satellite signal — low SNR, rain, misalignment of the antenna give exactly the same cubes. Before blaming OScam, check the signal level and quality directly in the receiver's menu.
How to quickly check ECM time without digging into logs?
Through the OScam web interface — by default, port 8888, enabled in oscam.conf in the [webif] section with the httpport parameter. The Status tab shows current requests and response times, Readers — average statistics for each source, Users — for clients. The receiver itself usually has a plugin with ECM info, called by a button on the remote.
Does increasing cacheexwaittime help with freezes?
No, more often the opposite. The parameter makes OScam wait for a response from cache-ex sources before contacting the reader and directly adds the specified milliseconds to each ECM. Reasonable values are 50-150 ms, and only with several cache-ex sources. With one reader, it is better not to use this parameter at all.
How many readers and hops are optimal to keep for one CAID?
Usually, two to three readers with lb_nbest_readers=2 is sufficient — this provides redundancy without unnecessary load. cccmaxhops is better limited to a value of 1-2: each additional hop adds 100-300 ms and an extra link that can drop. Readers that consistently show "not found" or the worst time in webif statistics are better disabled — they only slow down the search.
Does VPN affect ECM time?
Yes. VPN adds delay for encryption and generally lengthens the route: typical increase is 20-80 ms, and with a remote server — 150 ms or more. Additionally, MTU is reduced, causing packet fragmentation. If a VPN is needed, choose a geographically close server, use UDP instead of TCP, and manually adjust MTU for the tunnel.
What to do if high ECM time is only on HD channels of a specific package?
This indicates not a configuration issue with OScam, but a specific CAID or provider: frequent key changes, overloaded source, or limitations on the reader's side are possible. Check the logs to see which specific reader responds to this CAID, check its average time in webif, and if necessary, firmly bind the CAID to a faster reader through caid= and ident= in oscam.server.
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.