Multicast i.c.m. Merlin 3006
-----EDIT----
Script KPNTV aangepast zodat watchdog functie niet elke 2 min de tv stream onderbreekt.
Normaal gesproken zou de onetime modus volstaan (enkel vlak na opstarten van de router), maar als je mcpd ook door andere scripts wordt aangesproken heb je wellicht de watchdog modus nodig.
-------------------------------------------------------------------------------------------------------------------------------
Beste mede tweakers,
Ik ben eigenlijk nooit actief op het forum, maar wilde toch even mijn ervaring delen met jullie wat betreft het werkend krijgen van multicast op mijn aimesh setup met twee Asus RT-AX88U Pro routers, zonder tussenkomst van de KPN router.
Ik ben na een uitstapje naar Odido weer terug bij KPN. Voorheen werkte alles als ik de handleiding volgde, dus verwachtte nu ook geen problemen. Maar ik kreeg multicast niet werkend, ook al volgde ik de handleiding.
Na meerdere keren een harde reset, alles weer opnieuw installeren ben ik gaan kijken via ssh terminal gaan kijken wat er nu eigenlijk gebeurde en ontdekte dat mcpd twee keer gestart werd. 1x keer door de firmware, 1x door wan0-connected.
De opdracht killall mcpd werkte niet. Het enige verschil met een jaar geleden is dat ik nu Merlin firmware 3006.102.4 gebruik en niet meer de 388.X versie.
Mijn oplossing is uiteindelijk het volgende:
Script wan0-connected aangepast en het gedeelte voor mcpd eruit gehaald.
Script services-start aangepast met de code:
code:
1
2
| # Run custom KPNTV script located at /jffs/scripts
/jffs/scripts/KPNTV & |
dit start het script genaamd KPNTV op de achtergrond.
Script KPNTV gemaakt en geplaatst in /jffs/scripts/ met de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
| #!/bin/sh
# ==========================================================================
# KPNTV: Enforce custom mcpd startup for KPN IPTV (Asuswrt-Merlin)
#
# USAGE:
# ./KPNTV → Uses the default mode (set below)
# ./KPNTV watchdog → Force watchdog mode (every 2 min)
# ./KPNTV onetime → Run once after 180s delay
#
# CONFIGURATION:
# Uncomment ONLY ONE of the lines below to select the default mode:
# ==========================================================================
#RUN_MODE_SELECTION="watchdog"
RUN_MODE_SELECTION="onetime"
# --------------------------------------------------------------------------
# Validate selection and allow command-line override
# --------------------------------------------------------------------------
case "$RUN_MODE_SELECTION" in
"watchdog"|"onetime")
RUN_MODE="$RUN_MODE_SELECTION"
;;
"")
logger -t KPNTV "ERROR: No run mode selected. Please uncomment one RUN_MODE_SELECTION line."
exit 1
;;
*)
logger -t KPNTV "ERROR: Invalid RUN_MODE_SELECTION value: $RUN_MODE_SELECTION"
exit 1
;;
es
# Allow CLI override (e.g., ./KPNTV watchdog)
[ -n "$1" ] && RUN_MODE="$1"
# --------------------------------------------------------------------------
# Function: Stop all mcpd processes if needed and restart clean one
# --------------------------------------------------------------------------
clean_restart_mcpd() {
good_pid=$(ps | grep "[m]cpd /jffs/configs/mcpd.conf" | awk '{print $1}')
all_pids=$(ps | grep "[m]cpd" | awk '{print $1}')
pid_count=$(echo "$all_pids" | wc -l)
if [ "$pid_count" -gt 1 ]; then
logger -t KPNTV "Multiple mcpd processes detected — restarting clean"
for pid in $all_pids; do
logger -t KPNTV "Killing mcpd PID $pid"
kill -9 "$pid"
sleep 1
done
logger -t KPNTV "Starting clean mcpd with /jffs/configs/mcpd.conf"
/bin/mcpd /jffs/configs/mcpd.conf
elif [ -z "$good_pid" ]; then
logger -t KPNTV "No valid mcpd running — starting clean"
/bin/mcpd /jffs/configs/mcpd.conf
else
logger -t KPNTV "Correct mcpd already running (PID $good_pid), no action needed"
fi
}
# --------------------------------------------------------------------------
# Mode: Watchdog — runs every 2 minutes forever
# --------------------------------------------------------------------------
if [ "$RUN_MODE" = "watchdog" ]; then
logger -t KPNTV "Watchdog mode enabled: checking every 2 minutes"
while true; do
sleep 120
clean_restart_mcpd
done &
# --------------------------------------------------------------------------
# Mode: Onetime — run once after boot delay
# --------------------------------------------------------------------------
elif [ "$RUN_MODE" = "onetime" ]; then
logger -t KPNTV "One-time mode enabled: waiting 180 seconds"
sleep 180
clean_restart_mcpd
# --------------------------------------------------------------------------
# Fallback: invalid mode
# --------------------------------------------------------------------------
else
logger -t KPNTV "ERROR: Unknown run mode: $RUN_MODE — valid options: watchdog, onetime"
exit 1
fi |
Wat het script KPNTV doet?
* Het wacht op de achtergrond 2 minuten om zeker te zijn dat de router klaar is met opstarten.
* Vervolgens kijkt het welke instances er van mcpd draaien en onthoudt het PID nummer
* Gebruikt kill -9 (inplaats van killall) om mcpd te stoppen
* Start mcpd op met als argument /jffs/configs/mcpd.conf
Bovenaan het script kun je kiezen of je wilt dat het KPNTV script op de achtergrond blijft monitoren (watchdog), of dat het eenmalig (onetime) tijdens het opstarten van de router wordt uitgevoerd.
Via cli kun je het script ook opstarten met argument /watchdog of /onetime om tussen de twee te kiezen. Indien er geen argument gebruikt wordt, dan start het op met de default gekozen in het script bestand.
Dit kies je door de juiste regel te commenten in het script.
code:
1
2
3
4
5
6
| # --------------------------------------------------------------------------
#RUN_MODE="watchdog" # Option 1: Continuous watchdog loop
RUN_MODE="onetime" # Option 2: One-time delayed execution
# -------------------------------------------------------------------------- |
Resultaat is dat nu wel de automatisch door de firmware gestartte service mcpd wordt afgesloten en er dus niet twee conflicterende versies van mcpd tegelijkertijd draaien.
Ik hoop dat jullie er iets aan hebben en anders was het een leuk projectje voor mijn eigen ontwikkeling
[
Voor 32% gewijzigd door
RaccoonNL op 13-07-2025 19:08
]