Feature #4151
TVHeadend, Docker, HDHomeRun, macOS: no UDP broadcast, manually configure HDHomeRun?
0%
Description
Docker on macOS does not support "--net=host" in a way that would be useful. The containers actually run inside a VM, and it is the VM's network "--net=host" exposes, not that of the actual physical host. This is a well-known limitation due to the implementation on macOS and a fix is not forthcoming.
If I understand correctly that causes HDHomeRun receivers not to be detected because the UDP broadcast will not work.
Would it be possible to instead manually provide the IP addresses of the HDHomeRun devices on the LAN, either by entering them in the UI or by providing a configuration file somewhere? I tried copying the configuration from an existing and working TVHeadend install, but that did not appear to carry over the HDHomeRun receiver info. That might allow this configuration to work in a bridged Docker network configuration.
Thanks!
History
Updated by Mono Polimorph almost 8 years ago
Hi,
Similar problem as commented in http://www.tvheadend.org/issues/4157
I recommend to add support for SAT>IP & HDHOMERUN for describing FIXED IP ADDRESSES.
Updated by Jaroslav Kysela almost 8 years ago
It's already resolved for the SAT>IP server in tvh (--satip_xml option).
Updated by Mono Polimorph almost 8 years ago
Hi Jaroslav,
Thank for your response in http://www.tvheadend.org/issues/4157
The function of (--satip_xml option) is great for the SAT>IP protocol.
However, I suggest to add a similar option for HDHOMERUNs, like "--hdhr_ip":
The discovery protocol of the HDHOMERUN uses UDP broadcasts to port 65001, and then the TCP port 65001 for the control plane.
(search for '#define HDHOMERUN_DISCOVER_UDP_PORT 65001' & '#define HDHOMERUN_CONTROL_TCP_PORT 65001' in "hdhomerun_pkt.h").
The problem is then the broadcast domain... the discovering doesn't work then in routed networks.
The solution is quite simple: the "--hdhr_ip" option indicates one IP where a HDHOMERUN is running and listening in the port tcp/65001. Don't care about if the device is active or not, so it's like when it restarts: you can't connect to the TCP port if the device is shutdown. So, you only need to add the IP (from the --hdhr_ip option) to the list of returned servers, as the library uses the IP address of the device to comunicate with it. Typically using the "libhdhomerun" you use the function hdhomerun_device_create_from_str() and this function can accept <device id> OR <device id>-<tuner index> OR <ip address>. Then, your entry point can be the IP address. See the API doc included in "hdhomerun_device.h".
I hope you like to implement it!
Updated by Norman C over 2 years ago
Hey folks, since there doesn't seem to be any chance to have Docker supporting multicast anytime soon, I think this is still the best chance to get HDHomeRun working insider a (non-host) docker container.
Has there been any update on the topic? I'm willing to give it a stab if the PL would be welcomed.