oscam.server(5)

๐Ÿ“ฆ version 1.20_svn20201119, in alpine 3.24

๐Ÿ’– NAME ๐Ÿ’–

oscam.server โ€” reader configuration file for OSCam. This is the oscam.server(5) manual page, bestie, and it's giving "all the reader parameters, all the time." ๐Ÿ’…

๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

The server configuration file for OSCam contains reader parameters. sections in oscam.server are recurring (more than one reader possible). At least one [reader] section is required.

๐Ÿซถ Tiny but important vibe check: at least one [reader] section is required, periodt.

๐Ÿ’… DESCRIPTIONS ๐Ÿ’…

๐ŸŽ€ The [reader] section ๐ŸŽ€

Each reader is its own little main-character block, and here's every parameter you can put in it. No skipping, bestie. โœจ

  • label = name โ€” the name for the reader. Required, no cap. ๐Ÿซถ
  • enable = 0|1 โ€” 0 = deactivate reader, default:1. So if you want it off, say 0. ๐Ÿ™ˆ
  • description = text โ€” description of reader, default:none.
  • protocol = reader protocol โ€” reader protocol, required. The options are:
    • camd35|cs357x
    • cccam
    • cs378x
    • constcw
    • gbox
    • ghttp
    • internal
    • mouse
    • mp35
    • newcamd|newcamd525
    • newcamd524
    • pcsc
    • radegast
    • scam
    • sc8in1
    • serial
    • smargo
    • smartreader
  • device โ€” define local or remote reader. The exact shape is:
device = [<readertype>;]serial:serialnum|bus:device|
         <device|device:slot>|
         <ip|hostname>,<port>[,<lport>]|
         <ip|hostname>,<gboxpport>|
         <ip|hostname>,<scamport>|
         pcsc|
         <0|1>>|
         constantcw

Here's what all those bits mean:

  • readertype: set reader type
    • SR: Smartreader+ (default)
    • Infinity: Infinity USB
    • TripleP1: Smargo Triple Reader port 1
    • TripleP2: Smargo Triple Reader port 2
    • TripleP3: Smargo Triple Reader port 3
  • bus:device: bus name and device name of the Smartreader+ or Infinity USB (get the names with lsusb 'Bus' and 'Device')
  • serialnum: serial number of reader of the Smartreader+ or Infinity USB
  • device: device name
  • device:slot: device name and slot number sc8in1 [1-8] (only one SC8In1 reader supported)
  • ip|hostname: IP address or host name
  • port: TCP/IP port
  • lport: remapping to local TCP/IP port
  • gboxpport: UDP port for remote gbox peer
  • PCSC: number of PCSC reader, starting with 0
  • 0|1: for Coolstream HD-1 STB only: select reader 0 or reader 1
  • constantcw: constant CW file name

Constant CW file format, and yes there are two flavors:

  • standard format
CAID:Provider ID:Service ID:PMT ID:ECM PID::key (16 Bytes
seperated by spaces)
example: 1234:123456:1234:2345:3456::00 01 02 03 04 05 06 07 08 09
0A 0B 0C 0D 0E 0F
  • extended OScam format
CAID:Provider ID:Service ID:PMT ID:ECM PID:Video PID:key (16 Bytes
seperated by spaces)
example: 1234:123456:1234:2345:3456:7890:00 01 02 03 04 05 06 07
08 09 0A 0B 0C 0D 0E 0F
  • detect = [!]CD|[!]DSR|[!]CTS|[!]RING|[!]NONE|[!]gpio[1-7] โ€” status detect of card, NONE = no detection, ! = inverse, default:CD.
  • cardmhz = mhz โ€” set standard SC frequency in units of 10 kHz, for Irdeto SC set to 600 mhz, for Dreambox DM800 / DM8000 set to 2700 mhz, for Dreambox DM7025 set to 8300 mhz, for older PowerPC Dreambox STBs set to 3150 mhz, refer to OVERCLOCKING, default:357.
  • mhz = frequency โ€” set reader frequency in units of 10 kHz, if mhz > cardmhz you are in overclocking mode. For Smargo readers and Dreambox internal readers frequency will be set by ATR if autospeed is set to 1, default:357.
  • autospeed = 0|1 โ€” 1 = sets mhz according to ATR. Currently only used for smartreader, Smargo and Dreambox internal protocol, other readers will be adapted to use this parameter as well. If you want to overclock your card set it to 0, default:1.
  • deprecated = 0|1 โ€” First the SC will be initialized in normal mode. If it fails, the SC will be automatically reverted to deprecated mode, so that the SC speed will not be changed and the communication will remain on normal ATR speed of 9600 baud.
    • 1 = use deprecated SC mode only, default:0
  • mode = mode โ€” set card init mode for AzBox internal reader, default:none.
  • smargopatch = 0|1 โ€” 1 = enable workaround for Smartreader+ reader until native mode works, default:0.
  • sc8in1_dtrrts_patch = 0|1 โ€” 1 = enable fix for SC8in1/MCR DTR/RTS kernel bug, default:0.
  • use_gpio = 0|1 โ€” 1 = use GPIO to init the reader. This needs to be set on WRT54G router, default:0.
  • ins2e06 = payload โ€” add check control for pin payload (4 hex bytes) for NDS Videoguard 2 SCs, valid for physical readers only, default:none.
  • ins7e = payload โ€” add 26 hex-bytes payload for NDS Videoguard 2 SCs, valid for physical readers only, default:none.
  • ins7e11 = TA1 byte โ€” set TA1 byte for NDS Videoguard 2 SCs, valid for physical readers only, default:none.
  • fix07 = 0|1 โ€” 1=enable 0x07 fix for NDS Videoguard 2 SCs, valid for physical readers only, default:1.
  • force_irdeto = 0|1 โ€” 1 = force Irdeto SC mode even if RSA key is set for Irdeto tunnled Nagravion SC, default:0.
  • nagra_read = 0|1|2 โ€” read Nagravison records (on NCMED SCs only):
    • 0 = disabled (default)
    • 1 = read all records with expired rights
    • 2 = read records with valid rights only
  • rsakey = RSA key โ€” RSA key for Nagravision/Tiger SCs, CAM key data for Irdeto SCs, Conax SCs, default:none.
  • deskey = DES key โ€” DES key for Viaccess SCs post-processing, default:none.
  • boxkey = box key โ€” box key for Nagravision SCs / CAM key for Irdeto SCs.
  • pincode = pincode โ€” pincode for Conax, Cryptoworks and Viaccess SCs, default:none.
  • fix9993 = 0|1 โ€” 1 = enable fix for 9993 error with CAID 0919 Videoguard SCs, default:0.
  • readtiers = 0|1|2 โ€” method to get tiers of NDS Videoguard SCs:
    • 0 = disabled (default)
    • 1 = ins70 method
    • 2 = ins76 method
  • boxid = NDS box ID โ€” NDS receiver box id.
  • ndsversion = 0|1|12|2 โ€” set NDS Videoguard version:
    • 0 = autodetection (default)
    • 1 = NDS Videoguard 1
    • 12 = NDS Videoguard 1+
    • 2 = NDS Videoguard 2
  • aeskeys โ€” multiple 16 bytes AES keys for Viaccess SCs (the used postprocessing AES key is specified through the D2 nano of the ECM). Signature:
aeskeys = CAID #0@provid:AES key #0 CAID #0[,AES key #1 CAID
#0],...[;CAID #1@provid:AES key #0 CAID #1[,AES key #1 CAID #1],...]...

Special AES keys:

  • 00 = do not return any CW, no AES key specified
  • FF = return CW received from the S, no AES key specified

Example:

aeskeys = 0500@012345:000102030405060708090a0b0c0d0e0f;0500@543210:000102030405060708090a0b0c0d0e0f,0,0f0e0d0c0b0a090807060504030201
  • key = DES key โ€” key for newcamd remote reader encryption.
  • user = name โ€” user for remote reader.
  • password = password โ€” password for remote reader.
  • services = [!]services[,[!]<services>]... โ€” reader [de]assignment to service group, default:none.
  • caid โ€” define and mapping of CAIDs for reader, default:all CAIDs with mask FFFF. Signature:
caid = <CAID>[&<mask>][:<target CAID>][,<CAID>[&<mask>][:target
<CAID>]]...

Examples:

example: caid = 0100
         caid = 0200&ffee:0300
         caid = 0400&ff00:0500,0600
         caid = 0702,0722
         caid = 0702&ffdf (shortcut for the example above)
  • ident = <CAID>:<provid>[,provid]...[;<CAID>:<provid>[,provid]...]... โ€” set CAID and SC specific ident for reader.

Example: ident = 0100:123456,234567;0200:345678,456789

  • class = [!]class[,[!]class]... โ€” set SC specific class in hex for reader.

Example: class = 01,02,!1b,!2b

  • chid = CAID:ChID โ€” set SC specific ChIDs for reader, default:none.

Example: chid = 0100:12

  • group = 1..64[,1..64]... โ€” reader assingment to groups, default:none, required.
  • audisabled = 0|1 โ€” 1 = exclude reader from auto AU, default:0.
  • auprovid = provider ID โ€” set provider ID to use the right reader for auto AU.

Example: auprovid = 123456

  • disableserverfilter = 0|1 โ€” 1 = ignore caid and provid settings of reader due faulty clients, default:0.
  • inactivitytimeout = seconds โ€” inactivity timeout for all TCP based remote readers, -1 = reconnect on network failure for newcamd, even in idle, default:0.
  • reconnecttimeout = seconds โ€” reconnect if missing answers from a remote reader, default:30.
  • reconnectdelay = milli-seconds โ€” set maximum TCP connection block delay, default:60000.
  • connectoninit = 0|1 โ€” 1 = allow newcamd connections to be established on startup although there isn't a request yet, default:0.
  • keepalive = 0|1 โ€” 1 = allow cs378x TCP socket to be always connected, default:0. Always on if cacheex reader type.
  • fallback = 0|1 โ€” 1 = define reader as fallback, standard and fallback reader must have the same group, default:0.
  • fallback_percaid โ€” use reader as fallback for defined CAIDs only, two-digit wildcard CAIDs are possible, fallback_percaid overrules fallback, default:none. Signature:
fallback_percaid =
<CAID>[:<ident>[,ident]]...[;<CAID>[:<ident>[,ident]]...]....

Example: fallback_percaid = 1234:234567;89;10:345678

  • emmcache = usecache,rewrite,logging โ€” set EMM cache of local reader:
    • usecache = 0|1||2
      • 0 = EMM caching disabeld (default)
      • 1 = enable EMM caching and save EMMs to file after stopping OSCam
      • 2 = enable EMM caching, don't save EMMs to file after stopping OSCam
    • rewrite = determines how often one and the same EMM is written, default:0
    • logging = EMM logging mask:
      • 0 = EMM logging disabled (default)
      • 1 = logging EMM errors
      • 2 = logging written EMMs
      • 4 = logging skipped EMMs
      • 8 = logging blocked EMMs
      • 16 = logging disabled AU

Example: emmcache = 1,3,2

  • cacheex = 0|1|2|3 โ€” set cache exchange mode:
    • 0: disable cache exchange mode (default)
    • 1: enable cache exchange pull mode
    • 2: enable cache exchange push mode for camd 3.5x / 3.57x and CCcam protocol
    • 3: enable reverse cache exchange push mode for camd 3.5x / 3.57x and CCcam protocol

Identical cache exchange modes must be set on local OSCam server and remote OSCam user asccount.

๐Ÿง ๐Ÿ’€ Please consider memory consumption.
  • cacheex_maxhop = hops โ€” define maximum hops for cache exchange, default=10.
  • csp_ecm_filter = [caid][&mask][@provid][$servid],n โ€” cache exchange incoming ECM filter setting (mode 2 only) for Cardservproxy, default:none.
  • cacheex_drop_csp = 0|1 โ€” 1 = drop incoming Cardservproxy cache (mode 2 only), detection is zero ecmd5, default:0. ๐Ÿ“
  • cacheex_allow_request = 0|1 โ€” 1 = let those incoming ECM requests in (mode 2). Default: 1. Bestie it's literally just a yes/no door policy ๐Ÿ’…
  • cacheex_allow_filter = 0|1 โ€” 1 = allow the cache exchange filter โ€” and heads up, this one only applies to cache exchange mode 2. Default: 1.
  • cacheex_block_fakecws = 0|1 โ€” 1 = turn on fake DCW blocking (again, cache exchange mode 2 only, bestie). Where do the fake DCWs come from? They get pulled from oscam.fakecws. Default: 0. Not me blocking the fakes ๐Ÿ’€
  • ecmwhitelist = [CAID[@provid]:]length[,length]...[;[CAID[@provid]:]length[,length]...]... โ€” sets the valid ECM length per CAID and provid, in hex. Default: none, and provid defaults to 000000.

Examples, slay:

ecmwhitelist = 10,20,0a,0b
ecmwhitelist = 0100:10,20;0200@123456:0a,4b
Real talk: in normal operation mode you do not need this parameter. It's giving "optional but iconic".
  • ecmheaderwhitelist = [CAID[@provid]:]header[,header]...[;[CAID[@provid]:]header[,header]...]... โ€” sets the valid ECM header per CAID and provid, in hex. Yes the original spells it "vaild", no we're not fixing it, that's our typo era ๐ŸŽ€ Default: none, provid default 000000.
  • ratelimitecm = count โ€” how many different SIDs in ECMs are allowed within one interval. Default: 0.
  • ecmnotfoundlimit = count โ€” how many ECMs can come back with a "not found" answer before the reader gets restarted. 0 = no limit, bestie, go off forever. Default: 0.
  • resetcycle = count โ€” how many ECMs go by until an SC reset happens. 0 = disabled. Physical readers only, ok? Default: 0.
  • ratelimitseconds = seconds โ€” the interval for the rate limit. Default: 0.
  • ecmunique = 0|1 โ€” 1 = check for a matching ECM hash inside the ratelimit slot. Default: 0.
  • srvidholdseconds = seconds โ€” how long to keep the service ID in the ratelimit slot; during that window the ecmunique check is disabled. Default: 0.
  • cooldown = delay,duration โ€” defines cooldown, and it's a two-parter:
    • delay: delay in seconds during which the reader is allowed to make more ECM requests than what ecmratelimit defines. Default: none.
    • duration: how many seconds the reader needs to cooldown. Default: none.
Heads up bestie: ratelimitecm and ratelimitseconds are required for this one to work. No cap. ๐Ÿซถ
  • blocknano = nano[,nano]...|all โ€” list of EMM-nanos to block (in hex, no 0x please) or literally all EMM-nanos. Physical readers only. Default: none.
blocknano = 45,93,7a,ff
blocknano = all
  • blockemm-u = 0|1 โ€” 1 = block unique EMMs. Default: 0.
  • blockemm-s = 0|1 โ€” 1 = block shared EMMs. Default: 0.
  • blockemm-g = 0|1 โ€” 1 = block global EMMs. Default: 0.
  • blockemm-unknown = 0|1 โ€” 1 = block unknown types of EMMs. Default: 0.
  • blockemm-bylen = [length range,length range]... โ€” blocks all types of EMMs by length. Default: none.
blockemm-bylen = 1-10,11-
  • read_old_classes = 0|1 (Viaccess SCs only) โ€” 0 = read only active entitlements, 1 = read all entitlements. Default is 1, so yeah, all of them by default โœจ
  • saveemm-u = 0|1 โ€” 1 = save unique EMMs to the log file. Default: 0.
  • saveemm-s = 0|1 โ€” 1 = save shared EMMs to the log file. Default: 0.
  • saveemm-g = 0|1 โ€” 1 = save global EMMs to the log file. Default: 0.
  • saveemm-unknown = 0|1 โ€” 1 = save unknown types of EMMs to the log file. Default: 0.
  • savenano = nano[,nano]....|all (obsolete! ๐Ÿชฆ) โ€” list of EMM-nanos to save (hex, no 0x) or all EMM-nanos. Only valid for physical readers. Default: none.
savenano = 45,93,7a,ff
savenano = all
  • readnano = [path]filename โ€” writes a file (usually a copy of whatever savenano saved) to your smartcard. If you don't give a path, it looks for the file in the configuration directory. Physical readers only. Default: none.
readnano = write.emm
readnano = /var/oscam/write.emm
  • dropbadcws = 0|1 โ€” 1 = reject bad CWs โ€” it sends "not found" instead of the bad CWs. Default: 0.
  • disablecrccws = 0|1 โ€” 1 = disable CRC for CW. Default: 0.
Okay so listen ๐Ÿ‘‘ โ€” in normal operation mode you do not need this parameter, and it is incompatible with the DVB standard. Not a vibe to use it casually, bestie.
  • ident = <CAID1>[:<ident1>[,<ident2>]...][;<CAID2>[:<ident3>[,<ident4>]...]]... โ€” use this reader as local in the loadbalancer's reader selection. Default: none.
  • lb_whitelist_services = <services>,<services>... โ€” reader assignment to a service group for channels that may never be blocked by the loadbalancer to the reader. Default: none.
  • lb_weight = weight โ€” the higher the value, the higher the probability this reader gets picked in load balancing mode. Default: 100.

It's literally a divider for the average response time. Math queen behavior ๐Ÿงฎ

  • lb_force_fallback = 0|1 โ€” 1 = always set this reader as fallback for load balancing, no looking at the reader's statistics, no questions asked. Default: 0.
  • cccversion = <main version>.<version>.<sub version> โ€” sets the CCcam version. Default: none.
cccversion = 1.2.34
  • cccmaxhops = hops โ€” sets CCcam maximum SC distance hops. Default: 10.
-1 = disabled
 0 = remote local SCs only
 1 = remote local SCs and + 1 hop
 2 = remote local SCs and + 2 hops
and so on

After reading this, the SC hop gets incremented by one. Periodt.

  • ccchop = hop โ€” sets the hop for non-CCCam readers. Default: 0.
  • cccreshare = hop โ€” sets the reader's CCcam reshare hop. Default: 0.
-1 = reshare value off cccam in global config
 0 = resharing for direct peer only
 x = resharing for direct peer and share level x
  • cccwantemu = 0|1 โ€” 1 = also request to provide emu from the CCCam server. Default: 0.
  • ccckeepalive = 0|1 โ€” 1 = send keepalive messages to keep the connection to the remote CCCam server up. Default: 0. Keep that connection alive, bestie ๐Ÿ’–
  • cccreconnect = timeout โ€” reconnect again after an ECM request timeout, in milli-seconds. Default: 4000.
  • cccmindown = number โ€” filters out all readers with hops smaller than number. Default: 0.
  • gbox_reshare = level โ€” gbox reshare level of local cards. Default: 0.
  • gbox_max_distance = distance โ€” maximum distance for receiving gbox peer cards. Default: 2.
  • gbox_max_ecm_send = number โ€” maximum number of gbox peers ECMs get sent to. Default: 3.
  • use_ssl = 0|1 โ€” 1 = use SSL for the ghttp protocol. Default: 0.

๐Ÿ”ฅ OVERCLOCKING ๐Ÿ”ฅ

  • Dreambox and other internal readers

For Dreambox and other internal readers, the highest possible clockrate gets auto detected. The mhz parameter lets you override the values OSCam chose โ€” if it differs from 357 and 358 โ€” but usually you won't set any value for mhz at all. It's giving "trust the process" ๐ŸŒธ

For certain Dreamboxes (especially PPC clones), the default mhz parameter leads to slow ECM times and/or "not found" ECMs. By setting mhz to values like 200, 300, 400, ... 1600, you can find a value that works for your receiver and your card. And the plot twist? The higher the mhz value, the slower the ECM time (strange enough, fr fr).

If you pick a value too low, your card isn't recognized (no ATR or "card not supported" ๐Ÿ˜ญ). If you pick a value too high, you get slow ECM times. Our experience is that either no mhz line at all, or a line mhz = 1000 works best.

  • Phoenix / Smartmouse reader

Overclocking does not work with Windows and Mac OS X. ๐Ÿ’€ Set mhz equivalent to the frequency of the reader. OSCam can not set the frequency of the reader โ€” that part is on you, bestie.

  • Smargo Smartreader+

Use protocol = smargo for the FDDI kernel drivers (no libusb needed) or โ€” not recommended, btw โ€” use protocol = smartreader for OSCam's driver implementation based on libusb.

Set the reader frequency with the native Smargo Smartreader+ tool (srp_tools). If you don't set mhz and cardmhz, OSCam tries to set the baudrate automatically, according to the maximum speed indicated by the ATR. Overclocking is possible. Slay. โœจ

OSCam tries to set the baudrate automatically. A standard serial port has limited baudrate settings, so SC overclocking might not work. When you're using a serial reader, the best way for overclocking is connecting it to a FTDI based USB to serial port adapter. That's the move ๐Ÿซถ

If overclocking does not work, verify the effective baudrate in the logfile. If it deviates too much from the requested baudrate, the SC won't be recognized (no ATR) and the value for mhz should be adjusted again. The higher the baudrate, the more accurate the effective baudrate can be. Iconic little feedback loop, honestly.


๐Ÿฆ‹ CACHE EXCHANGE ๐Ÿฆ‹

  • pull mode (on request: cache exchange from remote to local OSCam)

ECM requests get forwarded to the remote cache exchange partner. If the CW could not be found in the cache of the remote exchange partner, a not found gets answered. If the CW could not be found in the cache of the remote exchange partner but a pending ECM request is open, the request gets re-initiated after the wait time defined in cacheexwaittime.

  • push mode (continuous: cache exchange from remote to local OSCam)

CWs from the remote cache exchange partner get forwarded to the local cache. Forwarding only works while the camd camd 3.5x / 3.57x or CCcam protocol connection between the local and remote OSCam has been established.

  • reverse push mode (continuous: cache exchange from local to remote OSCam)

CWs from the local cache get forwarded to the remote cache exchange partner. Forwarding only works while the camd camd 3.5x / 3.57x or CCcam protocol connection between the remote and local OSCam has been established. Main character energy, forwarding on your own terms ๐Ÿ’…

โœจ EXAMPLES โœจ

okay bestie, gather round the group chat ๐Ÿ’ฌ โ€” these are the example [reader] blocks, same order, same values, same energy, no cap. keep the details exact, periodt. ๐Ÿซถ

๐Ÿญ serial mouse compatible reader

a serial-mouse-compatible reader doing its iconic little thing.

[reader]
label    = myserialmousereader
detect   = cd
protocol = mouse
device   = /dev/ttyS1
group    = 1
caid     = 0100
services = myservice,!thisservice

๐Ÿ–ฑ๏ธ USB mouse compatible reader

the USB-mouse-compatible reader. slay.

[reader]
label    = myusbmousereader
detect   = cd
protocol = mouse
device   = /dev/ttyUSB0
aeskey   = 0102030405060708090a0b0c0d0e0f10
group    = 2
caid     = 0200

๐Ÿ“ก camd 3.78x reader

camd 3.78x reader with all the little details intact.

[reader]
label    = mycamd378xreader
protocol = cs378x
device   = 192.168.0.1,1234
user     = user1
password = password1
group    = 3

๐ŸŒท newcamd reader

newcamd reader, cute and classic.

[reader]
label    = mynewcamdreader
protocol = newcamd
key      = 0102030405060708091011121314
device   = 192.168.0.2,2345
user     = user2
password = password2
group    = 4

๐Ÿ’… CCcam reader

CCcam reader serving looks and exact values.

[reader]
label      = mycccamreader
protocol   = cccam
device     = 192.168.0.3,3456
user       = user3
password   = password3
group      = 5
caid       = 0300,0400,0500
cccversion = 1.2.3

๐ŸŽ€ PCSC reader

PCSC reader, right here, right now.

[reader]
label    = mypcscreader
protocol = pcsc
device   = 0
aeskey   = 0102030405060708090a0b0c0d0e0f10
group    = 6
caid     = 0600

๐Ÿ Smargo Smartreader+

Smargo Smartreader+ because obviously.

[reader]
label    = mysmartreader
protocol = smartreader
device   = 001:002
aeskey   = 0102030405060708090a0b0c0d0e0f10
group    = 7
caid     = 0700

๐Ÿงš internal reader

internal reader, main character energy.

[reader]
label    = myinternalreader
protocol = internal
device   = /dev/sci0
group    = 8
caid     = 0800

๐Ÿฆ‹ sc8in1 reader

sc8in1 reader, no notes.

[reader]
label    = mysc8in1reader
protocol = sc8in1
device   = /dev/ttyUSB0:1
group    = 9
caid     = 0900

๐Ÿ’œ constant CW

constant CW, keeping it constant.

[reader]
label    = myconstantcw
protocol = constcw
device   = /var/keys/constant.cw
group    = 10

๐ŸŒˆ gbox reader

gbox reader, final example, still iconic.

[reader]
label    = mygboxreader
protocol = gbox
device   = 192.168.0.4,45678,56789
user     = user4
password = password4
group    = 11
caid     = 1100

๐Ÿฆ‹ SEE ALSO ๐Ÿฆ‹

the whole little manpage family reunion ๐Ÿ’– โ€” go read these next, bestie: list_smargo(1), oscam(1), oscam.ac(5), oscam.cacheex(5), oscam.cert(5), oscam.conf(5), oscam.dvbapi(5), oscam.fakecws(5), oscam.guess(5), oscam.ird(5), oscam.provid(5), oscam.ratelimit(5), oscam.services(5), oscam.srvid(5), oscam.srvid2(5), oscam.tiers(5), oscam.user(5), oscam.whitelist(5).

thatโ€™s the whole oscam.server(5) page, bestie ๐Ÿ’–โœจ โ€” source/version + date footer vibes only, because no extra details were printed to copy. catch you in the next manpage ๐ŸŽ€๐Ÿซถ

๐Ÿ“ฆ where this page comes from