### Setup Contribution Environment
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Installs pre-commit hooks and clang-format for code style enforcement. Ensure pip3 and apt-get are available.
```bash
pip3 install pre-commit
pre-commit install
apt-get install clang-format
```
--------------------------------
### Enable and Start mcproxy Service
Source: https://github.com/catalinii/minisatip/wiki/SAT-IP-with-VLAN's
Commands to enable the mcproxy service to start on boot and then start it immediately.
```shell
/etc/init.d/mcproxy enable
/etc/init.d/mcproxy start
```
--------------------------------
### Get Bandwidth Counters
Source: https://context7.com/catalinii/minisatip/llms.txt
Retrieve lightweight bandwidth and performance counters from the minisatip instance.
```bash
curl -s http://192.168.1.100:8080/bandwidth.json
# {"bw":8540,"tbw":1234,"ns_read":45,"reads":50000,"writes":49980,"fwrites":2,"tt":3}
```
--------------------------------
### Start Minisatip with Common Options
Source: https://context7.com/catalinii/minisatip/llms.txt
Basic commands to run Minisatip in the foreground or as a daemon. Options include specifying RTSP/HTTP ports, simulating adapter counts, and binding to specific network interfaces. Expected log output on successful startup is also provided.
```bash
# Run in foreground, auto-detect all DVB adapters
minisatip -f
```
```bash
# Run as daemon (background), log to file
minisatip
# Default log: /tmp/minisatip.log
```
```bash
# Specify RTSP port (default 554 requires root; use >1024 without root)
minisatip -f -y 5554 -x 8080
```
```bash
# Simulate adapter counts (1 DVB-S2, 2 DVB-T2, 0 DVB-C = auto-detect)
minisatip -f -a 1:2:0
```
```bash
# Bind to specific interface / addresses
minisatip -f -V 192.168.1.10 -U 192.168.1.10
```
```bash
# Force IPv4-only sockets on IPv6 stack
minisatip -f -4
```
```bash
# Status page (browser)
# http://MINISATIP_HOST:8080/
```
```bash
# Expected log output on successful start:
# minisatip version v2.0.71~6d5db68, compiled on Feb 18 2026 18:25:16
# Found DVB adapter 0: /dev/dvb/adapter0 ...
# RTSP server started on port 554
# HTTP server started on port 8080
```
--------------------------------
### Set Application Socket Write Buffer
Source: https://context7.com/catalinii/minisatip/llms.txt
Set the application socket's write buffer size. This example sets it to 20 MB.
```bash
minisatip -f -B 20
```
--------------------------------
### DiSEqC and LNB Configuration
Source: https://context7.com/catalinii/minisatip/llms.txt
Configure DiSEqC switches, LNB parameters, and unicable/JESS setups for satellite reception. This allows fine-grained control over satellite dish and LNB settings.
```bash
# DiSEqC 1.0 switch: adapter 0, 1 committed, 0 uncommitted command
minisatip -f -d 0:1-0
```
```bash
# DiSEqC 1.1 (uncommitted switch): adapter 0, 1 committed, 2 uncommitted
minisatip -f -d 0:1-2
```
```bash
# Fast switch (voltage/tone only, no DiSEqC): prefix committed with *
minisatip -f -d "0:*1-0"
```
```bash
# DiSEqC timing (ms): before_cmd-after_cmd-after_repeated-after_switch-after_burst-after_tone
minisatip -f -q "0:15-54-15-15-15-0"
```
```bash
# Universal LNB (all adapters): low=9750, high=10600, switch=11700 MHz
minisatip -f -L "*:9750-10600-11700"
```
```bash
# C-band LNB (5150 MHz)
minisatip -f -L "*:5150-0-0"
```
```bash
# Unicable (EN50494): adapter 2, slot 0, frequency 1284 MHz
minisatip -f -u "2:0-1284"
```
```bash
# JESS (EN50607): adapter 2, slot 0, frequency 1340 MHz, PIN 1234
minisatip -f -j "2:0-1340-1234"
```
```bash
# FBC receiver: adapters 2-7 are slaves of adapter 0 (master)
# All share physical input A
minisatip -f -S "2-7:0"
```
```bash
# Two inputs: adapters 2-4 → input A (master 0), adapters 5-7 → input B (master 1)
minisatip -f -S "2-4:0,5-7:1"
```
```bash
# Virtual DiSEqC mapping: satellite positions 0,1 → adapter 0; positions 2,3 → adapter 1
minisatip -f -A "0-1:0:0,2-3:1:0"
```
--------------------------------
### Get Device Description XML
Source: https://context7.com/catalinii/minisatip/llms.txt
Fetch the SAT>IP device description in XML format, which is based on UPnP standards.
```bash
curl -s http://192.168.1.100:8080/desc.xml
#
#
#
# minisatip
# DVBS2-4,DVBT2-2
#
#
```
--------------------------------
### Set Client Socket Write Buffer
Source: https://context7.com/catalinii/minisatip/llms.txt
Configure the write buffer size for client sockets. This example sets it to 512 KB. If not specified, the kernel's default is used.
```bash
minisatip -f --client-send-buffer 512
```
--------------------------------
### Simulate DVB Adapters
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Use the -a option to simulate a specific number of DVB-S2, DVB-T2, and DVB-C adapters. Set to 0 to auto-detect. Example: -a 1:2:3 simulates 1 DVB-S2, 2 DVB-T2, and 3 DVB-C devices.
```bash
./minisatip -a 1:2:3
```
--------------------------------
### Minisatip Systemd Service Configuration
Source: https://context7.com/catalinii/minisatip/llms.txt
Configuration for deploying Minisatip as a systemd service. Includes service unit file and optional arguments file. Commands to enable and start the service are also provided.
```ini
# /etc/systemd/system/minisatip.service
[Unit]
Description=minisatip - a multi-threaded SAT>IP server
After=network-online.target
[Service]
Type=simple
AmbientCapabilities=CAP_NET_BIND_SERVICE # allows binding port 554 without root
User=minisatip
Group=minisatip
WorkingDirectory=/var/lib/minisatip
EnvironmentFile=-/etc/minisatip.conf # optional args file
ExecStart=/usr/bin/minisatip -f $SERVER_ARGS
[Install]
WantedBy=multi-user.target
```
```bash
# /etc/minisatip.conf
SERVER_ARGS="-y 554 -x 8080 -a 0:0:0"
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable --now minisatip
sudo systemctl status minisatip
# ● minisatip.service - minisatip - a multi-threaded SAT>IP server
# Active: active (running) since ...
```
--------------------------------
### Set SAT>IP Client Receive Buffer
Source: https://context7.com/catalinii/minisatip/llms.txt
Specify the receive buffer size for SAT>IP clients when using the `-s` option. This example sets it to 350 KB.
```bash
minisatip -f -s 192.168.1.2 --satip-receive-buffer 350
```
--------------------------------
### Configure mcproxy for SAT-IP
Source: https://github.com/catalinii/minisatip/wiki/SAT-IP-with-VLAN's
Installs mcproxy and configures it for SAT-IP instances using UCI commands. Ensure to replace 'eth0.20' and 'br-lan' with your actual network interface names.
```shell
okpg install mcproxy
rm -f /etc/config/mcproxy
touch /etc/config/mcproxy
```
```shell
uci set mcproxy.mcproxy="mcproxy"
```
```shell
uci set mcproxy.mcproxy.respawn="1"
```
```shell
uci set mcproxy.mcproxy.protocol="IGMPv3"
```
```shell
uci set mcproxy.satip="instance"
```
```shell
uci set mcproxy.satip.name="satip"
```
```shell
uci add_list mcproxy.satip.upstream=„eth0.20“
```
```shell
uci add_list mcproxy.satip.downstream=„br-lan“
```
```shell
uci commit mcproxy
```
--------------------------------
### Enable Specific Adapters
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Use -e to enable only specified adapters. Format: list of adapters separated by commas or hyphens. Example: -e 0-2,5,7 enables adapters 0, 1, 2, 5, and 7.
```bash
./minisatip -e 0-2,5,7
```
--------------------------------
### Set Write Time Thresholds
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Configure write time thresholds for UDP and TCP with -H. Example: -H 5:50 sets UDP threshold to 5ms and TCP to 50ms.
```bash
./minisatip -H 5:50
```
--------------------------------
### Configure avahi-daemon for VLANs
Source: https://github.com/catalinii/minisatip/wiki/SAT-IP-with-VLAN's
Configuration for avahi-daemon to enable reflector and specify network interfaces for mDNS. Ensure 'br-lan' and 'eth0.20' match your network setup.
```config
allow-interfaces=br-lan,eth0.20
enable-reflector=yes
```
--------------------------------
### Specify Delivery System
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Override adapter detection with -Y by specifying the delivery system. Format: ADAPTER:DELIVERY_SYSTEM. Example: --delsys 0:dvbt specifies adapter 0 as DVBT.
```bash
./minisatip --delsys 0:dvbt
```
--------------------------------
### Set Client Socket Write Buffer
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Configure the socket write buffer for client connections in KB using --client-send-buffer. A value of 0 uses the kernel default. Example: --client-send-buffer 100 sets the buffer to 100KB.
```bash
./minisatip --client-send-buffer 100
```
--------------------------------
### Configure Diseqc Commands
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Use -d to specify Diseqc commands for adapters. The format is ADAPTER:COMMITTED-UNCOMMITTED. Example: -d 0:1-0 sends 1 committed and 0 uncommitted packets to adapter 0. An asterisk (*) applies to all adapters.
```bash
./minisatip -d 0:1-0
```
--------------------------------
### Get Adapter Icon
Source: https://github.com/catalinii/minisatip/blob/master/html/status.html
Generates an image tag for an adapter icon based on its type and system. Uses system name for DVB adapters and a generic CI icon for CI adapters.
```javascript
function getAdapterIcon(ad_type, ad_allsys, ad_sys, available_systems) {
if (ad_type < 4) {
// Normal DVB adapters
var csys = '';
if (ad_sys == 0) {
// If the adapter is not active, use the first advertised system
parts = ad_allsys.split(',');
if (parts.length > 0) {
csys = parts[0];
}
} else {
// Otherwise use the currently active system
csys = available_systems[ad_sys];
}
return '
';
} else {
// Standalone CI adapters
return '
';
}
}
```
--------------------------------
### Set App Socket Write Buffer
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Control the application socket write buffer size in MB with the -B option. Example: -B 10 sets the buffer to 10MB.
```bash
./minisatip -B 10
```
--------------------------------
### Access DVB-S2 TV Stream (Kika HD)
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Example URL for a Kika HD FTA program on Astra 19.2E. Replace MINISATIP_HOST with your server's IP or hostname. Note the specific parameters for DVB-S2.
```url
http://MINISATIP_HOST:554/?src=1&freq=11347&pol=v&ro=0.35&msys=dvbs2&mtype=8psk&plts=on&sr=22000&fec=23&pids=0,17,18,6600,6610,6620,6630
```
--------------------------------
### Stream DVB Channels over HTTP with curl
Source: https://context7.com/catalinii/minisatip/llms.txt
Examples of using `curl` to stream MPEG-TS data from Minisatip's HTTP endpoint to media players like `ffplay`, `vlc`, or `mpv`. Demonstrates streaming for DVB-S, DVB-S2, DVB-T2, DVB-C, and ATSC.
```bash
# DVB-S: Hotbird 13E — radio stream
# Parameters: msys, freq (kHz), pol (h/v/r/l), sr (sym/s), pids
curl -o - "http://192.168.1.100:8080/?msys=dvbs&freq=11623&pol=v&sr=27500&pids=0,10750,254" \
| ffplay -
```
```bash
# DVB-S2: Astra 19.2E — KIKA HD (8PSK)
curl -o - "http://192.168.1.100:8080/?msys=dvbs2&freq=11347&pol=v&ro=0.35&mtype=8psk&plts=on&sr=22000&fec=23&pids=0,17,18,6600,6610,6620,6630" \
| vlc -
```
```bash
# DVB-T2 channel
curl -o - "http://192.168.1.100:8080/?msys=dvbt2&freq=490000&bw=8&pids=0,100,200,300" \
| mpv -
```
```bash
# DVB-C channel
curl -o - "http://192.168.1.100:8080/?msys=dvbc&freq=394000&sr=6900&mtype=256qam&pids=all" \
| vlc -
```
```bash
# ATSC channel
curl -o - "http://192.168.1.100:8080/?msys=atsc&freq=177000&mtype=8vsb&pids=all" \
| ffplay -
```
--------------------------------
### Set Buffer Sizes
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Configure adapter and kernel DVB buffer sizes using -b. Both values must be multiples of 188. Example: -b 18800:18988 sets adapter buffer to 18800 Bytes and kernel DVB buffer to 18988 Bytes.
```bash
./minisatip -b 18800:18988
```
--------------------------------
### Initialize UI and Fetch Server State
Source: https://github.com/catalinii/minisatip/blob/master/html/satfinder.html
Sets up the UI by handling mute button toggling and fetching initial server state (version, build date) from 'state.json'. Logs an error if the data cannot be read.
```javascript
var sys = ["", "dvbc", "dvbcb", "dvbt", "dss", "dvbs", "dvbs2", "dvbh", "isdbt", "isdbs", "isdbc", "atsc", "atscmh", "dmbth", "cmmb", "dab", "dvbt2", "turbo", "dvbcc", "dvbc2"];
var mtype = ["&mtype=qpsk", "&mtype=16qam", "&mtype=32qam", "&mtype=64qam", "&mtype=128qam", "&mtype=256qam", "", // auto "&mtype=8vsb", "&mtype=16vsb", "&mtype=8psk", "&mtype=16apsk", "&mtype=32apsk", "&mtype=dqpsk", "&mtype=qam\_4\_nr", "&mtype=64apsk", "&mtype=128apsk", "&mtype=256apsk"];
$(document).ready(function() {
$('.mute_button').click(function() {
$(this).toggleClass("unmuted");
});
$.getJSON("state.json", function(state) {
var sysvar = "
Minisatip satfinder";
sysvar += "Minisatip Version: " + state['version'] + " -- Build date/time: " + state['datetime_compile'] + ""
sysvar += ""
$(".serverdata").html(sysvar);
}).fail(function() {
console.log("Can not read data");
});
});
```
--------------------------------
### CAM / CI Hardware Support Build and Run
Source: https://context7.com/catalinii/minisatip/llms.txt
Build minisatip with DVBCA support for physical CI modules and run it to enable CAM functionality. Options include enabling multiple channels per CAM.
```bash
# Build with CA support (requires libssl-dev)
cmake .. -DDVBCA=ON
make -j$(nproc)
```
```bash
# Run with CI on adapter 0 — CAM handles 1 channel by default
minisatip -f
```
```bash
# Enable multiple channels per CAM (pack 2 PMTs in one CAPMT)
# adapter 0: max 1 channel, doubled to 2 by packing → "*1"
minisatip -f -c "0:*1"
```
--------------------------------
### Get CA State
Source: https://github.com/catalinii/minisatip/blob/master/html/status.html
Converts a numerical CA state to a human-readable string. Returns 'Inactive', 'Active', or 'Initialized'.
```javascript
function getCaState(ca_state) {
switch (ca_state) {
case 2:
return 'Initialized';
case 1:
return 'Active';
case 0:
default:
return 'Inactive';
}
}
```
--------------------------------
### Minisatip Help Output
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Displays the general help information for minisatip, listing available options and their basic syntax. This is the primary reference for understanding command-line arguments.
```bash
minisatip version v2.0.71~6d5db68, compiled on Feb 18 2026 18:25:16, with s2api version: 050C
./minisatip [-[fgtzE]] [-a x:y:z] [-b X:Y] [-B X] [-H X:Y] [-d A:C-U ] [-D device_id] [-e X-Y,Z] [-i prio]
-[uj] A1:S1-F1[-PIN]] [-P port] [-l module1[,module2]] [-v module1[,module2]]
-o [~]oscam_host:dvbapi_port[,offset] [-p public_host] [-r remote_rtp_host] [-R document_root] [-s [*][DELSYS:][FE_ID@][source_ip/]host[:port]
[-u A1:S1-F1[-PIN]] [-L A1:low-high-switch] [-w http_server[:port]]
-x http_port] [-X xml_path] [-y rtsp_port] [-I name_service]
```
--------------------------------
### Get Debug Information
Source: https://github.com/catalinii/minisatip/blob/master/html/status.html
Formats debugging data into an HTML string. Includes bandwidth, total bandwidth, read/write operations, and failed writes if available.
```javascript
function getDebug(data) {
var s = "BW " + data.bw + "KB/s | " +
"Total BW " + data.tbw + "MiB | " +
"ns/read " + data.ns_read + " | " +
"reads " + data.reads + " | " +
"writes " + data.writes + " | ";
if (data.fwrites) s += "failed writes " + data.fwrites + " | ";
s += "tt " + data.tt + "ms";
return "" + s + "
";
}
```
--------------------------------
### Compile Minisatip
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Standard compilation steps using CMake and Make. Ensure you are in the build directory.
```bash
mkdir build
cd build
cmake ..
make -j4
```
--------------------------------
### Enable Full Debugging for Adapter and Stream Modules
Source: https://context7.com/catalinii/minisatip/llms.txt
Enable full debug logging for the adapter and stream modules. This provides detailed information about tuner and data stream handling.
```bash
minisatip -f -v adapter,stream
```
--------------------------------
### Access DVB-S Radio Stream
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Example URL to listen to a radio stream on Hotbird 13E. Replace MINISATIP_HOST with your server's IP or hostname.
```url
http://MINISATIP_HOST:8080/?msys=dvbs&freq=11623&pol=v&sr=27500&pids=0,10750,254
```
--------------------------------
### Specify Application Name
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Use -I to provide an alternative Service Name for the application.
```bash
./minisatip -I MySatIPService
```
--------------------------------
### Build Debian Package
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Creates a Debian package for distribution. Use this command in the root of the project.
```bash
dpkg-buildpackage -b -us -uc
```
--------------------------------
### Specify Device ID
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Use -D to specify a device ID, useful when multiple SAT>IP servers are on the network. Example: -D 4.
```bash
./minisatip -D 4
```
--------------------------------
### Access DVB-S Radio Stream (Astra)
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Example URL to listen to a radio stream on Astra 19.2E. Replace MINISATIP_HOST with your server's IP or hostname.
```url
http://MINISATIP_HOST:8080/?msys=dvbs&freq=12266&pol=h&sr=27500&pids=0,851
```
--------------------------------
### Run Minisatip Docker Container
Source: https://context7.com/catalinii/minisatip/llms.txt
Deploy minisatip using the official linuxserver/minisatip Docker image. This command includes essential configurations like network mode, privileged access, user/group IDs, timezone, runtime options, device passthrough, and volume mapping.
```bash
docker run -d \
--name=minisatip \
--net=host \
--privileged \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/Berlin \
-e RUN_OPTS="-a 0:0:0 -o 192.168.1.200:9000" \
--device /dev/dvb:/dev/dvb \
-v /path/to/config:/config \
--restart unless-stopped \
lscr.io/linuxserver/minisatip:latest
```
--------------------------------
### Compile Application
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Builds the application after setting up the compilation environment. This command is typically run after CMake configuration.
```bash
make
```
--------------------------------
### Create and Configure Individual Test Executables
Source: https://github.com/catalinii/minisatip/blob/master/CMakeLists.txt
Iterates through each test source file to create a corresponding executable. Each executable is compiled with specific include directories, compile definitions, compile options (including sanitizers), and linked against the test libraries.
```cmake
foreach(TEST_SOURCE ${TEST_SOURCES})
get_filename_component(TEST_NAME ${TEST_SOURCE} NAME_WE)
add_executable(${TEST_NAME} ${TEST_SOURCE} $)
target_include_directories(${TEST_NAME} PRIVATE
${CMAKE_SOURCE_DIR}/src
${CMAKE_BINARY_DIR}
)
target_compile_definitions(${TEST_NAME} PRIVATE
ENIGMA
TESTING
DDCI_TEST
DISABLE_STACKTRACE
DISABLE_NETCVCLIENT
VERSION="test"
)
if(NOT DVBCSA_LIBRARY)
target_compile_definitions(${TEST_NAME} PRIVATE DISABLE_DVBCSA)
endif()
target_compile_options(${TEST_NAME} PRIVATE
-fsanitize=address
-fno-omit-frame-pointer
-fsanitize=leak
)
target_link_options(${TEST_NAME} PRIVATE
-fsanitize=address
-fsanitize=leak
)
target_link_libraries(${TEST_NAME} PRIVATE ${TEST_LIBS})
add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME})
endforeach()
```
--------------------------------
### Download w_scan_cpp Binaries
Source: https://github.com/catalinii/minisatip/wiki/SAT-IP-channel-scan
Download and extract pre-compiled binaries for w_scan_cpp to use the tool without compiling.
```bash
cd /usr/src
wget https://github.com/wirbel-at-vdr-portal/w_scan_cpp-binaries/raw/master/w_scan_cpp-20220105-binary-x86_64.tar.bz2
tar xf w_scan_cpp-20220105-binary-x86_64.tar.bz2
```
--------------------------------
### Build Minisatip with CMake
Source: https://context7.com/catalinii/minisatip/llms.txt
Standard CMake build commands for Minisatip. Supports auto-detection of optional libraries or explicit configuration via CMake flags. Cross-compilation and Debian package building are also shown.
```bash
# Clone and build (Release mode, auto-detect dvbcsa/dvbca/srt)
git clone https://github.com/catalinii/minisatip
cd minisatip
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install # installs to /usr/bin/minisatip
```
```bash
# Build with explicit options
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DDVBCSA=ON \
-DDVBCA=ON \
-DSRT=ON \
-DBUILD_TESTING=ON # Compile unit tests
make -j$(nproc)
```
```bash
# Cross-compile for ARM (static)
cmake .. \
-DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ \
-DSTATIC=ON \
-DNETCVCLIENT=OFF
make -j4
```
```bash
# Build Debian package
dpkg-buildpackage -b -us -uc
# Output: ../minisatip_2.0.x_amd64.deb
```
--------------------------------
### Compile w_scan_cpp
Source: https://github.com/catalinii/minisatip/wiki/SAT-IP-channel-scan
Clone the w_scan_cpp repository and make the build script executable to compile the tool.
```bash
git clone https://github.com/wirbel-at-vdr-portal/w_scan_cpp-binaries
chmod +x build-w_scan_cpp.sh
./build-w_scan_cpp.sh
```
--------------------------------
### Build with DDCI Support
Source: https://context7.com/catalinii/minisatip/llms.txt
Configure the build process to enable DDCI support on Linux systems. This is often automatic when DVBCA is enabled.
```bash
cmake .. -DDVBCA=ON
```
--------------------------------
### Set Application and Kernel DVB Buffers
Source: https://context7.com/catalinii/minisatip/llms.txt
Configure the application adapter buffer and the kernel DVB buffer sizes. Both values should be multiples of 188 bytes.
```bash
minisatip -f -b 376000:5775360
```
--------------------------------
### Increase Module Debug Level
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Use -v for increased debug level (more verbose than -l) for specified modules. Example: -v http,pmt enables higher debug output for http and pmt modules.
```bash
./minisatip -v http,pmt
```
--------------------------------
### Increase Module Verbosity
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Use -l to specify modules for increased verbosity. Logging goes to stdout (foreground) or /tmp/minisatip.log (daemon). Example: -l http,pmt increases verbosity for http and pmt modules.
```bash
./minisatip -l http,pmt
```
--------------------------------
### Cross-Compile Minisatip (Static)
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Cross-compilation for a target platform like OpenWrt using specific GCC executables. Adjust compiler and flags as needed.
```bash
cmake -B build . -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ -DNETCVCLIENT=0
cd build
```
--------------------------------
### Display Build Information
Source: https://github.com/catalinii/minisatip/blob/master/CMakeLists.txt
Prints the current version string and compiler flags used during the CMake configuration process to the console.
```cmake
message(STATUS "Version: ${VERSION_STRING}, FLAGS: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS_RELEASE}")
```
--------------------------------
### Run in Foreground
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Use -f to run minisatip in the foreground. Otherwise, it runs as a daemon in the background.
```bash
./minisatip -f
```
--------------------------------
### Emulate PIDs=all
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Use -k to emulate 'pids=all' when hardware does not support it. This is enabled by default on Enigma boxes.
```bash
./minisatip -k
```
--------------------------------
### Minisatip Command-Line Options
Source: https://context7.com/catalinii/minisatip/llms.txt
Command-line options for configuring minisatip, including overriding CAID, disabling CI+ mode, and setting CI PINs. Ensure correct adapter and CI module compatibility.
```bash
minisatip -f -c "0:1-604"
```
```bash
minisatip -f -C "0,2-3"
```
```bash
minisatip -f -3 "0:1234,2-3:4567"
```
--------------------------------
### Open Playlist in VLC
Source: https://context7.com/catalinii/minisatip/llms.txt
Open the generated channels.xspf playlist file in VLC media player to access the scanned SAT>IP channels.
```bash
vlc channels.xspf
```
--------------------------------
### Manual RTSP Session with curl
Source: https://context7.com/catalinii/minisatip/llms.txt
Illustrates a manual RTSP session using curl to interact with the minisatip server. This is useful for understanding the protocol flow and debugging.
```bash
# 1. OPTIONS
curl -X OPTIONS rtsp://192.168.1.100:554/ \
-H "CSeq: 1" \
-H "User-Agent: TestClient"
# < Public: OPTIONS, DESCRIBE, SETUP, PLAY, TEARDOWN
```
```bash
# 2. DESCRIBE — retrieve SDP
curl -X DESCRIBE "rtsp://192.168.1.100:554/?msys=dvbs2&freq=11347&pol=v&sr=22000&pids=0,17,18" \
-H "CSeq: 2" \
-H "Accept: application/sdp"
# < Content-Type: application/sdp
# < m=video 0 RTP/AVP 33
# < a=control:streamid=0
```
--------------------------------
### Prepare Main Sources for Test Executables
Source: https://github.com/catalinii/minisatip/blob/master/CMakeLists.txt
Reuses the main project sources and adjusts them for use in test executables by removing specific files and adding others relevant to testing.
```cmake
set(TEST_MAIN_SOURCES ${MINISATIP_SOURCES})
list(REMOVE_ITEM TEST_MAIN_SOURCES src/netceiver.cpp)
list(APPEND TEST_MAIN_SOURCES src/ca.cpp src/aes.cpp src/ddci.cpp)
if(DVBCSA_LIBRARY)
list(APPEND TEST_MAIN_SOURCES src/csa.cpp)
endif()
list(REMOVE_DUPLICATES TEST_MAIN_SOURCES)
```
--------------------------------
### mcproxy Configuration File
Source: https://github.com/catalinii/minisatip/wiki/SAT-IP-with-VLAN's
Manual configuration file for mcproxy, defining the protocol and instance mapping between downstream and upstream interfaces. Adjust 'br-lan' and 'eth0.20' as needed.
```config
protocol IGMPv3;
pinstance satip: „br-lan“ ==> „eth0.20“;
```
--------------------------------
### Use Demux Device for Reading TS
Source: https://context7.com/catalinii/minisatip/llms.txt
Configure minisatip to use a demux device instead of the default DVR device for reading Transport Stream (TS) data. Options include dvr, demux, dvr+PSI from demux, and demux+PSI from demux.
```bash
minisatip -f -1 1
```
--------------------------------
### Set Cache Directory
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Specify a custom directory for application cache using -z. The directory will be created if it does not exist. Default is /var/cache/minisatip.
```bash
./minisatip -z /path/to/cache
```
--------------------------------
### Initialize and Update Status Page
Source: https://github.com/catalinii/minisatip/blob/master/html/status.html
Sets up the document title, initializes event handlers for pagination controls, status toggling, and statistics display. It also fetches initial data and reloads the page.
```javascript
h = setInterval(getData, pvalues[pcurrent] * 1000); } $(document).ready(function () { $("#table").html("Loading..."); document.title = "Minisatip on " + document.location.hostname; $("#pdec").click(function () { if (pcurrent > 0) { pcurrent = pcurrent - 1; reloadPage(); } }); $("#pinc").click(function () { if (pcurrent <= 4) { pcurrent = pcurrent + 1; reloadPage(); } }); $("#pstatus").click(function () { if ($("#pstatus").html() == "PAUSE") { clearInterval(prefresh); $("#pstatus").html("START"); $("#pintervall").addClass("strike"); } else { reloadPage(); $("#pstatus").html("PAUSE"); $("#pintervall").removeClass("strike"); } }); $("#stats").click(function () { stats ^= 1; $("#stats").html("Stats " + (stats ? "OFF" : "ON")); if (stats) { updateStats(); statsrefresh = setInterval(updateStats, 500); } else { clearInterval(statsrefresh); $("#statsarea").html(""); } }); getData(); reloadPage(); });
```
--------------------------------
### Render Adapter Stream Details
Source: https://github.com/catalinii/minisatip/blob/master/html/status.html
Renders details for each stream associated with an adapter, including host, port, protocol, user agent, and PIDs. Also generates VLC stream URLs based on adapter type.
```javascript
myTable += "" + formatCommaSeparated(state['ad_channel'][i]) + " ";
}
var st_pmt = state['ad_pmt'][i];
if (st_pmt != "") myTable += "PMT: " + formatCommaSeparated(st_pmt) + " ";
}
if (ad_type == 4) {
const pids_str = formatPids(state['ad_pids'][i])
if (pids_str !== null) {
myTable += "Pids: " + formatPids(state['ad_pids'][i]) + " ";
}
}
else {
for (var j = 0; j < max_streams; j++) {
if (state['st_enabled'][j] == 1 && state['st_adapter'][j] == i) {
var st_rh = state['st_rhost'][j] + ":" + state['st_rport'][j] + " (" + state['st_proto'][j] + ")";
if (state['ad_master'][i] == j) st_rh = "" + st_rh + "";
if (state['st_play'][j] == 0) st_rh = "" + st_rh + "";
myTable += " " + st_rh + " ";
if (state['st_useragent'][j] != "") myTable += "Client: " + state['st_useragent'][j] + " ";
}
if (state['st_enabled'][j] == 1 && state['st_adapter'][j] == i) {
var st_p = state['st_pids'][j];
if (state['ad_master'][i] == j) st_p = "" + st_p + "";
if (state['st_play'][j] == 0) st_p = "" + st_p + "";
const pids_str = formatPids(st_p)
if (pids_str !== null) {
myTable += "Pids: " + formatPids(st_p) + " ";
}
var hostArray = window.location.host.split(':');
params = ""
switch (ad_sys) {
case 1:
params += "&sr=" + state['ad_sr'][i]
break
case 3:
params += "&bw=" + state['ad_bw'][i] + "&gi=" + state['ad_gi'][i]
break
case 6:
if (state['ad_plp'][i] > 0) {
params += "&isi=" + state['ad_plp'][i] + "&plsc=" + state['ad_plsc'][i] + "&plsm=gold"
}
case 5:
{
params += "&src=" + state['ad_pos'][i] + "&sr=" + state['ad_sr'][i] + "&pol=" + pol[state['ad_pol'][i]].replace('(', '').replace(')', '')
break
}
case 19:
{
params += "&plp=" + state['ad_plp'][i] + "&c2tft=" + pol[state['ad_c2tft'][i]].replace('(', '').replace(')', '') + "&ds=" + pol[state['ad_ds'][i]].replace('(', '').replace(')', '') + "&sr=" + state['ad_sr'][i]
break;
}
case 16:
{
params += "&plp=" + state['ad_plp'][i] + "&t2id=" + pol[state['ad_t2id'][i]].replace('(', '').replace(')', '')
}
}
}
}
}
myTable += " | ";
```
--------------------------------
### Check Minisatip Docker Container Logs
Source: https://context7.com/catalinii/minisatip/llms.txt
View the logs of the running minisatip Docker container to monitor its status and troubleshoot any issues.
```bash
docker logs minisatip
```
--------------------------------
### Minisatip as SAT>IP Client
Source: https://context7.com/catalinii/minisatip/llms.txt
Configure minisatip to act as a SAT>IP client, proxying streams from remote SAT>IP servers. Multiple servers with different delivery systems can be connected.
```bash
# Connect to one remote DVB-S2 SAT>IP server
minisatip -f -s 192.168.1.2
```
```bash
# Connect to multiple servers with different delivery systems
minisatip -f \
-s dvbs2:192.168.1.2:554 \
-s dvbt:192.168.1.3:554 \
-s dvbc:192.168.1.4:554
```
```bash
# Use TCP instead of UDP for SAT>IP client data
minisatip -f -s 192.168.1.2 -O
```
```bash
# Fetch server description XML to auto-configure adapters
minisatip -f --satip-xml http://192.168.1.2:8080/desc.xml
```
```bash
# Specify frontend ID and source IP (for AVM FRITZ! Repeater / multi-homed host)
# fe=2 on the server, client connects from 192.168.1.100
minisatip -f -s "dvbt:2@192.168.1.100/192.168.1.2:554"
```
```bash
# Replace pids=all with pids=0-20 for servers that don't support it
minisatip -f -s "~192.168.1.2"
```
--------------------------------
### Configure Diseqc Timing
Source: https://github.com/catalinii/minisatip/blob/master/README.md
Adjust Diseqc timing parameters with -q in milliseconds: ADAPTER:BEFORE_CMD-AFTER_CMD-AFTER_REPEATED_CMD-AFTER_SWITCH-AFTER_BURST-AFTER_TONE. Default is 15-54-15-15-15-0.
```bash
./minisatip -q 15:54:15:15:15:0
```
--------------------------------
### Adapter Lifecycle Management (C++)
Source: https://context7.com/catalinii/minisatip/llms.txt
Internal C++ API functions for managing adapter lifecycles, including allocation, association with streams, tuning, and PID management. Ensure adapter availability and correct transponder parameters.
```cpp
#include "adapter.h"
#include "stream.h"
#include "dvb.h"
// --- Adapter lifecycle ---
// Allocate a new adapter slot
adapter *ad = adapter_alloc();
```
```cpp
transponder tp = {};
tp.sys = SYS_DVBS2;
tp.freq = 11347000; // Hz
tp.pol = 1; // V
tp.sr = 22000000; // sym/s
tp.fec = FEC_2_3;
tp.mtype = PSK_8;
int aid = get_free_adapter(&tp);
// aid >= 0 on success, -1 if no free tuner
```
```cpp
// Associate stream sid=0 with adapter aid
set_adapter_for_stream(/*sid=*/0, aid);
```
```cpp
// Tune the adapter
tune(aid, /*sid=*/0);
```
```cpp
// Add PIDs to stream (comma-separated string)
mark_pids_add(/*sid=*/0, aid, (char *)"0,17,18,6600,6610");
```
```cpp
// Add a single PID
mark_pid_add(/*sid=*/0, aid, 6600);
```
```cpp
// Flush PID changes to the kernel DMX device
update_pids(aid);
```
```cpp
// --- Signal quality ---
adapter *a0 = get_adapter(0);
if (a0) {
// strength: 0-255, snr: 0-255, db: value * 10 in dB (MAX_DB=65535 = not available)
printf("STR=%d%% SNR=%d%% BER=%u\n",
(int)(a0->strength * 100 / 255),
(int)(a0->snr * 100 / 255),
a0->ber);
}
```
```cpp
// --- Close adapter stream ---
close_adapter_for_stream(/*sid=*/0, aid, /*close_stream=*/1);
```
```cpp
// --- Delivery system helpers ---
const char *sys_name = get_delsys(SYS_DVBS2); // "dvbs2"
const char *fec_name = get_fec(FEC_2_3); // "23"
const char *mod_name = get_modulation(PSK_8); // "8psk"
```
```cpp
// --- Parse transponder parameters from a URL query string ---
transponder tp2 = {};
detect_dvb_parameters(
(char *)"msys=dvbs2&freq=11347&pol=v&sr=22000&fec=23&mtype=8psk&pids=0,17,18",
&tp2);
// tp2.sys == SYS_DVBS2, tp2.freq == 11347000, ...
```
--------------------------------
### Log to Syslog
Source: https://context7.com/catalinii/minisatip/llms.txt
Direct minisatip log messages to the system's syslog service for centralized logging.
```bash
minisatip -g
```
--------------------------------
### Expected Playlist Excerpt
Source: https://context7.com/catalinii/minisatip/llms.txt
An excerpt from the generated channels.xspf file, showing the format of a SAT>IP stream entry for VLC.
```xml
-
rtsp://192.168.1.100:554/?msys=DVBT2&freq=490000&bw=8&pids=0,100,200
ARD Das Erste HD
```
--------------------------------
### Log to a Specific File
Source: https://context7.com/catalinii/minisatip/llms.txt
Configure minisatip to log messages to a specified file when running as a daemon. The default log file is /tmp/minisatip.log.
```bash
minisatip -F /var/log/minisatip.log
```
--------------------------------
### Scan Channels for minisatip (Germany)
Source: https://github.com/catalinii/minisatip/wiki/SAT-IP-channel-scan
Use w_scan_cpp to scan for channels in Germany, specifically for use with minisatip.
```bash
./w_scan_cpp -fc -cDE --satip
```
--------------------------------
### Scan Channels for VLC (Spain)
Source: https://github.com/catalinii/minisatip/wiki/SAT-IP-channel-scan
Use w_scan_cpp to search for channels in Spain and generate a channel list in VLC's XSPF format.
```bash
./w_scan_cpp --country ES --output-VLC-satip > channels.xspf
```
--------------------------------
### Specify Log File
Source: https://github.com/catalinii/minisatip/blob/master/README.md
When running in the background (without -f), use -F to specify a log file. Default is /tmp/minisatip.log.
```bash
./minisatip -F /var/log/minisatip.log
```
--------------------------------
### Define Test Source Files
Source: https://github.com/catalinii/minisatip/blob/master/CMakeLists.txt
Specifies the list of C++ source files used for unit testing the minisatip project.
```cmake
set(TEST_SOURCES
tests/test_adapter.cpp
tests/test_opts.cpp
tests/test_ca.cpp
tests/test_pmt.cpp
tests/test_ddci.cpp
tests/test_dvb.cpp
tests/test_minisatip.cpp
tests/test_utils.cpp
tests/test_satipc.cpp
tests/test_socketworks.cpp
tests/utils/test_utils_dir.cpp
)
```