mdns – Multicast Domain Name Service

The mdns module provides basic support for multicast domain name services. Basic use provides hostname resolution under the .local TLD. This module also supports DNS Service Discovery that allows for discovering other hosts that provide a desired service.

Available on these boards
  • AITHinker ESP32-C3S_Kit
  • AITHinker ESP32-C3S_Kit_2M
  • ATMegaZero ESP32-S2
  • Adafruit Camera
  • Adafruit Feather ESP32 V2
  • Adafruit Feather ESP32-S2 TFT
  • Adafruit Feather ESP32-S3 TFT
  • Adafruit Feather ESP32S2
  • Adafruit Feather ESP32S3 4MB Flash 2MB PSRAM
  • Adafruit Feather ESP32S3 No PSRAM
  • Adafruit Feather HUZZAH32
  • Adafruit FunHouse
  • Adafruit MagTag
  • Adafruit Metro ESP32S2
  • Adafruit QT Py ESP32 PICO
  • Adafruit QT Py ESP32-S3 no psram
  • Adafruit QT Py ESP32C3
  • Adafruit QT Py ESP32S2
  • Artisense Reference Design RD00
  • BPI-Bit-S2
  • BPI-Leaf-S3
  • BastWiFi
  • Bee-Motion-S3
  • Bee-S3
  • CrumpS2
  • Cytron Maker Feather AIoT S3
  • DFRobot Beetle ESP32-C3
  • ESP 12k NodeMCU
  • ESP32-C3-DevKitM-1
  • ESP32-S2-DevKitC-1-N4
  • ESP32-S2-DevKitC-1-N4R2
  • ESP32-S3-Box-2.5
  • ESP32-S3-Box-Lite
  • ESP32-S3-DevKitC-1-N8
  • ESP32-S3-DevKitC-1-N8R2
  • ESP32-S3-DevKitC-1-N8R8
  • ESP32-S3-DevKitM-1-N8
  • ESP32-S3-EYE
  • ESP32-S3-USB-OTG-N8
  • Espressif ESP32-EYE
  • Feather ESP32S2 without PSRAM
  • FeatherS2
  • FeatherS2 Neo
  • FeatherS2 PreRelease
  • FeatherS3
  • Franzininho WIFI w/Wroom
  • Franzininho WIFI w/Wrover
  • Gravitech Cucumber M
  • Gravitech Cucumber MS
  • Gravitech Cucumber R
  • Gravitech Cucumber RS
  • HMI-DevKit-1.1
  • Hardkernel Odroid Go
  • HexKyS2
  • IoTs2
  • Kaluga 1
  • LILYGO TTGO T-01C3
  • LILYGO TTGO T-OI PLUS
  • LILYGO TTGO T8 ESP32-S2
  • LILYGO TTGO T8 ESP32-S2 w/Display
  • LOLIN S3 16MB Flash 8MB PSRAM
  • MORPHEANS MorphESP-240
  • MicroDev microC3
  • MicroDev microS2
  • MixGo CE
  • Oak Dev Tech PixelWing ESP32S2
  • ProS3
  • S2Mini
  • S2Pico
  • Saola 1 w/Wroom
  • Saola 1 w/Wrover
  • Seeed Studio XIAO ESP32C3
  • TTGO T8 ESP32-S2-WROOM
  • Targett Module Clip w/Wroom
  • Targett Module Clip w/Wrover
  • TinyPICO
  • TinyPICO Nano
  • TinyS2
  • TinyS3
  • Waveshare ESP32-S2-Pico
  • Waveshare ESP32-S2-Pico-LCD
  • Wemos Lolin C3 Mini" // from Wemos MP
  • nanoESP32-S2 w/Wrover
  • nanoESP32-S2 w/Wroom

class mdns.RemoteService

Encapsulates information about a remote service that was found during a search. This object may only be created by a mdns.Server. It has no user-visible constructor.

Cannot be instantiated directly. Use mdns.Server.find.

hostname :str

The hostname of the device (read-only),.

instance_name :str

The human readable instance name for the service. (read-only)

service_type :str

The service type string such as _http. (read-only)

protocol :str

The protocol string such as _tcp. (read-only)

port :int

Port number used for the service. (read-only)

ipv4_address :Optional[ipaddress.IPv4Address]

IP v4 Address of the remote service. None if no A records are found.

__del__() None

Deletes the RemoteService object.

class mdns.Server(network_interface: wifi.Radio)

The MDNS Server responds to queries for this device’s information and allows for querying other devices.

Constructs or returns the mdns.Server for the given network_interface. (CircuitPython may already be using it.) Only native interfaces are currently supported.

hostname :str

Hostname resolvable as <hostname>.local in addition to circuitpython.local. Make sure this is unique across all devices on the network. It defaults to cpy-###### where ###### is the hex digits of the last three bytes of the mac address.

instance_name :str

Human readable name to describe the device.

deinit() None

Stops the server

find(service_type: str, protocol: str, *, timeout: float = 1) Tuple[RemoteService]

Find all locally available remote services with the given service type and protocol.

This doesn’t allow for direct hostname lookup. To do that, use socketpool.SocketPool.getaddrinfo().

Parameters
  • service_type (str) – The service type such as “_http”

  • protocol (str) – The service protocol such as “_tcp”

  • timeout (float/int) – Time to wait for responses

advertise_service(*, service_type: str, protocol: str, port: int) None

Respond to queries for the given service with the given port.

service_type and protocol can only occur on one port. Any call after the first will update the entry’s port.

Parameters
  • service_type (str) – The service type such as “_http”

  • protocol (str) – The service protocol such as “_tcp”

  • port (int) – The port used by the service