Local service process not connecting to igmpproxy

Very short summary:
I'm looking for help to get a service on my router to connect to an IPTV multicast address like a LAN client would. TVHeadend from a LAN client comes in via br-lan and triggers igmpproxy, that works. But when running it on the router, it tries to connect via eth0 where it doesn't work. Instead the service prints the error message:

Wed Oct  1 20:45:49 2025 daemon.err tvheadend[5861]: iptv: rytecDE_Basic - ARTE HD in MagentaTV-rytecDE - cannot find ip address for interface eth0 [e=Address not available]

The service works on the router with a double NAT scenario where the router itself is a LAN client on eth0 but not when the router connects to the ISP directly via PPPoE and a VDSL modem.

Thanks in advance and feel free to interrogate me :slight_smile:

Long story and configs:
I am trying to run TVHeadend on my main router to stream IPTV (Magenta TV by German Telekom). igmpproxy works fine but I'm having trouble getting TVHeadend to work ON the router itself to receive multicast. It does work fine from LAN clients (right now, a Raspberry Pi connected via ethernet).

I believe the problem is that when run locally, TVHeadend doesn't use LAN (or br-lan?) to connect to the multicast IP address and therefor igmpproxy doesn't pick it up.

What I've achieved so far:

  • PPPoE VDSL connection works (VDSL tagging disabled on the modem)
  • igmpproxy works for LAN clients
  • TVHeadend running on LAN clients can subscribe to IPTV streams

What isn't working:

  • Getting TVHeadend running on the router itself to subscribe to a multicast address.

Most likely cause of the problem:

  • TVHeadend tries to subscribe via eth0 but can't, because igmpproxy isn't listening there.

Relevant error message by TVHeadend (nothing happens in igmpproxy logs when this appears):

Wed Oct  1 20:45:49 2025 daemon.err tvheadend[5861]: iptv: rytecDE_Basic - ARTE HD in MagentaTV-rytecDE - cannot find ip address for interface eth0 [e=Address not available]

What I've tried to fix it:

  • My main aim was trying to get TVHeadend to subscribe multicast via LAN so igmpproxy takes over
  • Configure tvheadend server to bind to LAN IP (192.168.3.1)
  • Configure tvheadend to bind to 0.0.0.0
  • disable IPv6 for both the WAN interface and TVHeadend (re-enabled now)
  • Manually adding routing rules (my understanding isn't deep enough yet so I can't really say what I did).
  • Reading several wiki articles and forum posts about igmpproxy, tvheadend, magenta tv, etc. (none had this specific issue, it was either about nothing working or about performance issues).
  • Staring at the TVHeadend source code file that produces the error tvheadend/src/udp.c

Config files:

tvheadend
#config tvheadend service
#	option nosyslog '0'
#	option use_temp_epgdb '0'
#	option config_path '/etc/tvheadend'

config tvheadend server
	option ipv6 '0'
	# If bindaddr is not set, it will default to LAN IP address (uci get network.lan.ipaddr).
	# To bind all interfaces, set it to "0.0.0.0".
	option bindaddr '192.168.3.1'
#	option http_port '9981'
#	option http_root '/tvheadend'
#	option htsp_port '9982'
#	option htsp_port2 '9983'
#	option xspf '0'
#	option noacl '0'
network
config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fdeb:ac30:8a2e::/48'
	option packet_steering '1'

config device
	option name 'br-lan'
	option type 'bridge'
	option igmp_snooping '1'
	list ports 'eth1'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '192.168.3.1'
	option netmask '255.255.255.0'
	option ip6assign '60'
	list dns '1.1.1.1'

config dsl 'dsl'
	option tone 'av'
	option ds_snr_offset '0'
	option annex 'b'


config interface 'wan'
	option proto 'pppoe'
	option device 'eth0.7'
	option force_link '1'
	option defaultroute '1'
	option username '***@t-online.de'
	option password '***'
	option ipv6 'auto'

config interface 'wan6'
	option device 'eth0'
	option proto 'dhcpv6'

#### below this line likely unrelated Wireguard and local-only subnet for IoT

config interface 'wgBlue0'
	option proto 'wireguard'
	option private_key '*****'
	option listen_port '51820'
	list addresses '192.168.99.1/24'
	list addresses 'fd00:99::1/64'

config wireguard_wgBlue0 'wgclient'
	option public_key '*****'
	option preshared_key '*****'
	list allowed_ips '192.168.99.2/32'
	list allowed_ips 'fd00:99::2/128'
	option disabled '1'

config device
	option type 'bridge'
	option name 'br-zerolan'
	option bridge_empty '1'

config wireguard_wgBlue0
	option description 'TravelRouter'
	option public_key '*****'
	option preshared_key '*****'
	list allowed_ips '192.168.99.172'

config wireguard_wgBlue0
	option public_key '*****'
	option private_key '*****'
	option preshared_key '*****'
	option description 'Phone B'
	list allowed_ips '192.168.99.89'
	option route_allowed_ips '1'
	option persistent_keepalive '25'

config wireguard_wgBlue0
	option public_key '*****'
	option private_key '*****'
	option preshared_key '*****'
	option description 'Phone A'
	list allowed_ips '192.168.99.118'
	option route_allowed_ips '1'
	option persistent_keepalive '25'

config wireguard_wgBlue0
	option description 'zwoelfie'
	option public_key '*****'
	option private_key '*****'
	option preshared_key '*****'
	option persistent_keepalive '25'
	list allowed_ips '192.168.99.12'

config device 'iot_dev'
	option type 'bridge'
	option name 'br-iot'

config interface 'iot'
	option proto 'static'
	option device 'br-iot'
	option ipaddr '192.168.4.1/24'
igmpproxy
config igmpproxy
	#option verbose '3'
	option quickleave '1'

config phyint
	option network 'wan'
	option zone 'wan'
	option direction 'upstream'
        list altnet 87.128.0.0/11
        list altnet 224.0.0.0/4
        list altnet 193.158.0.0/15
        list altnet 239.35.0.0/16

config phyint
	option network 'lan'
	option zone 'lan'
	option direction 'downstream'
	option altnet '192.168.3.0/24'
Output of ip route
default via *removed* dev pppoe-wan proto static 
*removed* dev pppoe-wan proto kernel scope link src *removed* 
192.168.3.0/24 dev br-lan proto kernel scope link src 192.168.3.1 
192.168.99.0/24 dev wgBlue0 proto kernel scope link src 192.168.99.1 
192.168.99.89 dev wgBlue0 proto static scope link 
192.168.99.118 dev wgBlue0 proto static scope link 

I've posted a TVH-specific request for help in the TVHeadend forums, as well and linked that post to this post, so here we go vice-versa:

https://tvheadend.org/d/9257-configure-local-tvheadend-process-to-subscribe-over-local-igmpproxy-instance

I found the answer that I needed over the TVHeadend forum (see link above).
I was simply unable to find the right setting on my own until Flole there pointed me towards the configuration of the individual Muxes.

How to edit the Mux interface:

I had assumed that everything that applies to the individuall muxes must already be present in the network settings so I just overlooked it.

For others with the same problem:

Go to "Configuration -> DVB Inputs -> Muxes",
select all muxes imported from the "IPTV Automatic Network" that you've set up previously (if you see no muxes, then do that first)
hit "Edit",
choose the right interface from the Interface Drop-Down in the "Advanced" section and make sure to check the box next to it
set "Scan status in the same section to "PENDING"
Save
2 Likes

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.