Skip to content

DNS-SD#

The AES70 standard defines DNS-SD as one possible option for device discovery. The announcement for devices should use service types _oca._tcp, _oca._udp and _ocaws._tcp for TCP, UDP and WebSocket endpoints, respectively.

In addition to the standard TXT records (txtvers=1, protovers=<X> and optionally path=<Y>) we recommend to also add the TXT records

  • manufacturer to describe the device manufacturer and
  • model to describe the product model.

Please consult the AES70 standards documents for detail about the required TXT records.

In addition to that it can be useful to add additional TXT records which a controller can use to derive more information about a device before connecting to it via AES70. This may include things such as the device serial number, software versions, etc.

This library does not itself contain a DNS-SD implementation, instead it is recommended to use the standard implementations available on each target platform.

Here are examples for mDNS implementations for service discovery:

  • lwIP contains an MDNS/DNS-SD implementation which can be used for embedded platforms.
  • Most Linux distributions include the Avahi daemon.
  • Windows has a native API called DnsServiceRegister defined in windns.h header for registering services.
  • MacOS has an API defined in dns_sd.h.
  • Espressif idf contains a mdns service which is based on the lwIP implementation.
  • Android comes with Network Service Discovery (NDS) APIs which can be used to find DNS-SD announcements.

The above list is not exhaustive and there are in addition to that many open source libraries in different languages available online:

  • The project mdnscpp is a cross-platform library which supports integratin with libuv and could be used to discover AES70 devices.