Hyperion tries mDNS name resolution despite disabled in OS

  • Hello all,

    I am running Hyperion on a network whose origins date back to when mDNS was not specified. One of the common practices at that time was to have the internal domain end in .local. Renaming the internal domain today is not possible (looking at you MS Exchange).

    With Hyperion 2.0.12 I had no problems. However, after updating to 2.0.15, the DNS name of my WLED instance can no longer be resolved.

    In Debian it is relatively easy to set the behavior using the configuration file /etc/nsswitch.conf to resolve DNS names ending in .local via the regular DNS server.

    However, the latest version of Hyperion does not seem to respect this setting and tries to resolve .local DNS names on its own via mDNS, bypassing the operating system.

    Resolved mDNS hostname [wled-xyz.abc.local] timed out

    Is there any way to leave name resolution in Hyperion completely up to the underlying operating system again?

    • Best Answer
    • Official Post


    The mDNS library used in Hyperion is not only for resolving hostnames, but is about resolving mDNS services which results in IP-addressed and sometimes additional information like port for the service.

    Therefore, you cannot just disable mDNS for resolution. For WLED it would work, as it does not publish port configurable.
    To disable the current behaviour would require changes within Hyperion, which I would be hesitant just doing for a scenario because a network is used which origins back to when mDNS was out.

    To circumvent the problem, why do not create a hostname alias in the OS for your devices or configure static IP-addresses in Hyperion?

  • Thank you very much for your detailed answer.

    I was not aware until now that mDNS in Hyperion is also used for other purposes besides basic name resolution. With this it is also completely understandable that you don't want to make any fundamental changes just to support my probably quite rare legacy environment.

    Of course it is always a fallback option to work with DHCP reservations and thus pseudo-static IP addresses or DNS aliases. It just unfortunately further increases the maintenance overhead, which is why I was hoping for a simple solution directly in Hyperion.

    On Github I have seen that the use of mDNS is determined by the identifier ENABLE_MDNS at the crucial points for name resolution. Would Hyperion work if I recompile it without ENABLE_MDNS defined?

    • Official Post

    Would Hyperion work if I recompile it without ENABLE_MDNS defined?


    Yes. Hyperion would work, if you build it disabling ENABLE_MDNS.
    It should in most scenarios fall back to ssdp discovery, if supported by devices.
    Otherwise you need to configure devices without discovery...

    Only caveat, it might be that you cannot easily configure ports for forwarding.
    I do not remember where we left it...

  • FelR

    Selected a post as the best answer.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!