### 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 += "
    "; } 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 ) ```