# mDNS的位址永遠為ameba

**URL:** <https://forum.amebaiot.com/t/mdns-ameba/871>\
**Category:** WiFi\
**Tags:** evb-bw16, 中文, rtl872xd\
**Created:** [October 31, 2021, 7:08am UTC](https://forum.amebaiot.com/t/mdns-ameba/871 "2021-10-31T07:08:53Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Victor](https://avatars.discourse-cdn.com/v4/letter/v/3e96dc/32.png) [@Victor](https://forum.amebaiot.com/u/Victor)\
**Post date:** [October 31, 2021, 7:08am UTC](https://forum.amebaiot.com/t/mdns-ameba/871/1 "2021-10-31T07:08:53Z")

</div>

- 環境  
\*\* 硬體：BW16  
\*\* 前置：按教學更新firmware及設定Arduino IDE  
\*\* Board ver: 3.0.11  
\*\* IDE: Arduino 1.8.16 / MacOS 10.14.6
- 步驟

1. 在Arduino IDE上讀取AmebaMDNS → mDNS\_On\_Arduino\_IDE範例
2. 修改無線認證資訊
3. 編譯及上傳
4. 確認在無線基地台內BW16已連線
5. 預期：ping MyAmeba或MyAmeba.local會回應  
實際： Unknown host

P.S. 在mDNSPlatform.c內可以看到

```auto
// Mandatory function to get hostname
// called when mDNS initialization
char *mDNSPlatformHostname(void)
{
#if LWIP_NETIF_HOSTNAME
	return (char *) xnetif[0].hostname;
#else
	return "ameba";
#endif
}

```

直接ping ameba.local則會成功，但是修改return 值後重新編譯並未生效

因為目前需要不只一個BW16，所以需要mDNS可以正常運作

另外，希望可以提供方法修改在無線基地台上的名稱，原因如上

---

<div class="post-metadata">

**Author:** ![Victor](https://avatars.discourse-cdn.com/v4/letter/v/3e96dc/32.png) [@Victor](https://forum.amebaiot.com/u/Victor)\
**Post date:** [November 16, 2021, 2:27pm UTC](https://forum.amebaiot.com/t/mdns-ameba/871/2 "2021-11-16T14:27:50Z")

</div>

Hi @xidameng ,

不知道這個是否也能幫忙一下呢？在board 3.1.0也是一樣的。

ping ameba.local會得到回應但MyAmeba.local則無法，在Arduino IDE上看到的確實是MyAmeba，只是似乎其它host都只看的到ameba.local

但我以為此範例應該是可以接受MyAmeba.local這個我們在程式中指定的位址解析而不是ameba.local。

---

<div class="post-metadata">

**Author:** ![xidameng](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/xidameng/32/18_2.png) [@xidameng](https://forum.amebaiot.com/u/xidameng)\
**Post date:** [November 17, 2021, 8:18am UTC](https://forum.amebaiot.com/t/mdns-ameba/871/3 "2021-11-17T08:18:28Z")

</div>

幫你 @wyy 😆  
抱歉，最近休假不怎麽看手機

---

<div class="post-metadata">

**Author:** ![wyy](https://avatars.discourse-cdn.com/v4/letter/w/bc8723/32.png) [@wyy](https://forum.amebaiot.com/u/wyy)\
**Post date:** [November 17, 2021, 8:21am UTC](https://forum.amebaiot.com/t/mdns-ameba/871/4 "2021-11-17T08:21:46Z")

</div>

Hi @Victor

我的了解是 `MyAmeba._arduino._tcp.local` 是一个 DNS service record 的名字，不是一个 hostname 名字，所以不能 ping 到 `MyAmeba.local`。

想要用 ping 找的话，需要改的应该是 lwip 里面的 hostname 设置。这个功能现在没有开启

---

<div class="post-metadata">

**Author:** ![wyy](https://avatars.discourse-cdn.com/v4/letter/w/bc8723/32.png) [@wyy](https://forum.amebaiot.com/u/wyy)\
**Post date:** [November 17, 2021, 9:20am UTC](https://forum.amebaiot.com/t/mdns-ameba/871/5 "2021-11-17T09:20:30Z")

</div>

如果需要用 mdns service 分辨开发板，linux 上是可以用 `avahi-browse -at` 搜索并列出所有 mdns service 和 ip 地址，也可以修改 protocol 部分 `_arduino._tcp` 分辨不同开发板。

---

<div class="post-metadata">

**Author:** ![Victor](https://avatars.discourse-cdn.com/v4/letter/v/3e96dc/32.png) [@Victor](https://forum.amebaiot.com/u/Victor)\
**Post date:** [November 26, 2021, 4:43pm UTC](https://forum.amebaiot.com/t/mdns-ameba/871/6 "2021-11-26T16:43:46Z")

</div>

Hi @wyy,

謝謝說明，對於mDNS有些部份想再進一步了解：

- 如果我們可以設置的目標是MyAmeba，所以會有一個dns record為 `MyAmeba._arduino._tcp.local`，那為什麼ameba.local在mdns啟用後可以被解析？
- 而上述的ameba.local似乎是無法透過修改mDNSPlatform.c來修改為其它值

而lwip的部份我試了一下好像沒有辦法在3.1.0順利使用，修改的部份如下：

- 修改opt.h的LWIP\_NETIF\_HOSTNAME為1
- lwip\_netconf.c中，在netif\_set\_up之後以及LwIP\_init()的最後新增了`netif_set_hostname(pnetif, "testhost");` 但仍然沒有辦法成功

---

<div class="post-metadata">

**Author:** ![wyy](https://avatars.discourse-cdn.com/v4/letter/w/bc8723/32.png) [@wyy](https://forum.amebaiot.com/u/wyy)\
**Post date:** [November 26, 2021, 5:11pm UTC](https://forum.amebaiot.com/t/mdns-ameba/871/7 "2021-11-26T17:11:52Z")

</div>

hi @Victor

- 现在的版本，LwIP 的设置 hostname 功能没开，但是 mDNS 是需要 hostname 的，所以一旦开启 mDNS，就会用上默认的 “ameba" hostname。但是因为 lwip 的 hostname 功能没开，不能修改 hostname。
- 为了节省编译时间，一些代码多的底层功能，如 BLE WiFi LwIP TLS，都是提前编译好，通过 .a archive 文件包括在 Arduino 的编译里面。所以在 Arduino 里面更改这些 .h/.c 文件不一定有效，有些更改是需要重新编译 .a 文件，只用 Arduino 是做不到的。
- 现在内部测试的新版本把 LwIP 的设置 hostname 功能打开了，确定了可以修改 hostname。默认 hostname 为 “Ameba\_” + MAC 地址。

---

<div class="post-metadata">

**Author:** ![Victor](https://avatars.discourse-cdn.com/v4/letter/v/3e96dc/32.png) [@Victor](https://forum.amebaiot.com/u/Victor)\
**Post date:** [November 27, 2021, 3:41am UTC](https://forum.amebaiot.com/t/mdns-ameba/871/8 "2021-11-27T03:41:26Z")

</div>

Hi @wyy

感謝，hostname的部份是否可以提供一個method以避免我們需要直接修改程式碼？這會造成在更版的時候需要重新修改

---

<div class="post-metadata">

**Author:** ![wyy](https://avatars.discourse-cdn.com/v4/letter/w/bc8723/32.png) [@wyy](https://forum.amebaiot.com/u/wyy)\
**Post date:** [November 27, 2021, 3:59am UTC](https://forum.amebaiot.com/t/mdns-ameba/871/9 "2021-11-27T03:59:44Z")

</div>

Hi @Victor

我没怎么看懂你的意思。  
新版本的 hostname 设置是：如果在链接 WiFi 前用户没有提供一个 hostname，就用默认的 Ameba + MAC。

---

<div class="post-metadata">

**Author:** ![Victor](https://avatars.discourse-cdn.com/v4/letter/v/3e96dc/32.png) [@Victor](https://forum.amebaiot.com/u/Victor)\
**Post date:** [November 27, 2021, 4:11am UTC](https://forum.amebaiot.com/t/mdns-ameba/871/10 "2021-11-27T04:11:33Z")

</div>

Hi @wyy

那這樣就沒問題了，感謝！

Regards,  
Victor Chen

---

<div class="post-metadata">

**Author:** ![feifeifei1986](https://avatars.discourse-cdn.com/v4/letter/f/a4c791/32.png) [@feifeifei1986](https://forum.amebaiot.com/u/feifeifei1986)\
**Post date:** [October 19, 2022, 2:44am UTC](https://forum.amebaiot.com/t/mdns-ameba/871/11 "2022-10-19T02:44:25Z")

</div>

你好，看历史评论，这个解决方法是在连接WIFI前设置hostname，如果hostname是动态变化的，需要在注册mdns的时候动态修改，这个是否支持？

---

<div class="post-metadata">

**Author:** ![xidameng](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.amebaiot.com/xidameng/32/18_2.png) [@xidameng](https://forum.amebaiot.com/u/xidameng)\
**Post date:** [October 19, 2022, 6:04am UTC](https://forum.amebaiot.com/t/mdns-ameba/871/12 "2022-10-19T06:04:54Z")

</div>

這邊使用的是Arduino SDK，和standard SDK不太一樣
