diff --git a/.gitmodules b/.gitmodules index cf0e554e26bad..c01f23dbe6e1e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -146,7 +146,8 @@ branch = circuitpython-v5.3.1 [submodule "ports/espressif/esp-protocols"] path = ports/espressif/esp-protocols - url = https://github.com/espressif/esp-protocols.git + url = https://github.com/adafruit/esp-protocols.git + branch = circuitpython [submodule "ports/espressif/esp-camera"] path = ports/espressif/esp-camera url = https://github.com/adafruit/esp32-camera.git diff --git a/ports/espressif/common-hal/mdns/Server.c b/ports/espressif/common-hal/mdns/Server.c index 81a4415cecd86..e8c34ee0885ce 100644 --- a/ports/espressif/common-hal/mdns/Server.c +++ b/ports/espressif/common-hal/mdns/Server.c @@ -33,10 +33,9 @@ void mdns_server_construct(mdns_server_obj_t *self, bool workflow) { } _active_object = self; - uint8_t mac[6]; - esp_netif_get_mac(common_hal_wifi_radio_obj.netif, mac); - snprintf(self->default_hostname, sizeof(self->default_hostname), "cpy-%02x%02x%02x", mac[3], mac[4], mac[5]); - common_hal_mdns_server_set_hostname(self, self->default_hostname); + // Match the netif hostname set when `import wifi` was called. + esp_netif_get_hostname(common_hal_wifi_radio_obj.netif, &self->hostname); + common_hal_mdns_server_set_hostname(self, self->hostname); self->inited = true; diff --git a/ports/espressif/common-hal/mdns/Server.h b/ports/espressif/common-hal/mdns/Server.h index 42ffd878d13ae..f364a539c9179 100644 --- a/ports/espressif/common-hal/mdns/Server.h +++ b/ports/espressif/common-hal/mdns/Server.h @@ -12,7 +12,6 @@ typedef struct { mp_obj_base_t base; const char *hostname; const char *instance_name; - char default_hostname[sizeof("cpy-XXXXXX")]; // Track if this object owns access to the underlying MDNS service. bool inited; } mdns_server_obj_t; diff --git a/ports/espressif/common-hal/wifi/__init__.c b/ports/espressif/common-hal/wifi/__init__.c index c0d547cc08fe4..710688b9d31c9 100644 --- a/ports/espressif/common-hal/wifi/__init__.c +++ b/ports/espressif/common-hal/wifi/__init__.c @@ -199,11 +199,20 @@ void common_hal_wifi_init(bool user_initiated) { ESP_LOGE(TAG, "WiFi error code: %x", result); return; } - // set the default lwip_local_hostname - char cpy_default_hostname[strlen(CIRCUITPY_BOARD_ID) + (MAC_ADDRESS_LENGTH * 2) + 6]; + // Set the default lwip_local_hostname capped at 32 characters. We trim off + // the start of the board name (likely manufacturer) because the end is + // often more unique to the board. + size_t board_len = MIN(32 - ((MAC_ADDRESS_LENGTH * 2) + 6), strlen(CIRCUITPY_BOARD_ID)); + size_t board_trim = strlen(CIRCUITPY_BOARD_ID) - board_len; + // Avoid double _ in the hostname. + if (CIRCUITPY_BOARD_ID[board_trim] == '_') { + board_trim++; + } + + char cpy_default_hostname[board_len + (MAC_ADDRESS_LENGTH * 2) + 6]; uint8_t mac[MAC_ADDRESS_LENGTH]; esp_wifi_get_mac(ESP_IF_WIFI_STA, mac); - sprintf(cpy_default_hostname, "cpy_%s_%x", CIRCUITPY_BOARD_ID, (unsigned int)mac); + snprintf(cpy_default_hostname, sizeof(cpy_default_hostname), "cpy-%s-%x", CIRCUITPY_BOARD_ID + board_trim, (unsigned int)mac); const char *default_lwip_local_hostname = cpy_default_hostname; ESP_ERROR_CHECK(esp_netif_set_hostname(self->netif, default_lwip_local_hostname)); // set station mode to avoid the default SoftAP diff --git a/ports/espressif/esp-protocols b/ports/espressif/esp-protocols index ea54eef0d0fe5..2f492c0228901 160000 --- a/ports/espressif/esp-protocols +++ b/ports/espressif/esp-protocols @@ -1 +1 @@ -Subproject commit ea54eef0d0fe59bd53a49c916f87065518b957eb +Subproject commit 2f492c02289015ecbb36851dd1bd04e0eb0a9937