ESP32 hostname

Quelqu'un a déjà essayé de changer le hostname d'un ESP32 ?

  // j'ai essayé ceci :
  WiFi.setHostname(hostName);
  WiFi.begin(ssid, password);
  // ceci aussi (moins logique je trouve puisque normalement le hostname passe dans le DHCP):
  WiFi.begin(ssid, password);
  WiFi.setHostname(hostName);

Aussi ceci :

void WiFiEvent(WiFiEvent_t event)
{
  Serial.printf("[WiFi-event] event: %d\n", event);
  switch (event) {
    case SYSTEM_EVENT_WIFI_READY:
      Serial.println("Wifi ready.");
      break;
    case SYSTEM_EVENT_STA_START:
      Serial.println("Wifi start");
      Serial.printf("setting hostname %s\n", hostName);
      WiFi.setHostname(hostName);
      // etc.

  // avec dans setup() :
  WiFi.onEvent(WiFiEvent);

Il est possible que la LiveBox y soit pour quelque chose car avec ARDUINO + Ethernet il faut que je redémarre la Box pour que le nouveau hostname soit pris en compte : WIZnetAABBCC c'est à dire WIZnet + 3 derniers caractères de l'adresse MAC.
Alors d'ici à ce que cette daube de box traite le Wifi différemment ...

Cela m'intéresserait assez si quelqu'un pouvait essayer de faire la manip avec une FreeBox ou autre.

OK, trouvé un contournement ici : Hostname not sent via DHCP request #2537

WORKAROUND:

Add
WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE);
WiFi.setHostname(_hostname.c_str());
before
WiFi.begin();

I hope issue will be resolved soon.

Donc :

  char hostName[12];
  uint8_t mac[6];
  WiFi.mode(WIFI_STA);
  WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE);
  WiFi.macAddress(mac);
  sprintf(hostName, "Esp32%x%x%x", mac[3], mac[4], mac[5]);
  Serial.printf("setting hostname %s: %d\n", hostName, WiFi.setHostname(hostName));
  WiFi.begin(ssid, password);

Cette fois tcpdump affiche bien une option HostName

$ sudo tcpdump -i eno1 -vvv -s 1500 '((port 67 or port 68) and (udp[38:4] = 0x3c71bf47a5b0))'
11:38:06.285232 IP (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto UDP (17), length 336)
0.0.0.0.bootpc > 255.255.255.255.bootps: [udp sum ok] BOOTP/DHCP, Request from 3c:71:bf:47:a5:b0 (oui Unknown), length 308, xid 0x16606e78, Flags [none] (0x0000)
Client-Ethernet-Address 3c:71:bf:47:a5:b0 (oui Unknown)
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
MSZ Option 57, length 2: 1500
** Hostname Option 12, length 11: "Esp3247a5b0"**
Parameter-Request Option 55, length 12:
Subnet-Mask, Default-Gateway, BR, Domain-Name-Server
Domain-Name, Netbios-Name-Server, Netbios-Node, Netbios-Scope
Router-Discovery, Static-Route, Classless-Static-Route, Vendor-Option
END Option 255, length 0
PAD Option 0, length 0, occurs 33

Sur la box (après redémarrage) :

Esp3247a5b0 192.168.1.18 3c:71:bf:47:a5:b0

faut toujours redémarrer ?

La LiveBox ? Oui. Y compris avec un client Ethernet :confused:

OK merci - ça explique un truc louche que j'ai eu l'autre jour en cherchant à accéder à monEsp.local peut-être alors...

La LiveBox est un engin louche de toutes façons ...
Chez Orange je n'aime que le service.

assez d'accord :slight_smile:

j'ai déjà désactivé le Wi-Fi pour passer sur un système Orbi, je ne suis pas loin de mettre une autre couche pour les autres services réseaux local...

@hb:

Je viens de commencer votre tuto. Ca a l'air de marcher sans redémarrer la Freebox.

setting hostname Esp323ad0e8: 1
Connecting to **********
...
Esp323ad0e8 (30:AE:A4:3A:D0:E8): connected to **********IP address: 192.168.0.10
MDNS responder started
HTTP server started


setting hostname Esp3230aea4: 1
Connecting to **********
.
Esp3230aea4 (30:AE:A4:3A:D0:E8): connected to **********IP address: 192.168.0.10
MDNS responder started
HTTP server started


setting hostname Esp32b414: 1
Connecting to **********
..
Esp32b414 (30:AE:A4:3A:D0:E8): connected to **********IP address: 192.168.0.10
MDNS responder started
HTTP server started

Je range ma pelle...

Bonne nouvelle.
Merci du retour.